2016-02-03 22:14 +0000 Asterisk Development Team * asterisk certified/13.1-cert3 Released. 2016-02-03 16:05 +0000 [2142c74a02] Kevin Harwell * .version: Update for certified/13.1-cert3 2016-02-03 16:04 +0000 [07c95d33bd] Kevin Harwell * .lastclean: Update for certified/13.1-cert3 2016-02-03 16:04 +0000 [ce314be09d] Kevin Harwell * realtime: Add database scripts for certified/13.1-cert3 2016-02-03 12:05 +0000 [b50d584022] 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: I8635470e722ce6d47951a5045ae9ef348271d395 2015-12-07 12:46 +0000 [4fe2aa9a20] 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 [c7ab026196] 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-01-25 09:35 +0000 [7d581b32e9] 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 (cherry picked from commit f22074e5d9ed1882be976299311b8e093d25e1da) 2016-01-25 16:51 +0000 [22eb1b48c0] 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 (cherry picked from commit b073244c511f9634de57ea401ab9dbebcf2390e8) 2016-01-19 18:20 +0000 [826ff1d7a3] 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-14 14:42 +0000 [6e18a60a47] 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-12-28 14:02 +0000 [f63fb0e337] 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 (cherry picked from commit c8499b8d5adc805efadb91b483d9d987f62891ff) 2016-01-12 11:14 +0000 [def98bb996] 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-08 15:22 +0000 [bb29802615] 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-07 15:37 +0000 [ca869878b4] 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 2015-12-10 11:44 +0000 [4e5aec3f0a] 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-06-26 10:36 +0000 [4d10ed67d0] 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 (cherry picked from commit 8ea214aed782424a884b9a2f67d6dca270854e83) 2015-12-01 16:11 +0000 [1ec791a3ba] 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 16:42 +0000 [a164f2ce7f] 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 [a24db35ae3] 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 [bea904e001] 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-11-23 14:27 +0000 [f5a6060707] 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-05-05 18:17 +0000 [de43ae38b4] 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 (cherry picked from commit be1260a35f88faea4fa029d59343b124d250a8a6) 2015-11-16 04:29 +0000 [457d8dc124] 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-13 14:03 +0000 [c4751171a0] 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-13 14:19 +0000 [c0a7df1021] 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-12 11:17 +0000 [2fc3267677] 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 04:16 +0000 [d760c21038] 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 (cherry picked from commit 07583c288828a496cd7730b55112128fea31eaef) 2015-11-11 17:11 +0000 [287cab1a53] 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-11 11:04 +0000 [d073cb4b6d] 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-03 16:19 +0000 [b9713354dc] 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-06-23 11:21 +0000 [ac9432fdb6] 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 (cherry picked from commit 3b2b004d699b8cc7b808f62536bb2bc4db8b4e0e) 2015-11-04 14:31 +0000 [385e26efe2] 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-11-02 17:19 +0000 [62799fe778] 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-23 16:53 +0000 [6eda60936a] Kevin Harwell * alembic: Bad down revision in add_default_from_user script 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 2015-10-21 12:35 +0000 [c425e26595] 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 [b95101aab0] 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 [dd4d4e40e5] 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 [bda0a24206] 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 [7a22fc27fb] 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 [7fc9a998b1] 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 [7a47ab77c1] 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 [8def38f6a2] 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-04-20 14:30 +0000 [16afb39aec] 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-10-19 15:27 +0000 [78e4783572] Richard Mudgett * Add missing failure checks to ast_str_set_va() callers. Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f 2015-10-21 11:44 +0000 [43323995ba] 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-03-26 17:19 +0000 [cdd2d5b484] 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 Change-Id: I6a67336050dea74327d79cdd6f7c7ea34d0b473e git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 2015-10-19 19:59 +0000 [b5cfcfc427] 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-06-05 15:37 +0000 [813b743baa] Richard Mudgett * 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. * 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_distributor.c save the thread's serializer name on the outgoing request tdata struct so the response can be processed under the same serializer. This is a cherry-pick from master. **** 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. This is a cherry-pick from v13. ASTERISK-25183 #close Reported by: Matt Jordan Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a 2015-10-02 17:05 +0000 [78ab76b46c] Richard Mudgett * 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 **** ASTERISK-24975 Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402 Cherry-pick from v13 with additional definitions of AST_THREADSTORAGE_RAW(), ast_threadstorage_get_ptr() and ast_threadstorage_set_ptr() from commit d01706ce1ee518118456d5673f529204bdac73bb. Change-Id: I3222102d005f76744561b95a3b97700d82a5ee58 2015-10-12 11:21 +0000 [47a9452780] Richard Mudgett * config.c: Fix off-nominal memory leak. Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0 2015-10-12 11:20 +0000 [728a2b7013] 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 [6c11fa2277] 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-06 20:43 +0000 [0fe83cad51] 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-05 16:53 +0000 [c4f63952fc] 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 [d61da57428] 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-09-30 17:28 +0000 [5d12653d2a] 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 [b35b9a9e32] 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 [9ec52447bd] 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 [110927bacc] Richard Mudgett * res_sorcery_memory_cache.c: Misc tweaks. Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160 2015-09-30 17:27 +0000 [14ac763ab3] Richard Mudgett * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c 2015-04-09 10:42 +0000 [39fe210fd9] 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) Change-Id: Iefc901a7c5c88d9d4b853188f85092d9eb7b6ada 2015-09-24 14:56 +0000 [00be2f6b4f] 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 [bd43638622] 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 [f5a935f9d1] 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 [91f754cb89] 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 [9792b21720] 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-24 14:49 +0000 [7a4581a41b] 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 [86eee104be] 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-06-18 13:16 +0000 [deccd2ef3c] 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-09-21 18:06 +0000 [43e6804b0c] 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-16 08:22 +0000 [ca401c6842] 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-16 17:36 +0000 [20702e0cf2] 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-09-10 17:19 +0000 [3ef74244a4] 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-10 09:49 +0000 [8826e6c416] 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-04-23 09:16 +0000 [943d5c0c99] gtjoseph * 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 (cherry picked from commit 75666ad7c608ad9968a216a8f0a5832bf85b785c) 2015-09-03 14:07 +0000 [7b5bcbeebe] 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-08-29 10:36 +0000 [0901a82adb] 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 (cherry picked from commit a676ba2aad5525926ae31b8317b95ae52cbbabbb) 2015-09-04 14:40 +0000 [500856b4f0] 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-05-13 15:41 +0000 [42c40b59b6] 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 (cherry picked from commit 02c513058905dae19f28393ea840a47ae4a9e66d) 2015-09-02 17:26 +0000 [a1e1d8e815] 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 [9f5e1c0e56] 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-07-02 14:51 +0000 [1c89230e2a] 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-09-01 09:05 +0000 [2f2c35e91d] 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-31 15:24 +0000 [88ee3b3ef2] Mark Michelson * Fix deadlock on presence state changes. 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. 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. ASTERISK-25362 #close Reported by Mark Michelson Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2 2015-08-28 20:22 +0000 [8842637d8f] 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 [06d42fede3] 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-07-23 13:11 +0000 [74d6ae20cb] 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-08-26 05:40 +0000 [54a09e4cb5] 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 [942d0ba96f] 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 [ad4e895928] 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 [4083e543fd] 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-04-16 13:20 +0000 [0b04269e73] 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 (cherry picked from commit 8d4ce7cc2b87317005588e700b278a8cca7005c8) 2015-08-14 15:46 +0000 [f049ad951b] 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:22 +0000 [fb347a4ded] 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 [a5049df640] 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 [7089472637] 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 [128d2348e6] 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-10 13:43 +0000 [6b219a866c] 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 [fc4455216a] 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 [739fca6084] 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-06 12:48 +0000 [bfb15bea06] 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 [9e93ad109b] 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-02-13 11:21 +0000 [f6dcbd9707] 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/ Change-Id: Ib05700c3a13ceac53b17d66099ef0d296a5e1863 2015-01-16 16:12 +0000 [4350fd22c8] 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 Change-Id: I76e440e08e603c1eea40a14951e7b171c0472a55 2015-07-18 11:16 +0000 [fae081ad5b] 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-09 14:17 +0000 [d66abb6746] 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: I683bdc206c8c7def586ecaa64dcf2b86550be3bf 2015-07-16 09:46 +0000 [1b744ab684] 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-15 15:40 +0000 [147b86a8d1] 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:36 +0000 [131f6ef8f5] 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-09 09:18 +0000 [23b7b109c2] 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-05-26 07:44 +0000 [0fcc530dc7] 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: Id2a9e5f271c466686e6d0def461fa50c8b2cae53 2015-07-08 14:39 +0000 [c8d53f2372] Mark Michelson * res_sorcery_memory_cache: Remove ASTERISK_REGISTER_FILE() macro. This was part of the backport of res_sorcery_memory_cache from master but will not compile in 13. Change-Id: I27b3d833acda9dd1770fdbe594964197b93779b0 2015-07-06 09:24 +0000 [a72cf6ce81] 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-17 07:00 +0000 [e0cd8216bb] 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-02 10:20 +0000 [8b2bad7740] 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 13:11 +0000 [8575c4f18d] 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-04 05:33 +0000 [da52527136] 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-05-26 07:34 +0000 [f596b4a85c] 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-26 13:01 +0000 [9c2de310be] 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-20 17:35 +0000 [9a7fccc50c] 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 15:19 +0000 [9ae9221d2b] 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 [e4d42119b5] 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-07-02 17:03 +0000 [49a37f22e1] Jonathan Rose * app: Add functions to swap vm function table 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. Change-Id: I1c2cf6d5a8589104154a86538ecd3f62a2694681 2015-04-22 16:22 +0000 [f58c0acfa2] gtjoseph * 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-29 12:45 +0000 [9cbd76630a] 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 16:12 +0000 [8ba3de43ad] 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-26 10:41 +0000 [20f50131d7] 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 17:43 +0000 [0d535df734] 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-23 14:34 +0000 [3332869b48] 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-17 05:04 +0000 [a35d6feae2] 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-10 18:28 +0000 [75589c4a3b] 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 [8142b922ab] 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-08 12:28 +0000 [ca2174bb23] Matt Jordan * .version: Update for certified/13.1-cert3-rc1 2015-06-08 12:28 +0000 [2ef2c12fae] Matt Jordan * .lastclean: Update for certified/13.1-cert3-rc1 2015-06-08 12:28 +0000 [5032390639] Matt Jordan * realtime: Add database scripts for certified/13.1-cert3-rc1 2015-06-08 09:43 +0000 [2bf6fd263a] 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-03 17:41 +0000 [5f954e1e00] 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-02-17 09:34 +0000 [c994a3bfa0] 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 Change-Id: I57878adc0846dd942a699ad36dcec9cba5e57994 2015-04-06 14:23 +0000 [1e98fcac6b] 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 Change-Id: Ibbc25d4592aabf7596ef473447d630961f88c217 2015-05-26 13:56 +0000 [bd32327353] 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-12 17:45 +0000 [b81353a0ec] 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 [523fab02d8] 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-04-16 10:51 +0000 [b764454d4d] 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: Change-Id: I5134b84c4524906d8148817719d76ffb306488ac 2015-05-06 13:24 +0000 [6433b697ae] 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-01-19 07:18 +0000 [bf31a486cb] 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 Change-Id: I5b57362201cc8c6555834ec8707e9fbddeff7904 2015-05-04 12:16 +0000 [7c687c8e54] 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-29 14:29 +0000 [0602409c89] 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-30 15:20 +0000 [c6c06bbe70] 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:09 +0000 [08a4cf3237] Mark Michelson * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback. 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. Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3 2015-04-30 06:04 +0000 [47df4e031c] 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-27 16:56 +0000 [11d85ea251] Mark Michelson * res_pjsip_outbound_registration: Don't fail on delayed processing: 13. 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. The following is the text from the master version of this commit: 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 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-25020 Reported by Mark Michelson Change-Id: If1ee5f601be839479a219424f0358a229f358f7c 2015-04-27 14:44 +0000 [0037ca59a6] 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-11 10:10 +0000 [e84fcb2464] 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) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3 Change-Id: I15bde169fd59a224a02005fec9a439f0679a375e 2015-04-23 12:54 +0000 [008076ecf4] 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-15 10:38 +0000 [1bb6122f35] 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-15 16:08 +0000 [cb67aae596] gtjoseph * More .gitignore updates Added .pyc and .sha1 to the top-level .gitignore. Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a Tested-by: George Joseph 2015-04-13 19:06 +0000 [70fab74baf] gtjoseph * .gitignore updates for master/13 Added products of ./bootstrap Added nmenuselect and gmenuselect to menuselect/ Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35 2015-04-13 09:54 +0000 [735bea479a] 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-12 12:59 +0000 [7d64479748] Matt Jordan * 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. 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. * main/manager: The Version key now always reports the Asterisk version. * UPGRADE: Add notes for: - Modification to the ModuleCheck AMI Action. - Modification of the "core show file version" CLI command. Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28 2015-04-12 06:12 +0000 [9237e8b11e] 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 [630dbcb8b4] 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: I1e42fbfa02a8884231507b683e8e49ac3e278aaa 2015-04-11 13:20 +0000 [e4892f9aa4] gtjoseph * 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: I4c8af3b8e3739957db545f7368ac53f38e99f696 Tested-by: George Joseph 2015-04-14 14:04 +0000 [677898f839] 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-08 13:19 +0000 [918ca7dd36] 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/certified/branches/13.1@434428 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-08 12:24 +0000 [08945a5c77] 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/certified/branches/13.1@434418 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-07 10:35 +0000 [45f09898e9] 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/certified/branches/13.1@434220 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-03 16:59 +0000 [42b7ebdd4d] 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/certified/branches/13.1@433970 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-01 15:32 +0000 [b6fff2719d] Mark Michelson * 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/ AFS-254 ........ Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433918 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-01 11:29 +0000 [8ae3670781] 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/certified/branches/13.1@433890 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-31 22:39 +0000 [259227eb1a] Ashley Sanders * 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/certified/branches/13.1@433864 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-31 17:34 +0000 [758fead630] 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/certified/branches/13.1@433842 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-27 15:55 +0000 [b5b44876c2] 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/certified/branches/13.1@433621 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-27 15:25 +0000 [66b8c7cab4] 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/certified/branches/13.1@433618 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-20 14:57 +0000 [fb7062afca] 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/certified/branches/13.1@433224 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-20 14:04 +0000 [cf9799845f] 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/certified/branches/13.1@433201 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-17 16:56 +0000 [90fc65da62] 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/certified/branches/13.1@433059 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-17 13:44 +0000 [e0b644ddb7] 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/certified/branches/13.1@433034 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-17 13:43 +0000 [d7c8041f6b] 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/certified/branches/13.1@433033 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-17 11:25 +0000 [cd4e18c4cc] Richard Mudgett * Multiple revisions 431583,433005 ........ 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. ........ Merged revisions 431583,433005 from http://svn.asterisk.org/svn/asterisk/branches/13 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 432868 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432888 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-09 11:44 +0000 [4eb1dd4b35] 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/certified/branches/13.1@432658 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-04 12:53 +0000 [52366a423c] 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/certified/branches/13.1@432454 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-03-02 13:15 +0000 [b17d0953b6] 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/certified/branches/13.1@432424 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-26 11:15 +0000 [3b4ba353f0] 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/certified/branches/13.1@432365 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-24 16:01 +0000 [33c73ffeaa] 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/certified/branches/13.1@432197 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-11 12:04 +0000 [3ad393b043] 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/certified/branches/13.1@431700 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-11 11:52 +0000 [8be00450b9] 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/certified/branches/13.1@431697 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-11 11:48 +0000 [340588c721] 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/certified/branches/13.1@431696 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-11 10:19 +0000 [69dc8f9ec2] Kevin Harwell * 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/certified/branches/13.1@431667 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-02-05 09:50 +0000 [2125e1b2de] Mark Michelson * Add Asterisk 13 revision 431420 that fixes disabling 100rel option on PJSIP endpoints. git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431573 65c4cc65-6c06-0410-ace0-fbb531ad65f3 2015-04-08 Asterisk Development Team * Certified Asterisk 13.1-cert2 Released. * Mitigate 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. 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 2015-01-27 17:52 +0000 [r431162] Richard Mudgett * /, 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 2015-01-15 12:11 +0000 [r430666] Joshua Colp * /, 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 * /, 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 * /, 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 * /, asterisk-13.1.0-summary.html (removed), asterisk-13.1.0-summary.txt (removed): Update properties; remove old summaries * / (added): Create Certified Asterisk 13.1 branch 2014-12-15 Asterisk Development Team * Asterisk 13.1.0 Released. 2014-12-10 Asterisk Development Team * Asterisk 13.1.0-rc2 Released. * AST-2014-019: Fix crash when receiving a WebSocket packet with 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 2014-12-08 Asterisk Development Team * Asterisk 13.1.0-rc1 Released. 2014-12-08 16:53 +0000 [r429091] Matthew Jordan * 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 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 2014-12-02 12:20 +0000 [r428761] Joshua Colp * 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 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 * /, 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-11-20 16:34 +0000 [r428413] Kevin Harwell * 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 2014-11-20 16:13 +0000 [r428343] Jonathan Rose * 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 * 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 * 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 2014-11-19 12:40 +0000 [r428196-428222] Joshua Colp * 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 2014-11-17 16:51 +0000 [r428145] Mark Michelson * 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 * 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. 2014-11-14 17:45 +0000 [r427902] Jonathan Rose * 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 2014-11-14 15:51 +0000 [r427876] Scott Griepentrog * /, 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 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 2014-11-14 14:24 +0000 [r427841] Mark Michelson * 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 2014-11-13 22:03 +0000 [r427815] Kevin Harwell * /, 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 * 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-11-09 08:00 +0000 [r427643] Corey Farrell * 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 2014-11-09 00:38 +0000 [r427583-427615] Matthew Jordan * 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 2014-11-06 19:22 +0000 [r427494-427512] Richard Mudgett * 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 2014-11-06 12:13 +0000 [r427384-427466] Corey Farrell * 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 * 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 * /, 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 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 2014-11-03 02:34 +0000 [r427021-427089] Corey Farrell * 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 * /, 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 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 2014-10-31 16:50 +0000 [r426934] Tzafrir Cohen * 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 2014-10-31 03:08 +0000 [r426803-426833] Corey Farrell * 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 2014-10-30 06:09 +0000 [r426668] Igor Goncharovskiy * 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 2014-10-30 01:59 +0000 [r426597-426602] Matthew Jordan * /, 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 * 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-10-28 21:26 +0000 [r426552] Richard Mudgett * /, 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 2014-10-28 21:05 +0000 [r426525-426529] Corey Farrell * /, 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 2014-10-28 18:09 +0000 [r426459] mdavenport : * configs/samples/manager.conf.sample: ASTERISK-23512, correct inaccurate comment in manager.conf.sample 2014-10-28 16:40 +0000 [r426368-426432] Matthew Jordan * /, 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 * 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 2014-10-28 14:56 +0000 [r426294-426362] mdavenport : * res/res_agi.c: ASTERISK-24323, fix bug in documentation of AGI STREAM FILE CONTROL * configs/samples/extensions.conf.sample: ASTERISK-24419, fix incorrect syntax for setting language in extensions.conf.sample 2014-10-28 11:20 +0000 [r426252-426266] Corey Farrell * 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 * 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-10-27 17:54 +0000 [r426234] Sean Bright * 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/ 2014-10-27 02:46 +0000 [r426143-426211] Matthew 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 2014-10-24 15:17 +0000 [r426120] Jonathan Rose * main/manager.c: Documentation: Improve documentation for ExtensionStatus AMI events Review: https://reviewboard.asterisk.org/r/4085/ 2014-10-24 Asterisk Development Team * Asterisk 13.0.0 Released. 2014-10-22 21:27 +0000 [r426097] Shaun Ruffell * codecs/codec_dahdi.c: 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/ 2014-10-21 17:47 +0000 [r426079] Richard Mudgett * main/translate.c: 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. 2014-10-20 14:15 +0000 [r425991] Matthew Jordan * res/res_xmpp.c, main/tcptls.c, /: 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 encryption 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 2014-10-19 17:07 +0000 [r425965] George Joseph * Makefile, /, configure, include/asterisk/autoconfig.h.in, configure.ac, makeopts.in: 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 2014-10-19 04:01 +0000 [r425923-425944] Matthew Jordan * res/res_pjsip_sdp_rtp.c: res/res_pjsip_sdp_rtp: Revert 425922 This patch for r425922 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. * res/res_pjsip_sdp_rtp.c: 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. 2014-10-17 22:43 +0000 [r425905] Jonathan Rose * configs/samples/cli_aliases.conf.sample: Sample Configurations: make 'pjsip reload' reload all reloadable pjsip modules AST-1432 #close Reported by: John Bigelow 2014-10-17 13:35 +0000 [r425821-425879] Matthew Jordan * res/res_pjsip_sdp_rtp.c, res/res_pjsip.c, res/res_pjsip_session.c, /: 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 * /, channels/chan_sip.c: 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 2014-10-17 02:41 +0000 [r425783] Richard Mudgett * main/core_unreal.c, main/channel.c, /: 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 2014-10-17 01:57 +0000 [r425736-425761] Matthew Jordan * /, bridges/bridge_native_rtp.c: 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 * /, tests/test_cel.c: 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 * main/cdr.c, /: 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 2014-10-16 17:30 +0000 [r425714] George Joseph * include/asterisk/config.h, tests/test_config.c, main/config.c, /: 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 2014-10-16 14:35 +0000 [r425691] Kinsey Moore * res/res_pjsip_t38.c, res/res_pjsip_registrar_expire.c, res/res_pjsip_mwi_body_generator.c, res/res_pjsip_endpoint_identifier_user.c, res/res_pjsip_send_to_voicemail.c, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_outbound_authenticator_digest.c, res/res_pjsip_outbound_registration.c, res/res_pjsip_endpoint_identifier_anonymous.c, res/res_pjsip_path.c, res/res_pjsip_one_touch_record_info.c, res/res_pjsip_acl.c, res/res_pjsip_pubsub.c, res/res_pjsip_diversion.c, res/res_pjsip_refer.c, include/asterisk/res_pjsip.h, res/res_pjsip_pidf_body_generator.c, res/res_pjsip_dtmf_info.c, res/res_pjsip_multihomed.c, res/res_pjsip_authenticator_digest.c, res/res_pjsip_sdp_rtp.c, res/res_hep_pjsip.c, res/res_pjsip_messaging.c, res/res_pjsip_caller_id.c, res/res_pjsip_logger.c, res/res_pjsip_nat.c, res/res_pjsip_session.c, res/res_pjsip_exten_state.c, res/res_pjsip_header_funcs.c, res/res_pjsip_rfc3326.c, res/res_pjsip_phoneprov_provider.c, res/res_pjsip_mwi.c, res/res_pjsip_dialog_info_body_generator.c, res/res_pjsip_xpidf_body_generator.c, res/res_pjsip_registrar.c, channels/chan_pjsip.c, res/res_pjsip_transport_websocket.c, res/res_pjsip_pidf_eyebeam_body_supplement.c, include/asterisk/res_pjsip_session.h, /, res/res_pjsip_notify.c, res/res_pjsip_pidf_digium_body_supplement.c, res/res_pjsip_endpoint_identifier_ip.c, res/res_pjsip_publish_asterisk.c: 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 2014-10-16 06:11 +0000 [r425669] Igor Goncharovskiy * channels/chan_unistim.c, /: 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 2014-10-16 01:25 +0000 [r425646] Joshua Colp * res/res_rtp_asterisk.c, /: 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 2014-10-15 19:31 +0000 [r425627] Richard Mudgett * channels/chan_motif.c: chan_motif: Cleanup jingle_tech.capabilities only once. 2014-10-15 19:05 +0000 [r425611] Jonathan Rose * res/parking/parking_tests.c: 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/ 2014-10-15 09:59 +0000 [r425590] Alexandr Anikin * addons/chan_ooh323.c, /: 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 2014-10-14 20:46 +0000 [r425526] George Joseph * /, include/asterisk/config.h, tests/test_config.c, main/config.c: 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 2014-10-14 19:00 +0000 [r425504] Jonathan Rose * main/sched.c, /: 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 2014-10-14 18:12 +0000 [r425481] George Joseph * res/res_phoneprov.c, include/asterisk/phoneprov.h, /, res/res_pjsip_phoneprov_provider.c: 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 2014-10-14 16:46 +0000 [r425459] Corey Farrell * /, res/res_fax.c: 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 2014-10-14 16:35 +0000 [r425455] Richard Mudgett * /, main/stasis_channels.c: 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 2014-10-14 16:19 +0000 [r425415] Corey Farrell * /, res/res_fax.c: 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 2014-10-13 16:10 +0000 [r425384] George Joseph * apps/app_directory.c, tests/test_sorcery.c, main/config.c, tests/test_sorcery_realtime.c, res/res_sorcery_realtime.c, apps/app_voicemail.c, res/res_sorcery_config.c, main/manager.c, /, include/asterisk/config.h, pbx/pbx_realtime.c, tests/test_config.c: 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 2014-10-12 21:09 +0000 [r425362] Joshua Colp * /, res/res_rtp_asterisk.c: 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 2014-10-12 08:15 +0000 [r425289-425299] Walter Doekes * /, channels/chan_sip.c: 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 * /, Makefile: 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 * /, res/res_calendar_ews.c: 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 2014-10-11 21:08 +0000 [r425265] George Joseph * /, res/res_phoneprov.c: 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 2014-10-10 20:48 +0000 [r425243] Joshua Colp * /, main/bridge.c, bridges/bridge_native_rtp.c: 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 2014-10-10 14:31 +0000 [r425221] Matthew Jordan * /, res/res_phoneprov.c: 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 2014-10-10 14:23 +0000 [r425217] Joshua Colp * /, res/res_pjsip_phoneprov_provider.c: res_pjsip_phoneprov_provider: Add missing dependency on pjproject. ........ Merged revisions 425216 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-10-10 13:01 +0000 [r425155] Kinsey Moore * /, tests/test_callerid.c, main/callerid.c: 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 2014-10-10 12:10 +0000 [r425132] Joshua Colp * res/res_pjsip_nat.c, /: 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 2014-10-10 07:32 +0000 [r425071] Walter Doekes * /, channels/chan_sip.c: 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 2014-10-09 23:35 +0000 [r425052] George Joseph * res/res_pjsip_phoneprov_provider.c: 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 2014-10-09 21:38 +0000 [r425031] Kevin Harwell * res/res_rtp_asterisk.c, /: 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 425030 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-10-09 20:54 +0000 [r425008] George Joseph * /, res/res_pjsip_phoneprov_provider.c (added), configs/samples/pjsip.conf.sample: 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 2014-10-09 18:37 +0000 [r424986] Matthew Jordan * /, res/res_phoneprov.c: res/res_phoneprov: Don't cancel Asterisk load on module load failure ........ Merged revisions 424985 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-10-09 17:45 +0000 [r424964] George Joseph * include/asterisk/phoneprov.h (added), /, configs/samples/phoneprov.conf.sample, include/asterisk/chanvars.h, res/res_phoneprov.c, res/res_phoneprov.exports.in (added), main/chanvars.c: 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 2014-10-09 16:36 +0000 [r424942] Richard Mudgett * /, main/cdr.c: 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 2014-10-09 08:08 +0000 [r424880] Walter Doekes * /, contrib/scripts/safe_asterisk: 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 2014-10-08 18:46 +0000 [r424854] Joshua Colp * /, res/res_rtp_asterisk.c: 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 2014-10-08 18:24 +0000 [r424769-424850] Kinsey Moore * main/stasis.c: 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. * main/sounds_index.c: 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. * main/stasis.c: 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 2014-10-07 18:33 +0000 [r424752] Joshua Colp * main/data.c: 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 2014-10-07 17:41 +0000 [r424692-424731] Matthew Jordan * /, res/res_pjsip_outbound_registration.c: 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 * res/res_pjsip_pubsub.c: res/res_pjsip_pubsub: Fix typo in WARNING message * main/message.c, /: 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 2014-10-06 15:38 +0000 [r424669] Richard Mudgett * main/features.c, /: 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 2014-10-06 12:38 +0000 [r424601-424647] Matthew Jordan * /, main/sdp_srtp.c: sdp_srtp: Add new lines to some WARNING messages ........ Merged revisions 424646 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_options.c: 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 * channels/pjsip/dialplan_functions.c, /: 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 * /, res/res_hep_pjsip.c, res/res_pjsip/pjsip_distributor.c, res/res_pjsip_logger.c: 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 * res/res_pjsip_pubsub.c: 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 2014-10-05 00:48 +0000 [r424552-424580] Corey Farrell * main/manager.c, /: 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 * channels/chan_motif.c: 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/ * /, channels/chan_motif.c: 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 2014-10-03 21:56 +0000 [r424472-424529] Richard Mudgett * /, CHANGES, res/res_pjsip.c: res_pjsip: Fix XML typo and update CHANGES. ASTERISK-24199 ........ Merged revisions 424528 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/audiohook.c, apps/app_chanspy.c, apps/app_mixmonitor.c, /, main/framehook.c: 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 * main/core_unreal.c, main/taskprocessor.c, channels/chan_iax2.c, res/res_pjsip_session.c, main/channel.c, channels/chan_misdn.c, channels/chan_skinny.c, funcs/func_frame_trace.c, channels/chan_motif.c, include/asterisk/frame.h, main/bridge_channel.c, channels/chan_pjsip.c, channels/chan_unistim.c, include/asterisk/res_pjsip_session.h, addons/chan_ooh323.c, /, include/asterisk/taskprocessor.h, channels/chan_sip.c, res/res_pjsip_session.exports.in: 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 2014-10-03 15:54 +0000 [r424448] George Joseph * /, main/sorcery.c: 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 2014-10-03 13:58 +0000 [r424424-424427] Kinsey Moore * configs/samples/pjsip.conf.sample, /, res/res_pjsip/pjsip_configuration.c: 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 * main/manager.c, /: 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 2014-10-03 07:54 +0000 [r424415] Joshua Colp * res/res_pjsip_session.c, /: 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. ........ Merged revisions 424414 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-10-02 21:52 +0000 [r424394] Richard Mudgett * /, configs/samples/pjsip.conf.sample, res/res_pjsip.c, res/res_pjsip/config_transport.c: 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 2014-10-02 20:15 +0000 [r424373] Jonathan Rose * /, contrib/ast-db-manage/config/versions/10aedae86a32_add_outgoing_enum_va.py (added): 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 2014-10-02 13:35 +0000 [r424338] Scott Griepentrog * /, configs/samples/pjsip.conf.sample: 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 2014-10-01 22:52 +0000 [r424333] Jonathan Rose * channels/chan_pjsip.c: 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/ 2014-10-01 20:36 +0000 [r424313] Corey Farrell * res/res_hep.c, /: 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 2014-10-01 16:37 +0000 [r424288-424291] Joshua Colp * /, res/res_pjsip/pjsip_configuration.c, configs/samples/pjsip.conf.sample, res/res_pjsip.c: 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 * /, res/res_pjsip_sdp_rtp.c: 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 2014-10-01 12:27 +0000 [r424245-424266] Kinsey Moore * res/res_pjsip/config_transport.c, /, res/res_pjsip/location.c, res/res_pjsip_endpoint_identifier_ip.c, res/res_pjsip/pjsip_configuration.c, configs/samples/pjsip.conf.sample: 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 * /, res/res_pjsip_nat.c: 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 2014-10-01 10:09 +0000 [r424179-424184] Walter Doekes * /, channels/chan_sip.c: 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 * /, channels/chan_sip.c: 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 2014-09-30 11:40 +0000 [r424153-424156] Joshua Colp * res/res_pjsip_sdp_rtp.c, /: 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 * res/res_rtp_asterisk.c, /: 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 2014-09-29 21:59 +0000 [r424129] George Joseph * /, res/res_pjsip/pjsip_cli.c: 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 2014-09-29 21:26 +0000 [r424126] Walter Doekes * /, contrib/scripts/autosupport: 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 2014-09-29 21:17 +0000 [r424097-424105] Richard Mudgett * res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c, /, res/res_pjsip_authenticator_digest.c: 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 * /, main/threadpool.c: 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 2014-09-27 12:43 +0000 [r424057] Joshua Colp * channels/chan_pjsip.c, res/res_pjsip_session.c, /: 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 2014-09-26 15:21 +0000 [r423992] Richard Mudgett * /, res/res_fax.c: 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 2014-09-26 08:25 +0000 [r423918] Walter Doekes * /, doc/asterisk.8: 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 2014-09-25 21:01 +0000 [r423895] Richard Mudgett * res/res_pjsip.c, /: 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 2014-09-24 18:32 +0000 [r423867] Richard Mudgett * /, res/res_pjsip/pjsip_options.c, res/res_pjsip.c: 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 2014-09-24 08:53 +0000 [r423803] Walter Doekes * /, channels/chan_sip.c: 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 2014-09-23 14:29 +0000 [r423783] Mark Michelson * tests/test_cel.c, tests/test_cdr.c: 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 2014-09-22 19:48 +0000 [r423660-423723] Walter Doekes * /, channels/chan_sip.c: 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 * /, main/editline/readline.c: 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 2014-09-21 01:15 +0000 [r423618-423641] Matthew Jordan * main/channel.c: 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. * rest-api/api-docs/events.json, /: 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 * rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, 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, rest-api/api-docs/playbacks.json: 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 2014-09-19 19:51 +0000 [r423580] Joshua Colp * /, res/res_pjsip_notify.c: 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 2014-09-19 17:08 +0000 [r423561] Richard Mudgett * channels/chan_pjsip.c, res/res_pjsip_sdp_rtp.c: 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/ 2014-09-19 15:18 +0000 [r423524-423530] Jonathan Rose * /, main/stasis_channels.c: 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 * channels/chan_iax2.c: 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/ 2014-09-19 12:45 +0000 [r423504] Kinsey Moore * include/asterisk/framehook.h, /, main/framehook.c, res/res_pjsip_t38.c: 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 2014-09-18 19:30 +0000 [r423482] Sean Bright * res/res_pjsip/config_auth.c, /: 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 2014-09-18 19:22 +0000 [r423478] George Joseph * tests/test_strings.c, /, main/utils.c, include/asterisk/strings.h: 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 2014-09-18 18:31 +0000 [r423462] Mark Michelson * res/res_pjsip_pubsub.c: 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 2014-09-18 17:11 +0000 [r423425] Jonathan Rose * res/res_pjsip_endpoint_identifier_ip.c, /: 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 2014-09-18 17:09 +0000 [r423418-423423] Richard Mudgett * bridges/bridge_softmix.c: bridge_softmix.c: Made use ao2_replace() instead of the inline equivalent. * Clarified some read/write format comments. * Fixed a doxygen tag typo. * main/astobj2.c, contrib/scripts/refcounter.py, /: 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 2014-09-18 16:37 +0000 [r423348-423414] Mark Michelson * include/asterisk/format_cap.h, main/channel.c, main/format_cap.c, main/translate.c: 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. * /, res/res_fax_spandsp.c: 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 * /, res/res_pjsip_mwi.c, res/res_pjsip_dialog_info_body_generator.c, res/res_pjsip_xpidf_body_generator.c, res/res_pjsip_mwi_body_generator.c, res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_pidf_body_generator.c: 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 2014-09-18 15:13 +0000 [r423284] George Joseph * /, res/res_pjsip/location.c, res/res_pjsip_endpoint_identifier_ip.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/pjsip_options.c, res/res_pjsip/config_transport.c, include/asterisk/res_pjsip.h, res/res_pjsip/config_auth.c: 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 2014-09-18 15:00 +0000 [r423281] David M. Lee * makeopts.in, Makefile: 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/ 2014-09-18 14:45 +0000 [r423279] George Joseph * main/manager.c, /, include/asterisk/config.h, main/config.c: 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 2014-09-17 18:05 +0000 [r423209-423255] Joshua Colp * res/res_rtp_asterisk.c, /: 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 * res/res_rtp_asterisk.c, /: 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 * res/res_rtp_asterisk.c, /: 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 2014-09-16 16:32 +0000 [r423192] Scott Griepentrog * apps/app_voicemail.c, include/asterisk/file.h, main/file.c: 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 2014-09-16 12:12 +0000 [r423152-423173] Joshua Colp * res/res_pjsip_session.c, /: 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 * include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c, /: 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 2014-09-15 10:49 +0000 [r423069-423129] Walter Doekes * /, contrib/ast-db-manage/config/versions/5950038a6ead_fix_pjsip_verifiy_typo.py (added): 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 * configs/samples/sip.conf.sample, /: 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 2014-09-12 16:09 +0000 [r422985] Jonathan Rose * main/config.c, /: 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 2014-09-11 22:16 +0000 [r422965] Mark Michelson * /, main/app.c: 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 2014-09-10 16:04 +0000 [r422905] George Joseph * /, main/config.c: 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 2014-09-10 15:59 +0000 [r422901] Sean Bright * res/res_pjsip/config_auth.c, /: 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 2014-09-09 20:01 +0000 [r422883] Rusty Newton * /, sounds/sounds.xml, sounds/Makefile: 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 2014-09-08 18:03 +0000 [r422851-422855] Mark Michelson * configs/samples/pjsip.conf.sample: Add note about configuring list_items on a single line. * configs/samples/pjsip.conf.sample: 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. * res/res_pjsip_pubsub.c: 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 2014-09-08 15:41 +0000 [r422836] Jonathan Rose * res/res_pjsip_pubsub.c: 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 2014-09-06 22:49 +0000 [r422767-422770] Matthew Jordan * /, main/cdr.c: 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 * main/rtp_engine.c, /: 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 2014-09-06 19:12 +0000 [r422747] Joshua Colp * res/res_pjsip_sdp_rtp.c, /: 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 2014-09-05 22:03 +0000 [r422716-422719] Matthew Jordan * main/cdr.c, /, apps/app_macro.c, include/asterisk/channel.h, apps/app_stack.c: 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 * main/cdr.c, /: 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 2014-09-05 20:35 +0000 [r422700] Richard Mudgett * funcs/func_channel.c: 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. 2014-09-05 20:11 +0000 [r422665-422684] Jonathan Rose * main/dial.c, include/asterisk/dial.h: 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/ * main/cli.c, /: 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 2014-09-05 17:36 +0000 [r422661] Richard Mudgett * main/devicestate.c, channels/chan_iax2.c: 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. 2014-09-05 13:28 +0000 [r422646] Kinsey Moore * menuselect/menuselect.c: 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 2014-09-04 21:23 +0000 [r422631] Jonathan Rose * main/manager.c, /: 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 2014-09-03 14:05 +0000 [r422558] Joshua Colp * res/res_pjsip_transport_websocket.c, /: 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 2014-09-02 20:29 +0000 [r422542] Mark Michelson * /, channels/chan_pjsip.c, res/res_pjsip_diversion.c, res/res_pjsip_session.c, include/asterisk/res_pjsip_session.h: 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 2014-09-01 14:16 +0000 [r422504-422507] Matthew Jordan * main/cli.c, /: 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 * res/res_stasis.c, /, res/stasis/stasis_bridge.c: 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 2014-08-30 17:32 +0000 [r422442-422445] George Joseph * apps/app_confbridge.c, /: 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 * main/manager.c, /: 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 2014-08-29 19:40 +0000 [r422374-422379] Matthew Jordan * doc/smsq.8 (added), /: 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 * doc/aelparse.8 (added), /: 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 2014-08-29 19:05 +0000 [r422359] Scott Griepentrog * channels/chan_sip.c: 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/ Commited in trunk revision 422358 2014-08-28 21:54 +0000 [r422296] Matthew Jordan * LICENSE, /: 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 2014-08-28 20:30 +0000 [r422276] Michael L. Young * /, channels/chan_iax2.c: 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 2014-08-28 17:25 +0000 [r422256] Richard Mudgett * /, UPGRADE.txt: Added ConfBridge AMI event note to UPGRADE.txt. ........ Merged revisions 422255 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-28 15:49 +0000 [r422239] Mark Michelson * res/res_pjsip_pubsub.c: 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. 2014-08-28 00:36 +0000 [r422200-422215] Richard Mudgett * res/res_pjsip/pjsip_options.c, /: 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 * main/sched.c, include/asterisk/sched.h: sched: Fix typo and whitespace change. 2014-08-27 17:29 +0000 [r422177] George Joseph * /, apps/confbridge/confbridge_manager.c, apps/app_confbridge.c: 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 2014-08-27 15:31 +0000 [r422154] Kinsey Moore * include/asterisk/utils.h, /, channels/chan_sip.c, tests/test_callerid.c (added), tests/test_utils.c, main/callerid.c, main/utils.c, res/res_pjsip_caller_id.c: 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 2014-08-26 23:28 +0000 [r422091] George Joseph * apps/app_confbridge.c, /: 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 2014-08-26 22:13 +0000 [r422071] Mark Michelson * main/sched.c, /: 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 2014-08-25 16:44 +0000 [r421979-422037] Richard Mudgett * res/res_musiconhold.c: res_musiconhold.c: Release any format refs before memset(). * Clear the channel music_state pointer before destroying the music_state object for safety. * res/res_musiconhold.c, /: 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 2014-08-24 19:36 +0000 [r421911-421956] Joshua Colp * res/res_pjsip_transport_websocket.c, /: 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 * /, res/res_pjsip_transport_websocket.c: 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 * /, res/res_pjsip_transport_websocket.c: 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 * /, channels/chan_sip.c: 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 2014-08-22 16:56 +0000 [r421882] Mark Michelson * apps/app_mixmonitor.c: 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. 2014-08-22 16:44 +0000 [r421880] Jonathan Rose * res/res_stasis_answer.c, res/res_stasis.c, res/stasis/command.c, res/res_stasis_playback.c, /, res/stasis/control.c, res/stasis/stasis_bridge.c, res/stasis/command.h, include/asterisk/stasis_app_impl.h, res/res_stasis_recording.c: 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 2014-08-22 14:08 +0000 [r421860] Matthew Jordan * main/message.c, /: main/message: Add a new-line to a DEBUG message ........ Merged revisions 421859 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-21 22:07 +0000 [r421802] Richard Mudgett * /, res/res_musiconhold.c: 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 2014-08-21 21:42 +0000 [r421790-421797] Mark Michelson * res/res_pjsip_session.c, /: 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 * /, res/stasis/control.c: 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 * res/res_pjsip_caller_id.c, /: 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 2014-08-21 21:25 +0000 [r421788] Jonathan Rose * /, res/res_musiconhold.c: 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 2014-08-21 21:18 +0000 [r421783] Mark Michelson * /, res/res_pjsip_caller_id.c: 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 2014-08-21 17:34 +0000 [r421675-421720] Matthew Jordan * /, channels/chan_sip.c: 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 * /, UPGRADE.txt, main/app.c: 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 * res/stasis/messaging.h, main/dns.c, /, main/format_cache.c: 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 * include/asterisk/uri.h, main/uri.c: 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) 2014-08-20 22:49 +0000 [r421616-421645] Richard Mudgett * main/bridge.c, res/res_pjsip_sdp_rtp.c, main/file.c, main/bridge_channel.c, channels/chan_pjsip.c, main/channel.c: 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/ * /, main/cli.c: 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 2014-08-20 20:40 +0000 [r421566-421585] Mark Michelson * res/res_pjsip_pubsub.c: 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. * /, channels/chan_pjsip.c: 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 2014-08-20 13:04 +0000 [r421538] Kinsey Moore * include/asterisk/stasis_bridges.h, tests/test_cel.c, res/ari/ari_model_validators.c, main/stasis_bridges.c, res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /, res/stasis/app.c, main/bridge.c: 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 2014-08-19 20:28 +0000 [r421448-421488] Mark Michelson * /, res/res_pjsip.c: Alter documentation for callerid_privacy to use correct values. ........ Merged revisions 421485 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis.c, /: Fix compilation error on certain versions of GCC. ........ Merged revisions 421447 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-19 19:42 +0000 [r421445] Kinsey Moore * main/manager.c, /: 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 2014-08-19 16:28 +0000 [r421423] Jonathan Rose * res/res_stasis.c, /: 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 2014-08-19 16:11 +0000 [r421403] Richard Mudgett * /, res/res_pjsip_caller_id.c, channels/chan_pjsip.c, res/res_pjsip_session.c: 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 2014-08-18 21:10 +0000 [r421376] Damien Wedhorn * channels/chan_skinny.c: Skinny: Fixup compile warning for non dev-mode. 2014-08-18 20:19 +0000 [r421337] George Joseph * funcs/func_config.c, /: 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 2014-08-18 01:13 +0000 [r421230-421312] Matthew Jordan * res/ari/resource_channels.c: res/ari/resource_channels: Fix compilation issue Forgot a parameter. Whoops. * res/ari/resource_channels.c: 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 * /, apps/app_meetme.c: 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 * apps/app_dial.c, /: 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 * /, configure, configure.ac: 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 2014-08-17 16:10 +0000 [r421210] Joshua Colp * res/res_http_websocket.c: res_http_websocket: Include query parameters in client connection requests. Review: https://reviewboard.asterisk.org/r/3914/ 2014-08-15 17:08 +0000 [r421187] Jonathan Rose * main/channel.c, /: 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 2014-08-15 15:45 +0000 [r421042-421166] Matthew Jordan * apps/app_voicemail.c, /, main/app.c: 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 * res/res_hep_rtcp.c, /: 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 * /, main/file.c, main/app.c: 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 * tests/test_cel.c, main/cel.c, /: 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 2014-08-14 16:32 +0000 [r420957-421010] Richard Mudgett * /, res/ari/resource_channels.c: 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 * main/channel_internal_api.c, main/channel.c: 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/ * /, res/res_pjsip_send_to_voicemail.c: res_pjsip_send_to_voicemail.c: Fix svn file properties. ........ Merged revisions 420956 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-13 16:53 +0000 [r420950] Kinsey Moore * res/res_pjsip.c, /: 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 2014-08-13 16:07 +0000 [r420940] Jonathan Rose * main/bridge_after.c, main/channel_internal_api.c, include/asterisk/channel.h, apps/app_chanspy.c, apps/app_mixmonitor.c, apps/app_stack.c, main/bridge_channel.c, main/channel.c, main/pbx.c, /, main/framehook.c: 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 2014-08-13 14:24 +0000 [r420919] Kinsey Moore * main/manager.c: AMI: Improve documentation for Status action 2014-08-13 07:52 +0000 [r420899] Walter Doekes * /, main/logger.c: 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 2014-08-12 23:43 +0000 [r420879-420881] Richard Mudgett * channels/chan_sip.c: 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. * res/res_stasis_snoop.c: 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. 2014-08-12 11:17 +0000 [r420856] Joshua Colp * apps/app_voicemail.c: app_voicemail: Fix the "test_voicemail_vm_info" unit test. 2014-08-11 20:53 +0000 [r420837] Richard Mudgett * res/stasis/command.c, /: res/stasis/command.c: Fix recent commit using spaces instead of tabs. ........ Merged revisions 420836 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-11 18:50 +0000 [r420808] Matthew Jordan * rest-api/api-docs/playbacks.json, rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, rest-api/resources.json, 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.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 2014-08-11 18:46 +0000 [r420796-420803] Kinsey Moore * /, res/res_stasis.c: 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 * res/res_stasis.c, res/ari/resource_bridges.c, /, res/stasis/stasis_bridge.c, include/asterisk/stasis_app.h: 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 2014-08-11 18:32 +0000 [r420758-420794] Mark Michelson * include/asterisk/stasis_app.h, main/stasis_channels.c, res/ari/resource_channels.c, CHANGES, res/res_pjsip_pubsub.c, main/manager_channels.c, apps/app_dial.c, res/stasis/app.c, res/stasis/control.c: 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 * res/res_pjsip_pubsub.c: 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. * res/res_pjsip_pubsub.c: 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. 2014-08-11 13:57 +0000 [r420742] Matthew Jordan * res/res_hep.c, res/res_hep_pjsip.c, res/res_hep_rtcp.c: 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. 2014-08-11 10:40 +0000 [r420657-420717] Walter Doekes * /, main/utils.c: 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 * main/tcptls.c, /: 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 2014-08-11 01:31 +0000 [r420607-420639] Matthew Jordan * funcs/func_jitterbuffer.c: funcs/func_jitterbuffer: Tweak documentation This patch merely reformats and cleans up a bit of the jitterbuffer documentation for the wiki. * UPGRADE.txt, configs/samples/extconfig.conf.sample, CHANGES, apps/app_queue.c, contrib/ast-db-manage/config/versions/d39508cb8d8_create_queue_rules.py (added), configs/samples/queuerules.conf.sample: 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) * CHANGES: Update CHANGES file * UPGRADE.txt: Update UPGRADE.txt file 2014-08-08 20:08 +0000 [r420577-420592] Jason Parker * apps/app_voicemail.c: Fix build in devmode. * CHANGES, configs/samples/voicemail.conf.sample, apps/app_voicemail.c: app_voicemail: Add the ability to specify multiple email addresses. ASTERISK-24045 Reported by: Jacob Barber Review: https://reviewboard.asterisk.org/r/3833/ 2014-08-08 17:53 +0000 [r420534-420562] Matthew Jordan * channels/chan_sip.c, channels/sip/security_events.c, channels/sip/dialplan_functions.c, channels/sip/reqresp_parser.c, channels/sip/route.c, channels/sip/utils.c, channels/sip/config_parser.c: chan_sip: Mark chan_sip and its files as extended support * rest-api-templates/make_ari_stubs.py: make_ari_stubs: Update wiki prefix to '13' * rest-api-templates/res_ari_resource.c.mustache: res_ari_resource.c.mustache: Update template to emit module support level * main/message.c, /: main/message: remove debug message ........ Merged revisions 420533 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-08 03:03 +0000 [r420514] Kinsey Moore * tests/test_cel.c, /: 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 2014-08-08 01:31 +0000 [r420494-420496] Matthew Jordan * UPGRADE.txt: Update UPGRADE file for 13 branch * /: Remove old properties * / (added): ___ _ _ _ __ _____ / _ \ | | (_) | | / ||____ | / /_\ \___| |_ ___ _ __ _ ___| | __ `| | / / | _ / __| __/ _ | '__| / __| |/ / | | \ \ | | | \__ | || __| | | \__ | < _| |.___/ / \_| |_|___/\__\___|_| |_|___|_|\_\ \___\____/ 2014-08-07 21:58 +0000 [r420437] Richard Mudgett * /, channels/chan_sip.c: chan_sip: Replace sip_tls_read() and resolve the large SDP poll issue. Replace sip_tls_read() and sip_tcp_read() with a single function and resolve the poll/wait issue with large SDP payloads. ASTERISK-18345 #close Reported by: Stephane Chazelas Patches: tcptls_pollv4.diff (license #5835) patch uploaded by Elazar Broad Review: https://reviewboard.asterisk.org/r/3882/ ........ Merged revisions 420434 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 420435 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 420436 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-07 21:17 +0000 [r420389-420415] Kinsey Moore * main/stasis_bridges.c, /: Stasis: Correct blind transfer message generation This fixes the json object creation format string and key name for the BridgeBlindTransfer Stasis event allowing it to be published properly. ........ Merged revisions 420414 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_bridges.c, /: Stasis: Ensure transfer messages follow validation rules This makes Stasis() event generation for transfer messages follow validation rules. Currently, ast_json_null() is being used in place of omitting a key entirely which falls afoul of these validation rules. https://reviewboard.asterisk.org/r/3892/ ........ Merged revisions 420408 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_pubsub.c: Fix build in dev mode 2014-08-07 19:44 +0000 [r420384-420388] Mark Michelson * /, main/bridge.c: Ensure bridges exist when trying to determine bridged parties when publishing transfer information. ........ Merged revisions 420387 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/strings.c, include/asterisk/res_pjsip_presence_xml.h, res/res_pjsip_mwi.c, res/res_pjsip_dialog_info_body_generator.c, res/res_pjsip_xpidf_body_generator.c, include/asterisk/strings.h, res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_pidf_body_generator.c: Add support for RFC 4662 resource list subscriptions. This commit adds the ability for a user to configure a resource list in pjsip.conf. Subscribing to this list simultaneously subscribes the subscriber to all resources listed. This has the potential to reduce the amount of SIP traffic when loads of subscribers on a system attempt to subscribe to each others' states. 2014-08-07 18:51 +0000 [r420364] Richard Mudgett * include/asterisk/format_compatibility.h, channels/iax2/format_compatibility.c, channels/iax2/include/codec_pref.h, main/format_compatibility.c, channels/chan_iax2.c, channels/iax2/codec_pref.c, channels/iax2/include/format_compatibility.h: chan_iax2: Several media format fixes. * Fixed the iax.conf bandwidth option. This is the root cause of ASTERISK-24150. * Added checks in iax2_request() to ensure that there are actual formats requested for the new channel to prevent any more fracks from issues like ASTERISK-24150. This is a consequence of the iax.conf bandwidth option not working. * Fixed struct iax2_codec_pref.order member size mismatch issue when converting to and from the codec preference order list passed over the wire. In addition the values sent over the wire are now compatible with previous Asterisk versions. * Fixed several issues dealing with the struct iax2_codec_pref members. Off-by-one, array limit errors, and the order/framing members always need to be updated together. * Made iax2_request() setup the channel's native format preference order according to the user's wishes. The new media format strategy needs the order specified earler. * Fixed usage of ast_format_compatibility_bitfield2format(). The function can return NULL if the bitfield was not associated with a function. * Deleted dead code iax2_codec_pref_getsize() and iax2_codec_pref_setsize(). * Made iax2_parse_allow_disallow() and iax2_codec_pref_string() call iax2_codec_pref_to_cap() instead of inlining it. * Made IAX_CAPABILITY_MEDBANDWIDTH, IAX_CAPABILITY_LOWBANDWIDTH, and IAX_CAPABILITY_LOWFREE constants again as they were in Asterisk v1.8. * Renamed prefs to prefs_global so it won't get confused with the local pref versions. * Fixed too small buffer in handle_cli_iax2_show_peer(). * Fixed ast_cli() calls in handle_cli_iax2_show_peer() to output complete lines. * Changed struct create_addr_info.prefs to be struct iax2_codec_pref as an optimization so iax2_request() and iax2_call() do less work. * Fixed a potential deadlock in ast_iax2_new() on an off-nominal path when the pbx could not get started. * Made set_config() setup a local prefs list along side the local capability format bitfield. Once the config is loaded, then the local copies are put into the global versions. * Fix unininialized codec_buf in function_iaxpeer(). ASTERISK-24150 #close Reported by: Scott Griepentrog Review: https://reviewboard.asterisk.org/r/3890/ 2014-08-07 15:30 +0000 [r420338] Kinsey Moore * include/asterisk/bridge_features.h, res/res_stasis.c, res/stasis/command.c, rest-api/api-docs/events.json, /, res/stasis/app.c, res/stasis/control.c, main/bridge.c, main/bridge_basic.c, res/stasis/stasis_bridge.c, include/asterisk/stasis_bridges.h, res/stasis/command.h, include/asterisk/stasis_app.h, res/stasis/app.h, res/stasis/control.h, apps/app_queue.c, res/ari/ari_model_validators.c, main/cel.c, main/stasis_bridges.c, res/ari/ari_model_validators.h, main/channel.c, include/asterisk/datastore.h, tests/test_cel.c: Stasis: Convey transfer information to applications This fixes a class of issues where Stasis applications were not made aware that their channels were being manipulated or replaced by external entitiessuch as transfers, AMI commands, or dialplan applications such as Bridge(). Inconsistent information such as StasisEnd events with unknown channels as a result of masquerades has also been corrected. To accomplish these fixes, several new fields were added to blind and attended transfer messages as well as StasisStart and BridgeAttendedTransfer Stasis events. ASTERISK-23941 #close Review: https://reviewboard.asterisk.org/r/3865/ Review: https://reviewboard.asterisk.org/r/3857/ Review: https://reviewboard.asterisk.org/r/3852/ Review: https://reviewboard.asterisk.org/r/3816/ Review: https://reviewboard.asterisk.org/r/3731/ Review: https://reviewboard.asterisk.org/r/3729/ Review: https://reviewboard.asterisk.org/r/3728/ ........ Merged revisions 420325 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-07 14:37 +0000 [r420314-420315] Joshua Colp * include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_pubsub.exports.in, res/res_pjsip_publish_asterisk.c (added), res/res_pjsip_pubsub.c: res_pjsip_publish_asterisk: Add support for exchanging device and mailbox state using SIP. This module uses the inbound and outbound PUBLISH support to exchange device and mailbox state between Asterisk instances. Each instance is configured to publish to the other and requires no intermediary server. The functionality provided is similar to the XMPP and Corosync support. Review: https://reviewboard.asterisk.org/r/3780/ * include/asterisk/res_pjsip_outbound_publish.h (added), res/res_pjsip_outbound_publish.exports.in (added), res/res_pjsip_outbound_publish.c (added): res_pjsip_outbound_publish: Add module which provides outbound PUBLISH support. This module implements the core parts required for doing outbound PUBLISH. It takes care of configuration, lifetime management, and authentication. Additional modules implement the specific events that are published. Review: https://reviewboard.asterisk.org/r/3780/ 2014-08-07 14:17 +0000 [r420289-420309] Matthew Jordan * main/pbx.c: pbx: Filter out pattern matching hints in responses sent to ExtensionStateList Hints that are a pattern match are technically stored in the hint container in the same fashion as concrete implementations of hints. The pattern matching hints, however, are not "real" in the sense that things can subscribe to them: rather, they are stored in the hints container so that when a subscription is made a "real" hint can be generated for the subscription if one does not yet exist. The extension state core takes care of this correctly by matching against non-pattern matching extensions prior to pattern matching extensions. Because of this, however, the ExtensionStateList AMI action was returning pattern matching hints when executed. These hints are meaningless from the perspective of AMI clients: their state will never change, they cannot be subscribed to, and events would never normally be generated from them. As such, we now filter these out of the response. * build_tools/post_process_documentation.py: build_tools: Skip managerEvent combining for AMI action responses AMI action responses can (and will) reference AMI events that they return. These event references and definitions should not be combined with AMI events raised elsewhere in the code, as they are specifically tied to the AMI action that raised them. ASTERISK-24156 #close Reported by: Rusty Newton 2014-08-06 18:12 +0000 [r420212-420237] Richard Mudgett * contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py, /: Fix alembic script to work properly in offline mode. When run in offline mode, this would attempt to check the database for the presence of a type it was going to try to create. I now check the context to see if we're running in offline mode and change a parameter accordingly. ........ Merged revisions 407567 from http://svn.asterisk.org/svn/asterisk/branches/12 * contrib/ast-db-manage/config/versions/3855ee4e5f85_add_missing_pjsip_options.py (added), /: Add alembic script that adds contact user_agent and endpoint message_context. ........ Merged revisions 411514 from http://svn.asterisk.org/svn/asterisk/branches/12 * contrib/ast-db-manage/voicemail/versions/39428242f7f5_increase_recording_column_size.py (added), /, contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py, contrib/ast-db-manage/config.ini.sample, contrib/ast-db-manage/config/versions/1758e8bbf6b_increase_useragent_column_size.py (added), contrib/ast-db-manage/config/versions/5139253c0423_make_q_member_uniqueid_autoinc.py (added), contrib/ast-db-manage/cdr.ini.sample, contrib/ast-db-manage/voicemail.ini.sample: alembic: Adjust sippeers, queue_members, and voicemail_messages tables. * Increased the sippeers useragent max string size to 255. * Changed the queue_members uniqueid to an auto incremented integer instead of a string. * Increased the voicemail_messages BLOB size to LONGBLOB on mysql. * Fixed the add_tables_for_pjsip config change version downgrade actions to drop a table it created. * Adjusted the sample alembic.ini files cdr.ini.sample, config.ini.sample, and voicemail.ini.sample to give a mysql and postgres sqlalchemy.url lines. ASTERISK-23847 #close Reported by: Stephen More ASTERISK-23825 #close Reported by: Stephen More ASTERISK-23909 #close Reported by: Stephen More Review: https://reviewboard.asterisk.org/r/3870/ ........ Merged revisions 420211 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-06 16:12 +0000 [r420149] George Joseph * /, pbx/pbx_lua.c, main/pbx.c: pbx_lua: fix regression with global sym export and context clash by pbx_config. ASTERISK-23818 (lua contexts being overwritten by contexts of the same name in pbx_config) surfaced because pbx_lua, having the AST_MODFLAG_GLOBAL_SYMBOLS set, was always force loaded before pbx_config. Since I couldn't find any reason for pbx_lua to export it's symbols to the rest of Asterisk, I simply changed the flag to AST_MODFLAG_DEFAULT. Problem solved. What I didn't realize was that the symbols need to be exported not because Asterisk needs them but because any external Lua modules like luasql.mysql need the base Lua language APIs exported (ASTERISK-17279). Back to ASTERISK-23818... It looks like there's an issue in pbx.c where context_merge was only merging includes, switches and ignore patterns if the context was already existing AND has extensions, or if the context was brand new. If pbx_lua is loaded before pbx_config, the context will exist BUT pbx_lua, being implemented as a switch, will never place extensions in it, just the switch statement. The result is that when pbx_config loads, it never merges the switch statement created by pbx_lua into the final context. This patch sets pbx_lua's modflag back to AST_MODFLAG_GLOBAL_SYMBOLS and adds an "else if" in context_merge that catches the case where an existing context has includes, switchs or ingore patterns but no actual extensions. ASTERISK-23818 #close Reported by: Dennis Guse Reported by: Timo Teräs Tested by: George Joseph Review: https://reviewboard.asterisk.org/r/3891/ ........ Merged revisions 420146 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 420147 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 420148 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-06 15:32 +0000 [r420144] Walter Doekes * funcs/func_channel.c: Add documentation to the ability to retrieve the source port of a SIP call. (belongs with r419970) ASTERISK-24040 #close Patches: func_channel.c.diff uploaded by dtryba Review: https://reviewboard.asterisk.org/r/3781/ 2014-08-06 12:55 +0000 [r420124] Kinsey Moore * configs/samples/stasis.conf.sample (added), main/named_acl.c, apps/app_queue.c, main/stasis_bridges.c, main/loader.c, main/stasis.c, apps/app_forkcdr.c, main/stasis_message.c, funcs/func_cdr.c, res/res_corosync.c, res/res_stun_monitor.c, res/res_stasis_test.c, res/res_stasis.c, apps/app_chanspy.c, main/stasis_cache.c, main/pickup.c, main/security_events.c, include/asterisk/stasis.h, main/devicestate.c, main/core_local.c, res/res_stasis_snoop.c, main/endpoints.c, main/presencestate.c, main/cdr.c, main/channel.c, main/stasis_system.c, main/manager.c, main/test.c, main/file.c, main/app.c, pbx/pbx_realtime.c, main/stasis_channels.c, tests/test_stasis.c, res/parking/parking_manager.c, main/stasis_endpoints.c, main/rtp_engine.c, main/ccss.c, main/bridge.c, tests/test_stasis_channels.c: Stasis: Allow message types to be blocked This introduces stasis.conf and a mechanism to prevent certain message types from being published. Internally, this works by preventing the chosen message types from being created which ensures that those message types can never be published. This patch also adjusts message publishers such that message payloads are not created if the related message type is not available. ASTERISK-23943 #close Review: https://reviewboard.asterisk.org/r/3823/ 2014-08-05 21:48 +0000 [r420098-420100] Matthew Jordan * res/stasis/messaging.c, /: stasis: Fix compilation issue with ao2 tagged objects ........ Merged revisions 420099 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_endpoints.c, rest-api/api-docs/events.json, /, channels/chan_sip.c, res/stasis/app.c, res/stasis/messaging.h (added), res/ari/resource_endpoints.h, res/res_pjsip_messaging.c, tests/test_message.c (added), res/res_xmpp.c, include/asterisk/json.h, CHANGES, include/asterisk/manager.h, res/ari/ari_model_validators.c, res/ari/ari_model_validators.h, main/json.c, res/res_ari_endpoints.c, include/asterisk/message.h, res/ari/resource_channels.c, main/message.c, res/res_stasis.c, res/stasis/messaging.c (added), rest-api/api-docs/endpoints.json: Multiple revisions 420089-420090,420097 ........ r420089 | mjordan | 2014-08-05 15:10:52 -0500 (Tue, 05 Aug 2014) | 72 lines ARI: Add channel technology agnostic out of call text messaging This patch adds the ability to send and receive text messages from various technology stacks in Asterisk through ARI. This includes chan_sip (sip), res_pjsip_messaging (pjsip), and res_xmpp (xmpp). Messages are sent using the endpoints resource, and can be sent directly through that resource, or to a particular endpoint. For example, the following would send the message "Hello there" to PJSIP endpoint alice with a display URI of sip:asterisk@mycooldomain.org: ari/endpoints/sendMessage?to=pjsip:alice&from=sip:asterisk@mycooldomain.org&body=Hello+There This is equivalent to the following as well: ari/endpoints/PJSIP/alice/sendMessage?from=sip:asterisk@mycooldomain.org&body=Hello+There Both forms are available for message technologies that allow for arbitrary destinations, such as chan_sip. Inbound messages can now be received over ARI as well. An ARI application that subscribes to endpoints will receive messages from those endpoints: { "type": "TextMessageReceived", "timestamp": "2014-07-12T22:53:13.494-0500", "endpoint": { "technology": "PJSIP", "resource": "alice", "state": "online", "channel_ids": [] }, "message": { "from": "\"alice\" ", "to": "pjsip:asterisk@127.0.0.1", "body": "Watson, come here.", "variables": [] }, "application": "testsuite" } The above was made possible due to some rather major changes in the message core. This includes (but is not limited to): - Users of the message API can now register message handlers. A handler has two callbacks: one to determine if the handler has a destination for the message, and another to handle it. - All dialplan functionality of handling a message was moved into a message handler provided by the message API. - Messages can now have the technology/endpoint associated with them. Various other properties are also now more easily accessible. - A number of ao2 containers that weren't really needed were replaced with vectors. Iteration over ao2_containers is expensive and pointless when the lifetime of things is well defined and the number of things is very small. res_stasis now has a new file that makes up its structure, messaging. The messaging functionality implements a message handler, and passes received messages that match an interested endpoint over to the app for processing. Note that inadvertently while testing this, I reproduced ASTERISK-23969. res_pjsip_messaging was incorrectly parsing out the 'to' field, such that arbitrary SIP URIs mangled the endpoint lookup. This patch includes the fix for that as well. Review: https://reviewboard.asterisk.org/r/3726 ASTERISK-23692 #close Reported by: Matt Jordan ASTERISK-23969 #close Reported by: Andrew Nagy ........ r420090 | mjordan | 2014-08-05 15:16:37 -0500 (Tue, 05 Aug 2014) | 2 lines Remove automerge properties :-( ........ r420097 | mjordan | 2014-08-05 16:36:25 -0500 (Tue, 05 Aug 2014) | 2 lines test_message: Fix strict-aliasing compilation issue ........ Merged revisions 420089-420090,420097 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-05 13:59 +0000 [r420028] Jonathan Rose * main/format.c: chan_iax2: Fix a crash that occurs when using allow=all for an IAX2 peer Or any combination of codecs that includes Opus. ASTERISK-24107 #close Review: https://reviewboard.asterisk.org/r/3885/ 2014-08-04 21:00 +0000 [r420007] Richard Mudgett * main/format_cache.c, include/asterisk/format_cache.h: Remove duplicate definitions of ast_format_vp8. 2014-08-04 20:25 +0000 [r419970] Mark Michelson * channels/sip/dialplan_functions.c: Add the ability to retrieve the source port of a SIP call. This adds the ability to call CHANNEL(recvport) on chan_sip channels to see the port on which an INVITE was received. ASTERISK-24040 #close Reported by dtryba Patches: dialplan_functions.patch uploaded by dtryba (License #6628) Review: https://reviewboard.asterisk.org/r/3781 2014-08-04 19:47 +0000 [r419945] Rusty Newton * main/manager.c, /: Manager - Improve documentation for manager commands Getvar and Setvar. The documentation for these commands did not make it clear that they could accept expressions and functions. Modified to make this clear, but tried not to be overly explicit. ASTERISK-21178 #close Reported by: Rusty Newton Tested by: Rusty Newton Review: https://reviewboard.asterisk.org/r/3854 ........ Merged revisions 419942 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 419943 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 419944 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-08-02 03:37 +0000 [r419914] Kinsey Moore * res/res_pjsip.c: Manager: Add PJSIPShowEndpoint[s] documentation This adds a large swath of response documentation for PJSIPShowEndpoint and PJSIPShowEndpoints AMI commands. It relies heavily on the existing text in the configInfo documentation via xi:include tags to avoid documentation duplication. Review: https://reviewboard.asterisk.org/r/3888/ 2014-08-01 14:48 +0000 [r419888] Mark Michelson * CHANGES, res/res_pjsip/pjsip_options.c: Add ContactStatusDetail to PJSIPShowEndpoint AMI output. Now when running PJSIPShowEndpoint, you will receive a ContactStatusDetail for each bound contact that Asterisk is qualifying. This information includes the URI of the contact, current reachability, and roundtrip time. AFS-91 #close Reported by Mark Michelson Review: https://reviewboard.asterisk.org/r/3797 2014-07-31 16:19 +0000 [r419851] Jonathan Rose * CHANGES, res/res_pjsip_notify.c: PJSIP: Send Notify AMI and CLI commands can now send to URI instead of endpoint Review: https://reviewboard.asterisk.org/r/3817/ 2014-07-31 11:57 +0000 [r419822-419825] Matthew Jordan * main/rtp_engine.c, /, res/res_hep_rtcp.c (added), CHANGES, channels/chan_pjsip.c, res/res_rtp_asterisk.c: res_hep_rtcp: Add module that sends RTCP information to a Homer Server This patch adds a new module to Asterisk, res_hep_rtcp. The module subscribes to the RTCP topics in Stasis and receives RTCP information back from the message bus. It encodes into HEPv3 packets and sends the information to the res_hep module for transmission. Using this, someone with a Homer server can get live call quality monitoring for all RTP-based channels in their Asterisk 12+ systems. In addition, there were a few bugs in the RTP engine, res_rtp_asterisk, and chan_pjsip that were uncovered by the tests written for the Asterisk Test Suite. This patch fixes the following: 1) chan_pjsip failed to set its channel unique ids on its RTP instance on outbound calls. It now does this in the appropriate location, in the serialized call callback. 2) The rtp_engine was overflowing some values when packed into JSON. Specifically, some longs and unsigned ints can't be be packed into integer values, for obvious reasons. Since libjansson only supports integers, floats, strings, booleans, and objects, we print these values into strings. 3) res_rtp_asterisk had a few problems: (a) it would emit a source IP address of 0.0.0.0 if bound to that IP address. We now use ast_find_ourip to get a better IP address, and properly marshal the result into an ast_strdupa'd string. (b) Reports can be generated with no report bodies. In particular, this occurs when a sender is transmitting information to a receiver (who will send no RTP back to the sender). As such, the sender has no report body for what it received. We now properly handle this case, and the sender will emit SR reports with no body. Likewise, if we receive an RTCP packet with no report body, we will still generate the appropriate events. ASTERISK-24119 #close ........ Merged revisions 419823 from http://svn.asterisk.org/svn/asterisk/branches/12 * funcs/func_jitterbuffer.c, doc/appdocsxml.dtd, main/xmldoc.c: xmldocs: Add support for an tag in the Asterisk XML Documentation This patch adds support for an tag in the XML documentation schema. For CLI help, this doesn't change the formatting too much: - Preceeding white space is removed - Unlike with para elements, new lines are preserved However, having an tag in the XML schema allows for the wiki documentation generation script to surround the documentation with {code} or {noformat} tags, generating much better content for the wiki - and allowing us to put dialplan examples (and other code snippets, if desired) into the documentation for an application/function/AMI command/etc. Review: https://reviewboard.asterisk.org/r/3807/ 2014-07-30 18:32 +0000 [r419806] Kinsey Moore * main/manager.c, res/res_manager_presencestate.c, res/res_manager_devicestate.c, main/pbx.c: manager: Add state list commands This patch adds three new AMI commands: * ExtensionStateList (pbx.c) - list all known extension state hints and their current statuses. Events emitted by the list action are equivalent to the ExtensionStatus events. * PresenceStateList (res_manager_presencestate) - list all known presence state values. Events emitted are generated by the stasis message type, and hence are PresenceStateChange events. * DeviceStateList (res_manager_devicestate) - list all known device state values. Events emitted are generated by the stasis message type, and hence are DeviceStateChange events. Patch-by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3799/ 2014-07-29 19:41 +0000 [r419789] Mark Michelson * main/manager.c: Do not omit the first header of a UserEvent AMI action from the corresponding emitted UserEvent. ASTERISK-24124 #close Reported by Matt Jordan AFS-131 #close Reported by Matt Jordan Patches: userevent.patch uploaded by Matt Jordan (License #6283) 2014-07-29 10:56 +0000 [r419751-419766] Joshua Colp * res/res_pjsip_session.c, /: res_pjsip_session: Fix race condition where redirecting information may not be set. Since the PJSIP INVITE session module is invoked before any session supplements it was possible for it to handle a redirect before the res_pjsip_diversion module interpreted and set redirecting information on the channel. This would cause the redirecting information to get lost. This patch ensures that session supplements are *always* invoked before a redirect occurs by explicitly calling them in the redirect handler. Review: https://reviewboard.asterisk.org/r/3850/ ........ Merged revisions 419764 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_xpidf_body_generator.c, res/res_pjsip_pidf_body_generator.c: res_pjsip_pidf_body_generator / res_pjsip_xpidf_body_generator: Ensure local entity is unquoted. The local entity as provided by PJSIP is quoted within '<' and '>'. As a result placing this value into XML will result in malformed XML being produced. This patch now unquotes the local entity so it can go safely into the XML. Review: https://reviewboard.asterisk.org/r/3851/ ........ Merged revisions 419750 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-28 18:58 +0000 [r419688] Richard Mudgett * apps/app_speech_utils.c, main/channel.c, /, funcs/func_frame_trace.c, main/abstract_jb.c: datastores: Audit ast_channel_datastore_remove usage. Audit of v1.8 usage of ast_channel_datastore_remove() for datastore memory leaks. * Fixed leaks in app_speech_utils and func_frame_trace. * Fixed app_speech_utils not locking the channel when accessing the channel datastore list. Review: https://reviewboard.asterisk.org/r/3859/ Audit of v11 usage of ast_channel_datastore_remove() for datastore memory leaks. * Fixed leak in func_jitterbuffer. (Was not in v12) Review: https://reviewboard.asterisk.org/r/3860/ Audit of v12 usage of ast_channel_datastore_remove() for datastore memory leaks. * Fixed leaks in abstract_jb. * Fixed leak in ast_channel_unsuppress(). Used by ARI mute control and res_mutestream. * Fixed ref leak in ast_channel_suppress(). Used by ARI mute control and res_mutestream. Review: https://reviewboard.asterisk.org/r/3861/ ........ Merged revisions 419684 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 419685 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 419686 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-25 18:09 +0000 [r419612] Joshua Colp * main/loader.c: loader: Fix an infinite loop when printing modules using "module show". When creating the alphabetical sorted list each module is added to a list temporarily. On the second iteration each module already has a pointer to another module, causing stuff to go into a loop. ASTERISK-24123 #close Reported by: Malcolm Davenport 2014-07-25 16:47 +0000 [r419592] Mark Michelson * res/res_ari_sounds.c, res/res_stasis.c, res/res_fax_spandsp.c, res/res_timing_kqueue.c, res/res_odbc.c, res/res_pjsip_transport_websocket.c, apps/app_voicemail.c, res/res_calendar.c, channels/chan_unistim.c, cel/cel_radius.c, channels/chan_multicast_rtp.c, res/res_pjsip_notify.c, res/res_snmp.c, formats/format_sln.c, apps/app_meetme.c, apps/app_dictate.c, codecs/codec_gsm.c, res/res_stasis_snoop.c, res/res_musiconhold.c, res/res_format_attr_h264.c, res/res_http_websocket.c, apps/app_followme.c, res/res_config_sqlite.c, formats/format_siren7.c, cdr/cdr_csv.c, formats/format_ilbc.c, channels/chan_phone.c, apps/app_setcallerid.c, apps/app_osplookup.c, cel/cel_custom.c, apps/app_mp3.c, res/res_agi.c, channels/chan_motif.c, res/res_timing_timerfd.c, apps/app_confbridge.c, res/res_format_attr_silk.c, formats/format_siren14.c, res/res_sorcery_realtime.c, channels/chan_mgcp.c, apps/app_jack.c, codecs/codec_lpc10.c, res/res_pjsip_pidf_body_generator.c, res/res_config_pgsql.c, funcs/func_dialplan.c, apps/app_nbscat.c, cdr/cdr_syslog.c, res/res_pjsip_authenticator_digest.c, apps/app_festival.c, res/res_fax.c, apps/app_waitforsilence.c, res/res_adsi.c, res/res_crypto.c, res/res_ari_applications.c, res/res_hep_pjsip.c, pbx/pbx_lua.c, res/res_pjsip_messaging.c, res/res_pjsip_caller_id.c, channels/chan_console.c, apps/app_getcpeid.c, res/res_stasis_answer.c, channels/chan_oss.c, res/res_pjsip_nat.c, res/res_pjsip_session.c, cdr/cdr_tds.c, res/res_pjsip_header_funcs.c, res/res_parking.c, formats/format_vox.c, res/res_pjsip_rfc3326.c, res/res_ari_endpoints.c, res/res_stun_monitor.c, res/res_pjsip_mwi.c, res/res_stasis_recording.c, res/res_pjsip_xpidf_body_generator.c, apps/app_sms.c, codecs/codec_ulaw.c, channels/chan_nbs.c, apps/app_stack.c, channels/chan_pjsip.c, formats/format_g729.c, cel/cel_pgsql.c, res/res_sorcery_config.c, res/res_ari.c, addons/chan_ooh323.c, cdr/cdr_sqlite3_custom.c, codecs/codec_adpcm.c, res/res_ari_asterisk.c, res/res_calendar_caldav.c, apps/app_image.c, apps/app_ices.c, formats/format_wav_gsm.c, main/cli.c, res/res_format_attr_celt.c, res/res_rtp_multicast.c, channels/chan_dahdi.c, funcs/func_pitchshift.c, res/res_smdi.c, res/res_pjsip_one_touch_record_info.c, pbx/pbx_ael.c, pbx/pbx_realtime.c, apps/app_amd.c, channels/chan_alsa.c, formats/format_h263.c, apps/app_url.c, res/res_pjsip_acl.c, apps/app_externalivr.c, res/res_curl.c, formats/format_gsm.c, res/res_speech.c, cdr/cdr_manager.c, res/res_calendar_exchange.c, codecs/codec_g722.c, res/res_pjsip_multihomed.c, res/res_ari_mailboxes.c, cel/cel_tds.c, res/res_sorcery_memory.c, apps/app_fax.c, codecs/codec_speex.c, res/res_pjsip_sdp_rtp.c, codecs/codec_g726.c, formats/format_ogg_vorbis.c, apps/app_talkdetect.c, res/res_ari_channels.c, res/res_pjsip_exten_state.c, apps/app_speech_utils.c, apps/app_agent_pool.c, apps/app_waitforring.c, res/res_statsd.c, addons/cdr_mysql.c, formats/format_g726.c, res/res_ari_bridges.c, addons/app_mysql.c, res/res_stasis_playback.c, addons/format_mp3.c, res/res_pjsip_endpoint_identifier_ip.c, res/res_phoneprov.c, res/res_pjsip_t38.c, res/res_pjsip_registrar_expire.c, cdr/cdr_pgsql.c, cdr/cdr_radius.c, res/res_chan_stats.c, res/res_format_attr_opus.c, res/res_config_odbc.c, funcs/func_audiohookinherit.c, res/res_pjsip_outbound_registration.c, cel/cel_manager.c, funcs/func_odbc.c, res/res_pjsip_endpoint_identifier_anonymous.c, funcs/func_frame_trace.c, funcs/func_aes.c, cdr/cdr_sqlite.c, apps/app_minivm.c, res/res_pjsip_log_forwarder.c, formats/format_h264.c, res/res_config_ldap.c, apps/app_ivrdemo.c, addons/chan_mobile.c, apps/app_stasis.c, res/res_pjsip_diversion.c, cdr/cdr_custom.c, apps/app_adsiprog.c, res/res_pjsip_dtmf_info.c, res/res_rtp_asterisk.c, res/res_calendar_icalendar.c, res/res_hep.c, channels/chan_sip.c, channels/chan_bridge_media.c, codecs/codec_alaw.c, apps/app_queue.c, res/res_srtp.c, funcs/func_presencestate.c, res/res_timing_pthread.c, res/res_manager_presencestate.c, res/res_corosync.c, apps/app_celgenuserevent.c, cel/cel_sqlite3_custom.c, res/snmp/agent.c, pbx/pbx_dundi.c, formats/format_g723.c, funcs/func_devstate.c, res/res_pjsip_registrar.c, res/res_pjsip_pidf_eyebeam_body_supplement.c, addons/res_config_mysql.c, res/res_pjsip_pidf_digium_body_supplement.c, apps/app_test.c, res/res_timing_dahdi.c, cdr/cdr_adaptive_odbc.c, apps/app_alarmreceiver.c, apps/app_chanisavail.c, res/res_format_attr_h263.c, res/res_pjsip_mwi_body_generator.c, res/res_xmpp.c, res/res_http_post.c, channels/chan_iax2.c, res/res_pjsip_endpoint_identifier_user.c, res/res_pjsip.c, res/res_pktccops.c, res/res_pjsip_send_to_voicemail.c, main/loader.c, cel/cel_odbc.c, res/res_ari_model.c, channels/chan_skinny.c, res/res_pjsip_outbound_authenticator_digest.c, res/res_mwi_external.c, apps/app_skel.c, formats/format_pcm.c, include/asterisk/module.h, res/res_pjsip_path.c, res/res_ari_playbacks.c, res/res_pjsip_pubsub.c, cdr/cdr_odbc.c, funcs/func_periodic_hook.c, res/res_stasis_test.c, formats/format_jpeg.c, res/res_pjsip_refer.c, formats/format_g719.c, res/res_clialiases.c, res/res_config_sqlite3.c, res/res_ari_device_states.c, formats/format_wav.c, apps/app_saycounted.c, apps/app_dahdiras.c, apps/app_morsecode.c, res/res_stasis_mailbox.c, res/res_ael_share.c, res/res_mwi_external_ami.c, res/res_pjsip_logger.c, res/res_stasis_device_state.c, res/res_calendar_ews.c, res/res_monitor.c, apps/app_playback.c, res/res_ari_recordings.c, res/res_manager_devicestate.c, res/res_config_curl.c, channels/chan_misdn.c, funcs/func_curl.c, res/res_ari_events.c, res/res_pjsip_dialog_info_body_generator.c, res/res_sorcery_astdb.c, codecs/codec_dahdi.c, apps/app_zapateller.c, pbx/pbx_config.c: Add module support level to ast_module_info structure. Print it in CLI "module show" . ASTERISK-23919 #close Reported by Malcolm Davenport Review: https://reviewboard.asterisk.org/r/3802 2014-07-25 14:47 +0000 [r419563-419567] Matthew Jordan * CHANGES, res/ari/ari_model_validators.c, rest-api/api-docs/recordings.json, res/ari/ari_model_validators.h, /, res/res_stasis_recording.c: Multiple revisions 419565-419566 ........ r419565 | mjordan | 2014-07-25 09:41:23 -0500 (Fri, 25 Jul 2014) | 21 lines ARI: report duration values in LiveRecording objects This patch adds three new fields to the LiveRecording model: - total_duration: the total length of the live recording - talking_duration: optional. The duration of talking energy that was detected while the recording was made. - silence_duration: optional. The duration of silence that was detected while the recording was made. These values are reported in the RecordingFinished ARI event. When a DSP is enabled on the channel during the recording - which occurs when the recording is created with max_silence_seconds (indicating that the user actually cares about how much silence is in the file), we will report the talking_duration and silence_duration in addition to the total_duration. Review: https://reviewboard.asterisk.org/r/3770/ ASTERISK-24037 #close Reported by: Samuel Galarneau ........ r419566 | mjordan | 2014-07-25 09:46:15 -0500 (Fri, 25 Jul 2014) | 1 line Update CHANGES for r419565 ........ Merged revisions 419565-419566 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/loader.c, res/res_calendar.c: module loader: Unload modules in reverse order of their start order When Asterisk starts a module (calling its load_module function), it re-orders the module list, sorting it alphabetically. Ostensibly, this was done so that the output of 'module show' listed modules in alphabetic order. This had the unfortunate side effect of making modules with complex usage patterns unloadable. A module that has a large number of modules that depend on it is typically abandoned during the unloading process. This results in its memory not being reclaimed during exit. Generally, this isn't harmful - when the process is destroyed, the operating system will reclaim all memory allocated by the process. Prior to Asterisk 12, we also didn't have many modules with complex dependencies. However, with the advent of ARI and PJSIP, this can make make unloading those modules successfully nearly impossible, and thus tracking memory leaks or ref debug leaks a real pain. While this patch is not a complete overhaul of the module loader - such an effort would be beyond the scope of what could be done for Asterisk 13 - this does make some marginal improvements to the loader such that modules like res_pjsip or res_stasis *may* be made properly un-loadable in the future. 1. The linked list of modules has been replaced with a doubly linked list. This allows traversal of the module list to occur backwards. The module shutdown routine now walks the global list backwards when it attempts to unload modules. 2. The alphabetic reorganization of the module list on startup has been removed. Instead, a started module is placed at the end of the module list. 3. The ast_update_module_list function - which is used by the CLI to display the modules - now does the sorting alphabetically itself. It creates its own linked list and inserts the modules into it in alphabetic order. This allows for the intent of the previous code to be maintained. This patch also contains a fix for res_calendar. Without calendar.conf, the calendar modules were improperly bumping the use count of res_calendar, then failing to load themselves. This patch makes it so that we detect whether or not calendaring is enabled before altering the use count. Review: https://reviewboard.asterisk.org/r/3777/ 2014-07-25 10:54 +0000 [r419537-419539] Joshua Colp * apps/app_bridgewait.c, /: app_bridgewait: Remove possibility of race condition between channels leaving/joining. Bridges created by app_bridgewait previously had the "dissolve when empty" flag set. This caused the bridge core to destroy them when the last channel had left. This introduced a race condition where we may have a reference to the bridge but it is not actually joinable when we try to join it. This flag has now been removed and the bridge is guaranteed to be joinable at all times. ASTERISK-23987 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3836/ ........ Merged revisions 419538 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/bridge.c: bridge: Make "bridge destroy" only available in developer mode and add "all" to "bridge kick". The "bridge destroy" CLI command is invasive to bridges and can leave them in an unexpected state for the users of them. Since this command may be useful for developers it is now only available when developer mode is available. To take its place "all" has been added as a valid option to the "bridge kick" CLI command. It will kick all of the channels in the bridge out. ASTERISK-23987 Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3840/ ........ Merged revisions 419536 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-24 22:48 +0000 [r419520] Richard Mudgett * main/bridge.c, main/bridge_basic.c, main/core_unreal.c, UPGRADE.txt, include/asterisk/channel.h, CHANGES, apps/app_followme.c, apps/app_queue.c, main/cel.c, res/parking/parking_bridge_features.c, apps/app_dial.c, main/channel.c, main/dial.c, main/pbx.c: accountcode: Slightly change accountcode propagation. The previous behavior was to simply set the accountcode of an outgoing channel to the accountcode of the channel initiating the call. It was done this way a long time ago to allow the accountcode set on the SIP/100 channel to be propagated to a local channel so the dialplan execution on the Local;2 channel would have the SIP/100 accountcode available. SIP/100 -> Local;1/Local;2 -> SIP/200 Propagating the SIP/100 accountcode to the local channels is very useful. Without any dialplan manipulation, all channels in this call would have the same accountcode. Using dialplan, you can set a different accountcode on the SIP/200 channel either by setting the accountcode on the Local;2 channel or by the Dial application's b(pre-dial), M(macro) or U(gosub) options, or by the FollowMe application's b(pre-dial) option, or by the Queue application's macro or gosub options. Before Asterisk v12, the altered accountcode on SIP/200 will remain until the local channels optimize out and the accountcode would change to the SIP/100 accountcode. Asterisk v1.8 attempted to add peeraccount support but ultimately had to punt on the support. The peeraccount support was rendered useless because of how the CDR code needed to unconditionally force the caller's accountcode onto the peer channel's accountcode. The CEL events were thus intentionally made to always use the channel's accountcode as the peeraccount value. With the arrival of Asterisk v12, the situation has improved somewhat so peeraccount support can be made to work. Using the indicated example, the the accountcode values become as follows when the peeraccount is set on SIP/100 before calling SIP/200: SIP/100 ---> Local;1 ---- Local;2 ---> SIP/200 acct: 100 \/ acct: 200 \/ acct: 100 \/ acct: 200 peer: 200 /\ peer: 100 /\ peer: 200 /\ peer: 100 If a channel already has an accountcode it can only change by the following explicit user actions: 1) A channel originate method that can specify an accountcode to use. 2) The calling channel propagating its non-empty peeraccount or its non-empty accountcode if the peeraccount was empty to the outgoing channel's accountcode before initiating the dial. e.g., Dial and FollowMe. The exception to this propagation method is Queue. Queue will only propagate peeraccounts this way only if the outgoing channel does not have an accountcode. 3) Dialplan using CHANNEL(accountcode). 4) Dialplan using CHANNEL(peeraccount) on the other end of a local channel pair. If a channel does not have an accountcode it can get one from the following places: 1) The channel driver's configuration at channel creation. 2) Explicit user action as already indicated. 3) Entering a basic or stasis-mixing bridge from a peer channel's peeraccount value. You can specify the accountcode for an outgoing channel by setting the CHANNEL(peeraccount) before using the Dial, FollowMe, and Queue applications. Queue adds the wrinkle that it will not overwrite an existing accountcode on the outgoing channel with the calling channels values. Accountcode and peeraccount values propagate to an outgoing channel before dialing. Accountcodes also propagate when channels enter or leave a basic or stasis-mixing bridge. The peeraccount value only makes sense for mixing bridges with two channels; it is meaningless otherwise. * Made peeraccount functional by changing accountcode propagation as described above. * Fixed CEL extracting the wrong ie value for the peeraccount. This was done intentionally in Asterisk v1.8 when that version had to punt on peeraccount. * Fixed a few places dealing with accountcodes that were reading from channels without the lock held. AFS-65 #close Review: https://reviewboard.asterisk.org/r/3601/ 2014-07-24 21:01 +0000 [r419504] Michael L. Young * main/db.c, include/asterisk/astdb.h: core/db: Revert Patch Added In Attempt To Improve I/O Performance Reverting the patch since it was causing a regression and after fixing the regression, there were no performance gains. At least based on my method for measurement. ASTERISK-24050 Review: https://reviewboard.asterisk.org/r/3841/ 2014-07-24 17:50 +0000 [r419438-419439] Corey Farrell * include/asterisk/astobj.h: Deprecate astobj.h This flags astobj.h as deprecated, warns people to use astobj2.h instead. Only netsock.c (also deprecated) still uses astobj.h. ASTERISK-24069 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3818/ * channels/sip/include/sip.h, channels/chan_sip.c: chan_sip: complete upgrade to ao2 This change upgrades sip_registry and sip_subscription_mwi to astobj2. ASTERISK-24067 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3759/ 2014-07-24 16:52 +0000 [r419377] Jason Parker * addons/chan_ooh323.c, /: Don't cause Asterisk to exit if ooh323.conf not found. (closes issue ASTERISK-23814) ........ Merged revisions 419374 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 419375 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 419376 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-24 15:20 +0000 [r419358] Matthew Jordan * main/devicestate.c, channels/chan_pjsip.c: device state: Update the core to report ONHOLD if a channel is on hold In Asterisk, it is possible for a device to have a status of ONHOLD. This is not typically an easy thing to determine, as a channel being on hold is not a direct channel state. Typically, this has to be calculated outside of the core independently in channel drivers, notably, chan_sip and chan_pjsip. Both of these channel drivers already have to calculate device state in a fashion more complex than the core can handle, as they aggregate all state of all channels associated with a peer/endpoint; they also independently track whether or not one of those channels is currently on hold and mark the device state appropriately. In 12+, we now have the ability to report an AST_DEVICE_ONHOLD state for all channels that defer their device state to the core. This is due to channel hold state actually now being tracked on the channel itself. If a channel driver defers its device state to the core (which many, such as DAHDI, IAX2, and others do in most situations), the device state core already goes out to get a channel associated with the device. As such, it can now also factor the channel hold state in its calculation. This patch adds this logic to the device state core. It also uses an existing mapping between device state and channel state to handle more channel states. chan_pjsip has been updated slightly as well to make use of this (as it was, for some reason, reporting a channel state of BUSY as a device state of INUSE, which feels slightly wrong). Review: https://reviewboard.asterisk.org/r/3771/ ASTERISK-24038 #close 2014-07-24 13:00 +0000 [r419342] Kinsey Moore * include/asterisk/manager.h, doc/appdocsxml.dtd, main/xmldoc.c, main/manager_bridges.c, main/manager.c, include/asterisk/xmldoc.h, main/config_options.c: AMI: Allow for command response documentation Allow for responses to AMI actions/commands to be documented properly in XML and displayed via the CLI. Response events are documented exactly as standard AMI events are documented. Review: https://reviewboard.asterisk.org/r/3812/ 2014-07-23 16:46 +0000 [r419319] Matthew Jordan * main/endpoints.c, tests/test_stasis_endpoints.c, /: endpoints: Fix failing unit tests from r419196 This patch does two things: (1) It updates the unit tests to expect additional stasis messages. More messages are now sent to the endpoint topic, due to forwarding all channel messages and the forwarding relationship set up between endpoints themselves. (2) Remove the technology forwarding subscription during ast_endpoint_shutdown. This prevents an improper double shutdown of an endpoint from occurring. ........ Merged revisions 419318 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-23 14:00 +0000 [r419286] Scott Griepentrog * apps/app_voicemail.c, /: app_voicemail: use a consistent generator string When updating voicemail.conf when a user changes their pin, change the generator string to be the same as the module name when reading so that the same config_hook will be called. Review: https://reviewboard.asterisk.org/r/3837/ ........ Merged revisions 419284 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 419285 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-23 01:28 +0000 [r419268] Corey Farrell * main/manager.c, res/res_fax.c: res_fax: unregister manager actions on unload * Unregister manager actions FAXSessions, FAXSession and FAXStats at unload. * Update ast_manager_register2 use ao2_t_alloc tagged with the action name. ASTERISK-24058 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3831/ 2014-07-22 20:22 +0000 [r419222-419252] Michael L. Young * CHANGES, main/bridge_channel.c: core/bridge_channel: Substitute Variables In Features Application Map Say you wanted to include variables in an application map and have those variables substituted and passed along to the application being executed; currently this does not happen. This patch adds this ability to pass channel variable values to an application before being executed. ASTERISK-22608 #close Reported by: Michael L. Young patches: features_substitute_arguments_v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3819/ * CHANGES, apps/app_mixmonitor.c: apps/app_mixmonitor: Add Options To Play Beep At Start Or Stop We have a new periodic beep feature but sometimes a user needs some sort of feedback, without the need to have a periodic beep during the recording, to let them know that MixMonitor started recording or ended the recording. The use case where this patch is being used is when using Dynamic Features to start and end MixMonitor. This patch adds an option to play a beep when MixMonitor starts and an option to play a beep when MixMonitor ends. ASTERISK-24051 #close Reported by: Michael L. Young patches: mixmonitor-play-beep-start-stop.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3820/ * main/db.c, include/asterisk/astdb.h: core/db: Improve I/O When Updating Rows When updating a row, we are currently doing an INSERT OR REPLACE INTO. The downside to this is that the row is deleted if it exists and then a new row is inserted. So, we are hitting the disk twice. One for the deletion and one for the insertion. This patch changes this statement to an INSERT INTO and if the insert fails because a row with that key exists, we will IGNORE the failure. Then we will attempt to perform an UPDATE on the existing row if that row wasn't just INSERTed. ASTERISK-24050 #close Reported by: Michael L. Young patches: astdb-insert-update-io-help_trunk_v2.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3815/ 2014-07-22 17:10 +0000 [r419206] Richard Mudgett * codecs/codec_speex.c: codec_speex: Fix trashing normal static frame for AST_FRAME_CNG. Made use a local static frame to generate the AST_FRAME_CNG frame when silence starts. I don't think the handling of the AST_FRAME_CNG has ever really worked because there doesn't seem to be any consumers of it. Review: https://reviewboard.asterisk.org/r/3813/ 2014-07-22 16:20 +0000 [r419203] Matthew Jordan * include/asterisk/endpoints.h, rest-api/api-docs/applications.json, include/asterisk/xmpp.h, main/channel_internal_api.c, channels/chan_motif.c, include/asterisk/channel.h, res/ari/resource_applications.h, res/res_xmpp.c, channels/chan_iax2.c, main/endpoints.c, channels/chan_pjsip.c, main/channel.c, res/ari/resource_endpoints.c, /, channels/chan_sip.c: ARI: Fix endpoint/channel subscription issues; allow for subscriptions to tech This patch serves two purposes: (1) It fixes some bugs with endpoint subscriptions not reporting all of the channel events (2) It serves as the preliminary work needed for ASTERISK-23692, which allows for sending/receiving arbitrary out of call text messages through ARI in a technology agnostic fashion. The messaging functionality described on ASTERISK-23692 requires two things: (1) The ability to send/receive messages associated with an endpoint. This is relatively straight forwards with the endpoint core in Asterisk now. (2) The ability to send/receive messages associated with a technology and an arbitrary technology defined URI. This is less straight forward, as endpoints are formed from a tech + resource pair. We don't have a mechanism to note that a technology that *may* have endpoints exists. This patch provides such a mechanism, and fixes a few bugs along the way. The first major bug this patch fixes is the forwarding of channel messages to their respective endpoints. Prior to this patch, there were two problems: (1) Channel caching messages weren't forwarded. Thus, the endpoints missed most of the interesting bits (such as channel creation, destruction, state changes, etc.) (2) Channels weren't associated with their endpoint until after creation. This resulted in endpoints missing the channel creation message, which limited the usefulness of the subscription in the first place (a major use case being 'tell me when this endpoint has a channel'). Unfortunately, this meant another parameter to ast_channel_alloc. Since not all channel technologies support an ast_endpoint, this patch makes such a call optional and opts for a new function, ast_channel_alloc_with_endpoint. When endpoints are created, they will implicitly create a technology endpoint for their technology (if one does not already exist). A technology endpoint is special in that it has no state, cannot have channels created for it, cannot be created explicitly, and cannot be destroyed except on shutdown. It does, however, have all messages from other endpoints in its technology forwarded to it. Combined with the bug fixes, we now have Stasis messages being properly forwarded. Consider the following scenario: two PJSIP endpoints (foo and bar), where bar has a single channel associated with it and foo has two channels associated with it. The messages would be forwarded as follows: channel PJSIP/foo-1 -- \ --> endpoint PJSIP/foo -- / \ channel PJSIP/foo-2 -- \ ---- > endpoint PJSIP / channel PJSIP/bar-1 -----> endpoint PJSIP/bar -- ARI, through the applications resource, can: - subscribe to endpoint:PJSIP/foo and get notifications for channels PJSIP/foo-1,PJSIP/foo-2 and endpoint PJSIP/foo - subscribe to endpoint:PJSIP/bar and get notifications for channels PJSIP/bar-1 and endpoint PJSIP/bar - subscribe to endpoint:PJSIP and get notifications for channels PJSIP/foo-1,PJSIP/foo-2,PJSIP/bar-1 and endpoints PJSIP/foo,PJSIP/bar Note that since endpoint PJSIP never changes, it never has events itself. It merely provides an aggregation point for all other endpoints in its technology (which in turn aggregate all channel messages associated with that endpoint). This patch also adds endpoints to res_xmpp and chan_motif, because the actual messaging work will need it (messaging without XMPP is just sad). Review: https://reviewboard.asterisk.org/r/3760/ ASTERISK-23692 ........ Merged revisions 419196 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-22 14:36 +0000 [r419180] Joshua Colp * channels/chan_iax2.c: chan_iax2: Restore previous behavior of iax2_best_codec. The iax2_best_codec function was changed to convert the formats into a format compatibilities structure and grab the first format from it. The resulting order differs from the previous order of iax2_best_codec which causes unexpected formats to get chosen (such as g723). This commit brings back the old behavior of iax2_best_codec by having a specified preference list. Review: https://reviewboard.asterisk.org/r/3835/ 2014-07-22 14:22 +0000 [r419110-419175] Kinsey Moore * addons/ooh323c/src/printHandler.c, tests/test_sorcery_realtime.c, tests/test_json.c, addons/ooh323c/src/ooq931.c, tests/test_astobj2_thrash.c, addons/chan_ooh323.c, /, tests/test_optional_api.c, tests/test_abstract_jb.c, apps/app_meetme.c, tests/test_logger.c, tests/test_event.c, tests/test_hashtab_thrash.c, res/res_mwi_external_ami.c, tests/test_sorcery.c, res/res_corosync.c, tests/test_voicemail_api.c, tests/test_aoc.c, tests/test_astobj2.c, tests/test_config.c: Fix more dev-mode build issues ........ Merged revisions 419129 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 419162 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 419163 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/dial.c: Dial API: Prevent crash on NULL cap This prevents a crash in the Dial API triggered by use of the Page() application where a format capability struct was used before checking whether it was NULL. ASTERISK-24074 #close * channels/chan_skinny.c, tests/test_core_format.c: Fix build in dev-mode 2014-07-21 16:26 +0000 [r419109] Jonathan Rose * channels/chan_iax2.c: chan_iax2: Restore codec choice behavior from media formats branch After merging the media formats branch, chan_iax2 was discarding codec preferences for the purpose of choosing which codec a channel would use once a call started. This patch restores the Asterisk 1.8-12 codec choice behaviors. ASTERISK-23958 #close Review: https://reviewboard.asterisk.org/r/3800/ 2014-07-21 16:09 +0000 [r419093] Joshua Colp * channels/chan_iax2.c: chan_iax2: Only send mini frames if the underlying format has not changed, not if it has. ASTERISK-24072 #close Reported by: Matt Jordan 2014-07-21 14:49 +0000 [r419077] Sean Bright * configure, configure.ac: Fix build when pjproject is installed in a non-standard location. When configuring Asterisk to build against a version of pjproject installed in a non-standard location, the checks for "PJSIP Transaction Group Lock Support" and "PJSIP Media Stream Replacement Support" fail. This is because these secondary checks are not taking the CFLAGS and LIBS returned by the pkg-config check into account. Review: https://reviewboard.asterisk.org/r/3830 2014-07-21 08:41 +0000 [r419060] Corey Farrell * channels/sig_analog.c, res/res_smdi.c, channels/chan_motif.c, include/asterisk/smdi.h, apps/app_voicemail.c, channels/chan_dahdi.c: res_smdi: convert to astobj2 Remove functions: ast_smdi_interface_unref ast_smdi_md_message_putback ast_smdi_mwi_message_putback ast_smdi_md_message destructor ast_smdi_mwi_message destructor Includes for astobj.h are removed everywhere it's possible. ASTERISK-24066 #close Review: https://reviewboard.asterisk.org/r/3758/ 2014-07-20 22:06 +0000 [r419044] Matthew Jordan * apps/app_confbridge.c, res/ari/resource_channels.c, include/asterisk/rtp_engine.h, include/asterisk/slinfactory.h, res/res_calendar.c, codecs/codec_g722.c, include/asterisk/res_pjsip_session.h, main/frame.c, codecs/ex_lpc10.h, apps/app_dictate.c, res/res_fax.c, apps/app_echo.c, include/asterisk/slin.h, codecs/codec_g726.c, formats/format_ogg_vorbis.c, codecs/codec_gsm.c, codecs/ex_alaw.h, formats/format_wav_gsm.c, channels/iax2/provision.c, channels/chan_iax2.c, res/res_format_attr_h264.c, main/data.c, main/manager.c, include/asterisk/audiohook.h, formats/format_pcm.c, main/config_options.c, res/res_format_attr_silk.c, main/bridge_channel.c, res/res_speech.c, channels/chan_pjsip.c, res/res_clioriginate.c, formats/format_g729.c, channels/chan_unistim.c, res/res_rtp_asterisk.c, include/asterisk/smoother.h (added), main/rtp_engine.c, addons/format_mp3.c, formats/format_wav.c, apps/confbridge/conf_chan_record.c, include/asterisk/speech.h, codecs/ex_adpcm.h, channels/iax2/codec_pref.c (added), include/asterisk/codec.h (added), formats/format_siren7.c, include/asterisk/file.h, channels/chan_dahdi.c, include/asterisk/image.h, funcs/func_channel.c, main/abstract_jb.c, formats/format_h263.c, codecs/codec_dahdi.c, main/dsp.c, apps/app_voicemail.c, apps/app_jack.c, funcs/func_talkdetect.c, channels/chan_vpb.cc, channels/chan_sip.c, formats/format_sln.c, tests/test_abstract_jb.c, codecs/codec_alaw.c, UPGRADE.txt, main/smoother.c (added), codecs/ex_speex.h, channels/chan_console.c, apps/app_talkdetect.c, main/format_pref.c (removed), main/indications.c, include/asterisk/format_cap.h, main/media_index.c, apps/app_agent_pool.c, res/res_pjsip_session.c, main/cli.c, res/res_format_attr_celt.c, channels/chan_skinny.c, tests/test_core_format.c (added), funcs/func_frame_trace.c, res/res_pjsip/pjsip_configuration.c, main/file.c, include/asterisk/frame.h, formats/format_g726.c, apps/app_mixmonitor.c, channels/chan_mgcp.c, main/sorcery.c, codecs/ex_ilbc.h, codecs/codec_lpc10.c, tests/test_format_cache.c (added), apps/app_meetme.c, main/translate.c, apps/app_originate.c, res/parking/parking_applications.c, apps/app_ices.c, channels/iax2/parser.c, res/res_rtp_multicast.c, pbx/pbx_spool.c, funcs/func_pitchshift.c, formats/format_vox.c, main/format_cap.c, tests/test_cel.c, include/asterisk/format.h, formats/format_h264.c, apps/app_chanspy.c, apps/app_nbscat.c, addons/chan_ooh323.c, bridges/bridge_holding.c, channels/iax2/include/codec_pref.h (added), codecs/codec_adpcm.c, apps/app_waitforsilence.c, res/res_pjsip_sdp_rtp.c, addons/chan_ooh323.h, bridges/bridge_simple.c, apps/app_alarmreceiver.c, bridges/bridge_softmix.c, res/res_stasis_snoop.c, main/sounds_index.c, main/core_local.c, main/codec_builtin.c (added), include/asterisk/format_cache.h (added), apps/app_speech_utils.c, res/res_format_attr_opus.c, include/asterisk/abstract_jb.h, main/channel.c, include/asterisk/format_compatibility.h (added), apps/app_mp3.c, tests/test_voicemail_api.c, channels/chan_alsa.c, main/app.c, formats/format_g723.c, codecs/codec_ilbc.c, tests/test_config.c, formats/format_gsm.c, apps/app_milliwatt.c, codecs/ex_ulaw.h, main/asterisk.c, include/asterisk/res_pjsip.h, main/format.c, main/ccss.c, main/bridge.c, codecs/codec_speex.c, include/asterisk/format_pref.h (removed), apps/app_record.c, main/slinfactory.c, res/res_adsi.c, main/core_unreal.c, res/ari/resource_bridges.c, include/asterisk/callerid.h, channels/pjsip/dialplan_functions.c, main/dial.c, channels/dahdi/bridge_native_dahdi.c, main/format_cache.c (added), include/asterisk/mod_format.h, apps/app_sms.c, codecs/codec_resample.c, main/format_compatibility.c (added), main/audiohook.c, formats/format_jpeg.c, res/res_stasis.c, formats/format_g719.c, include/asterisk/translate.h, funcs/func_speex.c, codecs/codec_a_mu.c, channels/iax2/format_compatibility.c (added), apps/app_festival.c, main/channel_internal_api.c, tests/test_format_api.c (removed), codecs/ex_g722.h, main/utils.c, res/ari/resource_sounds.c, res/res_format_attr_h263.c, codecs/ex_g726.h, include/asterisk/_private.h, channels/chan_oss.c, channels/chan_misdn.c, main/codec.c (added), main/callerid.c, addons/ooh323cDriver.c, apps/app_amd.c, codecs/codec_ulaw.c, main/image.c, channels/chan_nbs.c, bridges/bridge_native_rtp.c, channels/iax2/include/format_compatibility.h (added), formats/format_siren14.c, res/res_fax_spandsp.c, addons/chan_mobile.c, addons/ooh323cDriver.h, channels/sip/include/sip.h, tests/test_format_cap.c (added), channels/chan_multicast_rtp.c, include/asterisk/vector.h, channels/chan_bridge_media.c, apps/app_fax.c, main/bridge_basic.c, apps/app_test.c, include/asterisk/channel.h, include/asterisk/data.h, tests/test_core_codec.c (added), res/res_musiconhold.c, codecs/ex_gsm.h, formats/format_ilbc.c, include/asterisk/config_options.h, channels/chan_phone.c, include/asterisk/bridge_channel.h, apps/app_dumpchan.c, channels/chan_motif.c, res/res_agi.c: media formats: re-architect handling of media for performance improvements In the old times media formats were represented using a bit field. This was fast but had a few limitations. 1. Asterisk was limited in how many formats it could handle. 2. Formats, being a bit field, could not include any attribute information. A format was strictly its type, e.g., "this is ulaw". This was changed in Asterisk 10 (see https://wiki.asterisk.org/wiki/display/AST/Media+Architecture+Proposal for notes on that work) which led to the creation of the ast_format structure. This structure allowed Asterisk to handle attributes and bundle information with a format. Additionally, ast_format_cap was created to act as a container for multiple formats that, together, formed the capability of some entity. Another mechanism was added to allow logic to be registered which performed format attribute negotiation. Everywhere throughout the codebase Asterisk was changed to use this strategy. Unfortunately, in software, there is no free lunch. These new capabilities came at a cost. Performance analysis and profiling showed that we spend an inordinate amount of time comparing, copying, and generally manipulating formats and their related structures. Basic prototyping has shown that a reasonably large performance improvement could be made in this area. This patch is the result of that project, which overhauled the media format architecture and its usage in Asterisk to improve performance. Generally, the new philosophy for handling formats is as follows: * The ast_format structure is reference counted. This removed a large amount of the memory allocations and copying that was done in prior versions. * In order to prevent race conditions while keeping things performant, the ast_format structure is immutable by convention and lock-free. Violate this tenet at your peril! * Because formats are reference counted, codecs are also reference counted. The Asterisk core generally provides built-in codecs and caches the ast_format structures created to represent them. Generally, to prevent inordinate amounts of module reference bumping, codecs and formats can be added at run-time but cannot be removed. * All compatibility with the bit field representation of codecs/formats has been moved to a compatibility API. The primary user of this representation is chan_iax2, which must continue to maintain its bit-field usage of formats for interoperability concerns. * When a format is negotiated with attributes, or when a format cannot be represented by one of the cached formats, a new format object is created or cloned from an existing format. That format may have the same codec underlying it, but is a different format than a version of the format with different attributes or without attributes. * While formats are reference counted objects, the reference count maintained on the format should be manipulated with care. Formats are generally cached and will persist for the lifetime of Asterisk and do not explicitly need to have their lifetime modified. An exception to this is when the user of a format does not know where the format came from *and* the user may outlive the provider of the format. This occurs, for example, when a format is read from a channel: the channel may have a format with attributes (hence, non-cached) and the user of the format may last longer than the channel (if the reference to the channel is released prior to the format's reference). For more information on this work, see the API design notes: https://wiki.asterisk.org/wiki/display/AST/Media+Format+Rewrite Finally, this work was the culmination of a large number of developer's efforts. Extra thanks goes to Corey Farrell, who took on a large amount of the work in the Asterisk core, chan_sip, and was an invaluable resource in peer reviews throughout this project. There were a substantial number of patches contributed during this work; the following issues/patch names simply reflect some of the work (and will cause the release scripts to give attribution to the individuals who work on them). Reviews: https://reviewboard.asterisk.org/r/3814 https://reviewboard.asterisk.org/r/3808 https://reviewboard.asterisk.org/r/3805 https://reviewboard.asterisk.org/r/3803 https://reviewboard.asterisk.org/r/3801 https://reviewboard.asterisk.org/r/3798 https://reviewboard.asterisk.org/r/3800 https://reviewboard.asterisk.org/r/3794 https://reviewboard.asterisk.org/r/3793 https://reviewboard.asterisk.org/r/3792 https://reviewboard.asterisk.org/r/3791 https://reviewboard.asterisk.org/r/3790 https://reviewboard.asterisk.org/r/3789 https://reviewboard.asterisk.org/r/3788 https://reviewboard.asterisk.org/r/3787 https://reviewboard.asterisk.org/r/3786 https://reviewboard.asterisk.org/r/3784 https://reviewboard.asterisk.org/r/3783 https://reviewboard.asterisk.org/r/3778 https://reviewboard.asterisk.org/r/3774 https://reviewboard.asterisk.org/r/3775 https://reviewboard.asterisk.org/r/3772 https://reviewboard.asterisk.org/r/3761 https://reviewboard.asterisk.org/r/3754 https://reviewboard.asterisk.org/r/3753 https://reviewboard.asterisk.org/r/3751 https://reviewboard.asterisk.org/r/3750 https://reviewboard.asterisk.org/r/3748 https://reviewboard.asterisk.org/r/3747 https://reviewboard.asterisk.org/r/3746 https://reviewboard.asterisk.org/r/3742 https://reviewboard.asterisk.org/r/3740 https://reviewboard.asterisk.org/r/3739 https://reviewboard.asterisk.org/r/3738 https://reviewboard.asterisk.org/r/3737 https://reviewboard.asterisk.org/r/3736 https://reviewboard.asterisk.org/r/3734 https://reviewboard.asterisk.org/r/3722 https://reviewboard.asterisk.org/r/3713 https://reviewboard.asterisk.org/r/3703 https://reviewboard.asterisk.org/r/3689 https://reviewboard.asterisk.org/r/3687 https://reviewboard.asterisk.org/r/3674 https://reviewboard.asterisk.org/r/3671 https://reviewboard.asterisk.org/r/3667 https://reviewboard.asterisk.org/r/3665 https://reviewboard.asterisk.org/r/3625 https://reviewboard.asterisk.org/r/3602 https://reviewboard.asterisk.org/r/3519 https://reviewboard.asterisk.org/r/3518 https://reviewboard.asterisk.org/r/3516 https://reviewboard.asterisk.org/r/3515 https://reviewboard.asterisk.org/r/3512 https://reviewboard.asterisk.org/r/3506 https://reviewboard.asterisk.org/r/3413 https://reviewboard.asterisk.org/r/3410 https://reviewboard.asterisk.org/r/3387 https://reviewboard.asterisk.org/r/3388 https://reviewboard.asterisk.org/r/3389 https://reviewboard.asterisk.org/r/3390 https://reviewboard.asterisk.org/r/3321 https://reviewboard.asterisk.org/r/3320 https://reviewboard.asterisk.org/r/3319 https://reviewboard.asterisk.org/r/3318 https://reviewboard.asterisk.org/r/3266 https://reviewboard.asterisk.org/r/3265 https://reviewboard.asterisk.org/r/3234 https://reviewboard.asterisk.org/r/3178 ASTERISK-23114 #close Reported by: mjordan media_formats_translation_core.diff uploaded by kharwell (License 6464) rb3506.diff uploaded by mjordan (License 6283) media_format_app_file.diff uploaded by kharwell (License 6464) misc-2.diff uploaded by file (License 5000) chan_mild-3.diff uploaded by file (License 5000) chan_obscure.diff uploaded by file (License 5000) jingle.diff uploaded by file (License 5000) funcs.diff uploaded by file (License 5000) formats.diff uploaded by file (License 5000) core.diff uploaded by file (License 5000) bridges.diff uploaded by file (License 5000) mf-codecs-2.diff uploaded by file (License 5000) mf-app_fax.diff uploaded by file (License 5000) mf-apps-3.diff uploaded by file (License 5000) media-formats-3.diff uploaded by file (License 5000) ASTERISK-23715 rb3713.patch uploaded by coreyfarrell (License 5909) rb3689.patch uploaded by mjordan (License 6283) ASTERISK-23957 rb3722.patch uploaded by mjordan (License 6283) mf-attributes-3.diff uploaded by file (License 5000) ASTERISK-23958 Tested by: jrose rb3822.patch uploaded by coreyfarrell (License 5909) rb3800.patch uploaded by jrose (License 6182) chan_sip.diff uploaded by mjordan (License 6283) rb3747.patch uploaded by jrose (License 6182) ASTERISK-23959 #close Tested by: sgriepentrog, mjordan, coreyfarrell sip_cleanup.diff uploaded by opticron (License 6273) chan_sip_caps.diff uploaded by mjordan (License 6283) rb3751.patch uploaded by coreyfarrell (License 5909) chan_sip-3.diff uploaded by file (License 5000) ASTERISK-23960 #close Tested by: opticron direct_media.diff uploaded by opticron (License 6273) pjsip-direct-media.diff uploaded by file (License 5000) format_cap_remove.diff uploaded by opticron (License 6273) media_format_fixes.diff uploaded by opticron (License 6273) chan_pjsip-2.diff uploaded by file (License 5000) ASTERISK-23966 #close Tested by: rmudgett rb3803.patch uploaded by rmudgetti (License 5621) chan_dahdi.diff uploaded by file (License 5000) ASTERISK-24064 #close Tested by: coreyfarrell, mjordan, opticron, file, rmudgett, sgriepentrog, jrose rb3814.patch uploaded by rmudgett (License 5621) moh_cleanup.diff uploaded by opticron (License 6273) bridge_leak.diff uploaded by opticron (License 6273) translate.diff uploaded by file (License 5000) rb3795.patch uploaded by rmudgett (License 5621) tls_fix.diff uploaded by mjordan (License 6283) fax-mf-fix-2.diff uploaded by file (License 5000) rtp_transfer_stuff uploaded by mjordan (License 6283) rb3787.patch uploaded by rmudgett (License 5621) media-formats-explicit-translate-format-3.diff uploaded by file (License 5000) format_cache_case_fix.diff uploaded by opticron (License 6273) rb3774.patch uploaded by rmudgett (License 5621) rb3775.patch uploaded by rmudgett (License 5621) rtp_engine_fix.diff uploaded by opticron (License 6273) rtp_crash_fix.diff uploaded by opticron (License 6273) rb3753.patch uploaded by mjordan (License 6283) rb3750.patch uploaded by mjordan (License 6283) rb3748.patch uploaded by rmudgett (License 5621) media_format_fixes.diff uploaded by opticron (License 6273) rb3740.patch uploaded by mjordan (License 6283) rb3739.patch uploaded by mjordan (License 6283) rb3734.patch uploaded by mjordan (License 6283) rb3689.patch uploaded by mjordan (License 6283) rb3674.patch uploaded by coreyfarrell (License 5909) rb3671.patch uploaded by coreyfarrell (License 5909) rb3667.patch uploaded by coreyfarrell (License 5909) rb3665.patch uploaded by mjordan (License 6283) rb3625.patch uploaded by coreyfarrell (License 5909) rb3602.patch uploaded by coreyfarrell (License 5909) format_compatibility-2.diff uploaded by file (License 5000) core.diff uploaded by file (License 5000) 2014-07-18 21:48 +0000 [r419022] Matthew Jordan * rest-api/api-docs/recordings.json, res/ari/resource_recordings.c, res/stasis_recording/stored.c, res/res_ari_recordings.c, /, include/asterisk/stasis_app_recording.h, res/ari/resource_recordings.h, CHANGES: ari: Add a copy operation for stored recordings This patch adds a new operation for stored recordings, copy. It takes an existing stored recording and makes a copy of it in the same directory or a relative directory under the stored recording directory. /ari/recordings/stored/{recordingName}/copy?destinationRecordingName={copy_name} This is particularly useful for voicemail-esque applications, which may need to copy or move recordings around a directory structure. Review: https://reviewboard.asterisk.org/r/3768/ ASTERISK-24036 #close Reported by: Sam Galarneau Tested by: Sam Galarneau ........ Merged revisions 419021 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-18 21:25 +0000 [r418997-419020] Corey Farrell * main/stasis_message_router.c, /: stasis: fix call to ao2_t_alloc for stasis_message_router_create This fixes a build failure introduced by r3821. struct stasis_topic is opaque, so topic->name is unavailable. Switch to using stasis_topic_name(). ........ Merged revisions 419019 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis.c, main/stasis_cache_pattern.c, main/stasis_message.c, main/stasis_message_router.c, /: stasis: use ao2_t_alloc for certain object allocators Add tags to stasis objects using the name. This makes it easier to track the source of certain stasis ref leaks. Review: https://reviewboard.asterisk.org/r/3821/ ........ Merged revisions 418996 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-18 19:07 +0000 [r418980] Kinsey Moore * res/res_fax_spandsp.c: Fix build in dev-mode 2014-07-18 17:55 +0000 [r418961-418963] Scott Griepentrog * res/res_pjsip_pubsub.c, main/astobj2.c, include/asterisk/astobj2.h, main/logger.c, main/utils.c: astobj2: assert on invalid ref and backtrace cleanup If a reference count goes negative, instead of just logging that fact, be more helpful with a backtrace and an assert that will DO_CRASH. This patch also removes the duplicate ao2_bt() function and cleans up extraneous usage of the ast_log_backtrace() call. Review: https://reviewboard.asterisk.org/r/3765/ * /, channels/chan_sip.c: media formats: fix ref leak of peer for mwi subscription Holding a reference to the peer during mwi subscriptions resulted in a circular reference because the final event message would not be sent until destruction of the peer. Instead, pass the name of the peer to the event callback so that it can fail gracefully after the peer has gone. ASTERISK-23959 Review: https://reviewboard.asterisk.org/r/3754/ ........ Merged revisions 418636 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/features_config.c: feature_config: insure featuregroups and applicationmaps are initialized If the features.conf is missing, the cfg->featurgroups and cfg->applicationmaps is not initialized, resulting in assert on ao2_find of a null container. This patch changes the initialization call and adds asserts for a safeguard. Review: https://reviewboard.asterisk.org/r/3809/ ........ Merged revisions 418886 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-18 16:47 +0000 [r418938] Richard Mudgett * funcs/func_audiohookinherit.c, /: func_audiohookinherit.c: Fixup some XML documentation wording. ........ Merged revisions 418937 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-18 16:28 +0000 [r418911-418936] Jonathan Rose * main/channel.c, funcs/func_audiohookinherit.c, /, include/asterisk/audiohook.h, main/framehook.c, res/res_fax.c, main/bridge_basic.c, include/asterisk/res_fax.h, bridges/bridge_native_rtp.c, main/audiohook.c, CHANGES, include/asterisk/framehook.h, res/res_pjsip_refer.c: Channels: Masquerades to automatically move frame/audio hooks Whenever possible, audiohooks and framehooks will now be copied over to the channel that the masquerading channel gets cloned into. This should occur for all audiohooks and most framehooks. As a result, in Asterisk 12.5 and up, the AUDIOHOOK_INHERIT function is now deprecated and its behavior is essentially the new default for all audiohooks, plus some additional audiohooks/framehooks. Review: https://reviewboard.asterisk.org/r/3721/ ........ Merged revisions 418914 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_fax.c, include/asterisk/res_fax.h, CHANGES, res/res_fax.exports.in, res/res_fax_spandsp.c: res_fax: Provide AMI equivalents for fax CLI commands Specifically the following equivalents were created: fax show session -> FAXSession fax show sessions -> FAXSessions fax show stats -> FAXStats Review: https://reviewboard.asterisk.org/r/3666/ 2014-07-18 00:11 +0000 [r418893-418895] Sean Bright * config.sub, menuselect/config.guess, menuselect/config.sub, config.guess: Update config.guess and config.sub * autoconf/ast_ext_tool_check.m4: Add missing file from previous commit. * menuselect/aclocal.m4, menuselect/configure, menuselect/acinclude.m4 (removed), menuselect/bootstrap.sh, menuselect/autoconfig.h.in: Import Asterisk's autoconf magic instead of using our own. 2014-07-17 21:17 +0000 [r418832-418870] Matthew Jordan * configs/samples/acl.conf.sample (added), configs/samples/extensions.conf.sample (added), configs/res_parking.conf.sample (removed), configs/samples/cel_sqlite3_custom.conf.sample (added), configs/cdr_sqlite3_custom.conf.sample (removed), configs/modules.conf.sample (removed), configs/samples/cli_aliases.conf.sample (added), configs/meetme.conf.sample (removed), configs/cdr_pgsql.conf.sample (removed), configs/samples/extensions.ael.sample (added), configs/samples/cdr_adaptive_odbc.conf.sample (added), configs/samples/motif.conf.sample (added), configs/samples/extensions_minivm.conf.sample (added), configs/samples/res_curl.conf.sample (added), configs/res_config_sqlite3.conf.sample (removed), configs/mgcp.conf.sample (removed), configs/dsp.conf.sample (removed), configs/udptl.conf.sample (removed), configs/sip.conf.sample (removed), configs/dbsep.conf.sample (removed), configs/queuerules.conf.sample (removed), configs/samples/cdr_mysql.conf.sample (added), configs/confbridge.conf.sample (removed), configs/samples/cdr_odbc.conf.sample (added), configs/samples/minivm.conf.sample (added), configs/enum.conf.sample (removed), configs/samples/codecs.conf.sample (added), configs/samples/chan_dahdi.conf.sample (added), configs/samples/cdr_custom.conf.sample (added), configs/samples/res_config_mysql.conf.sample (added), configs/samples/dundi.conf.sample (added), configs/samples/oss.conf.sample (added), configs/samples/app_mysql.conf.sample (added), configs/samples/queues.conf.sample (added), configs/samples/cdr.conf.sample (added), configs/samples/cdr_syslog.conf.sample (added), configs/festival.conf.sample (removed), configs/samples/cel_pgsql.conf.sample (added), configs/http.conf.sample (removed), configs/phoneprov.conf.sample (removed), configs/alarmreceiver.conf.sample (removed), configs/samples/features.conf.sample (added), configs/cdr_tds.conf.sample (removed), configs/func_odbc.conf.sample (removed), configs/samples/logger.conf.sample (added), configs/samples/res_odbc.conf.sample (added), configs/samples/agents.conf.sample (added), configs/res_fax.conf.sample (removed), configs/samples/xmpp.conf.sample (added), configs/iaxprov.conf.sample (removed), configs/res_pgsql.conf.sample (removed), configs/extensions.conf.sample (removed), configs/chan_mobile.conf.sample (removed), configs/asterisk.adsi (removed), configs/cel_sqlite3_custom.conf.sample (removed), configs/users.conf.sample (removed), configs/samples/res_pktccops.conf.sample (added), configs/samples/amd.conf.sample (added), configs/rtp.conf.sample (removed), configs/samples/res_parking.conf.sample (added), configs/hep.conf.sample (removed), configs/samples/modules.conf.sample (added), configs/cel_tds.conf.sample (removed), configs/res_curl.conf.sample (removed), configs/samples/skinny.conf.sample (added), configs/samples/cdr_pgsql.conf.sample (added), configs/samples/sip_notify.conf.sample (added), configs/samples/test_sorcery.conf.sample (added), configs/samples/dsp.conf.sample (added), configs/ss7.timers.sample (removed), configs/samples/udptl.conf.sample (added), configs/cdr_odbc.conf.sample (removed), configs/samples/sip.conf.sample (added), configs/minivm.conf.sample (removed), configs/res_config_sqlite.conf.sample (removed), configs/codecs.conf.sample (removed), configs/osp.conf.sample (removed), configs/samples/cel_custom.conf.sample (added), configs/samples/dbsep.conf.sample (added), configs/samples/app_skel.conf.sample (added), configs/console.conf.sample (removed), configs/cdr_manager.conf.sample (removed), configs/cdr_custom.conf.sample (removed), configs/chan_dahdi.conf.sample (removed), configs/res_config_mysql.conf.sample (removed), configs/samples/statsd.conf.sample (added), configs/cli.conf.sample (removed), configs/queues.conf.sample (removed), configs/cdr_syslog.conf.sample (removed), UPGRADE.txt, configs/manager.conf.sample (removed), configs/samples/res_corosync.conf.sample (added), configs/features.conf.sample (removed), configs/sla.conf.sample (removed), configs/logger.conf.sample (removed), configs/res_odbc.conf.sample (removed), configs/agents.conf.sample (removed), configs/samples/ooh323.conf.sample (added), Makefile, configs/xmpp.conf.sample (removed), configs/samples/phoneprov.conf.sample (added), configs/samples/alarmreceiver.conf.sample (added), configs/samples/cdr_tds.conf.sample (added), configs/extconfig.conf.sample (removed), configs/samples/func_odbc.conf.sample (added), configs/samples/res_fax.conf.sample (added), configs/samples/iaxprov.conf.sample (added), configs/samples/res_ldap.conf.sample (added), configs/samples/dnsmgr.conf.sample (added), configs/res_pktccops.conf.sample (removed), configs/cel.conf.sample (removed), configs/samples/res_pgsql.conf.sample (added), configs/samples/chan_mobile.conf.sample (added), configs/samples/asterisk.adsi (added), configs/samples/users.conf.sample (added), configs/samples/rtp.conf.sample (added), configs/phone.conf.sample (removed), configs/skinny.conf.sample (removed), configs/muted.conf.sample (removed), configs/samples/hep.conf.sample (added), configs/iax.conf.sample (removed), configs/samples/cel_tds.conf.sample (added), configs/sip_notify.conf.sample (removed), configs/samples/telcordia-1.adsi (added), configs/samples/alsa.conf.sample (added), configs/samples/adsi.conf.sample (added), configs/test_sorcery.conf.sample (removed), configs/samples/followme.conf.sample (added), configs/samples/asterisk.conf.sample (added), configs/extensions.lua.sample (removed), configs/say.conf.sample (removed), configs/cel_custom.conf.sample (removed), configs/samples/ss7.timers.sample (added), configs/samples/cel_odbc.conf.sample (added), configs/app_skel.conf.sample (removed), configs/samples/ccss.conf.sample (added), configs/cli_permissions.conf.sample (removed), configs/statsd.conf.sample (removed), configs/samples/res_config_sqlite.conf.sample (added), configs/config_test.conf.sample (removed), configs/indications.conf.sample (removed), configs/samples/osp.conf.sample (added), configs/samples/cdr_manager.conf.sample (added), configs/samples/console.conf.sample (added), configs/voicemail.conf.sample (removed), configs/res_corosync.conf.sample (removed), configs/misdn.conf.sample (removed), configs/samples/cli.conf.sample (added), configs/ari.conf.sample (removed), configs/ooh323.conf.sample (removed), configs/samples/calendar.conf.sample (added), configs/samples/res_stun_monitor.conf.sample (added), configs/samples/manager.conf.sample (added), configs/samples/pjsip_notify.conf.sample (added), configs/samples/sla.conf.sample (added), configs/musiconhold.conf.sample (removed), configs/pjsip.conf.sample (removed), configs/sorcery.conf.sample (removed), configs/vpb.conf.sample (removed), configs/unistim.conf.sample (removed), configs/res_ldap.conf.sample (removed), configs/dnsmgr.conf.sample (removed), configs/samples/extconfig.conf.sample (added), configs/samples/res_snmp.conf.sample (added), configs/acl.conf.sample (removed), configs/samples/smdi.conf.sample (added), configs/samples/cel.conf.sample (added), configs/cli_aliases.conf.sample (removed), configs/samples/cdr_sqlite3_custom.conf.sample (added), configs/extensions.ael.sample (removed), configs/cdr_adaptive_odbc.conf.sample (removed), configs/samples/phone.conf.sample (added), configs/extensions_minivm.conf.sample (removed), configs/motif.conf.sample (removed), configs/telcordia-1.adsi (removed), configs/samples/meetme.conf.sample (added), configs/adsi.conf.sample (removed), configs/alsa.conf.sample (removed), configs/samples/muted.conf.sample (added), configs/followme.conf.sample (removed), configs/asterisk.conf.sample (removed), configs/samples/iax.conf.sample (added), configs/samples/res_config_sqlite3.conf.sample (added), configs/samples/mgcp.conf.sample (added), configs/cel_odbc.conf.sample (removed), configs/ccss.conf.sample (removed), configs/cdr_mysql.conf.sample (removed), configs/samples/extensions.lua.sample (added), configs/samples/say.conf.sample (added), configs/dundi.conf.sample (removed), configs/samples/queuerules.conf.sample (added), configs/oss.conf.sample (removed), configs/app_mysql.conf.sample (removed), configs/samples/confbridge.conf.sample (added), configs/samples/cli_permissions.conf.sample (added), configs/samples/enum.conf.sample (added), configs/samples/config_test.conf.sample (added), configs/cdr.conf.sample (removed), configs/samples/indications.conf.sample (added), configs/cel_pgsql.conf.sample (removed), configs/res_stun_monitor.conf.sample (removed), configs/calendar.conf.sample (removed), configs/samples/voicemail.conf.sample (added), configs/pjsip_notify.conf.sample (removed), configs/samples/misdn.conf.sample (added), configs/samples/ari.conf.sample (added), configs/samples/festival.conf.sample (added), configs/samples/http.conf.sample (added), configs/res_snmp.conf.sample (removed), configs/samples/musiconhold.conf.sample (added), configs/samples/pjsip.conf.sample (added), configs/samples/sorcery.conf.sample (added), configs/samples/vpb.conf.sample (added), configs/smdi.conf.sample (removed), configs/samples/unistim.conf.sample (added), configs/samples (added), configs/amd.conf.sample (removed): configs: Move sample config files into a subdirectory of configs This moves all samples configs from configs/ to configs/samples. This allows for additional sets of sample configuration files to be added in the future. Review: https://reviewboard.asterisk.org/r/3804/ * channels/chan_sip.c, UPGRADE.txt: chan_sip: Make progressinband=never really mean 'never' progressinband=never in sip.conf is easily defeated if an onward trunk sends a progress indication of its own. This is almost certain to happen if the onward trunk is ISDN or IAX as these technologies send a progress indication even if early media is not required. This progress message is passed to the caller, and causes the "never" option to be rather badly named. This patch changes the behaviour of this setting in the following ways: 1) In sip_write(), do not pass the media unless we have either progressed beyond INV_EARLY_MEDIA, or we are in INV_EARLY_MEDIA state, and early media is both set-up and wanted. This helps resolve double-ringing on some buggy handsets. 2) In sip_indicate(), if we see AST_CONTROL_PROGRESS, but SIP_PROG_INBAND_NEVER is set, send a 180 Ringing instead to avoid implicitly enabling early media. Avoid sending double ring indications. NOTE: the meaning of the SIP_PROGRESS_SENT flag changes slightly in this patch to also encapsulate the fact that a channel has *sent or received* a 183 Progress indication. This makes the updated code in sip_write() much more simple. Review: https://reviewboard.asterisk.org/r/3700 ASTERISK-23972 #close Reported by: Steve Davies patches: inband_never_present_early_media2 uploaded by Steve Davies (License 5012) * menuselect: Add svn:ignore property * UPGRADE.txt, menuselect/configure, menuselect/configure.ac, configure, configure.ac: configure: Fix libxml2 development library dependency checking The commit that added libxml2 support didn't fully check for the libxml2 development script in the Asterisk configure file. As a result, Asterisk could be configured, then fail on menuselect. This patch fixes it so that Asterisk should detect the libxml2 dependency failure first. * menuselect/makeopts.in, menuselect/autoconfig.h.in, menuselect/menuselect.h, menuselect/example_menuselect-tree, configure, include/asterisk/autoconfig.h.in, menuselect/Makefile, menuselect/README, menuselect/aclocal.m4, configure.ac, UPGRADE.txt, menuselect/configure, menuselect/configure.ac, menuselect/menuselect.c, menuselect/acinclude.m4: menuselect: Add libxml2 support (Patch 3) This is the final patch in adding menuselect to Asterisk. - The first patch (r418832) added menuselect along with mxml - The second patch (r418833) removed mxml from menuselect This patch adds support for libxml2 to menuselect, and makes libxml2 a required library for Asterisk. Note that the libxml2 portion of this patch was written by Sean Bright, and was made available on a team branch: http://svn.digium.com/svn/menuselect/team/seanbright/libxml2/ Review: https://reviewboard.asterisk.org/r/3773/ ASTERISK-20703 #close patches: some_mysterious_team_branch uploaded by seanbright (License 5060) * menuselect/mxml (removed): menuselect: Remove mxml from menuselect (Patch 2) This is the second patch that adds menuselect to Asterisk trunk. The previous commit (r418832) added menuselect along with mxml; this patch removes mxml completely from Menuselect. A subsequent patch will switch menuselect over to using libxml2, and make libxml2 a required dependency for Asterisk. ASTERISK-20703 * menuselect/mxml/configure.in (added), menuselect/acinclude.m4 (added), menuselect/mxml/mxml.list.in (added), menuselect/mxml/README (added), menuselect/linkedlists.h (added), menuselect/mxml (added), menuselect/mxml/config.h.in (added), menuselect/aclocal.m4 (added), menuselect/install-sh (added), menuselect/mxml/mxml-string.c (added), menuselect/menuselect_stub.c (added), menuselect/make_version (added), menuselect/mxml/mxml-entity.c (added), menuselect/bootstrap.sh (added), menuselect/makeopts.in (added), menuselect/autoconfig.h.in (added), menuselect/config.guess (added), menuselect/mxml/install-sh (added), menuselect/test/build_tools/menuselect-deps (added), /, menuselect/contrib/menuselect-dummy (added), menuselect/config.sub (added), menuselect/mxml/configure (added), menuselect/mxml/Makefile.in (added), menuselect (added), menuselect/contrib (added), menuselect/mxml/mxml.pc.in (added), menuselect/configure.ac (added), menuselect/mxml/mxml-set.c (added), menuselect/contrib/Makefile-dummy (added), menuselect/mxml/ANNOUNCEMENT (added), menuselect/missing (added), menuselect/menuselect_curses.c (added), menuselect/example_menuselect-tree (added), menuselect/Makefile (added), menuselect/mxml/mxml-search.c (added), menuselect/test (added), menuselect/test/menuselect-tree (added), menuselect/mxml/mxml.h (added), menuselect/mxml/mxml-index.c (added), menuselect/configure (added), menuselect/menuselect_newt.c (added), menuselect/mxml/mxml-attr.c (added), menuselect/mxml/mxml-private.c (added), menuselect/menuselect.c (added), menuselect/mxml/CHANGES (added), menuselect/mxml/COPYING (added), menuselect/mxml/mxml-file.c (added), menuselect/menuselect.h (added), menuselect/menuselect_gtk.c (added), menuselect/README (added), menuselect/strcompat.c (added), menuselect/mxml/mxml-node.c (added), menuselect/test/build_tools (added): menuselect: Add menuselect to Asterisk trunk (Patch 1) This is the first patch that adds menuselect to Asterisk trunk, and removes the svn:externals property. This is being done for two reasons: (1) The removal of external repositories eases a future migration to git (2) Asterisk is now the only thing that uses menuselect; as a result, there's little need to keep it in an external repository Subsequent patches will remove the mxml dependency from menuselect and tidy up the build system. ASTERISK-20703 2014-07-17 14:28 +0000 [r418811] Kinsey Moore * /, main/bridge_channel.c: TEST_FRAMEWORK: Fix threewaytransfer reporting Ensure that three-way transfers can be reported even if featuremap is non-NULL. ........ Merged revisions 418810 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-16 23:08 +0000 [r418788] Corey Farrell * /, channels/dahdi/bridge_native_dahdi.c: Remove include of astobj.h from channels/dahdi/bridge_native_dahdi.c. The include was unneeded, this is split off from r3758 as it applies to 12. ........ Merged revisions 418787 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-16 14:03 +0000 [r418717-418757] Matthew Jordan * res/res_pjsip/pjsip_configuration.c, CHANGES, res/res_pjsip.c, channels/chan_pjsip.c, include/asterisk/res_pjsip.h, contrib/ast-db-manage/config/versions/1d50859ed02e_create_accountcode.py (added), /, configs/pjsip.conf.sample: res_pjsip: Support setting a default accountcode on endpoints Most channel drivers let you specify a default accountcode to be set on channels associated with a particular peer/endpoint/object. Prior to this patch, chan_pjsip/res_pjsip did not support such a setting. This patch adds a new setting to the res_pjsip endpoint object, 'accountcode'. When a channel is created that is associated with an endpoint with this value set, the channel will automatically have its accountcode property set to the value configured for the endpoint. Review: https://reviewboard.asterisk.org/r/3724/ ASTERISK-24000 #close Reported by: Matt Jordan ........ Merged revisions 418756 from http://svn.asterisk.org/svn/asterisk/branches/12 * cdr/cdr_pgsql.c, CHANGES, configs/cdr_pgsql.conf.sample, configs/res_pgsql.conf.sample, cel/cel_pgsql.c, res/res_config_pgsql.c, configs/cel_pgsql.conf.sample: cel_pgsql, cdr_pgsql, res_config_pgsql: Add PostgreSQL application_name support This patch adds support for the PostgreSQL application_name connection setting. When the appropriate PostgreSQL module's configuration is set with an application name, the name will be passed to PostgreSQL on connection and displayed in the database's pg_stat_activity view, as well as in CSV logs. This aids in managing which applications/servers are connected to a PostgreSQL database, as well as tracing the activity of those connections. Review: https://reviewboard.asterisk.org/r/3591 ASTERISK-23737 #close Reported by: Gergely Domodi patches: pgsql_application_name.patch uploaded by Gergely Domodi (License 6610) * codecs/codec_adpcm.c, main/format.c: codec_adpcm: Change description of codec "ADPCM" to "Dialogic ADPCM" Technically, ADPCM is a method that can be applied to several codecs. Asterisk's ADPCM codec is the Dialogic ADPCM or VOX codec. See http://en.wikipedia.org/wiki/Dialogic_ADPCM for more information about said codec. Review: https://reviewboard.asterisk.org/r/3744 patches: rb3744.patch uploaded by dennis.guse (License 6513) * UPGRADE.txt, main/manager.c, /: manager: Return ActionID on nominal responses to PresenceState action When the PresenceState action is executed, the nominal path fails to include the ActionID in the successful response. This patch adds a call to astman_start_ack, which guarantees that an ActionID (if provided) will be sent back to the AMI client. Unlike the Asterisk 11 and 12 patches, this patch also deprecates the duplicate Message key in the response to the action, replacing it with the key 'PresenceMessage'. Review: https://reviewboard.asterisk.org/r/3776/ ASTERISK-23985 #close ........ Merged revisions 418713 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418714 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-15 23:03 +0000 [r418716] Kinsey Moore * /, main/bridge_channel.c: TEST_FRAMEWORK: Fix ref leak in feature activation This fixes two reference leaks that would occur when TEST_FRAMEWORK was enabled and features were successfully executed. ........ Merged revisions 418715 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-15 17:57 +0000 [r418654] Jonathan Rose * funcs/func_uri.c, /: func_uri: URIENCODE/URIDECODE - allow empty strings as argument Previously these two dialplan functions would issue warnings and return failure when an empty string is used as the argument. Now they will not issue a warning and will successfully return an empty string. ASTERISK-23911 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3745/ ........ Merged revisions 418641 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 418649 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418650 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-15 12:11 +0000 [r418616] Sean Bright * main/asterisk.c: Update Asterisk copyright year in main/asterisk.c It's been 2014 for like... 6 months. 2014-07-14 14:55 +0000 [r418566-418587] Richard Mudgett * include/asterisk/logger.h, /: logger.h: Extract DEBUG_ATLEAST() to complement VERBOSITY_ATLEAST(). ........ Merged revisions 418586 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/jabber.h (removed), include/asterisk/jingle.h (removed), include/asterisk/frame_defs.h (removed), configs/h323.conf.sample (removed): Actually delete the removed files. 2014-07-13 21:57 +0000 [r418507] Corey Farrell * /, main/astobj2.c, contrib/scripts/refcounter.py: astobj2: work around REF_DEBUG race which causes out of order log entries * Update refcounter.py to use delta's to track the current reference count. * Use result from internal_ao2_ref to write old_refcount to refs_log. Review: https://reviewboard.asterisk.org/r/3756/ ........ Merged revisions 418504 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 418505 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418506 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-13 20:08 +0000 [r418488] Scott Griepentrog * include/asterisk/astobj2.h: astobj2: correct define for ao2_t_cleanup This change maps the ao2_t_cleanup() function to the correct debug function so that it can be used. Review: https://reviewboard.asterisk.org/r/3764/ 2014-07-13 16:48 +0000 [r418448-418467] Corey Farrell * main/manager.c, /, apps/app_skel.c: Fix minor reference leaks in app_skel and TEST_FRAMEWORK * Cleanup games object in app_skel. * Cleanup stasis subscription to TEST_FRAMEWORK in manager.c (12+). Review: https://reviewboard.asterisk.org/r/3757/ ........ Merged revisions 418465 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418466 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/jabber.h, include/asterisk/jingle.h, configs/h323.conf.sample: Remove files left behind on removal of h323, jingle and jabber. This change removes h323.conf.sample, jingle.h, jabber.h left behind by r3698. Review: https://reviewboard.asterisk.org/r/3755/ 2014-07-11 23:00 +0000 [r418419] Matthew Jordan * main/astobj2.c, include/asterisk/astobj2.h: astobj2: Add tag variants for ao2_bump, ao2_cleanup, and ao2_replace Tags are useful in hunting down ref imbalances; this patch adds tag variants for these commonly used macros/functions. Review: https://reviewboard.asterisk.org/r/3750/ 2014-07-11 21:10 +0000 [r418397] Corey Farrell * /, include/asterisk/astobj2.h: astobj2: tweak ao2_replace to do nothing when it would be a NoOp This change causes ao2_replace to do nothing when src == dst. This avoids REF_DEBUG logging when we're not actually doing anything. Review: https://reviewboard.asterisk.org/r/3743/ ........ Merged revisions 418396 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-11 16:42 +0000 [r418370] Scott Griepentrog * /, main/config.c: config: inform config hook of change when writing file When updated configuration is written back to the conf file - for example when a user changes their voicemail pin, make sure that any config hook that wants to know of changes is informed. Review: https://reviewboard.asterisk.org/r/3708/ ........ Merged revisions 418366 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418369 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-10 15:36 +0000 [r418325] Matthew Jordan * /, include/asterisk/xmpp.h: include/asterisk/xmpp.h: Convert indentation to tabs This is a whitespace only change. ........ Merged revisions 418323 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418324 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-10 01:59 +0000 [r418226-418264] Richard Mudgett * channels/sig_pri.c, /: chan_dahdi/sig_pri: Fix type mismatch in the idledial feature's channel creation. Square pegs in round holes don't work very well. ........ Merged revisions 418261 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 418262 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 418263 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/stasis/stasis_bridge.h (added), main/bridge_channel.c, res/res_stasis.c, /, res/stasis/stasis_bridge.c (added), include/asterisk/bridge_channel.h, main/bridge_basic.c: ARI: Make mixing bridges propagate linkedids and accountcodes. * Create a Stasis bridge sub-class to propagate linkedids and accountcodes. * Fixed the basic bridge sub-class to update peeraccount codes when the number of channels in the bridge drops back down to two parties. * Refactored ast_bridge_channel_update_accountcodes() to handle channels joining/leaving the bridge. * Fixed the basic bridge sub-class to not call the base bridge class pull method twice. AFS-105 #close ASTERISK-23852 #close Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/3720/ ........ Merged revisions 418225 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-08 14:48 +0000 [r418174-418183] Matthew Jordan * 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, rest-api/api-docs/playbacks.json, rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, rest-api/resources.json, include/asterisk/manager.h, rest-api/api-docs/bridges.json, rest-api/api-docs/recordings.json: manager/ARI: Update version to 2.4.0/1.4.0; Update UPGRADE.txt ........ Merged revisions 418182 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix undefined function when PJPROJECT is not installed The dtls_perform_handshake function was mistakenly placed under the guards for USE_PJPROJECT. If PJPROJECT was not installed, the function would not be defined, while other functions would attempt to still use it. This prevented res_rtp_asterisk from being loaded. ASTERISK-24001 #close Reported by: Don Fanning ........ Merged revisions 418172 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-07 16:08 +0000 [r418117] Joshua Colp * include/asterisk/res_pjsip_body_generator_types.h, res/res_pjsip_dialog_info_body_generator.c (added), res/res_pjsip_exten_state.c, res/res_pjsip/presence_xml.c, /, include/asterisk/res_pjsip_presence_xml.h: res_pjsip_dialog_info_body_generator: Add dialog-info+xml support for presence. This module implements dialog-info+xml for the purposes of presence. This means that phones such as Grandstreams can now subscribe to receive presence information for an extension. ASTERISK-21443 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3705/ ........ Merged revisions 418116 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-07 02:15 +0000 [r418090] Matthew Jordan * include/asterisk/stasis_app.h, res/ari/resource_channels.c, res/res_stasis.c, /, res/stasis/app.c: ARI/res_stasis: Subscribe to both Local channel halves when originating to app This patch fixes two bugs: 1. When originating a channel into a Stasis application, we already create a subscription for the channel that is going into our Stasis app. Unfortunately, when you create a Local channel and pass it off to a Stasis app, you really aren't creating just one channel: you're creating two. This patch snags the second half of the Local channel pair (assuming it is a Local channel pair, but luckily core_local is kind about such assumptions) and subscribes to it as well. 2. Subscriptions are a bit sticky right now. If a subscription is made, the 'interest' count gets bumped on the Stasis subscription - but unless something explicitly unsubscribes the channel, said subscription sticks around. This is not much of a problem is a user is creating the subscription - if they made it, they must want it. However, when we are creating implicit subscriptions, we need to make sure something clears them out. This patch takes a pessimistic approach: it watches the cache updates coming from Stasis and, if we notice that the cache just cleared out an object, we delete our subscription object. This keeps our ao2 container of Stasis forwards in an application from growing out of hand; it also is a bit more forgiving for end users who may not realize they were supposed to unsubscribe from that channel that just hung up. Review: https://reviewboard.asterisk.org/r/3710/ #ASTERISK-23939 #close ........ Merged revisions 418089 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-07 01:22 +0000 [r418067-418084] Kinsey Moore * tests/test_cel.c, main/cel.c, channels/chan_pjsip.c, res/res_pjsip_session.c, /: CEL: Fix incorrect/missing extra field information This corrects two issues with the extra field information in Asterisk 12+ in channel event logs. It is possible to inject custom values into the dialstatus provided by ast_channel_dial_type() Stasis messages that fall outside the enumeration allowed for the DIALSTATUS channel variable. CEL now filters for the allowed values and ignores other values. The "hangupsource" extra field key is always blank if the far end channel is a chan_pjsip channel. This is because the hangupsource is never set for the pjsip channel driver. This change sets the hangupsource whenever a hangup is queued for chan_pjsip channels. This corrects an issue with the pjsip channel driver where the hangupcause information was not being set properly. Review: https://reviewboard.asterisk.org/r/3690/ ........ Merged revisions 418071 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/http.c: HTTP: Fix build for gcc 4.10 ........ Merged revisions 418066 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-04 15:26 +0000 [r418019-418050] Matthew Jordan * main/Makefile: main/Makefile: fix compilation error of buildinfo occurring on 'make install' Egads. Another bad deletion of too much when attempting to remove h323 stuff. * configure.ac, build_tools/menuselect-deps.in, configure, main/Makefile: configure: Remove last vestiges of h323; DO create menuselect-deps The previous patch (r418034) fixed the 'glitch' that the channels/h323 Makefile no longer existed. Unfortunately, removing the entire line was a bit of a blunder, as it meant that build_tools/menuselect-deps was never generated. Hilarity ensued when actually trying to compile. But hey! At least configure worked. This patch fixes *that* glitch, and removes some more of the vestiges of h323. (It had tendrils in the main Makefile? Crazy.) * configure.ac, configure: configure: Update script to pass if channels/h323/Makefile.in does not exist This simply removes that check from the configure script, as r418019 removed chan_h323. * apps/app_dahdibarge.c (removed), configs/gtalk.conf.sample (removed), main/pbx.c, apps/app_readfile.c (removed), channels/chan_sip.c, configs/jingle.conf.sample (removed), UPGRADE.txt, res/res_musiconhold.c, channels/chan_gtalk.c (removed), channels/Makefile, CHANGES, res/res_jabber.c (removed), channels/h323 (removed), utils/conf2ael.c, channels/chan_jingle.c (removed), res/ael/pval.c, configs/jabber.conf.sample (removed), configs/asterisk.conf.sample, res/res_agi.c, channels/chan_h323.c (removed), addons/Makefile, pbx/pbx_realtime.c, utils/ael_main.c, include/asterisk/options.h, main/asterisk.c, addons/app_saycountpl.c (removed): Remove many deprecated modules Billing records are fair, To get paid is quite bright, You should really use ODBC; Good-bye cdr_sqlite. Microsoft did once push H.323, Hell, we all remember NetMeeting. But try to compile chan_h323 now And you will take quite a beating. The XMPP and SIP war was fierce, And in the distant fray Was birthed res_jabber/chan_jingle; But neither to stay. For everyone did care and chase what Google professed. "Free Internet Calling" was what devotees cried, But Google did change the specs so often That the developers were happy the day chan_gtalk died. And then there was that odd application Dedicated to the Polish tongue. app_saycountpl was subsumed by Say; One could say its bell was rung. To read and parse a file from the dialplan You could (I guess) use an application. app_readfile did fill that purpose, but I think A function is perhaps better in its creation. Barging is rude, I'm not sure why we do it. Inwardly, the caller will probably sigh. But if you really must do it, Don't use app_dahdibarge, use ChanSpy. We all despise the sound of tinny robots It makes our queues so cold. To control such an abomination It's better to not use Wait/SetMusicOnHold. It's often nice to know properties of a channel It makes our calls right We have a nice function called CHANNEL And so SIPCHANINFO is sent off into the night. And now things get odd; Apparently one could delimit with a colon Properties from the SIPPEER function! Commas are in; all others are done. Finally, a word on pipes and commas. We're sorry. We can't say it enough. But those compatibility options in asterisk.conf; To maintain them forever was just too tough. This patch removes: * cdr_sqlite * chan_gtalk * chan_jingle * chan_h323 * res_jabber * app_saycountpl * app_readfile * app_dahdibarge It removes the following applications/functions: * WaitMusicOnHold * SetMusicOnHold * SIPCHANINFO It removes the colon delimiter from the SIPPEER function. Finally, it also removes all compatibility options that were configurable from asterisk.conf, as these all applied to compatibility with Asterisk 1.4 systems. Review: https://reviewboard.asterisk.org/r/3698/ 2014-07-03 22:22 +0000 [r417933-417976] Richard Mudgett * channels/sig_pri.h, channels/chan_dahdi.c, configs/chan_dahdi.conf.sample, /, UPGRADE.txt, channels/sig_pri.c: chan_dahdi: Add inband_on_setup_ack compatibility option. The new inband_on_setup_ack option causes Asterisk to assume inband audio may be present when a SETUP_ACKNOWLEDGE message is received. Q.931 Section 5.1.3 says that in scenarios with overlap dialing, when a dialtone is sent from the network side, progress indicator 8 "Inband info now available" MAY be sent to the CPE if no digits were received with the SETUP. It is thus implied that the ie is mandatory if digits came with the SETUP and dialtone is needed. This option should be enabled, when the network sends dialtone and you want to hear it, but the network doesn't send the progress indicator when needed. NOTE: For Q.SIG setups this option should be enabled when outgoing overlap dialing is also enabled because Q.SIG does not send the progress indicator with the SETUP ACK. The commit -r413714 (AST-1338) which causes this issue was dealing with a SIP-to-ISDN interoperability issue. This commit is a merge of the two patches indicated below. ASTERISK-23897 #close Reported by: Pavel Troller Patches: pri-4.diff (license #6302) patch uploaded by Pavel Troller jira_asterisk_23897_v11.patch (license #5621) patch uploaded by rmudgett Review: https://reviewboard.asterisk.org/r/3633/ ........ Merged revisions 417956 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417957 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417958 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_channels.c, res/res_ari.c, main/manager.c, /: res_ari: Fix some off-nominal paths just dropping the HTTP connection. * Removed some incorrect newlines on ast_http_error() messages in manager.c. * Removed an incorrect newline in res_ari_channels.c. Addendum to ASTERISK-23552 ........ Merged revisions 417932 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-03 17:34 +0000 [r417910-417916] Jonathan Rose * CHANGES, channels/chan_dahdi.c: chan_dahdi: Add AMI commands for controlling PRI debugging output Adds the following AMI commands: PRIDebugSet - Set PRI debug levels for a specific span PRIDebugFileSet - Set the file used for PRI debug message output PRIDebugFileUnset - Disables file output for PRI debug messages Review: https://reviewboard.asterisk.org/r/3681/ * CHANGES, pbx/pbx_config.c, main/pbx.c: pbx_config: Add manager actions to add/remove extensions Adds two new manager commands to pbx_config - DialplanExtensionAdd and DialplanExtensionRemove which allow manager users to create and delete extensions respectively. Review: https://reviewboard.asterisk.org/r/3650/ 2014-07-03 17:16 +0000 [r417901] Richard Mudgett * res/res_phoneprov.c, main/http.c, UPGRADE.txt, include/asterisk/tcptls.h, res/res_http_post.c, res/res_http_websocket.c, configs/http.conf.sample, include/asterisk/http.h, main/tcptls.c, res/res_ari.c, main/manager.c, /: HTTP: Add persistent connection support. Persistent HTTP connection support is needed due to the increased usage of the Asterisk core HTTP transport and the frequency at which REST API calls are going to be issued. * Add http.conf session_keep_alive option to enable persistent connections. * Parse and discard optional chunked body extension information and trailing request headers. * Increased the maximum application/json and application/x-www-form-urlencoded body size allowed to 4k. The previous 1k was kind of small. * Removed a couple inlined versions of ast_http_manid_from_vars() by calling the function. manager.c:generic_http_callback() and res_http_post.c:http_post_callback() * Add missing va_end() in ast_ari_response_error(). * Eliminated unnecessary RAII_VAR() use in http.c:auth_create(). ASTERISK-23552 #close Reported by: Scott Griepentrog Review: https://reviewboard.asterisk.org/r/3691/ ........ Merged revisions 417880 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-03 16:55 +0000 [r417900] Matthew Jordan * main/tcptls.c, configure, include/asterisk/autoconfig.h.in, configure.ac: main/tcptls: Add checks for OpenSSL Elliptic Curve support The patch for ASTERISK-23905 that added PFS support in Asterisk depends on the elliptic curve library support being present in OpenSSL. As it turns out, some versions of OpenSSL don't have this library - notably the version running on our build agents. This patch fixes the build by providing a configure check for the specific library calls that the PFS patch relies on. Review: https://reviewboard.asterisk.org/r/3709/ 2014-07-03 16:14 +0000 [r417877-417879] sgalarneau : * res/ari/resource_events.h, rest-api/api-docs/channels.json, res/ari/resource_channels.h, rest-api/api-docs/events.json, /: ARI: Improvements to body parameters documentation The variables body parameter under the originate and originate with id operations of the channel resource showed invalid JSON in its description. The variables body parameter under the userEvent operation of the event resource made no mention that the custom key/value pairs should be wrapped in a variables key in order to be added to the custom user event. ASTERISK-23975 #close Review: https://reviewboard.asterisk.org/r/3692/ ........ Merged revisions 417878 from http://svn.asterisk.org/svn/asterisk/branches/12 * rest-api-templates/api.wiki.mustache, rest-api-templates/swagger_model.py, /: api.wiki.mustache: Update wiki template to support body parameters This patch updates the api.wiki.mustache template and the swagger_model python script to understand if an operation has a body parameter. If an operation does have a body parameter, it will now be displayed in the corresponding wiki entry. ........ Merged revisions 407389 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-03 14:08 +0000 [r417863] Tzafrir Cohen * Makefile, contrib/scripts/dahdi_span_config_hook (added): dahdi_span_config_hook: automatically register new dahdi channels Install a hook script for DAHDI to register new spans with Asterisk automatically by running: asterisk -rx 'dahdi create channel FIRST LAST' Review: https://reviewboard.asterisk.org/r/3157/ 2014-07-03 12:10 +0000 [r417800-417803] Matthew Jordan * main/tcptls.c, CHANGES: main/tcptls: Add support for Perfect Forward Secrecy This patch enables Perfect Forward Secrecy (PFS) in Asterisk's core TLS API. Modules that wish to enable PFS should consider the following: - Ephemeral ECDH (ECDHE) is enabled by default. To disable it, do not specify a ECDHE cipher suite in a module's configuration, for example: tlscipher=AES128-SHA:DES-CBC3-SHA - Ephemeral DH (DHE) is disabled by default. To enable it, add DH parameters into the private key file, i.e., tlsprivatekey. For an example, see the default dh2048.pem at http://www.opensource.apple.com/source/OpenSSL098/OpenSSL098-35.1/src/apps/dh2048.pem?txt - Because clients expect the server to prefer PFS, and because OpenSSL sorts its cipher suites by bit strength, (see "openssl ciphers -v DEFAULT") consider re-ordering your cipher suites in the conf file. For example: tlscipher=AES128+kEECDH:AES128+kEDH:3DES+kEDH:AES128-SHA:DES-CBC3-SHA:-ADH:-AECDH will use PFS when offered by the client. Clients which do not offer PFS fall-back to AES-128 (or even 3DES as recommend by RFC 3261). Review: https://reviewboard.asterisk.org/r/3647/ ASTERISK-23905 #close Reported by: Alexander Traud patches: tlsPFS_for_HEAD.patch uploaded by Alexander Traud (License 6520) tlsPFS.patch uploaded by Alexander Traud (License 6520) * /, main/utils.c: main/untils: Prevent potential infinite loop in ast_careful_fwrite A loop in ast_careful_fwrite exists that will continually attempt to write to a file stream, even in the presence of EAGAIN/EINTR errors. However, if a connection that uses ast_careful_fwrite closes suddenly, ast_careful_fwrite's call to fflush may return EAGAIN/EINTER along with EOF. A subsequent call to fflush will return EOF but not clear errno, resulting in an infinite loop. This patch clears errno after it is detected and handled the loop, such that any subsequent call to fflush will not get erroneously stuck. Review: https://reviewboard.asterisk.org/r/3704 #ASTERISK-23984 #close Reported by: Steve Davies patches: fflush_loop_fix uploaded by one47 (License 5012) ........ Merged revisions 417797 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417798 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417799 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-02 21:13 +0000 [r417770] Jonathan Rose * res/ari/resource_events.h, res/ari/resource_asterisk.h, res/ari/resource_applications.h, res/ari/resource_playbacks.h, res/ari/resource_channels.h, res/ari/resource_sounds.h, /, res/ari/resource_bridges.h, res/ari/resource_recordings.h, rest-api-templates/ari_resource.h.mustache, res/ari/resource_device_states.h, res/ari/resource_endpoints.h, res/ari/resource_mailboxes.h: ARI: Remove unnecessary \briefs from automatically generated documentation Review: https://reviewboard.asterisk.org/r/3440/ ........ Merged revisions 412653 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-07-01 14:42 +0000 [r417679-417706] Joshua Colp * /, res/res_rtp_asterisk.c: res_rtp_asterisk: Don't leak memory or reset state if DTLS configuration is set multiple times. ........ Merged revisions 417705 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_rtp_asterisk.c, contrib/ast-db-manage/config/versions/51f8cb66540e_add_further_dtls_options.py (added), include/asterisk/res_pjsip_session.h, main/rtp_engine.c, /, channels/chan_sip.c, main/sdp_srtp.c, res/res_pjsip_sdp_rtp.c, res/res_pjsip/pjsip_configuration.c, configs/sip.conf.sample, include/asterisk/rtp_engine.h, res/res_pjsip.c, channels/sip/include/sip.h, include/asterisk/res_pjsip.h, include/asterisk/sdp_srtp.h: Recorded merge of revisions 417677 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ res_rtp_asterisk: Add SHA-256 support for DTLS and perform DTLS negotiation on RTCP. This change fixes up DTLS support in res_rtp_asterisk so it can accept and provide a SHA-256 fingerprint, so it occurs on RTCP, and so it occurs after ICE negotiation completes. Configuration options to chan_sip and chan_pjsip have also been added to allow behavior to be tweaked (such as forcing the AVP type media transports in SDP). ASTERISK-22961 #close Reported by: Jay Jideliov Review: https://reviewboard.asterisk.org/r/3679/ Review: https://reviewboard.asterisk.org/r/3686/ ........ Merged revisions 417678 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-30 18:39 +0000 [r417663] Mark Michelson * res/res_pjsip_pubsub.c: Reverse logic during subscription persistence recreation. In the abstraction effort, this bit of logic got messed up. We want to recreate the persistence if things go well, not if things fail. 2014-06-30 13:02 +0000 [r417590-417649] Matthew Jordan * apps/app_voicemail.c: apps/app_voicemail: Fix compilation error introduced in r417591 Not sure why that change to ast_channel_alloc was made but ... okay. * apps/app_voicemail.c, main/say.c, CHANGES: app_voicemail, say: Add support for Japanese Language This patch adds support for the Japanese language to both the say family of applications, as well as for VoiceMail and VoiceMailMain. A new pack of language sounds will be released at the same time as the next major version of Asterisk to support the new language features. The language features can be enabled using a language code of 'ja'. Review: https://reviewboard.asterisk.org/r/3477 ASTERISK-23324 #close Reported by: Kevin McCoy patches: app_voicemail.c.20140226.jb.patch uploaded by Kevin McCoy (License 6586) say.c.20140226.jb.patch uploaded by Kevin McCoy (License 6586) * /, channels/chan_sip.c: chan_sip: be more tolerant of whitespace between attributes in SDP fmtp line This patch is essentially a backport of a small portion of r397526 from ASTERISK-21981. In that patch, pass through support and format attribute negotiation was added for Opus. Part of that included being more tolerant to whitespace in the fmtp line of an SDP; that part of the patch is being applied here. As the author of the backport pointed out, in SDP, the fmtp line is allowed to include whitespace between attributes. RFC 3267 chapter 8.3 (from 2001) includes an example for this. This was not removed in the updated RFC 4867 in 2007. Review: https://reviewboard.asterisk.org/r/3658 #ASTERISK-23916 #close Reported by: Alexander Traud patches: sdpFMTPspace_Asterisk11.patch uploaded by Alexander Traud (License 6520) ........ Merged revisions 417587 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417588 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417589 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-27 23:21 +0000 [r417571] Richard Mudgett * /, main/event.c: event.c: Fix type mismatch errors in ie_maps[]. In v12+ the type values from the table are only used by the CEL unit tests. Since the unit tests were only comparing a generated expected event with a real event to see if the ie contents matched and using the same table IE_PLTYPE values to read the event contents, the type mismatches were not detected. ........ Merged revisions 417565 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-27 19:27 +0000 [r417485-417511] Corey Farrell * /, main/astobj2.c: Ensure REF_DEBUG records entrys for attempts to ao2_ref an invalid object This change ensures that __ao2_ref_debug writes to ref_log when given a non-NULL pointer to an invalid ao2 object. This is to ensure that we record any attempt manipulate references of already freed objects. ASTERISK-23948 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3677/ ........ Merged revisions 417500 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417505 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417509 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, contrib/scripts/refcounter.py: refcounter.py: prevent use of excessive RAM with large refs logs When processing a 212MB refs file, refcounter.py used over 3GB of RAM. This change greatly reduces memory usage in two ways: * Saving object history in whole lines instead of separated values. * Not saving normal/skewed/leaked object lists unless they are requested. ASTERISK-23921 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3668/ ........ Merged revisions 417480 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417481 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417483 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-27 13:50 +0000 [r417461] Matthew Jordan * res/res_pjsip/pjsip_configuration.c, res/res_pjsip_pubsub.c, res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h, /, res/res_pjsip_outbound_registration.c: res_pjsip: Add ActionID to events created as a result of PJSIP AMI actions A number of various PJSIP AMI actions were failing to parse out and place the ActionID into their responses. This patch updates the various PJSIP actions such that the passed in ActionID is emitted on any event list complete events, as well as any intermediate events created as a result of the action. #ASTERISK-23947 #close Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/3675/ ........ Merged revisions 417460 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-27 02:04 +0000 [r417423-417447] Kinsey Moore * tests/test_cel.c: CEL: Update unit tests for bridge tech field Update the CEL unit tests that handle BRIDGE_ENTER and BRIDGE_EXIT events to expect the "bridge_technology" extra field key. * CHANGES: CHANGES: Add missing changes Add missing CHANGES changes from r417361 and r417383. 2014-06-26 18:27 +0000 [r417400-417421] Matthew Jordan * res/res_http_websocket.exports.in, /: res_http_websocket: Export symbol for ast_websocket_set_timeout Thanks to Sean Bright for pointing out that this was missed in #asterisk-dev. ........ Merged revisions 417419 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417420 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_pjsip.c, /: chan_pjsip: Add a test event for fast picture updates This will drive the test on review r3419. Note that the patch for this was done by Ben Ford, although it was slightly modified for this commit. ASTERISK-23562 Reported by: Matt Jordan ........ Merged revisions 417399 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-26 14:48 +0000 [r417361-417383] Kinsey Moore * main/cel.c: CEL: Add bridge tech to relevant CEL records Add the "bridge_technology" extra field key to BRIDGE_ENTER and BRIDGE_EXIT CEL events to convey the bridge technology in use at the time the record was generated. * main/bridge.c, include/asterisk/channel.h, include/asterisk/bridge_features.h, tests/test_channel_feature_hooks.c (added), main/bridge_channel.c, main/channel.c: Bridging: Allow channels to define bridging hooks This patch allows the current owner of a channel to define various feature hooks to be made available once the channel has entered a bridge. This includes any hooks that are setup on the ast_bridge_features struct such as DTMF hooks, bridge event hooks (join, leave, etc.), and interval hooks. Review: https://reviewboard.asterisk.org/r/3649/ 2014-06-26 12:43 +0000 [r417317-417360] Matthew Jordan * CHANGES, apps/app_jack.c: app_jack: Support audio with a sampling rate higher than 8kHz This patch enables the jack-audiohook to cope with dynamic sampling rates from and to Asterisk. Information from the channel is taken to derive the channel's sampling rate, suiting SLINxx format and frame->datalen. There are stil a few limitations after this patch: * Required information is taken from the channel during initialization as the audiohook does not provide this information. Audiohook.internal_sampl_rate(...) is set later, but no callback is available to inform app_jack. * Frame.datalen is computed using "rate / 50" assuming a ptime of 20ms. There is no internal API available to determine datalen for a SLINxx. * Ringbuffer size is now dynamic depending on the value of frame.datalen (see above) and the number of frames, which are in RINGBUFFER_FRAME_CAPACITY, that need to fit. Review: https://reviewboard.asterisk.org/r/3618 Note that the patch being committed here is based on the patch posted on ASTERISK-23836. However, Matthis Schmieder also provided a patch to enable this functionality, and that patch is noted below. ASTERISK-20696 #close Reported by: Matthis Schmieder patches: app_jack.patch uploaded by Matthis Schmieder (License 6445) ASTERISK-23836 #close Reported by: Dennis Guse patches: patch-app_jack.c uploaded by Dennis Guse (License 6513) * main/udptl.c, /: udptl: Correct FEC to not consider negative sequence numbers as missing When using FEC, with span=3 and entries=4 Asterisk will attempt to repair the packet with sequence number 5, as it will see that packet -4 is missing. The result is Asterisk sending garbage packets that can kill a fax. This patch adds a check to see if the sequence number is valid before checking if the packet is missing. Review: https://reviewboard.asterisk.org/r/3657/ #ASTERISK-23908 #close Reported by: Torrey Searle patches: udptl_fec.patch uploaded by Torrey Searle (License 5334) ........ Merged revisions 417318 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417320 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417324 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/internal.h, configs/ari.conf.sample, res/res_http_websocket.c, res/res_pjsip.c, configs/pjsip.conf.sample, include/asterisk/http_websocket.h, configs/sip.conf.sample, res/res_pjsip/config_transport.c, res/ari/ari_websockets.c, res/res_pjsip_transport_websocket.c, res/ari/config.c, channels/sip/include/sip.h, include/asterisk/res_pjsip.h, res/res_ari.c, /, channels/chan_sip.c, UPGRADE.txt: res_http_websocket: Close websocket correctly and use careful fwrite When a client takes a long time to process information received from Asterisk, a write operation using fwrite may fail to write all information. This causes the underlying file stream to be in an unknown state, such that the socket must be disconnected. Unfortunately, there are two problems with this in Asterisk's existing websocket code: 1. Periodically, during the read loop, Asterisk must write to the connected websocket to respond to pings. As such, Asterisk maintains a reference to the session during the loop. When ast_http_websocket_write fails, it may cause the session to decrement its ref count, but this in and of itself does not break the read loop. The read loop's write, on the other hand, does not break the loop if it fails. This causes the socket to get in a 'stuck' state, preventing the client from reconnecting to the server. 2. More importantly, however, is that the fwrite in ast_http_websocket_write fails with a large volume of data when the client takes awhile to process the information. When it does fail, it fails writing only a portion of the bytes. With some debugging, it was shown that this was failing in a similar fashion to ASTERISK-12767. Switching this over to ast_careful_fwrite with a long enough timeout solved the problem. Note that this version of the patch, unlike r417310 in Asterisk 11, exposes configuration options beyond just chan_sip's sip.conf. Configuration options to configure the write timeout have also been added to pjsip.conf and ari.conf. #ASTERISK-23917 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3624/ ........ Merged revisions 417310 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417311 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-26 10:06 +0000 [r417251] Corey Farrell * /, channels/chan_sip.c: chan_sip: Fix handling of "From" headers longer than 256 characters From headers were processed using a 256 character buffer on the stack. This change replaces that with a heap allocation by ast_strdup. ASTERISK-23790 #close Reported by: uniken1 Tested by: uniken1 Review: https://reviewboard.asterisk.org/r/3669/ Patches: chan_sip-large-from-header-1.8-r3.patch uploaded by wdoekes (license 5674) ........ Merged revisions 417248 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 417249 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417250 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-25 20:57 +0000 [r417233] Mark Michelson * res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_pidf_body_generator.c, res/res_pjsip_pubsub.exports.in, res/res_pjsip_mwi.c, res/res_pjsip_xpidf_body_generator.c: Abstract PJSIP-specific elements from the pubsub API. This helps to pave the way for RLS work that is to come. Since this is a self-contained change and subscription tests still pass, this work is being committed directly to trunk instead of a working branch. ASTERISK-23865 #close Review: https://reviewboard.asterisk.org/r/3628 2014-06-25 18:57 +0000 [r417213] Corey Farrell * main/astobj2_container.c, /: ao2_container node object ignores REF_DEBUG in all places except one Almost every reference operation against container node's uses __ao2_alloc or __ao2_ref, thereby preventing ref logging for the nodes. One node reference is released with ao2_t_ref, causing refcounter.py to falsely report skews and leaks for many nodes. ASTERISK-23922 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3670/ ........ Merged revisions 417212 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-25 00:45 +0000 [r417193] Damien Wedhorn * channels/chan_skinny.c: Skinny: cleanup some log messages around sessions. 2014-06-24 02:50 +0000 [r417167] Corey Farrell * include/asterisk/netsock.h, main/utils.c, main/netsock.c, include/asterisk/res_pjsip_session.h: Move eid functions to utils.c, mark netsock.h deprecated Move eid functions from netsock.c to utils.c. These functions were already published by utils.h. Flag netsock.h as deprecated and switch res_pjsip_session.h to use netsock2.h. The only code that still uses netsock.h is chan_iax2. ASTERISK-23920 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3661/ 2014-06-23 18:50 +0000 [r417143] Joshua Colp * /, res/res_rtp_asterisk.c: res_rtp_asterisk: Return the length of data written when sending via ICE instead of 0. ASTERISK-23834 #close Reported by: Richard Kenner ........ Merged revisions 417141 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 417142 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-23 16:04 +0000 [r417120] Richard Mudgett * /, main/core_unreal.c: core_unreal: Fix off by one buffer overwrite error. Appending the ;2 to the user supplied ;1 uniqueid to create the ;2 version if the user did not also supply an extra uniqueid for the ;2 channel resulted in allocating a buffer that was one byte too small. * Fix off by one error in ast_unreal_new_channels() when generating the ;2 uniqueid from the user suppled ;1 version. * Pulled some long assignment lines from if tests to improve line break readability in ast_unreal_new_channels(). ........ Merged revisions 417119 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-23 07:44 +0000 [r417059] Tzafrir Cohen * channels/sig_pri.c, channels/sig_pri.h, channels/chan_dahdi.c: suspended destructions of pri spans on events If a DAHDI span disappears, we wish for its representation in Asterisk to be destroyed as well. The information about the span's removal may come from several paths: 1. DAHDI sends DAHDI_EVENT_REMOVE on every channel. 2. An extra DAHDI_EVENT_REMOVED is sent on every subsequent call to DAHDI_GET_EVENT. 3. Every read (including the internal one by libpri on the D-channel) returns -ENODEV. Asterisk responsds to DAHDI_EVENT_REMOVE on a channel by destroying it. Destroying a channel requires holding the channel list lock (iflock). Destroying a channel that is part of a span requires holding the span's lock. Destroying a channel from a context that holds the span lock, while at the same time another channel is destroyed directly, leads to a deadlock. Solution: don't destroy span while holding the channels list lock. Thus changes in this patch: * Deferring removal of PRI spans in response to events: doomed spans are collected on a list. * Doomed spans are removed periodically by the monitor thread. * ENODEV reads from the D-channel will warant the same deferred removal. Review: https://reviewboard.asterisk.org/r/3548/ 2014-06-22 18:53 +0000 [r416996] George Joseph * include/asterisk/astobj2.h, Makefile.rules, Makefile, /: astobj2: Add an ao2_replace macro to astobj2.h This macro replaces one object reference with another cleaning up the original. param dst Pointer to the object that will be cleaned up. param src Pointer to the object replacing it. src's ref count is bumped if it's non-NULL. dst's ref count is decremented if it's non-NULL. src is assigned to dst, This patch was reviewed on IRC by coreyfarrell and mjordan. Tested by: George Joseph ........ Merged revisions 416995 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-20 23:18 +0000 [r416872-416935] George Joseph * /, configure, include/asterisk/autoconfig.h.in: build: Allow autoconf/ast_ext_tool_check to handle cross-compiling better. ast_ext_tool_check.m4 isn't handling cases where a path to a package is provided (E.G. --with-mysqlclient=/some/sysroot) and the package has a config tool (E.G. mysql_config) and the package has its own subdirectories in include or lib. For example, mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql but ast_ext_tool_check sets MYSQLCLIENT_LIB to ${MYSQLCLIENT_DIR}/usr/lib. libxml2 has the same problem with its includes. They're in ${LIBXML2_DIR}/usr/include/libxml2 not directly in ${LIBXML2_DIR}/usr/include. Both cause configure to fail and there are others in the same boat. The problem is caused by logic in ast_ext_tool_check that overrides the result of the config tool's --cflags and --libs options if package_DIR is set. This patch prepends package_DIR (if specified) to the -L and -I results from the package's config tool instead of overriding them. A regenerated ./configure and include/asterisk/autoconfig.h.in are included but can be regenerated by running ./bootstrap.sh at any time. Tested by: George Joseph Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3550/ ........ Merged revisions 416929 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416930 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416931 from http://svn.asterisk.org/svn/asterisk/branches/12 * autoconf/ast_ext_tool_check.m4, /: build: Allow autoconf/ast_ext_tool_check to handle cross-compiling better. ast_ext_tool_check.m4 isn't handling cases where a path to a package is provided (E.G. --with-mysqlclient=/some/sysroot) and the package has a config tool (E.G. mysql_config) and the package has its own subdirectories in include or lib. For example, mysql's libraries are in ${MYSQLCLIENT_DIR}/usr/lib/mysql but ast_ext_tool_check sets MYSQLCLIENT_LIB to ${MYSQLCLIENT_DIR}/usr/lib. libxml2 has the same problem with its includes. They're in ${LIBXML2_DIR}/usr/include/libxml2 not directly in ${LIBXML2_DIR}/usr/include. Both cause configure to fail and there are others in the same boat. The problem is caused by logic in ast_ext_tool_check that overrides the result of the config tool's --cflags and --libs options if package_DIR is set. This patch prepends package_DIR (if specified) to the -L and -I results from the package's config tool instead of overriding them. Tested by: George Joseph Tested by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3550/ ........ Merged revisions 416870 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416871 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-20 20:57 +0000 [r416848-416850] Jonathan Rose * res/parking/parking_manager.c, /: res_parking: Make manager commands register with module information Previously module information was not included due to an oversight. Review: https://reviewboard.asterisk.org/r/3626/ ........ Merged revisions 416849 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/logger.c, CHANGES, include/asterisk/logger.h, main/manager.c: Logger: Add manager command 'LoggerRotate' to rotate logger Part of a series of AMI command equivalents to existing CLI commands Review: https://reviewboard.asterisk.org/r/3651/ 2014-06-20 17:06 +0000 [r416830] Richard Mudgett * apps/app_voicemail.c, include/asterisk/app.h, main/app.c, apps/app_directory.c, apps/app_chanspy.c: voicemail API callbacks: Extract the sayname API call to its own registerd callback. * Extract the sayname API call to its own registerd callback. This allows the app_directory and app_chanspy applications to say a mailbox owner's name using an alternate provider when app_voicemail is not available because you are using res_mwi_external. app_directory still uses the voicemail.conf file. AFS-64 #close Reported by: Mark Michelson 2014-06-20 15:27 +0000 [r416738-416807] George Joseph * main/astobj2_private.h, main/astobj2_container_private.h, main/astobj2_container.c, main/astobj2_hash.c, main/astobj2_rbtree.c, build_tools/cflags.xml, /, tests/test_astobj2.c: astobj2: Additional refactoring to push impl specific code down into the impls. Move some implementation specific code from astobj2_container.c into astobj2_hash.c and astobj2_rbtree.c. This completely removes the need for astobj2_container to switch on RTTI and it no longer has any knowledge of the implementation details. Also adds AO2_DEBUG as a new compile option in menuselect which controls astobj2 debugging independently of AST_DEVMODE and REF_DEBUG. Tested by: George Joseph Review: https://reviewboard.asterisk.org/r/3593/ ........ Merged revisions 416806 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_endpoint_identifier_ip.c, main/acl.c, include/asterisk/netsock2.h, include/asterisk/acl.h, main/netsock2.c: pjsip cli: Change Identify to show CIDR notation instead of netmasks. * Added ast_sockaddr_cidr_bits() to count the 1 bits in an ast_sockaddr. * Added ast_ha_join_cidr() which uses ast_sockaddr_cidr_bits() for the netmask instead of ast_sockaddr_stringify_addr. * Changed res_pjsip_endpoint_identifier_ip to call ast_ha_join_cidr() instead of ast_ha_join() for the CLI output. This is a CLI change only. AMI was not affected. Tested by: George Joseph Review: https://reviewboard.asterisk.org/r/3652/ ........ Merged revisions 416737 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-19 19:40 +0000 [r416736] Kinsey Moore * /, main/bridge.c, res/parking/parking_tests.c, channels/sip/reqresp_parser.c, main/logger.c, main/test.c: Fix build warnings with TEST_FRAMEWORK enabled ........ Merged revisions 416732 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416733 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416734 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-19 16:04 +0000 [r416589-416670] George Joseph * pbx/pbx_lua.c, /: Remove the problematic and unneeded AST_MODFLAG_GLOBAL_SYMBOLS from pbx_lua.c AST_MODFLAG_GLOBAL_SYMBOLS was causing the module to be incorrectly loaded before pbx_config. pbx_config was therefore blowing away contexts that were created by pbx_lua. With AST_MODFLAG_DEFAULT the load order is now correct and contexs are being properly merged. AST_MODFLAG_GLOBAL_SYMBOLS was not needed anyway since no other modules needed its global symbols that early. ASTERISK-23818 #close Reported by: Dennis Guse Tested by: Dennis Guse Tested by: George Joseph Review: https://reviewboard.asterisk.org/r/3629/ ........ Merged revisions 416668 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416669 from http://svn.asterisk.org/svn/asterisk/branches/12 * configs/extensions.lua.sample, /: Update extensions.lua.sample with naming conflict guidance. The sample extensions.lua was causing pbx_lua to fail to load when parsing 'app.goto("default", "s", 1)' because in Lua 5.2, 'goto' is now a reserved word. This patch adds guidance to extensions.lua.sample and changed 'app.goto("default", "s", 1)' to 'app.['goto']("default", "s", 1)'. ASTERISK-23844 #close Reported by: rnewton Tested by: gtjoseph Review: https://reviewboard.asterisk.org/r/3627/ ........ Merged revisions 416581 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416582 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-18 04:22 +0000 [r416561] Matthew Jordan * /, main/stasis_channels.c: stasis_channels: Update the stasis cache if manager variables are needed In r416211, the publishing of variable changes was modified such that a cached channel snapshot was used if manager variables were not requested with each AMI event. This was done to reduce the amount of channel snapshots created. However, an assumption was made that generating a channel snapshot and publishing the snapshot to the channel topic was sufficient to ensure that the cache would be updated; this is not the case. The channel snapshot type must be used to force a snapshot update. This patch updates the publication of channel variables such that the cache is updated prior to publication of the channel variable message if manager variables are in use. This ensures that all AMI events receive the variable update when they are supposed to. Note that this issue was caught by the Asterisk Test Suite (go go testing) ........ Merged revisions 416557 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-17 18:45 +0000 [r416444-416503] Mark Michelson * /, funcs/func_strings.c: Allow the PUSH and UNSHIFT functions to set inheritable channel variables. ........ Merged revisions 416500 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416501 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416502 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_pidf_body_generator.c, /, res/res_pjsip_xpidf_body_generator.c: Fix string growth algorithm for XML presence bodies. pjpidf_print() does not return < 0 if there is not enough room for the document to be printed. Rather, it returns 39, the length of the XML prolog. The algorithm also had a bug in that it would return if it attempted to grow the string larger. ........ Merged revisions 416442 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-17 16:33 +0000 [r416443] Kinsey Moore * res/res_musiconhold.c, /: MoH: Don't restart stream on repeated start calls Currently, music on hold will stop and then start again from the beginning if ast_moh_start() is called multiple times. This can happen if a call is put on hold repeatedly (the channel receives multiple HOLD control frames) and can be triggered from ARI by starting MoH on a channel multiple times. This is fairly jarring/annoying to users. This change prevents MoH from being restarted if the requested music class is the same as the one currently playing. This includes an extra check to prevent the errors previously experienced in the testsuite and has 100+ test runs behind it. Review: https://reviewboard.asterisk.org/r/3615/ ........ Merged revisions 416439 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416440 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416441 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-16 18:27 +0000 [r416416] Richard Mudgett * channels/chan_dahdi.c, configs/chan_dahdi.conf.sample, channels/sig_ss7.h, configure, channels/chan_dahdi.h, configure.ac, UPGRADE.txt, configs/ss7.timers.sample (added), CHANGES, channels/sig_ss7.c: chan_dahdi: Adds support for major update to libss7. * SS7 support now requires libss7 v2.0 or later. The new libss7 is not backwards compatible. * Added SS7 support for connected line and redirecting. * Most SS7 CLI commands are reworked as well as new SS7 commands added. See online CLI help. * Added several SS7 config option parameters described in chan_dahdi.conf.sample. * ISUP timer support reworked and now requires explicit configuration. See ss7.timers.sample. Special thanks to Kaloyan Kovachev for his support and persistence in getting the original patch by adomjan updated and ready for release. SS7-27 #close Reported by: adomjan 2014-06-16 16:22 +0000 [r416394] Kevin Harwell * include/asterisk/http_websocket.h, tests/test_websocket_client.c, res/res_http_websocket.c: res_http_websocket: read/write string fixup There was a problem when reading a string from the websocket. It assumed the received data had a null terminator and tried to write the data to an ast_str. This of course could/would read past the end of the given buffer while writing the data to the internal buffer of ast_str. Modified the the code to correctly place a null terminator on the result string. 2014-06-16 09:04 +0000 [r416339] Igor Goncharovskiy * cel/cel_sqlite3_custom.c, main/db.c, res/res_config_sqlite3.c, cdr/cdr_sqlite3_custom.c, /: We have faced situation when using CDR and CEL by sqlite3 modules. With system having high load (~100 concurrent calls created by sipp) we found many cdr and cel records missed. There is special finction in sqlite3, that make able to fix this situation - sqlite3_wait_timeout, that also can replace awful code cdr_sqlite3 ad cel_sqlite3 modules. Also this function can be used for aastdb and res_config_sqlite3 to avoid missed writes to sqlite db. #ASTERISK-23766 #close Reported by: Igor Goncharovsky Review: https://reviewboard.asterisk.org/r/3559/ ........ Merged revisions 416336 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416337 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416338 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-16 02:40 +0000 [r416267-416319] Matthew Jordan * /, channels/chan_sip.c: channels/chan_sip: Forbid remote bridging if T.38 is negotiated When a framehook is removed - such as the fax gateway framehook - the bridge framework will re-evaluate the bridge mixing technologies to see if it can improve the bridging. When this occurs, get_rtp_info will be called to determine if local or remote bridging can be used. Using remote bridging will cause a fax to fail, as direct media negotiation will cause some small number of packets to not arrive at the remote endpoint. This patch forces local native bridging if T.38 negotiation is in progress or has been established. ........ Merged revisions 416318 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/channel_internal_api.c: channel_internal_api: Publish a snapshot change when linkedids change Snapshots are now not published *quite* as much as they used to. One instance where they are not published any longer is during bridge enter and exit - the state of the channel doesn't change, the bridge does. However, channels are changed when a linkedid is propagated; previously, the channel's state would be updated and published during the bridge enter event. Now this must be explicitly done. ........ Merged revisions 416300 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, tests/test_stasis_endpoints.c: test_stasis_endpoints: Remove expected channel snapshot We no longer publish a channel snapshot when it is associated with an endpoint; after all, the channel itself hasn't changed - the endpoint state has changed. This updates the channel_messages unit test accordingly. ........ Merged revisions 416298 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_musiconhold.c: MoH: Undo commit r416150 (1.8) This patch reverts r416150. When the comparison between mohclass->name and state->class->name is made, you are not guaranteed that (a) state->class is non-NULL or that state or state->class are in a safe state. Crashes caught by the bridges/transfer_capabilities test. ........ Merged revisions 416251 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416252 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416255 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-14 19:26 +0000 [r416237] Corey Farrell * res/res_manager_devicestate.c, res/res_manager_presencestate.c: res_manager_devicestate and res_manager_presencestate missing support level Add MODULEINFO comment block to define support level core for these new modules. Review: https://reviewboard.asterisk.org/r/3620/ 2014-06-13 18:24 +0000 [r416216] Matthew Jordan * res/res_agi.c, res/res_pjsip/pjsip_configuration.c, main/stasis_channels.c, res/ari/resource_channels.c, main/bridge_channel.c, main/pbx.c, main/stasis_cache.c, /, apps/app_meetme.c, main/pickup.c, main/channel_internal_api.c, include/asterisk/channel.h, main/core_local.c, main/aoc.c, main/endpoints.c, main/cel.c, apps/app_queue.c, main/stasis_bridges.c, apps/app_agent_pool.c, main/cli.c, main/channel.c, main/dial.c, main/manager.c, include/asterisk/stasis_channels.h: stasis: Reduce creation of channel snapshots to improve performance During some performance testing of Asterisk with AGI, ARI, and lots of Local channels, we noticed that there's quite a hit in performance during channel creation and releasing to the dialplan (ARI continue). After investigating the performance spike that occurs during channel creation, we discovered that we create a lot of channel snapshots that are technically unnecessary. This includes creating snapshots during: * AGI execution * Returning objects for ARI commands * During some Local channel operations * During some dialling operations * During variable setting * During some bridging operations And more. This patch does the following: - It removes a number of fields from channel snapshots. These fields were rarely used, were expensive to have on the snapshot, and hurt performance. This included formats, translation paths, Log Call ID, callgroup, pickup group, and all channel variables. As a result, AMI Status, "core show channel", "core show channelvar", and "pjsip show channel" were modified to either hit the live channel or not show certain pieces of data. While this is unfortunate, the performance gain from this patch is worth the loss in behaviour. - It adds a mechanism to publish a cached snapshot + blob. A large number of publications were changed to use this, including: - During Dial begin - During Variable assignment (if no AMI variables are emitted - if AMI variables are set, we have to make snapshots when a variable is changed) - During channel pickup - When a channel is put on hold/unhold - When a DTMF digit is begun/ended - When creating a bridge snapshot - When an AOC event is raised - During Local channel optimization/Local bridging - When endpoint snapshots are generated - All AGI events - All ARI responses that return a channel - Events in the AgentPool, MeetMe, and some in Queue - Additionally, some extraneous channel snapshots were being made that were unnecessary. These were removed. - The result of ast_hashtab_hash_string is now cached in stasis_cache. This reduces a large number of calls to ast_hashtab_hash_string, which reduced the amount of time spent in this function in gprof by around 50%. #ASTERISK-23811 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3568/ ........ Merged revisions 416211 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-13 13:11 +0000 [r416149-416153] Kinsey Moore * res/res_musiconhold.c, /: MoH: Don't restart stream on repeated start calls Currently, music on hold will stop and then start again from the beginning if ast_moh_start() is called multiple times. This can happen if a call is put on hold repeatedly (the channel receives multiple HOLD control frames) and can be triggered from ARI by starting MoH on a channel multiple times. This is fairly jarring/annoying to users. This change prevents MoH from being restarted if the requested music class is the same as the one currently playing. Review: https://reviewboard.asterisk.org/r/3615/ ........ Merged revisions 416150 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416151 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416152 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cel.c, /: CEL: Expose parking retreiver in extra field This exposes the retreiver of a parked call under the "retreiver" key of the extra field when this information is available. Review: https://reviewboard.asterisk.org/r/3608/ ........ Merged revisions 416148 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-13 05:16 +0000 [r416071] Richard Mudgett * main/http.c, include/asterisk/tcptls.h, main/tcptls.c, main/manager.c, /, channels/chan_sip.c: AST-2014-007: Fix of fix to allow AMI and SIP TCP to send messages. ASTERISK-23673 #close Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/3617/ ........ Merged revisions 416066 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 416067 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 416070 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 21:27 +0000 [r416024] Rusty Newton * main/pbx.c: main/pbx - documentation - enhance 'core show hints' and 'core show hint' help text Adds descriptive help text to 'core show hints' and 'core show hint'. The text describes the various columns for the sake of clarity. It takes into account recent changes to the content displayed by the commands https://reviewboard.asterisk.org/r/3604/ and https://reviewboard.asterisk.org/r/3611/. ASTERISK-23764 Review: https://reviewboard.asterisk.org/r/3610/ 2014-06-12 20:17 +0000 [r415982] Kinsey Moore * res/res_pjsip_pubsub.c, /: Fix build in devmode for GCC 4.10 ........ Merged revisions 415980 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 17:00 +0000 [r415907] Richard Mudgett * include/asterisk/utils.h, main/tcptls.c, main/manager.c, /, channels/chan_sip.c, main/http.c, UPGRADE.txt, main/utils.c, include/asterisk/tcptls.h, res/res_http_websocket.c, configs/http.conf.sample: AST-2014-007: Fix DOS by consuming the number of allowed HTTP connections. Simply establishing a TCP connection and never sending anything to the configured HTTP port in http.conf will tie up a HTTP connection. Since there is a maximum number of open HTTP sessions allowed at a time you can block legitimate connections. A similar problem exists if a HTTP request is started but never finished. * Added http.conf session_inactivity timer option to close HTTP connections that aren't doing anything. Defaults to 30000 ms. * Removed the undocumented manager.conf block-sockets option. It interferes with TCP/TLS inactivity timeouts. * AMI and SIP TLS connections now have better authentication timeout protection. Though I didn't remove the bizzare TLS timeout polling code from chan_sip. * chan_sip can now handle SSL certificate renegotiations in the middle of a session. It couldn't do that before because the socket was non-blocking and the SSL calls were not restarted as documented by the OpenSSL documentation. * Fixed an off nominal leak of the ssl struct in handle_tcptls_connection() if the FILE stream failed to open and the SSL certificate negotiations failed. The patch creates a custom FILE stream handler to give the created FILE streams inactivity timeout and timeout after a specific moment in time capability. This approach eliminates the need for code using the FILE stream to be redesigned to deal with the timeouts. This patch indirectly fixes most of ASTERISK-18345 by fixing the usage of the SSL_read/SSL_write operations. ASTERISK-23673 #close Reported by: Richard Mudgett ........ Merged revisions 415841 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415854 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415896 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 15:50 +0000 [r415839] Scott Griepentrog * /, apps/app_queue.c: app_queue: delayed state can cause early leavewhenempty ringing In app_queue, device state changes arrive in event messages and update the queue member status value. That value is checked in get_member_status() to decide that the caller should leave when there are no available members. Although event messages can be delayed by other activity, there is no adverse affect by lagged status except in one specific case: there is only one available member, it was just rung, and leavewhenempty is enabled set for ringing members. This change adds a direct check of the device state only under this condition where the caller may be dropped incorrectly, resolving this issue without affecting performance of app_queue normally. AST-1248 #close Review: https://reviewboard.asterisk.org/r/3595/ Reported by: Thomas Arimont ........ Merged revisions 415833 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415835 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415836 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 15:39 +0000 [r415834] Jonathan Rose * apps/app_mixmonitor.c, /, UPGRADE.txt: MixMontior: Add class authorization requirements to MixMonitor AMI commands MixMonitor AMI commands StartMixMonitor and StopMixMonitor lacked class authorization. StopMixMonitor now requires that the manager user either have the call or system class authorization. StartMixMonitor is a slightly larger issue since it can execute shell commands if the right arguments are passed into it, and we consider this a permission escalation. A security release will be issued for problem this shortly. ASTERISK-23609 #close Reported by: Corey Farrell ........ Merged revisions 415825 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415832 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 14:39 +0000 [r415813] Kevin Harwell * res/res_pjsip_pubsub.c, /: res_pjsip_pubsub: unauthenticated remote crash in PJSIP pub/sub framework A remotely exploitable crash vulnerability exists in the PJSIP channel driver's pub/sub framework. If an attempt is made to unsubscribe when not currently subscribed and the endpoint's "sub_min_expiry" is set to zero, Asterisk tries to create an expiration timer with zero seconds, which is not allowed, so an assertion raised. The fix was to reject a subscription that is attempting to unsubscribe when not being already subscribed. Asterisk now checks for this situation appropriately and responds with a 400 instead of crashing. AST-2014-005 ASTERISK-23489 #close ........ Merged revisions 415812 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 14:15 +0000 [r415795] Mark Michelson * res/res_pjsip.c, /: Fix potential deadlock situation in res_pjsip. SIP transaction timeouts are handled in the PJSIP monitor thread. When this happens on a subscription, and the subscription is destroyed, the subscription destruction is dispatched synchronously to the threadpool. The issue is that the PJSIP dialog is locked by the monitor thread, and then the dispatched task attempts to lock the dialog. This leads to a deadlock that causes SIP traffic to no longer be accepted on the Asterisk server. The fix here is to treat the monitor thread as if it were a threadpool thread when it attempts to dispatch synchronous tasks. This way, the dispatched task turns into a simple function call within the same thread, and the locking issue is averted. AST-2014-008 ASTERISK-23802 #close ........ Merged revisions 415794 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 11:34 +0000 [r415767] Joshua Colp * res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_exten_state.c, include/asterisk/res_pjsip.h, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip_pubsub.exports.in, /, contrib/ast-db-manage/config/versions/c6d929b23a8_create_pjsip_subscription_persistence_.py (added), res/res_pjsip_mwi.c: res_pjsip_pubsub: Persist subscriptions in sorcery so they are recreated on startup. This change makes res_pjsip_pubsub persist inbound subscriptions in sorcery. By default this uses the local astdb but it can also be configured to store within an outside database. When Asterisk is started these subscriptions are recreated if they have not expired. Notifications are sent to the devices which have subscribed and they are none the wiser that the system has restarted. Review: https://reviewboard.asterisk.org/r/3598/ ........ Merged revisions 415766 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-12 07:52 +0000 [r415749] Walter Doekes * UPGRADE.txt, contrib/scripts/safe_asterisk, Makefile, /: safe_asterisk: Overwrite old safe_asterisk on make install. From now on, make install will overwrite safe_asterisk with the latest version. You need to move any local modifications to files inside /etc/asterisk/startup.d, if you have any. See also commits r394939 and r397938. ASTERISK-21965 #close Patches: safe_asterisk.patch uploaded by jkister (License 6232, modified by me) ........ Merged revisions 415748 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-11 23:01 +0000 [r415730] Richard Mudgett * main/format.c, /: format.c: Fix misuse of hash container function. The supplied hash function to a container must be idempotent given the object's key value to figure out which container bucket the object belongs in. Returning a random number or the current container count is not idempotent. The "computed hash" value doesn't help find the object later in those cases. * Fixed the format_list container to actually be a list since that is how the container is used. Conceptually, if more than 283 formats were added to the format_list then odd things may have happened before the fix. ........ Merged revisions 415728 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415729 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-11 20:22 +0000 [r415698-415715] Scott Griepentrog * main/pbx.c: CLI: correct presence information on core show hints Adds presence to core show hint and changes presence string conversion to use the correct function. ASTERISK-23858 #close Review: https://reviewboard.asterisk.org/r/3611/ * main/pbx.c: CLI: add presence information to core show hints Adds presence state value to output of core show hints. Also reformats the output slightly so it doesn't use as much space as it would otherwise. Was: 1000@demo : SIP/1000 State:Unavailable Watchers 0 Now: 1000@demo : SIP/1000 State:Unavailable Presence:Idle Watchers 0 AFS-53 #close Review: https://reviewboard.asterisk.org/r/3604/ 2014-06-10 18:32 +0000 [r415679] Kinsey Moore * main/channel.c, /: Fix build in dev mode due to signed/unsigned mismatch ........ Merged revisions 415678 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-10 16:06 +0000 [r415659] Jonathan Rose * main/message.c, /, res/res_pjsip_notify.c: PJSIP: PJSIPNotify - Strip content-length headers and add documentation Documentation for how to add custom headers/content to notifies created with the PJSIPNotify manager action was a little sparse and it also wasn't vetting application of Content-length headers like its chan_sip equivalent was (so two Content-length headers could be applied... and PJSIP determines the content length anyway, so it just opens people up for error). This patch also flips the variable order so that the variables are interpreted in the same order as they are put in the AMI action. Review: https://reviewboard.asterisk.org/r/3587/ ........ Merged revisions 415658 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-10 09:28 +0000 [r415630] Alexandr Anikin * addons/chan_ooh323.c, /: chan_ooh323: fix loading module failure if there no accessible h323_log or ooh323 config file change return 1 to return AST_MODULE_LOAD_FAILURE on module load routine few cosmetic changes ASTERISK-23814 #close (closes issue ASTERISK-23814) Reported by: Igor Goncharovsky Patches: ASTERISK-23814-ast11.patch ........ Merged revisions 415599 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415602 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-09 20:21 +0000 [r415580] Mark Michelson * res/res_pjsip_header_funcs.c, /: chan_pjsip: Fix bug where custom SIP headers could be duplicated on outgoing INVITEs. When using PJSIP_HEADER() to add custom headers to outgoing INVITE requests, certain situations could result in the headers being duplicated. For instance, if the request were retransmitted, or if the INVITE were re-sent with authentication credentials, the custom headers would be re-added to the request. The fix here is to, after adding the custom headers to the outbound INVITE, remove the datastore that holds the custom headers to add. This way, there is no risk in accidentally adding them if the session supplement is called into a second or third time. ........ Merged revisions 415579 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-09 12:12 +0000 [r415524] Walter Doekes * /, UPGRADE.txt, contrib/scripts/safe_asterisk: safe_asterisk: Cleanup additions to r415132. * Replaced a stray echo that should've been a message call in safe_asterisk. This replaces a conditional log message by a slightly different message. Please update your log parsing scripts. * Made the $NOTIFY mail Subject more verbose by adding the machine name and exitstatus. (Note that a 'make install' still won't overwrite your old safe_asterisk if it exists. See ASTERISK-21965.) ASTERISK-23492 #close ........ Merged revisions 415521 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415522 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415523 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-09 03:50 +0000 [r415466] Corey Farrell * /, main/autoservice.c: autoservice: stop thread on graceful shutdown This change adds thread shutdown to autoservice for graceful shutdowns only. ast_register_cleanup is backported to 1.8 to allow this. The logger callid is also released on shutdown in 11+. ASTERISK-23827 #close Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3594/ ........ Merged revisions 415463 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415464 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415465 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-08 18:12 +0000 [r415444] Matthew Jordan * include/asterisk/channel.h, bridges/bridge_native_rtp.c, main/bridge_channel.c, main/channel.c, main/pbx.c, /, main/framehook.c, main/bridge_after.c: bridges/bridge_native_rtp: Reconfigure bridge on removal of framehook This patch is a re-do of r414122. When r414122 was merged, a major problem with it was uncovered. UNBRIDGE soft hangup flags have a catastrophic effect on the pbx core if they leak out from the bridge layer: the channel gets hung up. With the number of threads involved in a blind transfer, and with the initial patch, it was likely that this would occur. This caused a large number of test failures This patch is nearly identical with the one proposed in r414122, save for the following changes: - We explicitly clear the UNBRIDGE flag when setting an after goto on a channel in a bridge - Defensively, if we encounter an UNBRIDGE flag in the pbx core, we handle it https://reviewboard.asterisk.org/r/3585/ ........ Merged revisions 415443 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-07 00:42 +0000 [r415428] Richard Mudgett * include/asterisk/bridge.h, /: bridge.h: Remove redundant struct ast_bridge_channel forward declaration. ........ Merged revisions 415427 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-06 21:44 +0000 [r415411] Jonathan Rose * include/asterisk/manager.h, main/config.c, main/manager.c, /, channels/chan_sip.c, include/asterisk/config.h: chan_sip: Fix order of variables specified in SIPNotify action Prior to this patch, sequential variables would be ordered in reverse from the order specified in the manager action. Review: https://reviewboard.asterisk.org/r/3588/ ........ Merged revisions 415359 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415390 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415410 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-06 20:45 +0000 [r415358] Kevin Harwell * main/uri.c, tests/test_websocket_client.c: core uri: Custom uri parsing error when no query parameters If using the custom URI parsing code (not external uriparser lib) and there was no query parameters the resulting pointer would be NULL and then an attempt was made to subtract from it. The pointer is now set to a valid value if there is no query parameter(s). Also, in the 'ast_uri_make_host_with_port' function when setting the terminator on the resulting string it was writing it one past the end of allocated memory. It now writes the string terminator appropriately. 2014-06-06 19:13 +0000 [r415343] Kinsey Moore * /, res/res_pjsip_sdp_rtp.c: PJSIP: Remove premature write of raw formats Currently, there are situations that can occur when using chan_pjsip and certain dialplan applications (notably ChanSpy()) that can cause the channel to get no audio with scrolling warnings about format mismatches. This is caused by a failure to update translation paths on a mid-call native format update since the raw formats have already been updated by res_pjsip_sdp_rtp.c in set_caps(). Removing the premature raw format updates allows the translation paths to be setup correctly and the raw read and write formats with them. AFS-63 #close ........ Merged revisions 415342 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-06 14:12 +0000 [r415319] George Joseph * tests/test_astobj2.c, main/astobj2_private.h (added), main/astobj2.c, main/astobj2_container_private.h (added), main/astobj2_container.c (added), main/astobj2_hash.c (added), main/astobj2_rbtree.c (added), /, include/asterisk/astobj2.h: Split astobj2.c into more maintainable components. Split astobj2.c into the following files to improve maintainability. astobj2.c - object primitives, object primitive misc and initialization code. astobj2_private.h - internal object declarations needed by the containers. astobj2_container.c - generic conainer and container misc code. astobj2_container_hash.c - hash container specific code. astobj2_container_rbtree.c - rbtree container specific code. astobj2_container_private.h - generic container definitions and rtti prototypes. https://reviewboard.asterisk.org/r/3576/ ........ Merged revisions 415317 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-06 12:49 +0000 [r415302] Rusty Newton * /, configs/cli_aliases.conf.sample: configs/cli_aliases.conf: Two new aliases, plus enhancements for context names. Changed naming of included alias templates to avoid confusion between version names. For example, asterisk12 was for asterisk 1.2, so I changed it to asterisk_1dot2, so that later we can use asterisk_12 for Asterisk 12. Added alias for "features reload" to the template for Asterisk 11 style syntax template, as features reload was removed in 12, but you can still do "module reload features" Added alias for "pjsip reload" to the friendly template. It is shorter than "module reload res_pjsip.so" and if some are like me; I constantly forget that reloading chan_pjsip doesn't parse config. Remembering "pjsip reload" is just easier. ASTERISK-23654 #close ASTERISK-23654 #comment Fixed by adding two new aliases and enhancements for context names. Review: https://reviewboard.asterisk.org/r/3572/ ........ Merged revisions 415301 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-05 19:04 +0000 [r415231-415288] Richard Mudgett * main/config.c: config: Fix indentation and missing curlies in config_text_file_load(). * main/config.c, /: config: Fix config files not reloading when only an included file changes. The twisted logic determining if a config file should be reloaded was mostly broken and disabled. The incorrect test that ASTERISK-23383 fixed actually reenabled the broken logic. The incorrect test was causing the timestamp to always be cleared which caused config files with includes to always be reloaded. * Made wildcard includes always cause a reload. Determining if a file was deleted cannot be determined without restructuring the cache to determine if any files are missing from the last files actually loaded. Also without refactoring config_text_file_load(), the glob loop couldn't check more than one file for changes anyway. * Made remove the cache entry if the file no longer exists when trying to get its timestamp or it is no longer a regular file. This fixes the corner case where the file was loaded, then deleted, then the config reloaded, then the file restored with the same timestamp, and then the config reloaded again. * Made remove the cache entry include list when actually loading the file. This gets rid of any stale includes the file had from the last time the file was loaded. ASTERISK-23683 #close Reported by: tootai Review: https://reviewboard.asterisk.org/r/3575/ ........ Merged revisions 415225 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415229 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415230 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-05 17:22 +0000 [r415223] Kevin Harwell * tests/test_uri.c (added), include/asterisk/http_websocket.h, main/http.c, main/uri.c (added), tests/test_websocket_client.c (added), res/res_http_websocket.c, include/asterisk/http.h, include/asterisk/uri.h (added), res/res_http_websocket.exports.in: res_http_websocket: Create a websocket client Added a websocket server client in Asterisk. Asterisk has a websocket server, but not a client. The ability to have Asterisk be able to connect to a websocket server can potentially be useful for future work (for instance this could allow ARI to connect back to some external system, although more work would be needed in order to incorporate that). Also a couple of things to note - proxy connection support has not been implemented and there is limited http response code handling (basically, it is connect or not). Also added an initial new URI handling mechanism to core. Internet type URI's are parsed into a data structure that contains pointers to the various parts of the URI. (closes issue ASTERISK-23742) Reported by: Kevin Harwell Review: https://reviewboard.asterisk.org/r/3541/ 2014-06-05 14:49 +0000 [r415208] Matthew Jordan * /, apps/app_confbridge.c: app_confbridge: Allow muting of users waiting to enter a ConfBridge Prior to this patch, users waiting to enter a ConfBridge were not considered when muted via the CLI or via AMI. Instead, a confusing message would be emitted stating that the channel did not exist. This patch allows a user to be muted when waiting to enter a ConfBridge conference. This is equivalent to start when muted, only toggled via the CLI or AMI. Review: https://reviewboard.asterisk.org/r/3582 #ASTERISK-23824 #close patches: rb3582.patch uploaded by tm1000 (License 6524) ........ Merged revisions 415206 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415207 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-05 11:59 +0000 [r415192] Kinsey Moore * /, channels/chan_pjsip.c: PJSIP: Send initial connected line information This makes chan_pjsip send connected line information when it is called so that connected line information is available on the connected channel. (closes issue DPMA-442) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3584/ ........ Merged revisions 415191 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-04 20:16 +0000 [r415173] Walter Doekes * /, contrib/scripts/safe_asterisk: safe_asterisk: Cleanup and debian compatibility. Cleans up the safe_asterisk script and adds the ASTSAFE_FOREGROUND option that allows the debian asterisk init script to capture the right pid. * Drop the vim #modeline which wasn't used. Use test consistently without the odd configure xno syntax. Double quote all paths. General cleanup. * Don't output message()s to the console but only to TTY if set. * Allow TTY to be "no" as well as empty (debian compatibility with debian/patches/safe_asterisk-config). * Add option to export ASTSAFE_FOREGROUND=1 from the init script that calls this to disable backgrounding. Debian uses a similar method in debian/patches/safe_asterisk-nobg). ASTERISK-23492 #close Review: https://reviewboard.asterisk.org/r/3574/ ........ Merged revisions 415132 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415171 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415172 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-04 14:13 +0000 [r415116-415118] Matthew Jordan * /, channels/chan_pjsip.c: chan_pjsip: Add debug in RTP Engine glue callback This patch adds some debug statements that aid with determining why a direct media request may or may not be initiated. ........ Merged revisions 415117 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_session.c, /: res_pjsip_session: Add debug statement for session refreshes This small patch adds a debug level 3 statement indicating how a session refresh is being sent - either as a re-INVITE or as an UPDATE - and where the session refresh is going. ........ Merged revisions 415115 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-04 07:27 +0000 [r415080] Corey Farrell * /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c: app_confbridge: Correct verification of conference name length Conference names were not checked for maximum length, allowing unexpected behaviour. This change adds checking to ensure the maximum length is not exceeded. The maximum length is also changed from 32 to AST_MAX_EXTENSION. ASTERISK-23035 #close Reported by: Iñaki Cívico Tested by: Iñaki Cívico Patches: confbridge-enforce_max-1.8.patch uploaded by coreyfarrell (license 5909) confbridge-enforce_max-11up.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 415060 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 415066 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 415078 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-03 07:36 +0000 [r415000] Walter Doekes * /, funcs/func_odbc.c: func_odbc: Fix fixed size buffers fix (r414968). The change that removed the fixed size buffers in odbc-related code -- removing arbitrary column width limits -- was incomplete. This change adds: no segfault on writesql without insertsql and return value checks after strdup. While I was in the vicinity I cleaned up the linefeeds in the odbc function descriptions, moved some code for clarity, removed some blobs and noted (but didn't fix) that the 'odbc write ... exec' CLI command doesn't behave as the dialplan equivalent when insertsql= is used. ASTERISK-23582 #close Review: https://reviewboard.asterisk.org/r/3579/ ........ Merged revisions 414997 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414998 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414999 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-06-01 15:32 +0000 [r414976] Joshua Colp * /, bridges/bridge_native_rtp.c: bridge_native_rtp: Take the bridge type choice of both channels into account. The bridge_native_rtp module currently uses the bridge result of the first channel that joins a bridge as the ultimate result. This means that if the first channel has direct media enabled but the second does not a direct media bridge will still occur. This change makes it so that both sides are taken into account. If either side forbids the bridge or responds with a local bridge result then either a generic or local bridge occurs. ASTERISK-23541 #close Reported by: Justin E Review: https://reviewboard.asterisk.org/r/3577/ ........ Merged revisions 414975 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-30 14:53 +0000 [r414949] Kinsey Moore * res/res_pjsip_refer.c, /: PJSIP: Prevent crash on blind transfer Blind transfers don't go too well with NULL channels which can occur if the channel has already been transferred away. (closes issue ASTERISK-23718) Reported by: Jonathan Rose ........ Merged revisions 414948 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-30 12:42 +0000 [r414883-414935] Matthew Jordan * main/audiohook.c, CHANGES, res/ari/ari_model_validators.c, res/ari/ari_model_validators.h, funcs/func_talkdetect.c (added), include/asterisk/stasis_channels.h, rest-api/api-docs/events.json, /, main/stasis_channels.c: TALK_DETECT: A channel function that raises events when talking is detected This patch adds a new channel function TALK_DETECT that, when set on a channel, causes events indicating the start/stop of talking on a channel to be emitted to both AMI and ARI clients. The function allows setting both the silence threshold (the length of silence after which we decide no one is talking) as well as the talking threshold (the amount of energy that counts as talking). Parameters can be updated on a channel after talk detection has been enabled, and talk detection can be removed at any time. The events raised by the function use a nomenclature similar to existing AMI/ARI events. For AMI: ChannelTalkingStart/ChannelTalkingStop For ARI: ChannelTalkingStarted/ChannelTalkingFinished Review: https://reviewboard.asterisk.org/r/3563/ #ASTERISK-23786 #close Reported by: Matt Jordan ........ Merged revisions 414934 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/config.c, /: main/config.c: AMI action UpdateConfig EmptyCat clears all categories When invoking UpdateConfig AMI action with Action set to EmptyCat, Asterisk will make all categories empty in the config but the one requested with a Cat variable. This is due to a bug in ast_category_empty (main/config.c) that makes an incorrect comparison for a category name. This patch corrects the comparison such that only the requested category is cleared. Review: https://reviewboard.asterisk.org/r/3573/ #ASTERISK-23803 #close Reported by: zvision patches: manager.c.diff uploaded by zvision (License 5755) ........ Merged revisions 414880 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414881 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414882 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-29 18:51 +0000 [r414861] Kinsey Moore * main/pbx.c, /: PBX: Prevent incorrect hint parsing Dynamic and pattern matching hints should not be checked for their last known state until they are instantiated by subscribers. (closes issue AFS-56) Reported by: John Hardin Patch AFS-56-pbx.diff submitted by Matt Jordan (license 6283) ........ Merged revisions 414813 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414859 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414860 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-28 22:54 +0000 [r414798] Matthew Jordan * main/loader.c, include/asterisk/logger.h, res/res_config_curl.c, cel/cel_odbc.c, res/res_config_odbc.c, bridges/bridge_builtin_features.c, main/optional_api.c, main/logger.c, main/config_options.c, cdr/cdr_odbc.c, apps/app_mixmonitor.c, main/asterisk.c, res/res_odbc.c, main/xmldoc.c, apps/app_voicemail.c, cel/cel_pgsql.c, channels/chan_unistim.c, res/res_config_pgsql.c, main/pbx.c, cdr/cdr_sqlite3_custom.c, res/res_fax.c, main/bridge.c, apps/app_waitforsilence.c, cdr/cdr_adaptive_odbc.c, res/parking/parking_applications.c, cdr/cdr_pgsql.c, res/res_jabber.c: Logger/CLI/etc.: Fix some aesthetic issues; reduce chatty verbose messages This patch addresses some aesthetic issues in Asterisk. These are all just minor tweaks to improve the look of the CLI when used in a variety of settings. Specifically: * A number of chatty verbose messages were removed or demoted to DEBUG messages. Verbose messages with a verbosity level of 5 or higher were - if kept as verbose messages - demoted to level 4. Several messages that were emitted at verbose level 3 were demoted to 4, as announcement of dialplan applications being executed occur at level 3 (and so the effects of those applications should generally be less). * Some verbose messages that only appear when their respective 'debug' options are enabled were bumped up to always be displayed. * Prefix/timestamping of verbose messages were moved to the verboser handlers. This was done to prevent duplication of prefixes when the timestamp option (-T) is used with the CLI. * Verbose magic is removed from messages before being emitted to non-verboser handlers. This prevents the magic in multi-line verbose messages (such as SIP debug traces or the output of DumpChan) from being written to files. * _Slightly_ better support for the "light background" option (-W) was added. This includes using ast_term_quit in the output of XML documentation help, as well as changing the "Asterisk Ready" prompt to bright green on the default background (which stands a better chance of being displayed properly than bright white). Review: https://reviewboard.asterisk.org/r/3547/ 2014-05-28 20:53 +0000 [r414781] Rusty Newton * /, configs/pjsip.conf.sample: pjsip.conf: privkey_file should be priv_key_file, mediaencryption=yes should be mediaencryption=sdes privkey_file was missed in the snake case update. An example included an invalid value for the mediaencryption option. ........ Merged revisions 414780 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-28 17:46 +0000 [r414764-414766] Matthew Jordan * 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, rest-api/api-docs/playbacks.json, rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, rest-api/resources.json, include/asterisk/manager.h, rest-api/api-docs/bridges.json, rest-api/api-docs/recordings.json: AMI/ARI: Update version numbers Update the semantic versioning of ARI to 1.3.0 and AMI to 2.3.0 to account for backwards compatible changes going from 12.2.0 to 12.3.0. ........ Merged revisions 414765 from http://svn.asterisk.org/svn/asterisk/branches/12 * contrib/ast-db-manage/cdr/env.py, /: ast-db-manage/cdr/env.py: Don't fail if a config file can't be loaded When generating SQL files via the repotools alembic_creator.py script, a configuration object is used programatically with SQLAlechemy, as opposed to a configuration file. This patch ignores failures to interpret a config file, as ... there isn't one in this case. ........ Merged revisions 414763 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-28 16:56 +0000 [r414748-414750] Richard Mudgett * res/res_pjsip_session.c, include/asterisk/res_pjsip_session.h, /, res/res_pjsip_t38.c: res_pjsip_session: Fix leaked video RTP ports. Simply enabling PJSIP to negotiage a video codec (e.g., h264) would leak video RTP ports if the codec were not negotiated by an incoming call. * Made add_sdp_streams() associate the handler with the media stream if the handler handled the media stream. Otherwise, when the ast_sip_session_media object was destroyed it didn't know how to clean up the RTP resources. * Fixed sdp_requires_deferral() associating the handler with the media stream when deciding if the SDP processing needs to be deferred for T.38. Like the leaked video RTP ports, the T.38 handler needs to clean up allocated resources from deciding if SDP processing needs to be deffered. * Cleaned up some dead code in handle_incoming_sdp() and sdp_requires_deferral(). ASTERISK-23721 #close Reported by: cervajs Review: https://reviewboard.asterisk.org/r/3571/ ........ Merged revisions 414749 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, CHANGES, apps/app_agent_pool.c: app_agent_pool: Return to dialplan if the agent fails to ack the call. Improvements to the agent pool functionality. * AgentRequest no longer hangs up the caller if the agent fails to connect with the caller. It now continues in the dialplan. * AgentRequest returns AGENT_STATUS set to NOT_CONNECTED if the agent failed to connect with the call. Most likely because the agent did not acknowledge the call in time or got disconnected. * The agent alerting play file configured by the agent.conf custom_beep option can now be disabled by setting the option to an empty string. The agent is effectively alerted to a call presence when MOH stops. * Fixed bridge reference leak when the agent connects with a caller. ASTERISK-23499 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3551/ ........ Merged revisions 414747 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-28 11:37 +0000 [r414696] Joshua Colp * res/res_config_odbc.c, /, funcs/func_odbc.c: res_config_odbc: Use dynamically sized buffers to store row data so values do not get truncated. ASTERISK-23582 #close ASTERISk-23582 #comment Reported by: Walter Doekes Review: https://reviewboard.asterisk.org/r/3557/ ........ Merged revisions 414693 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414694 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414695 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-28 09:43 +0000 [r414567-414679] Walter Doekes * /, channels/chan_unistim.c: chan_unistim: Unlock mutex in rare OOM condition. #ASTERISK-23792 #close Reported by: Peter Whisker Review: https://reviewboard.asterisk.org/r/3567/ ........ Merged revisions 414677 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414678 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: chan_sip: Start session timer at 200, not at INVITE. Asterisk started counting the session timer at INVITE while the other end correctly started at 200. This meant that for short session-expiries (90 seconds) combined with long ringing times (e.g. 30 seconds), asterisk would wrongly assume that the timer was hit before the other end thought it was time to send a session refresh. This resulted in prematurely ended calls. This changes the session timer to start counting first at 200 like RFC says it should. (Also removed a few excess NULL checks that would never hit, because if they did, asterisk would have crashed already.) ASTERISK-22551 #close Reported by: i2045 Review: https://reviewboard.asterisk.org/r/3562/ ........ Merged revisions 414620 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414628 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414636 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_config_odbc.c, /: res_config_odbc: Fix old and new ast_string_field memory leaks. The ODBC realtime driver uses ^NN parameter encoding to cope with the special meaning of the semi-colon. A semi-colon in a field is interpreted as if the key was supplied twice, something which isn't otherwise possible with fixed database columns. E.g. allow=alaw;ulaw is parsed as allow=alaw and allow=ulaw. A literal semi-colon is rewritten to ^3B when stored in the database. The module uses a stringfield to efficiently store the encoded parameters. However, this stringfield wasn't always freed in some off-nominal cases. Commit r413241 fixed initialization so the encoding for INSERT and DELETE queries wouldn't crash. (Only SELECTs and UPDATEs worked apparently.) But that commit forgot the frees. This change cleans that up. Review: https://reviewboard.asterisk.org/r/3555/ ........ Merged revisions 414564 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414565 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414566 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-25 02:37 +0000 [r414543] Matthew Jordan * /, main/core_unreal.c: core_unreal: Prevent double free of core_unreal pvt When a channel is destroyed (such as via ast_channel_release in off nominal paths in core_unreal), it will attempt to free (via ast_free) the channel tech pvt. This is problematic for a few reasons: 1. The channel tech pvt is an ao2 object in core_unreal. Free'ing the pvt directly is no good. 2. The channel tech pvt's reference count is dropped just prior to calling ast_channel_release, resulting in the pvt's destruction. Hence, the channel destructor is free'ing an invalid pointer. This patch keeps the dropping of the reference count, but sets the pvt to NULL on the channel prior to releasing it. This models what would occur if the channel was hung up directly. ........ Merged revisions 414542 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-23 17:36 +0000 [r414529] Matthew Jordan * tests/test_cel.c, /: test_cel: Fix unit tests broken due to event def changes from res_corosync This patch instructs test_cel to skip any IE types it doesn't care about. The addition of the raw and bitfield types caused the tests to fail. ........ Merged revisions 414528 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-23 14:36 +0000 [r414475] Kinsey Moore * main/event.c, /: Fix signed/unsigned build warnings ........ Merged revisions 414474 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-22 16:19 +0000 [r414417] Richard Mudgett * /, apps/app_meetme.c: app_meetme: Don't interrupt MOH for waitmarked users. Occasionally, when the last marked user leaves the conference, waitmarked users don't get MOH if MOH is supposed to be played while a waitmarked user is waiting for another marked user. * Made not interrupt MOH when the user is a waitmarked user. The waitmarked user doesn't need to hear any leave announcements from the conference as the user would have already heard different leave announcements if they were enabled. Apparently DAHDI occasionally sends unending non-silent streams to these users or a normal user still in the conference has continuous high background noise. These non-silent streams cause MOH to be suspended while the never ending "announcement" is played. Issue caused by ASTERISK-13680. AST-1349 #close Reported by: Tyler Stewart Review: https://reviewboard.asterisk.org/r/3543/ ........ Merged revisions 414401 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414402 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414404 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-22 16:09 +0000 [r414406] Scott Griepentrog * rest-api/api-docs/events.json, /, res/stasis/app.c, res/ari/resource_events.c, include/asterisk/stasis_app.h, include/asterisk/stasis.h, apps/app_userevent.c, res/ari/resource_events.h, res/ari/ari_model_validators.c, CHANGES, main/stasis.c, res/ari/ari_model_validators.h, include/asterisk/stasis_channels.h, res/res_ari_events.c, main/stasis_channels.c, res/res_stasis.c, main/manager_channels.c, main/stasis_endpoints.c: ARI: Add ability to raise arbitrary User Events User events can now be generated from ARI. Events can be signalled with arbitrary json variables, and include one or more of channel, bridge, or endpoint snapshots. An application must be specified which will receive the event message (other applications can subscribe to it). The message will also be delivered via AMI provided a channel is attached. Dialplan generated user event messages are still transmitted via the channel, and will only be received by a stasis application they are attached to or if the channel is subscribed to. This change also introduces the multi object blob mechanism used to send multiple snapshot types in a single message. The dialplan app UserEvent was also changed to use multi object blob, and a new stasis message type created to handle them. ASTERISK-22697 #close Review: https://reviewboard.asterisk.org/r/3494/ ........ Merged revisions 414405 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-22 15:52 +0000 [r414403] Jonathan Rose * include/asterisk/bridge.h, res/parking/parking_bridge_features.c, channels/chan_mgcp.c, res/res_pjsip_refer.c, channels/chan_dahdi.c, channels/sig_analog.c, /, channels/chan_sip.c, main/parking.c, main/bridge.c, main/bridge_basic.c, res/parking/parking_applications.c, include/asterisk/parking.h: res_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers PJSIP would never send the final 200 Notify for a blind transfer when transferring to parking. This patch fixes that. In addition, it fixes a reference leak when performing blind transfers to non-bridging extensions. Review: https://reviewboard.asterisk.org/r/3485/ ........ Merged revisions 414400 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-22 14:02 +0000 [r414331-414348] Matthew Jordan * /, UPGRADE.txt: UPGRADE: Add note for REF_DEBUG flag ........ Merged revisions 414345 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414346 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414347 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_corosync.c, include/asterisk/stasis.h, main/app.c, main/devicestate.c, main/event.c, main/stasis.c, include/asterisk/devicestate.h, include/asterisk/event.h, main/stasis_message.c, /, include/asterisk/event_defs.h: res_corosync: Update module to work with Stasis (and compile) This patch fixes res_corosync such that it works with Asterisk 12. This restores the functionality that was present in previous versions of Asterisk, and ensures compatibility with those versions by restoring the binary message format needed to pass information from/to them. The following changes were made in the core to support this: * The event system has been partially restored. All event definition and event types in this patch were pulled from Asterisk 11. Previously, we had hoped that this information would live in res_corosync; however, the approach in this patch seems to be better for a few reasons: (1) Theoretically, ast_events can be used by any module as a binary representation of a Stasis message. Given the structure of an ast_event object, that information has to live in the core to be used universally. For example, defining the payload of a device state ast_event in res_corosync could result in an incompatible device state representation in another module. (2) Much of this representation already lived in the core, and was not easily extensible. (3) The code already existed. :-) * Stasis message types now have a message formatter that converts their payload to an ast_event object. * Stasis message forwarders now handle forwarding to themselves. Previously this would result in an infinite recursive call. Now, this simply creates a new forwarding object with no forwards set up (as it is the thing it is forwarding to). This is advantageous for res_corosync, as returning NULL would also imply an unrecoverable error. Returning a subscription in this case allows for easier handling of message types that are published directly to an aggregate topic that has forwarders. Review: https://reviewboard.asterisk.org/r/3486/ ASTERISK-22912 #close ASTERISK-22372 #close ........ Merged revisions 414330 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-21 22:24 +0000 [r414297] Richard Mudgett * /, main/core_unreal.c: core_unreal: Only block media frames when a generator is on both ends of an unreal channel. The fix for ASTERISK-12292 was a bit too aggressive. You could have generators pointed at each other on local channels but need to get other kinds of frames such as DTMF or CONNECTED_LINE frames accross. ........ Merged revisions 414269 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414270 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414272 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-21 19:08 +0000 [r414217] Scott Griepentrog * /, funcs/func_strings.c: pbx.c: prevent potential crash from recursive replace() Recurisve usage of replace() resulted in corruption of the temporary string storage and potential crash. By changing the string to be allocated separtely per instance, this is eliminated. ASTERISK-23650 #comment Reported by: Roel van Meer ASTERISK-23650 #close Review: https://reviewboard.asterisk.org/r/3539/ ........ Merged revisions 414214 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414215 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414216 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-19 19:52 +0000 [r414196] Paul Belanger * res/res_stasis_answer.c, /: Replace __ast_answer with ast_raw_answer in app_control_answer While load testing an ARI application, I noticed asterisk was returning HTTP 500 internal server errors on channels/:id/answer. After talking to #asterisk-dev, the issue appeared to be a lack of media flowing after __ast_answer() was called. So now, we call ast_raw_answer instead and no longer wait for media. ASTERISK-23758 #close Review: https://reviewboard.asterisk.org/r/3549/ ........ Merged revisions 414195 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-19 01:10 +0000 [r414123-414138] Matthew Jordan * include/asterisk/channel.h, bridges/bridge_native_rtp.c, main/bridge_channel.c, res/res_pjsip_refer.c, res/res_pjsip_session.c, main/channel.c, /, main/framehook.c: Undo r414123 The Test Suite caught a few problems, undoing until those are resolved * include/asterisk/channel.h, bridges/bridge_native_rtp.c, main/bridge_channel.c, res/res_pjsip_session.c, main/channel.c, /, main/framehook.c: bridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook This patch fixes issues with direct media bridges that occur after a blind transfer. These issues were caught by the (currently failing) pjsip/transfers/blind_transfer/caller_direct_media test. The test currently fails primarily for two reasons: (1) When Bob and Charlie (the transfer target and the transfer destination) enter a bridge together, the framehook remains on the transfer target channel until both channels are in the bridge. As it consumes voice frames, the initial bridge type is a simple bridge. The framehook is removed when both channels are in the bridge; however, this does not currently cause the bridging framework to re-evaluate the bridge. This patch adds a AST_SOFTHANGUP_UNBRIDGE poke to the transfer target channel when a framehook is removed so the bridge can re-evaluate itself. (2) When a channel leaves a native RTP bridge, it may be leaving due to being hung up. Sending a re-INVITE to a channel that is about to be hung up is not nice - in fact, there's a good chance we'll send the BYE request before the channel has had a chance to send back a 200 OK. To be somewhat nicer, this patch adds a function to channel.h that allows the bridging framework to query for exactly why a channel is leaving a bridge via the channel's soft hangup flags. This allows it to only send the re-INVITE if there's a chance the channel will survive the native bridging experience. Review: https://reviewboard.asterisk.org/r/3535/ ........ Merged revisions 414122 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-16 20:06 +0000 [r413994-414070] Richard Mudgett * /, channels/chan_dahdi.c: chan_dahdi: Fix analog dialtone detection. * Check if waitingfordt (waitfordialtone) is enabled in dahdi_read() to allow the DSP to operate early enough to detect dialtone. * Made use the correct variable in my_check_waitingfordt(). ASTERISK-23709 #close Reported by: Steve Davies Patches: dialtone_detect_fix (license #5012) patch uploaded by Steve Davies Review: https://reviewboard.asterisk.org/r/3534/ ........ Merged revisions 414067 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 414068 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414069 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/sig_pri.c, /: sig_pri.c: Pull the pri_dchannel() PRI_EVENT_RING case into its own function. * Populate the CALLERID(ani2) value (and the special CALLINGANI2 channel variable) with the ANI2 value in addition to the PRI specific ANI2 channel variable. * Made complete snapshot staging with the channel lock held. All channel snapshots need to be done while the channel lock is held. ........ Merged revisions 414050 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 414051 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_meetme.c: app_meetme: Fix overwrite of DAHDI conference data structure. Starting a conference recording using the admin menu overwrites the DAHDI conference data structure used to modify the admin user's conference mute mode. * Made no longer pass the user's DAHDI conference data structure into the menu functions. The menu now uses its own DAHDI conference data structure to start the recording channel. * Moved the unlock conf->playlock to before playing the conf-full message. No sense keeping the lock while that prompt is playing. The user is never going to get into the conference at that point. ........ Merged revisions 413991 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413992 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413993 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-14 15:41 +0000 [r413897] Walter Doekes * /, res/res_musiconhold.c: res_musiconhold: Minor cleanup. Fix a few free()'s that should be ast_free()'s. Reverted an old workaround that isn't necessary. Reorder a tiny bit of code. Remove a bit of commented-out code. Review: https://reviewboard.asterisk.org/r/3536/ ........ Merged revisions 413894 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413895 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413896 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-13 18:09 +0000 [r413878] Jonathan Rose * main/netsock2.c, /, channels/chan_sip.c, include/asterisk/netsock2.h: chan_sip: Add TLS and SRTP status to CLI command 'sip show channel' ASTERISK-23564 #close Reported by: Patrick Laimbock Review: https://reviewboard.asterisk.org/r/3474/ ........ Merged revisions 413876 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413877 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-13 13:53 +0000 [r413790-413793] Walter Doekes * res/res_format_attr_h264.c, /: h264: Fix H264 SDP payload format. https://tools.ietf.org/html/rfc3984#section-8.1 says profile-level-id takes 3 bytes in base16 (6 hex digits). This fixes video setup in certain cases. ASTERISK-23664 #close ASTERISK-23664 #comment Patch r3530.patch uploaded by Guillaume Maudoux. Review: https://reviewboard.asterisk.org/r/3530/ ........ Merged revisions 413791 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413792 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/rtp_engine.c: rtp: Fix case typo in H263+ mime. http://tools.ietf.org/html/rfc3555#section-4.2.6 says the canonical mime subtype is "H263-1998", not "h263-1998". Original code was added in r183101 on 2009-03-19 02:26:50 +0100. This fixes issues with Polycom phones. ASTERISK-23665 #close ASTERISK-23665 #comment Patch r3529.patch uploaded by Guillaume Maudoux, backported by me. Review: https://reviewboard.asterisk.org/r/3529/ ........ Merged revisions 413787 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413788 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413789 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-13 00:35 +0000 [r413770-413772] Richard Mudgett * configure.ac, channels/sig_pri.c, /, configure, include/asterisk/autoconfig.h.in: chan_dahdi/sig_pri: Prevent unnecessary PROGRESS events when overlap dialing is enabled. When overlap dialing is enabled, the lack of inband audio available information in the SETUP_ACKNOWLEDGE events causes an interoperability problem with SIP. sig_pri doesn't know if there is dialtone present when a SETUP_ACKNOWLEDGE is received so it assumes it is there and posts an AST_CONTROL_PROGRESS frame. The SIP channel driver then sends out a 183 Session Progress and blocks the desired 180 Ringing message when the ALERTING message comes in. * Made the configure script detect if the installed version of libpri supports the SETUP_ACKNOWLEDGE enhancements. * Using the new API, made generate an AST_CONTROL_PROGRESS frame on an incoming SETUP_ACKNOWLEDGE message when the message indicates inband audio is present instead of assuming that dialtone is present. * Using the new API, made SETUP_ACKNOWLEDGE send out an inband audio available indication only if dialtone is expected. The change also makes the fallback behaviour of sending the PROGRESS message better by sending it only if dialtone is expected. * Changed receiving a PROCEEDING message to not generate an AST_CONTROL_PROGRESS frame if the progress indication ie indicates non-end-to-end-ISDN. This helps interoperability with SIP. * Changed sending a PROCEEDING message in response to an AST_CONTROL_PROCEEDING frame to not indicate inband audio available. It was silly to do so anyway because the channel driver doesn't know if inband audio is even available. This helps interoperability with SIP. This patch and a corresponding change in libpri work together to allow Asterisk to control the inband audio available progress indication ie on the SETUP_ACKNOWLEDGE message when dialtone is present. AST-1338 #close Reported by: Tyler Stewart Review: https://reviewboard.asterisk.org/r/3521/ ........ Merged revisions 413714 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413765 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413771 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/sig_pri.c: Fix compiler warning from GCC 4.10 fixup. ........ Merged revisions 413766 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-12 22:33 +0000 [r413713] Jonathan Rose * apps/app_chanspy.c, /: app_chanspy: Fix a test that was failing on account of r413551 ASTERISK-23381 #close ASTERISK-23381 #comment Reported by: Robert Moss Review: https://reviewboard.asterisk.org/r/3505/ ........ Merged revisions 413710 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413712 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-11 02:09 +0000 [r413651-413682] Joshua Colp * main/bridge_basic.c, include/asterisk/channel.h, bridges/bridge_native_rtp.c, include/asterisk/framehook.h, main/channel.c, /, main/framehook.c: framehooks: Add callback for determining if a hook is consuming frames of a specific type. In the past framehooks have had no capability to determine what frame types a hook is actually interested in consuming. This has meant that code has had to assume they want all frames, thus preventing native bridging. This change adds a callback which allows a framehook to be queried for whether it is consuming a frame of a specific type. The native RTP bridging module has also been updated to take advantange of this, allowing native bridging to occur when previously it would not. ASTERISK-23497 #comment Reported by: Etienne Lessard ASTERISK-23497 #close Review: https://reviewboard.asterisk.org/r/3522/ ........ Merged revisions 413681 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/channel.h, bridges/bridge_native_rtp.c, include/asterisk/framehook.h, main/channel.c, /, main/framehook.c, main/bridge_basic.c: Undoing framehook support. Issues were uncovered by Bamboo. * /, main/framehook.c, main/bridge_basic.c, include/asterisk/channel.h, bridges/bridge_native_rtp.c, include/asterisk/framehook.h, main/channel.c: framehooks: Add callback for determining if a hook is consuming frames of a specific type. In the past framehooks have had no capability to determine what frame types a hook is actually interested in consuming. This has meant that code has had to assume they want all frames, thus preventing native bridging. This change adds a callback which allows a framehook to be queried for whether it is consuming a frame of a specific type. The native RTP bridging module has also been updated to take advantange of this, allowing native bridging to occur when previously it would not. ASTERISK-23497 #comment Reported by: Etienne Lessard ASTERISK-23497 #close Review: https://reviewboard.asterisk.org/r/3522/ ........ Merged revisions 413650 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-09 23:18 +0000 [r413589-413599] Kinsey Moore * /, funcs/func_env.c: Fix 32bit build for func_env ........ Merged revisions 413592 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413595 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413597 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_festival.c, pbx/dundi-parser.c, apps/app_getcpeid.c, main/netsock.c, funcs/func_channel.c, main/audiohook.c, pbx/pbx_config.c, res/res_pjsip_registrar.c, main/xmldoc.c, channels/iax2/firmware.c, apps/app_voicemail.c, main/format.c, cel/cel_pgsql.c, main/rtp_engine.c, main/parking.c, main/bridge.c, res/res_jabber.c, res/res_http_websocket.c, main/config.c, res/res_format_attr_opus.c, main/loader.c, res/parking/parking_bridge.c, main/cdr.c, main/manager.c, include/asterisk/astobj.h, main/bucket.c, apps/app_dumpchan.c, main/app.c, res/res_pjsip/config_transport.c, res/res_pjsip_refer.c, channels/chan_mgcp.c, res/res_rtp_asterisk.c, main/slinfactory.c, main/core_unreal.c, res/res_pjsip_sdp_rtp.c, res/res_crypto.c, main/acl.c, channels/sig_pri.c, res/res_monitor.c, res/res_srtp.c, main/data.c, res/res_corosync.c, channels/sip/config_parser.c, res/res_fax_spandsp.c, apps/app_stack.c, main/asterisk.c, main/udptl.c, res/res_sorcery_config.c, main/security_events.c, res/res_timing_dahdi.c, res/res_pjsip_t38.c, res/res_musiconhold.c, main/taskprocessor.c, res/res_format_attr_h263.c, res/res_xmpp.c, res/res_pktccops.c, funcs/func_hangupcause.c, channels/chan_phone.c, main/manager_bridges.c, cel/cel_odbc.c, channels/chan_skinny.c, channels/chan_motif.c, res/res_agi.c, main/logger.c, funcs/func_srv.c, channels/chan_alsa.c, apps/app_confbridge.c, res/res_pjsip_pubsub.c, channels/sip/include/sip.h, main/sched.c, apps/app_adsiprog.c, main/pbx.c, channels/chan_sip.c, res/res_fax.c, main/aoc.c, res/res_calendar_ews.c, res/parking/parking_bridge_features.c, channels/iax2/parser.c, main/callerid.c, main/file.c, res/res_pjsip/pjsip_configuration.c, main/adsi.c, main/config_options.c, pbx/pbx_dundi.c, funcs/func_iconv.c, main/bridge_channel.c, res/res_odbc.c, channels/chan_pjsip.c, res/parking/parking_manager.c, res/res_calendar.c, /, funcs/func_sysinfo.c, main/utils.c, cdr/cdr_adaptive_odbc.c, res/res_calendar_caldav.c, res/res_stasis_snoop.c, res/res_format_attr_h264.c, main/channel.c, res/ael/pval.c, res/res_ari_model.c, channels/chan_dahdi.c, channels/sig_analog.c, funcs/func_frame_trace.c, res/res_format_attr_silk.c, main/manager_channels.c, apps/app_dial.c, res/res_calendar_icalendar.c, main/translate.c, apps/app_queue.c, channels/chan_jingle.c, res/res_stun_monitor.c, main/abstract_jb.c, res/res_stasis_recording.c, apps/app_sms.c, main/event.c, apps/app_verbose.c, main/dsp.c, channels/chan_unistim.c, main/frame.c, res/res_stasis_playback.c, main/ccss.c, funcs/func_env.c, main/devicestate.c, bridges/bridge_softmix.c, channels/chan_gtalk.c, channels/chan_iax2.c, main/enum.c, main/cli.c, res/res_format_attr_celt.c, apps/confbridge/conf_config_parser.c, main/io.c, channels/pjsip/dialplan_functions.c, res/res_config_odbc.c, res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, formats/format_pcm.c, apps/app_minivm.c, main/stdtime/localtime.c, main/stun.c: Allow Asterisk to compile under GCC 4.10 This resolves a large number of compiler warnings from GCC 4.10 which cause the build to fail under dev mode. The vast majority are signed/unsigned mismatches in printf-style format strings. ........ Merged revisions 413586 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413587 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413588 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-09 18:15 +0000 [r413572] Richard Mudgett * main/http.c: http.c: Remove dead code. 2014-05-09 17:03 +0000 [r413557] Jonathan Rose * apps/app_chanspy.c, /: app_chanspy: Fix a bug where Barge mode could fail If the barge audiohook was attached prior to the spyee and its peer actually being bridged, the audiohook would not be applied and the connected peer would not be able to hear audio from the spy when the spy is in barge mode. (closes issue ASTERISK-23381) Reported by: Robert Moss Review: https://reviewboard.asterisk.org/r/3505/ ........ Merged revisions 413551 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413556 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-08 00:36 +0000 [r413488] Joshua Colp * apps/app_queue.c, main/manager.c, /: app_queue: Extend documentation for various Manager actions and events. ........ Merged revisions 413485 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413486 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413487 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-07 21:58 +0000 [r413469] Mark Michelson * funcs/func_presencestate.c: Ensure that presence state is decoded properly on Asterisk startup. The CustomPresence provider callback will automatically base64 decode stored data if the 'e' option was present when the state was set. However, since the provider callback was bypassed on Asterisk startup, encoded presence subtypes and messages were being sent instead. This fix makes it so the provider callback is always used when providing presence state updates. 2014-05-07 20:59 +0000 [r413453-413455] Richard Mudgett * apps/app_confbridge.c, /: app_confbridge: Fixed "CBAnn" channels not going away. Fixed a ref leak in conf_handle_talker_cb() everytime the conference bridge was found to report a channel's talker status change. The resulting leak caused the "CBAnn" channels and the conference bridge to never be destroyed. Thanks to Richard Kenner on the asterisk-user's list for locating the problem. Reported by: Richard Kenner ........ Merged revisions 413454 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_confbridge.c, /: app_confbridge: Fix ref leak in CLI "confbridge kick" command. Fixed ref leak in the CLI "confbridge kick" command when the channel to be kicked was not in the conference. ........ Merged revisions 413451 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413452 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-07 17:56 +0000 [r413307-413399] Mark Michelson * res/res_config_odbc.c, /: Fix encoding of custom prepare extra data. Patches: res_config_odbc-take2.patch by John Hardin (License #6512) ........ Merged revisions 413396 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413397 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413398 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip/presence_xml.c, /, res/res_pjsip_pidf_digium_body_supplement.c: Improve XML sanitization in NOTIFYs, especially for presence subtypes and messages. Embedded carriage return line feed combinations may appear in presence subtypes and messages since they may be derived from user input in an instant messenger client. As such, they need to be properly escaped so that XML parsers do not vomit when the messages are received. ........ Merged revisions 413372 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_registrar.c, /: Check for an act on failures to update contacts during registration. There was an underlying issue in a realtime backend where database updates would fail. Since we were not checking for failure, we would end up in a strange state where the old database entry was still present but Asterisk thought that it had been updated. Now when an entry fails to update, we print a warning and delete the old contact from sorcery so there is no mismatch between foreground and backend state. Patches: res_pjsip_registrar.patch by John Hardin (License #6512) ........ Merged revisions 413358 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_config_odbc.c, /: Ensure that all parts of SQL UPDATEs and DELETEs are encoded. Patches: res_config_odbc.patch by John Hardin (License #6512) ........ Merged revisions 413304 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413305 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413306 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-02 20:28 +0000 [r413227-413263] Mark Michelson * /, res/res_config_odbc.c: Prevent crashes in res_config_odbc due to uninitialized string fields. Patches: odbc-crash.patch by John Hardin (License #6512) ........ Merged revisions 413241 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413251 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413258 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_config_pgsql.c, /: Return the number of rows affected by a SQL insert, rather than an object ID. The realtime API specifies that the store callback is supposed to return the number of rows affected. res_config_pgsql was instead returning an Oid cast as an int, which during any nominal execution would be cast to 0. Returning 0 when more than 0 rows were inserted causes problems to the function's callers. To give an idea of how strange code can be, this is the necessary code change to fix a device state issue reported against chan_pjsip in Asterisk 12+. The issue was that the registrar would attempt to insert contacts into the database. Because of the 0 return from res_config_pgsql, the registrar would think that the contact was not successfully inserted, even though it actually was. As such, even though the contact was query-able and it was possible to call the endpoint, Asterisk would "think" the endpoint was unregistered, meaning it would report the device state as UNAVAILABLE instead of NOT_INUSE. The necessary fix applies to all versions of Asterisk, so even though the bug reported only applies to Asterisk 12+, the code correction is being inserted into 1.8+. Closes issue ASTERISK-23707 Reported by Mark Michelson ........ Merged revisions 413224 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 413225 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413226 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-02 16:39 +0000 [r413211] Richard Mudgett * UPGRADE.txt, res/res_pjsip_refer.c, /, channels/chan_sip.c: res_pjsip_refer: Add Referred-By header on INVITE for blind transfers. Per rfc3892, the Referred-By header in a REFER must be copied into the referenced request (IE. The outgoing INVITE to the transfer target). * Automatically put the Referred-By header in the outgoing INVITE message if the SIPREFERREDBYHDR channel variable is defined with a value. * Made chan_sip.c:get_refer_info() set SIPREFERREDBYHDR for inheritance so chan_pjsip has a better chance to interoperate. * Fixed refer_blind_callback() and refer_incoming_refer_request() to not modify the data in the pointer returned by pjsip_msg_find_hdr_by_name(). It seems wrong to modify that data since the calling routine doesn't own the buffer. ASTERISK-23501 #close Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3514/ ........ Merged revisions 413210 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-02 16:06 +0000 [r413197] Jonathan Rose * res/parking/res_parking.h, /, CHANGES, res/parking/parking_bridge_features.c, res/parking/parking_manager.c: Parking: Add 'AnnounceChannel' argument to manager action 'Park' (closes ASTERISK-23397) Reported by: Denis Review: https://reviewboard.asterisk.org/r/3446/ ........ Merged revisions 413196 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-01 16:21 +0000 [r413174-413183] Mark Michelson * funcs/func_presencestate.c: Make behavior of the PRESENCE_STATE 'e' option more consistent. When writing presence state, if 'e' is specified, then the presence state will be stored in the astdb encoded. However, consumers of presence state events or those that query for the presence state will be given decoded information. If base64 encoding is desired for consumers, then the information can be base64-encoded manually and the 'e' option can be omitted. closes issue ASTERISK-23671 Reported by Mark Michelson Review: https://reviewboard.asterisk.org/r/3482 * res/res_pjsip_exten_state.c, /: Remove unnecessary repetition checks from res_pjsip_exten_state The PBX core already takes care of ensuring that repeated state changes are not communicated to exten state consumers. Because the check in res_pjsip_exten_state was incomplete, it was causing valid presence state changes not to be sent out. For instance, if the presence state did not change but the message or subtype did, then no presence-related NOTIFY request would be sent out. closes issue ASTERISK-23672 Reported by Mark Michelson ........ Merged revisions 413173 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-05-01 12:31 +0000 [r413160] Joshua Colp * res/res_pjsip/config_transport.c, /: res_pjsip: Add the ability to configure ciphers based on name. Previously this code would only accept the OpenSSL identifier instead of the documented name. ASTERISK-23498 #close ASTERISK-23498 #comment Reported by: Anthony Messina Review: https://reviewboard.asterisk.org/r/3491/ ........ Merged revisions 413159 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-30 21:03 +0000 [r413144] Richard Mudgett * main/message.c, /, channels/chan_sip.c, include/asterisk/message.h, res/res_pjsip_messaging.c: chan_sip.c: Fixed off-nominal message iterator ref count and alloc fail issues. * Fixed early exit in sip_msg_send() not destroying the message iterator. * Made ast_msg_var_iterator_next() and ast_msg_var_iterator_destroy() tolerant of a NULL iter parameter in case ast_msg_var_iterator_init() fails. * Made ast_msg_var_iterator_destroy() clean up any current message data ref. * Made struct ast_msg_var_iterator, ast_msg_var_iterator_init(), ast_msg_var_iterator_next(), ast_msg_var_unref_current(), and ast_msg_var_iterator_destroy() use iter instead of i. * Eliminated RAII_VAR usage in res_pjsip_messaging.c:vars_to_headers(). ........ Merged revisions 413139 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413142 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-30 20:39 +0000 [r413141] Joshua Colp * /, channels/chan_pjsip.c: chan_pjsip: Fix deadlock when retrieving call-id of channel. If a task was in-flight which required the channel or bridge lock it was possible for the synchronous task retrieving the call-id to deadlock as it holds those locks. After discussing with Mark Michelson the synchronous task was removed and the call-id accessed directly. This should be safe as each object involved is guaranteed to exist and the call-id will never change. ........ Merged revisions 413140 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-30 13:08 +0000 [r413125] Kinsey Moore * res/res_http_websocket.c, /: Websocket: Add session locking and delay close This resolves a race condition where data could be written to a NULL FILE pointer causing a crash as a websocket connection was in the process of shutting down by adding locking to websocket session writes and by deferring session teardown until session destruction. (closes issue ASTERISK-23605) Review: https://reviewboard.asterisk.org/r/3481/ Reported by: Matt Jordan ........ Merged revisions 413123 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413124 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-30 12:42 +0000 [r413118-413122] Joshua Colp * /, res/stasis/control.c: res_stasis: Add progress indications to operations which perform media. This change fixes operations which did not account for the fact that they may be executed on channels which have not been answered. These operations will now indicate progress when invoked. ASTERISK-23560 #close ASTERISk-23560 #comment Reported by: Jan Svoboda Review: https://reviewboard.asterisk.org/r/3495/ ........ Merged revisions 413121 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_sdp_rtp.c: res_pjsip_sdp_rtp: Fix issue where sending a hold SDP twice could cause an unhold. This change fixes a bug where if an SDP with media address and sendonly was received twice the underlying call would go off hold, instead of remaining on hold. This occured because the code did not properly take into account that the SDP may contain both a valid media address and the sendonly attribute. The code now examines the sendonly attribute and media address first, so if the SDP is received again no change will occur. ASTERISK-23558 #comment Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3472/ ........ Merged revisions 413119 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_pjsip.c, res/res_pjsip_session.c, /: chan_pjsip: Add support for picking up calls in the configured pickup group. AST-1363 Review: https://reviewboard.asterisk.org/r/3478/ ........ Merged revisions 413117 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-29 15:10 +0000 [r413103] George Joseph * /, include/asterisk/spinlock.h: Add "destroy" implementation for spinlock. The original commit for spinlock was missing "destroy" implementations. Most of them are no-ops but phtread_spin and pthread_mutex do need their locks destroyed. ........ Merged revisions 413102 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-29 11:27 +0000 [r413089] Joshua Colp * channels/chan_pjsip.c, /: chan_pjsip: Implement core ability to get Call-ID of a channel. This changes implement the "get_pvt_uniqueid" which is used to return the technology specific unique identifier. In the case of SIP this is the Call-ID of the dialog. Review: https://reviewboard.asterisk.org/r/3480/ ........ Merged revisions 413088 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-28 20:07 +0000 [r413074] Kinsey Moore * /, main/bridge.c, main/bridge_basic.c: Bridging: Don't lock NULL bridges When bridge locking was added for bridge snapshot creation, some locations where bridge locking was added were not guaranteed to actually have a bridge and locking NULL AO2 objects tends to cause segfaults. This ensures that NULL bridges aren't locked. ........ Merged revisions 413073 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-28 14:40 +0000 [r413060] Mark Michelson * res/res_manager_presencestate.c (added), main/devicestate.c, CHANGES, main/presencestate.c, res/res_manager_devicestate.c (added): Add DeviceStateChanged and PresenceStateChanged AMI events. These events are controlled by two new modules, res_manager_devicestate and res_manager_presencestate. Review: https://reviewboard.asterisk.org/r/3417 2014-04-28 07:43 +0000 [r413048] Igor Goncharovskiy * UPGRADE.txt, CHANGES, channels/chan_unistim.c, configs/unistim.conf.sample: Introducing changes proposed to chan_unistim driver: 1) Added the unistim.conf variable dtmf_duration which can select the DTMF playback duration from 0ms to 150ms (0 is off and is the new default) 2) Enabled the transmission of month names, which are sent with the date and changed the dateformat variable to accept the values 0-3 as per the UNISTIM standard (2 & 3 match the previous 1 & 2 formats). 3) Enabled the "Mute" packet so muting microphone works as expected and microphone muted for all calls while LED light on 4) Changed Duree to Timer on i2004 display (closes issue ASTERISK-23592) 2014-04-27 19:29 +0000 [r413036] Olle Johansson * main/tcptls.c: tcptls.c : Log errors as ERROR, not warning or something else. 2014-04-25 19:26 +0000 [r413012] Matthew Jordan * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Add support for DTLS handshake retransmissions On congested networks, it is possible for the DTLS handshake messages to get lost. This patch adds a timer to res_rtp_asterisk that will periodically check to see if the handshake has succeeded. If not, it will retransmit the DTLS handshake. Review: https://reviewboard.asterisk.org/r/3337 ASTERISK-23649 #close Reported by: Nitesh Bansal patches: dtls_retransmission.patch uploaded by Nitesh Bansal (License 6418) ........ Merged revisions 413008 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 413009 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-24 14:37 +0000 [r412993] Kevin Harwell * /, contrib/ast-db-manage/config/versions/e96a0b8071c_increase_pjsip_column_size.py (added): pjsip realtime: increase the size of some columns The string lengths on certain columns created through alembic for PJSIP were too short. For instance, columns containing URIs are currently set to 40 characters, but this can be too small and result in truncated values. Added an alembic migration script that increases the size of these columns and a few others to 255. ASTERISK-23639 #close Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/3475/ ........ Merged revisions 412992 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-23 20:13 +0000 [r412977] George Joseph * include/asterisk/spinlock.h (added), /, configure, include/asterisk/autoconfig.h.in, configure.ac: This patch adds support for spinlocks in Asterisk. There are cases in Asterisk where it might be desirable to lock a short critical code section but not incur the context switch and yield penalty of a mutex or rwlock. The primary spinlock implementations execute exclusively in userspace and therefore don't incur those penalties. Spinlocks are NOT meant to be a general replacement for mutexes. They should be used only for protecting short blocks of critical code such as simple compares and assignments. Operations that may block, hold a lock, or cause the thread to give up it's timeslice should NEVER be attempted in a spinlock. The first use case for spinlocks is in astobj2 - internal_ao2_ref. Currently the manipulation of the reference counter is done with an ast_atomic_fetchadd_int which works fine. When weak reference containers are introduced however, there's an additional comparison and assignment that'll need to be done while the lock is held. A mutex would be way too expensive here, hence the spinlock. Given that lock contention in this situation would be infrequent, the overhead of the spinlock is only a few more machine instructions than the current ast_atomic_fetchadd_int call. ASTERISK-23553 #close Review: https://reviewboard.asterisk.org/r/3405/ ........ Merged revisions 412976 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-23 18:03 +0000 [r412925] Richard Mudgett * /, main/http.c: http: Fix spurious ERROR message in responses with no content. Backport -r411687 and fix the fix because content_length is the length of out plus the length of the file controlled by fd. When a response has an out content length of 0, fwrite would be called to write a buffer with no data in it. This resulted in the following classic error message: [Apr 3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success This patch makes it so that we only attempt to write the content of out if the out string is non-zero. ........ Merged revisions 412922 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412923 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412924 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-23 15:02 +0000 [r412910] Russell Bryant * res/res_monitor.c, funcs/func_periodic_hook.exports.in (added), main/asterisk.dynamics, funcs/func_periodic_hook.c: Fix error loading res_monitor. For some odd reason, loading app_mixmonitor was fine, but res_monitor was not. This patch fixes a set of issues related to func_periodic_hook exporting the beep functions that gets res_monitor working again. 2014-04-22 10:09 +0000 [r412883] Joshua Colp * /, res/stasis/app.c: res_stasis: Fix crash when handling a failed blind transfer message. This changes fixes a crash that occurs when stasis determines if it should send a message out to an application or not. The code incorrectly assumed that a bridge snapshot would always be present when in reality for failure cases it may not be. ASTERISK-23573 #close ........ Merged revisions 412882 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-21 17:56 +0000 [r412759-412824] Jonathan Rose * CHANGES, /: chan_sip: trust_id_outbound CHANGES message improvement (closes issue AST-1301) (closes issue ASTERISK-19465) Reported by: Krzysztof Chmielewski ........ Merged revisions 412821 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412822 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412823 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c, configs/sip.conf.sample, CHANGES, channels/sip/include/sip.h: chan_sip: Add sendrpid trust options In r411189, some behavior was changed which made sendrpid behavior act in a more trusting manner by sending full user data for peers set with private caller presence in P-Asserted-Identity headers. Since this changed long time expected behaviors, we decided to pull that patch when that was pointed out by the community. Instead, this patch provides a trust_id_outbound setting which will expose the data per RFC-3325 if set to 'yes' and simply not send the PAI/RPID headers at all if set to 'no'. By default trust_id_outbound will be set to 'legacy' which will preserve the behavior prior to these patches. Extra special thanks to Walter Doekes for providing advice and feedback. (closes issue AST-1301) (closes issue ASTERISK-19465) Reported by: Krzysztof Chmielewski Review: https://reviewboard.asterisk.org/r/3447/ ........ Merged revisions 412744 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412746 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412747 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-21 16:16 +0000 [r412729-412750] Kinsey Moore * main/http.c, main/manager.c, /: HTTP: Add TCP_NODELAY to accepted connections This adds the TCP_NODELAY option to accepted connections on the HTTP server built into Asterisk. This option disables the Nagle algorithm which controls queueing of outbound data and in some cases can cause delays on receipt of response by the client due to how the Nagle algorithm interacts with TCP delayed ACK. This option is already set on all non-HTTP AMI connections and this change would cover standard HTTP requests, manager HTTP connections, and ARI HTTP requests and websockets in Asterisk 12+ along with any future use of the HTTP server. Review: https://reviewboard.asterisk.org/r/3466/ ........ Merged revisions 412745 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412748 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412749 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_confbridge.c, /: Confbridge: Fix ConfbridgeKick AMI documentation This adds documentation for the "all" channel option for the ConfbridgeKick AMI action and adjusts AMI responses accordingly. (issue ASTERISK-23282) Reported by: Dorian Logan ........ Merged revisions 412730 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_confbridge.c: Confbridge: Add references for kick all option After the ability to kick all attendees from a conference was added, a rework removed the comment about that feature from the CLI documentation. This adds that documentation and adds "all" to the participant tab completion list for the confbridge kick command. (closes issue ASTERISK-23282) Reported by: Dorian Logan ........ Merged revisions 412728 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-21 08:36 +0000 [r412714] Igor Goncharovskiy * /, channels/chan_unistim.c: Fix wrong dialtone. The "modulation" should not be referenced for tone+tone as it refers to the on-off characteristic - this often resulted in a single tone rather than the multitone as in the UK. ........ Merged revisions 412712 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412713 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-19 02:14 +0000 [r412697-412699] Matthew Jordan * /, main/asterisk.c: main/asterisk: Fix startup sequence for realtime features When ASTERISK-23265/ASTERISK-23320 was fixed, it inadvertently led to realtime features breaking. This was due to features loading prior to realtime. This patch fixes this by loading features after loading dynamic modules. ASTERISK-23487 #close Reported by: Denis Tested by: Denis ........ Merged revisions 412698 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_sms.c: app_sms: Fix uninitialized values; hangup channel when REL is sent successfully This patch fixes two issues in app_sms: (1) Firstly, the 'flags' field on the stack in sms_exec() is uninitialised, causing it to use the wrong protocol in some cases. This patch correctly initializes the flags fields. (2) Secondly, when disconnect supervision is not working or inbanddisconnect=yes is set in chan_dahdi.conf, app_sms was failing to terminate the call after it sent the REL(ease) message and the peer stopped talking to it. This patch fixes the code to handle the 'bad stop bit' message more gracefully in that case, and hang up the call. Review: https://reviewboard.asterisk.org/r/1392/ ASTERISK-18331 #close Reported by: David Woodhouse patches: asterisk-fix-sms.patch uploaded by David Woodhouse (License 5754) ........ Merged revisions 412655 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412656 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412657 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-18 20:09 +0000 [r412641] Jonathan Rose * /, res/ari/resource_bridges.h, res/stasis/control.c, include/asterisk/stasis_app.h, res/stasis/control.h, res/ari/resource_channels.c, CHANGES, res/res_stasis.c, rest-api/api-docs/bridges.json, res/ari/resource_bridges.c, res/res_ari_bridges.c, res/res_stasis_playback.c: ARI: Make bridges/{bridgeID}/play queue sound files Previously multiple play actions against a bridge at one time would cause the sounds to play simultaneously on the bridge. Now if a sound is already playing, the play action will queue playback to occur after the completion of other sounds currently on the queue. (closes issue ASTERISK-22677) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3379/ ........ Merged revisions 412639 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-18 17:17 +0000 [r412589] Rusty Newton * sounds/sounds.xml, sounds/Makefile, /: sounds: Fix Sounds Makefile and XML that didn't support new sound prompt sets In sounds/Makefile 1 Adds and moves some lines necessary for the en_GB core set. I'm just following how the other sets are defined here. 2 removes the ES extra sounds related lines as we don't have ES extra sound sets. In sounds/sounds.xml 3 Adds member definitons for EN_AU, EN_GB, IT for core sound sets, and EN_GB in extra sound sets ASTERISK-23550 #close Review: https://reviewboard.asterisk.org/r/3464/ ........ Merged revisions 412586 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412587 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-18 17:02 +0000 [r412584] Mark Michelson * /, res/res_pjsip/location.c: Allow for multiple contacts to be configured in a single contact= line. This is useful for configuring multiple permanent contacts for an AOR when using realtime AORs. Review: https://reviewboard.asterisk.org/r/3462 ........ Merged revisions 412582 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-18 16:44 +0000 [r412580-412583] Richard Mudgett * main/dial.c, main/pbx.c, /, apps/app_originate.c, include/asterisk/pbx.h: Originated calls: Fix several originate call problems. * Restore the reason value set by pbx_outgoing_attempt() to use AST_CONTROL_xxx values as all the consumers were expecting rather than cause codes. * Fixed the dial routines to set cause codes for more than just ast_request() so pbx_outgoing_attempt() reason codes will function. * Fix inconsistent locked_channel return status in pbx_outgoing_attempt(). The chanel may not have been locked or the channel may have been a stale pointer. * Fixed the OutgoingSpoolFailed channel to run dialplan whenever the dialing fails for an originate exten and 1 < synchronous. * Fix incorrect ast_cond_wait() usage in pbx_outgoing_attempt(). Indroduced by issue ASTERISK-22212 patch. * Made struct pbx_outgoing use the ao2 lock instead of its own lock for the cond wait mutex. No sense in having two locks associated with the same struct when only one is needed. Review: https://reviewboard.asterisk.org/r/3421/ ........ Merged revisions 412581 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_channels.c, apps/app_queue.c, apps/app_dial.c, /: app_dial and app_queue: Make lock the forwarding channel while taking the channel snapshot. * Fixed ast_channel_publish_dial_forward() not locking the forwarded channel when taking the channel snapshot. * Fixed app_dial.c:do_forward() using the wrong channel to get the original call forwarding string. * Removed unnecessary locking when calling ast_channel_publish_dial() and ast_channel_publish_dial_forward() in app_dial and app_queue. Holding channel locks when calling ast_channel_publish_dial_forward() with a forwarded channel could result in pausing the system while the stasis bus completes processsing a forwarded channel subscription. Review: https://reviewboard.asterisk.org/r/3451/ ........ Merged revisions 412579 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-18 14:25 +0000 [r412566] Kinsey Moore * res/ari/ari_websockets.c, res/res_ari.c, main/manager.c, /: ARI: Add debug logging for events and responses This adds DEBUG level logging for ARI websocket events and HTTP responses similar to what is available for AMI. Logging for ARI HTTP requests is already adequate for debugging purposes. ........ Merged revisions 412565 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-17 22:50 +0000 [r412552] Joshua Colp * /, res/res_pjsip/location.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/pjsip_options.c, res/res_pjsip.c, res/res_pjsip_registrar.c: res_pjsip: Handle reloading when permanent contacts exist and qualify is configured. This change fixes a problem where permanent contacts being qualified were not being updated. This was caused by the permanent contacts getting a uuid and not a known identifier, causing an inability to look them up when updating in the qualify code. A bug also existed where the new configuration may not be available immediately when updating qualifies. (closes issue ASTERISK-23514) Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/3448/ ........ Merged revisions 412551 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-17 22:42 +0000 [r412536-412550] Jonathan Rose * /, main/app.c: Fix a silly shadowed variable mistake that was missed from play tones patch ........ Merged revisions 412549 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/ari/resource_bridges.h, main/app.c, rest-api/api-docs/channels.json, CHANGES, rest-api/api-docs/bridges.json, res/ari/resource_channels.h, include/asterisk/app.h, res/res_stasis_playback.c: ARI: Add tones playback resource Adds a tones URI type to the playback resource. The tone can be specified by name (from indications.conf) or by a tone pattern. In addition, tonezone can be specified in the URI (by appending ;tonezone=). Tones must be stopped manually in order for a stasis control to move on from playback of the tone. Tones may be paused, resumed, restarted, and stopped. They may not be rewound or fast forwarded (tones can't be controlled in a way that lets you skip around from note to note and pausing and resuming will also restart the tone from the beginning). Tests are currently in development for this feature (https://reviewboard.asterisk.org/r/3428/). (closes issue ASTERISK-23433) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3427/ ........ Merged revisions 412535 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-17 20:25 +0000 [r412467-412484] Matthew Jordan * channels/chan_oss.c, /, main/Makefile: main/Makefile: Fix build failure on SmartOS/Illumos/SunOS This patch fixes two issues when building on SmartOS: - channels/chan_oss.c: it makes sure soundcard.h is found - main/Makefile: only use "-Wl,--version-script" when GNU LD is used as the Sun Linker doesn't support that. Similar checks are already used elswhere in the Makefile Review: https://reviewboard.asterisk.org/r/3426 ASTERISK-23576 #close Reported by: Sebastian Wiedenroth patches: fix-sunos.diff uploaded by Sebastian Wiedenroth (License 6597) ........ Merged revisions 412468 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412483 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/sip/include/sip.h, channels/chan_sip.c, CHANGES: chan_sip: Add SIPURIPHONECONTEXT channel variable for Request TEL URIs This patch is a continuation of https://reviewboard.asterisk.org/r/3349/, committed in r412303. It resolves a finding oej had that the phone-context be available in a channel variable separate from SIPDOMAIN. This patch adds that variable as SIPURIPHONECONTEXT. It also allows a local number (or global number specified in the TEL URI) to be used to look up as a peer. (issue ASTERISK-17179) Review: https://reviewboard.asterisk.org/r/3349/ 2014-04-17 15:17 +0000 [r412454] Kevin Harwell * res/res_pjsip_refer.c, /: res_pjsip_refer: Channel variable SIPREFERTOHDR not being set during blind transfer The SIPREFERTOHDR channel variable is not being set on any channel when performing a blind transfer using PJSIP. The 'refer->refer_to' was not being set during a blind transfer. Updated so the 'refer_to' is set to the target uri on a blind transfer. (closes issue ASTERISK-23502) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/3445/ ........ Merged revisions 412453 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-16 19:14 +0000 [r412440] Kinsey Moore * /, include/asterisk/stasis_app.h: Stasis: Add a usage note on stasis_app_get_bridge This function returns an ast_bridge without a refcount bump and the caller must increment the count if it intends to hold the pointer. (closes issue ASTERISK-23588) Review: https://reviewboard.asterisk.org/r/3450/ Reported by: Matt Jordan ........ Merged revisions 412439 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-15 23:21 +0000 [r412427] Russell Bryant * bridges/bridge_builtin_features.c, include/asterisk/monitor.h, CHANGES, apps/app_queue.c, funcs/func_periodic_hook.c, apps/app_mixmonitor.c, include/asterisk/beep.h (added), res/res_monitor.c: (mix)monitor: Add options to enable a periodic beep Add an option to enable a periodic beep to be played into a call if it is being recorded. If enabled, it uses the PERIODIC_HOOK() function internally to play the 'beep' prompt into the call at a specified interval. This option is provided for both Monitor() and MixMonitor(). Review: https://reviewboard.asterisk.org/r/3424/ 2014-04-15 18:30 +0000 [r412384-412414] Richard Mudgett * main/stasis_channels.c, main/features_config.c, res/res_parking.c, main/rtp_engine.c, /: Eliminate some more unnecessary RAII_VAR() uses. RAII_VAR() is not a hammer appropriate to pound all nails. ........ Merged revisions 412413 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_playback.c, /, res/stasis/app.c, res/res_fax.c, res/res_pjsip/security_events.c, res/parking/parking_applications.c, channels/chan_oss.c, main/stasis_bridges.c, res/res_pjsip_session.c, res/stasis_recording/stored.c, main/cdr.c, res/res_parking.c, channels/chan_skinny.c, res/res_pjsip/location.c, res/res_stasis_recording.c, main/stasis_channels.c, res/ari/resource_channels.c, res/parking/parking_manager.c, res/ari/resource_recordings.c, res/res_pjsip_refer.c, res/res_ari.c, main/pbx.c: Remove unused RAII_VAR() declarations. * Remove unused RAII_VAR() declarations. The compiler cannot catch these because the cleanup function "references" the unused variable. Some actually allocated and released resources that were never used. * Fixed some whitespace issues in stasis_bridges.c. ........ Merged revisions 412399 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/rtp_engine.h, main/rtp_engine.c, /, channels/chan_sip.c: chan_sip.c: Fix channel staging assertion failure. The failing assertion ensures that the final snapshot gets generated so CDR records can get finalized. The only place where a channel staging snapshot flag could be left set is in chan_sip.c:handle_request_bye(). The function could return before clearing the flag because the channel could dissappear while the function had to have the channel unlocked. * Fixed handle_request_bye() channel snapshot staging coverage area to not have a return in the middle of it and be unable to clear the staging flag. * Pushed the channel snapshot staging coverage area into ast_rtp_instance_set_stats_vars() to ensure that the staging is not interrutped. * Made callers of ast_rtp_instance_set_stats_vars() not call it with any channels or channel driver private locks held to eliminate the deadlock potential. The callers must hold references to the passed in channel and rtp objects. * Eliminated sip_hangup() trying to get the bridge peer. It is futile at this point because the channel could never be in a bridge. Review: https://reviewboard.asterisk.org/r/3431/ ........ Merged revisions 412385 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: chan_sip.c: Moved some sip_pvt unrefs after their last use. * Moved sip_pvt unref in ast_hangup() and handle_request_do() to the end of the function. The unref needs to happen after the last use of the pointer. ........ Merged revisions 412348 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412383 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-15 16:13 +0000 [r412331] Jonathan Rose * configs/sip.conf.sample, /, channels/chan_sip.c: Reverting r411189 so that it can be put up for public review --- r411189 | jrose | 2014-03-26 10:50:48 -0500 (Wed, 26 Mar 2014) | 12 lines chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325) Prior to this patch, the P-Asserted-Identity header would include anonymous caller id information which seems to go against the point of the P-Asserted-Identity header. Now the real caller ID information will be included in this header. Also, no privacy header would be included. This patch adds 'Privacy: id' to outgoing SIP messages that include the P-Asserted-Identity header. (closes issue AST-1301) --- ........ Merged revisions 412328 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412329 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412330 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-14 15:54 +0000 [r412307] Corey Farrell * main/autoservice.c, /: autoservice: fix reference leak of logger callid. autoservice acquires a local reference to the logger callid of each channel in a loop. This local reference was not released, causing the callid of every channel in autoservice to leak. This change moves the callid unref inside the loop. ASTERISK-23616 #close Reported by: ibercom ........ Merged revisions 412305 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412306 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-12 02:27 +0000 [r412292] Matthew Jordan * channels/sip/reqresp_parser.c, CHANGES, channels/chan_sip.c: chan_sip: Support RFC-3966 TEL URIs in inbound INVITE requests This patch adds support for handling TEL URIs in inbound INVITE requests. This includes the Request URI and the From URI. The number specified in the Request URI will be the destination of the inbound channel in the dialplan. The phone-context specified in the Request URI will be stored in the TELPHONECONTEXT channel variable. Review: https://reviewboard.asterisk.org/r/3349 ASTERISK-17179 #close Reported by: Geert Van Pamel Tested by: Geert Van Pamel patches: asterisk-12.0.0-chan_sip-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140) asterisk-12.0.0-reqresp_parser-RFC3966_patch.txt uploaded by Geert Van Pamel (License 6140) 2014-04-12 01:35 +0000 [r412279-412280] Russell Bryant * funcs/func_periodic_hook.c: func_periodic_hook: move module ref The previous code left one error path where the module would be unref'd twice instead of once. It was done once in the error handling block, and again inside of datastore destruction. Now the module ref is only released in the datastore destructor and only acquired when the datastore has been successfully allocated. * funcs/func_periodic_hook.c: func_periodic_hook: add module ref counting This module lacked necessary module ref count incrementing and decrementing when used. This patch adds it. There's already a datastore used, so doing the ref counting along with the lifetime of the datastore provides a convenient place to do it. 2014-04-11 21:43 +0000 [r412213-412228] Richard Mudgett * apps/app_stack.c, /: app_stack: Add missing unlock in off-nominal path of STACK_PEEK function. ASTERISK-23620 #close Reported by: Bradley Watkins Patches: ASTERISK-23620_unlock_oldlist.patch (license #5021) patch uploaded by Bradley Watkins ........ Merged revisions 412225 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412226 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412227 from http://svn.asterisk.org/svn/asterisk/branches/12 * utils/Makefile, utils: utils dir: Remove no longer needed traces of refcounter except in the clean make target. * Removed no longer needed files from the svn:ignore property to make them visible. 2014-04-11 12:43 +0000 [r412194] Kinsey Moore * /, main/bridge.c, main/bridge_basic.c, include/asterisk/stasis_bridges.h, tests/test_cel.c, apps/app_confbridge.c, res/ari/resource_bridges.c: bridging: Ensure locking during snapshot creation While the vast majority of bridge snapshot creation is locked properly, there are currently some instances that are not. This adds the missing locking to ensure bridge state is not malleable during snapshot creation. (closes issue ASTERISK-22904) Review: https://reviewboard.asterisk.org/r/3415/ Reported by: Matt Jordan ........ Merged revisions 412193 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-11 08:28 +0000 [r412168-412180] Olle Johansson * main/audiohook.c: Formatting: Remove invisible characters * main/audiohook.c: Formatting only. 2014-04-11 02:59 +0000 [r412154] Matthew Jordan * main/astobj2.c, contrib/scripts/refcounter.py (added), main/asterisk.c, utils/refcounter.c (removed), build_tools/cflags.xml, utils/utils.xml, /, channels/chan_sip.c, channels/sip/security_events.c, include/asterisk/astobj2.h, UPGRADE.txt: main/astobj2: Make REF_DEBUG a menuselect item; improve REF_DEBUG output This patch does the following: (1) It makes REF_DEBUG a meneselect item. Enabling REF_DEBUG now enables REF_DEBUG globally throughout Asterisk. (2) The ref debug log file is now created in the AST_LOG_DIR directory. Every run will now blow away the previous run (as large ref files sometimes caused issues). We now also no longer open/close the file on each write, instead relying on fflush to make sure data gets written to the file (in case the ao2 call being performed is about to cause a crash) (3) It goes with a comma delineated format for the ref debug file. This makes parsing much easier. This also now includes the thread ID of the thread that caused ref change. (4) A new python script instead for refcounting has been added in the contrib/scripts folder. (5) The old refcounter implementation in utils/ has been removed. Review: https://reviewboard.asterisk.org/r/3377/ ........ Merged revisions 412114 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 412115 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 412153 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-11 01:12 +0000 [r412102] Russell Bryant * res/res_monitor.c: monitor: use app options parsing helper code This app is pretty ancient, so it was never converted to use the option parsing helper code. I'd like to add an option to this app that takes an argument, and that's a pain to do when not using this helper, so start by doing this conversion. Review: https://reviewboard.asterisk.org/r/3429/ 2014-04-10 21:28 +0000 [r412089] Matthew Jordan * /, res/res_hep_pjsip.c: res_hep_pjsip: Use the channel name instead of the call ID when it is available During discussions with Alexandr Dubovikov at Kamailio World, it became apparent that while the SIP call ID is a useful identifier prior to an Asterisk channel being created, it is far more preferable to use the channel name (or some channel based identifier) when the channel is available. Homer is smart enough to tie the various messages together. This patch opts to use the channel name when it is available, falling back to the call ID otherwise. ........ Merged revisions 412088 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-10 21:10 +0000 [r412075] Kevin Harwell * /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Set the body generation result to 0 for a valid path The result of the "ast_sip_pubsub_generate_body_content" was not set/initialized. Consequently, the nominal path potentially returned an invalid value, thus not sending mwi notifications. ........ Merged revisions 412074 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-09 21:43 +0000 [r412050] Mark Michelson * /, CHANGES, apps/app_mixmonitor.c: Add a Command header to the AMI Mixmonitor action. This fixes a parsing error that occurred during the processing of the AMI action. The error did not result in MixMonitor itself misbehaving, but it could result in the AMI response not giving correct information back. The new header allows for one to specify a post-process command to run when recording finishes. Previously, in order to do this, the post-process command would have to be placed at the end of the Options: header. Patches: mixmonitor_command_2.patch by jhardin (License #6512) ........ Merged revisions 412048 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-09 18:17 +0000 [r412035] Kinsey Moore * /, res/res_stasis_answer.c: res_stasis_answer: Add missing newlines ........ Merged revisions 412034 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-08 21:25 +0000 [r411946-411990] Richard Mudgett * /, main/asterisk.c: Internal timing: Add notice that the -I and internal_timing option are no longer needed. Add notice messages during execution that the -I command line option and the astersik.conf internal_timing option are no longer needed. The internal timing functionality is now always enabled if there is a timing module loaded. NOTE: Since the command line options and the asterisk.conf config file are processed before the logging system is initialized, the messages are output to stderr. Change requested as a result of asterisk-dev list comments about the commit for ASTERISK-22846 that removed the -I and internal_timing options. Review: https://reviewboard.asterisk.org/r/3423/ ........ Merged revisions 411964 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411974 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411985 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/config.c, /: config: Fix CB_ADD_LEN() to work as originally intended. Fix a long standing bug in CB_ADD_LEN() behaving like CB_ADD(). ASTERISK-23546 #close Reported by: Walter Doekes ........ Merged revisions 411960 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411961 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411962 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/confbridge/conf_config_parser.c, /: app_confbridge: Fix confbridge.conf dsp_talking_threshold option setting wrong parameter. Fixed copy pasta error. ASTERISK-23545 #close Reported by: John Knott ........ Merged revisions 411944 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411945 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-08 14:49 +0000 [r411928] Joshua Colp * /, res/res_pjsip.c: res_pjsip: Ignore explicit transport configuration if a WebSocket transport is specified. This change makes it so if a transport is configured on an endpoint that is a WebSocket type the option will be ignored. In practice this is fine because the WebSocket transport can not create outgoing connections, it can only reuse existing ones. By ignoring the option the existing PJSIP logic for using the existing connection will be invoked and stuff will proceed. (closes issue ASTERISK-23584) Reported by: Rusty Newton ........ Merged revisions 411927 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-08 00:26 +0000 [r411897] Russell Bryant * funcs/func_periodic_hook.c: func_periodic_hook: List more modules as dependencies This module makes use of some existing Asterisk components. app_chanspy was already listed as a dependency. There are a few function modules used, as well, so list them. 2014-04-07 20:41 +0000 [r411884] Kinsey Moore * /, res/res_pjsip_pubsub.c: PJSIP: Ensure test event has new state The change that fixed the pubsub test event's use of a dangling pointer also changed when it was processed relative to the pjsip subscription state change processing. This change corrects the order of events while holding a reference to the pointer that was previously dangling. ........ Merged revisions 411883 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-07 16:15 +0000 [r411870] Jonathan Rose * main/manager_channels.c, /: AGI/Manager: Prevent multiple NewExten events during AGI application changes AGI applications would trigger NewExten events every time the state of the AGI application changed. This has historically not been the behavior and this behavior was introduced with a CDR patch. This patch corrects that. (closes issue ASTERISK-23390) Reported by: Benjamin Keith Ford Review: https://reviewboard.asterisk.org/r/3406/ ........ Merged revisions 411868 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-07 14:57 +0000 [r411812] Walter Doekes * apps/app_queue.c, /: app_queue: Re-add HoldTime to QueueCallerAbandon event (simple typo during ast12 refactor). Reported by: Ibrahim22 (on IRC) Tested by: Ibrahim22 ........ Merged revisions 411811 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-07 14:29 +0000 [r411791-411806] Kinsey Moore * /, res/res_stasis.c: Stasis: Fix Stasis() bridge refcount issue The Stasis() dialplan application monitors what bridge a channel is in and so necessarily holds on to a bridge pointer. This change ensures that it also holds on to a reference for that bridge to prevent the bridge pointer from becoming a dangling pointer. ........ Merged revisions 411804 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_pubsub.c, /: PJSIP: Fix crash introduced in r411671 The test event introduced in revision 411671 uses a dangling pointer to access information about pubsub state changes. This moves the event to within the lifetime of the pointer. ........ Merged revisions 411790 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-05 13:06 +0000 [r411768] Russell Bryant * CHANGES, funcs/func_periodic_hook.c (added): func_periodic_hook: New function for periodic hooks. This commit introduces a new dialplan function, PERIODIC_HOOK(). It allows you run to a dialplan hook on a channel periodically. The original use case that inspired this was the ability to play a beep periodically into a call being recorded. The implementation is much more generic though and could be used for many other things. The implementation makes heavy use of existing Asterisk components. It uses a combination of Local channels and ChanSpy() to run some custom dialplan and inject any audio it generates into an active call. The other important bit of the implementation is how it figures out when to trigger the beep playback. This implementation uses the audiohook API, even though it's not actually touching the audio in any way. It's a convenient way to get a callback and check if it's time to kick off another beep. It would be nice if this was timer event based instead of polling based, but unfortunately I don't see a way to do it that won't interfere with other things. Review: https://reviewboard.asterisk.org/r/3362/ 2014-04-04 19:19 +0000 [r411702-411724] Richard Mudgett * include/asterisk/options.h, main/asterisk.c, main/channel.c, /, channels/chan_sip.c, configs/asterisk.conf.sample, UPGRADE.txt, include/asterisk/channel.h, utils/extconf.c: internal_timing: Remove the option and always make it enabled if a timing module is loaded. The masquerade supertest frequently fails because either the local channel chain doesn't completely optimize out or the DTMF handshake doesn't completely get accross. Local channel optimization requires frames flowing to trigger when optimization can happen. When optimization happens the media frame that triggered the optimization is dropped. Sending DTMF requires frames to flow in the other direction for timing purposes while sending nothing. If internal timing is not enabled when MOH is playing, Asterisk switches to received timing when an audio frame is received. With optimization dropping media frames and MOH not sending frames unless it receives frames, occasionaly there are no more frames being passed and the test fails. * The asterisk command line -I option and the asterisk.conf internal_timing option are removed. Asterisk now always uses internal timing when needed if any timing module is loaded. The issue ASTERISK-14861 did this quite awhile ago in v1.4 but effectively is broken if other internal timing modules besides DAHDI are used. The ast_read_generator_actions() now only does received timing if it has no choice for frame generators like MOH, silence, and playback streaming. * Cleaned up some code dealing with frame generators in ast_deactivate_generator(), generator_write_format_change(), ast_activate_generator(), and ast_channel_stop_silence_generator(). * Removed ast_internal_timing_enabled(), AST_OPT_FLAG_INTERNAL_TIMING, and ast_opt_internal_timing. ASTERISK-22846 #close Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3414/ ........ Merged revisions 411715 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411716 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411717 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/utils.c, res/res_musiconhold.c, main/channel.c, main/stasis_cache.c, /: Add some asserts that were handy when looking for a stasis cache problem. * Assert if a channel is destroyed but has the snapshot staging flag set. In this case the final channel destruction snapshot would never get taken. * Assert if what we just got out of the stasis cache is not what we were looking for. This assert would have saved several days searching for a bug and a lot of my hair. * Assert if the music on hold message posts could not find the associated channel. A crash will happen later when manager tries to send the MOH AMI message. This assert catches the problem when the stasis message is posted instead of by the thread processing the defective message. * Always generate a backtrace when an ast_assert() fails. Review: https://reviewboard.asterisk.org/r/3411/ ........ Merged revisions 411701 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-04 15:13 +0000 [r411688] Matthew Jordan * /, main/http.c: http: Fix spurious ERROR message in responses with no content When a response has a content length of 0, fwrite would be called to write a buffer with no data in it. This resulted in the following classic error message: [Apr 3 11:49:17] ERROR[26421] http.c: fwrite() failed: Success This patch makes it so that we only attempt to write out the content if the calculated content_length is non-zero. ........ Merged revisions 411687 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-03 12:06 +0000 [r411671] Kinsey Moore * /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Add test event for state change This adds a test event when subscription state changes so that integration tests may trigger new actions at the appropriate times. Review: https://reviewboard.asterisk.org/r/3383/ ........ Merged revisions 411670 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-03 11:47 +0000 [r411669] Matthew Jordan * res/res_hep.c, /: res_hep: Fix crash when hep.conf not available Parts of res_hep properly checked for a valid configuration object before attempting to access the configuration. A check, however, was missed when a packet is sent. This patch fixes the crash caused by not checking if the configuration object is valid. ........ Merged revisions 411668 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-02 18:57 +0000 [r411656] Mark Michelson * main/sorcery.c, /, res/res_mwi_external.c, res/res_pjsip/config_system.c, configs/sorcery.conf.sample, main/bucket.c, include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c, tests/test_sorcery_astdb.c, tests/test_sorcery.c, tests/test_sorcery_realtime.c: Prevent duplicate sorcery wizards from being applied to sorcery object types. This commit contains several changes to sorcery: 1) Application of sorcery configuration based on module name is automatically performed when sorcery is opened for a module. 2) Sorcery will not attempt to apply the same wizard to an object type more than once. 3) Sorcery gives more exact results when attempting to apply a wizard, whether as the default or based on configuration. Sorcery unit tests still pass for me after making these changes. Review: https://reviewboard.asterisk.org/r/3326 ........ Merged revisions 411159 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-01 22:42 +0000 [r411637-411639] Richard Mudgett * res/parking/parking_bridge.c, /: res_parking: Minor tweaks. * Use ast_bridge_channel_lock()/ast_bridge_channel_unlock() instead of ao2_lock()/ao2_unlock() for struct ast_bridge_channel variables. * Use ast_copy_string() instead of inlining it. * Remove an already done TODO comment. * Some whitespace tweaks. ........ Merged revisions 411638 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_channels.c, /: stasis_channels.c: Eliminate another overuse of RAII_VAR(). ........ Merged revisions 411636 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-04-01 16:52 +0000 [r411587] Joshua Colp * /, apps/app_queue.c: app_queue: Fix a bug where realtime members would be deleted during reload causing waiting callers to get ejected. This patch causes realtime queue members to remain in queues during the reload process. Previously these members would be removed causing any waiting callers to be ejected from the queue with a reason of "EXITEMPTY". ASTERISK-23547 #close ASTERISK-23547 #comment Patch app_queue_fix_realtime_reload_1.8_trunk.patch submitted by Italo Rossi (license 6409) Review: https://reviewboard.asterisk.org/r/3404/ ........ Merged revisions 411584 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411585 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411586 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-28 18:32 +0000 [r411556] Matthew Jordan * include/asterisk/res_hep.h (added), res/res_hep_pjsip.c (added), res/res_hep.exports.in (added), configs/hep.conf.sample (added), CHANGES, res/res_hep.c (added), /: res_hep/res_hep_pjsip: Add a HEPv3 capture agent module and a logger for PJSIP This patch adds the following: (1) A new module, res_hep, which implements a generic packet capture agent for the Homer Encapsulation Protocol (HEP) version 3. Note that this code is based on a patch provided by Alexandr Dubovikov; I basically just wrapped it up, added configuration via the configuration framework, and threw in a taskprocessor. (2) A new module, res_hep_pjsip, which forwards all SIP message traffic that passes through the res_pjsip stack over to res_hep for encapsulation and transmission to a HEPv3 capture server. Much thanks to Alexandr for his Asterisk patch for this code and for a *lot* of patience waiting for me to port it to 12/trunk. Due to some dithering on my part, this has taken the better part of a year to port forward (I still blame CDRs for the delay). ASTERISK-23557 #close Review: https://reviewboard.asterisk.org/r/3207/ ........ Merged revisions 411534 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-28 18:00 +0000 [r411533] Alexandr Anikin * addons/ooh323c/src/ooh323.c, addons/ooh323c/src/ooGkClient.c, addons/chan_ooh323.c, /, addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooCmdChannel.c, addons/ooh323c/src/ooq931.c: process stack command even if gatekeeper client isn't register don't destroy gatekeeper client if it is not started don't destroy gatekeeper client in some sort of gatekeeper errors signal rtp create condition when call cleared before rtp structure created (closes issue ASTERISK-23460) Reported by: Dmitry Melekhov Patches: ASTERISK-23460-2.patch Tested by: Dmitry Melekhov ........ Merged revisions 411531 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411532 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-28 17:41 +0000 [r411515-411530] Matthew Jordan * rest-api/api-docs/channels.json, rest-api/api-docs/recordings.json, rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json, /, rest-api/api-docs/playbacks.json, UPGRADE.txt, 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/deviceStates.json, rest-api/api-docs/mailboxes.json, rest-api/api-docs/asterisk.json, rest-api/api-docs/applications.json: Update API versions and UPGRADE/CHANGES for 12.2.0 This patch does the following: * It updates the AMI version to 2.2.0 to indicate backwards compatible changes have been made since the last release * It updates the ARI version to 1.2.0 to indicate backwards compatible changes have been made since the last release * It updates the UPGRADE/CHANGES files with changes that were not mentioned ........ Merged revisions 411529 from http://svn.asterisk.org/svn/asterisk/branches/12 * UPGRADE.txt, res/res_config_odbc.c: res_config_odbc: Fix for nullable integer columns and keyfield existence check in update_odbc. This patch fixes setting nullable integer columns to NULL instead of an empty string, which fails for PostgreSQL, for example. The current code is supposed to do so, but the check is broken. The patch also allows the first column in the list to be a nullable integer. Also, the check for existence of a mandatory column checked for the first column in the list instead of the key field lookup column. This patch fixes that issue as well. Finally, the compatibility option allow_empty_string_in_nontext, which was added to previous revisions to allow for some database backends with certain schemas to function, has been removed. Review: https://reviewboard.asterisk.org/r/3335 ASTERISK-23459 #close ASTERISK-23351 #close (closes issue ASTERISK-23459) Reported by: zvision patches: res_config_odbc.diff uploaded by zvision (License 5755) 2014-03-28 16:18 +0000 [r411469] Scott Griepentrog * main/tcptls.c, main/manager.c, /, main/http.c: http: response body often missing after specific request This patch works around a problem with the HTTP body being dropped from the response to a specific client and under specific circumstances: a) Client request comes from node.js user agent "Shred" via use of swagger-client library. b) Asterisk and Client are *not* on the same host or TCP/IP stack In testing this problem, it has been determined that the write of the HTTP body is lost, even if the data is written using low level write function. The only solution found is to instruct the TCP stack with the shutdown function to flush the last write and finish the transmission. See review for more details. ASTERISK-23548 #close (closes issue ASTERISK-23548) Reported by: Sam Galarneau Review: https://reviewboard.asterisk.org/r/3402/ ........ Merged revisions 411462 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411463 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411465 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-28 15:48 +0000 [r411375-411460] Matthew Jordan * UPGRADE.txt, /: UPGRADE: Note IAX2 compatibility issue between 1.4 and 1.8+ systems. ........ Merged revisions 411457 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411458 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411459 from http://svn.asterisk.org/svn/asterisk/branches/12 * contrib/realtime/mysql/voicemail_messages.sql (removed), contrib/realtime/postgresql/realtime.sql (removed), contrib/realtime/mysql/voicemail_data.sql (removed), contrib/realtime/mysql/musiconhold.sql (removed), contrib/realtime/mysql/queue_log.sql (removed), contrib/realtime/mysql/voicemail.sql (removed), contrib/realtime/mysql/sippeers.sql (removed), /, contrib/realtime/mysql/iaxfriends.sql (removed), contrib/realtime/mysql/meetme.sql (removed): contrib/realtime: Remove empty SQL script files Since the relatime scripts are now managed by Alembic, the previous realtime scripts were previously removed. However, the removal process messed up, as the files were still in the repository. The contents were just empty. This removes the files from the tree. ........ Merged revisions 411442 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/sip/include/sip.h: chan_sip: Add MESSAGE request to allowed methods The allowed methods advertised by chan_sip did not previously note the MESSAGE request. Even in Asterisk 1.8, we do accept in-dialog MESSAGE requests; we should advertise that we support MESSAGE requests. ASTERISK-23504 #close ASTERISK-23504 #comment Reported by: Martin Kontsek ASTERISK-23504 #comment Patch sip.h_patch.diff uploaded by Martin Kontsek (license 6587) Review: https://reviewboard.asterisk.org/r/3396/ ........ Merged revisions 411372 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411373 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411374 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-27 19:21 +0000 [r411312-411328] Corey Farrell * funcs/func_global.c, apps/app_speech_utils.c, apps/confbridge/conf_config_parser.c, funcs/func_callcompletion.c, funcs/func_frame_trace.c, funcs/func_callerid.c, main/message.c, /, res/res_mutestream.c, channels/pjsip/dialplan_functions.c, res/res_pjsip_header_funcs.c, funcs/func_pitchshift.c, funcs/func_groupcount.c, funcs/func_volume.c, funcs/func_odbc.c, funcs/func_channel.c, funcs/func_cdr.c, funcs/func_blacklist.c, apps/app_stack.c, apps/app_voicemail.c, res/res_calendar.c, apps/app_jack.c, funcs/func_dialplan.c, funcs/func_speex.c, channels/chan_sip.c, funcs/func_math.c, funcs/func_strings.c, funcs/func_jitterbuffer.c, res/res_xmpp.c, channels/chan_iax2.c, main/features_config.c, res/res_jabber.c: Fix dialplan function NULL channel safety issues (closes issue ASTERISK-23391) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3386/ ........ Merged revisions 411313 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411314 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411315 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/format.c, include/asterisk.h, /: main/formats: Fix crash in ast_format_cmp during non-clean shutdown. * Update asterisk.h to reflect availability of ast_register_cleanup in 11.9. * Use ast_register_cleanup for format_attr_shutdown. (closes issue ASTERISK-23103) Reported by: JoshE ........ Merged revisions 411310 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411311 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-27 14:21 +0000 [r411296] Mark Michelson * main/sorcery.c, /: Give sorcery instances a reference to their wizards. On graceful shutdown, sorcery wizards are all killed off, but it is possible for sorcery instances to still have dangling pointers after this, possibly causing a crash. Giving the sorcery instances a reference to their wizards ensures that the wizard reference will remain valid for the lifetime of the sorcery instance. Review: https://reviewboard.asterisk.org/r/3401 ........ Merged revisions 411295 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-26 22:45 +0000 [r411246] Joshua Colp * /, main/say.c: say: Fix a bug where SayNumber in Polish tries to play incorrect sound. This change fixes a bug where calling SayNumber with a number divisible by 100 using the Polish language would cause the code to attempt to play a sound file with an empty name. (closes issue ASTERISK-23509) Reported by: zvision Review: https://reviewboard.asterisk.org/r/3378/ ........ Merged revisions 411243 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411244 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411245 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-26 16:15 +0000 [r411194] Jonathan Rose * /, channels/chan_sip.c, configs/sip.conf.sample: chan_sip: Send real CallerID information with P-Assserted-Identity (RFC-3325) Prior too this patch, the P-Asserted-Identity header would include anonymous caller id information which seems to go against the point of the P-Asserted-Identity header. Now the real caller ID information will be included in this header. Also, no privacy header would be included. This patch adds 'Privacy: id' to outgoing SIP messages that include the P-Asserted-Identity header. (closes issue AST-1301) ........ Merged revisions 411189 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411190 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411193 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-26 16:05 +0000 [r411192] Richard Mudgett * /, contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py: Fix 'alembic branches' merge conflict as described by the web page. ........ Merged revisions 411191 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 18:44 +0000 [r411174] Sean Bright * /, res/ari/config.c: ARI: Don't complain about missing ARI users when we aren't enabled Currently, if ARI is not enabled it will still complain that there are no configured users. This patch checks to see if ARI is enabled before logging and error or iterating the container to validate the users. Review: https://reviewboard.asterisk.org/r/3391/ ........ Merged revisions 411173 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 17:40 +0000 [r411158] Mark Michelson * /, res/res_pjsip/pjsip_configuration.c, UPGRADE.txt, res/res_pjsip_messaging.c, res/res_pjsip.c, include/asterisk/res_pjsip.h: Add a "message_context" option for PJSIP endpoints. ........ Merged revisions 411157 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 16:57 +0000 [r411142] Richard Mudgett * res/res_pjsip/pjsip_options.c, res/res_pjsip.c, include/asterisk/res_pjsip.h, /: res_pjsip: Fix contact authenticate_qualify endpoint lookup when qualifing a contact. * Fixed bad use of ao2_find() in on_endpoint(). * Replaced use of find_endpoints() with find_an_endpoint() since only the first found endpoint is ever needed. * Fixed qualify_contact_cb() to update the contact with the aor authenticate_qualify setting. Otherwise, permanent contacts in the aor type sections would have a config line order dependancy. * Fixed off nominal path contact ref leak in qualify_contact(). The comment saying the unref is not needed was wrong. * Fixed off nominal path use of the endpoint parameter if it is NULL in send_out_of_dialog_request(). * Added missing off nominal path unref of pjsip tdata in send_out_of_dialog_request(). * Fixed off nominal path failing to call the callback in send_request_cb() when the request is challenged for authentication. * Eliminated silly RAII_VAR() use in qualify_contact_cb(). * Updated ast_sip_send_request() doxygen to better reflect reality. (closes issue ASTERISK-23254) Reported by: rmudgett Review: https://reviewboard.asterisk.org/r/3381/ ........ Merged revisions 411141 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 16:06 +0000 [r411092] Kinsey Moore * /, channels/chan_sip.c: chan_sip: Fix incorrect use of timers If update_provisional_keepalive() is called while send_provisional_keepalive_full() is waiting on the PVT lock, then pvt->provisional_keepalive_sched_id will be changed to a new sched_id value by update_provisional_keepalive(), but that new sched_id then may be overwritten with -1 by send_provisional_keepalive_full(), killing the pvt's reference to a schedule and "leaking" the reference. (closes issue ASTERISK-22079) Review: https://reviewboard.asterisk.org/r/3368/ Reported by: Jamuel Starkey, Matteo, Leif Madsen, Steve Davies Patches: provisional_keepalive_fix.diff uploaded by Steve Davies (license 5012) ........ Merged revisions 411088 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411089 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411091 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 15:56 +0000 [r411090] Jonathan Rose * /, res/res_stasis.c: ARI: Resolve a subscription leak against implicit bridge subscriptions When a channel in a stasis application is joined to a bridge, a subscription for that bridge is created implicitly for the stasis application serving the channel. Prior to this patch, subsequent removals of the channel from the bridge would leave the subscription open. Review: https://reviewboard.asterisk.org/r/3380/ ........ Merged revisions 411086 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-25 15:47 +0000 [r411073-411087] Richard Mudgett * utils/conf2ael.c, main/lock.c, utils/ael_main.c: Revert -r411073. It didn't help and blew up the system. * utils/ael_main.c, utils/conf2ael.c, main/lock.c: locking: Add temporary sanity checks. Add some temporary sanity checks to hunt for locking problems with the masquerade supertest. 2014-03-24 21:39 +0000 [r411024] Joshua Colp * /, channels/chan_sip.c: chan_sip: Always use fromdomain if set for domain, even if callerid is set to restricted. (closes issue ASTERISK-20841) Reported by: Kelly Goedert ........ Merged revisions 411021 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 411022 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 411023 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-21 16:04 +0000 [r410996] Richard Mudgett * /, res/res_pjsip_registrar.c: res_pjsip_registrar.c: Miscellaneous cleanup in rx_task(). * Fix variable shadowing of 'updated' by renaming it to 'contact_update'. * Checked 'contact_update' for ast_sorcery_copy() failure. * Removed silly use of RAII_VAR() for 'contact_update'. ........ Merged revisions 410995 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-21 15:50 +0000 [r410981-410994] Sean Bright * res/ael/ael.flex, utils/Makefile, pbx/pbx_ael.c, res/ael/ael_lex.c: Make the AEL load process less chatty. Switched a bunch of LOG_NOTICEs to ast_debug. This time without breaking the build. * pbx/pbx_ael.c, res/ael/ael_lex.c, res/ael/ael.flex: Revert r410981. aelparse blew up. * main/config.c: Remove a LOG_NOTICE from ast_config_engine_register. There is enough indication from the CLI that we are loading a realtime engine as it is. * pbx/pbx_ael.c, res/ael/ael_lex.c, res/ael/ael.flex: Make the AEL load process less chatty. Switched a bunch of LOG_NOTICEs to ast_debug. 2014-03-20 23:02 +0000 [r410967] Jonathan Rose * apps/app_confbridge.c, /: app_confbridge: Fix bug - users with startmuted set don't start muted (closes issue ASTERISK-23461) Reported by: Chico Manobela Review: https://reviewboard.asterisk.org/r/3373/ ........ Merged revisions 410965 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410966 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-20 16:35 +0000 [r410950] Richard Mudgett * include/asterisk/rtp_engine.h, main/dial.c, main/manager.c, /, main/channel_internal_api.c, main/core_unreal.c, include/asterisk/channel.h, res/ari/resource_channels.c, res/res_stasis_snoop.c: assigned-uniqueids: Miscellaneous cleanup and fixes. * Fix memory leak in ast_unreal_new_channels(). Made it generate the ;2 uniqueid on a stack variable instead of mallocing it. * Made send error response to ARI and AMI requests instead of just logging excessive uniqueid length and allowing truncation. action_originate() and ari_channels_handle_originate_with_id(). * Fixed minor truncating uniqueid hole when generating the ;2 uniqueid string length. Created public and internal lengths of uniqueid. The internal length can handle a max public uniqueid plus an appended ;2. * free() and ast_free() are NULL tolerant so they don't need a NULL test before calling. * Made use better struct initialization format instead of the position dependent initialization format. Also anything not explicitly initialized in the struct is initialized to zero by the compiler. * Made ast_channel_internal_set_fake_ids() use the safer ast_copy_string() instead of strncpy(). Review: https://reviewboard.asterisk.org/r/3371/ ........ Merged revisions 410949 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-19 17:27 +0000 [r410934] Mark Michelson * /, res/res_pjsip_endpoint_identifier_ip.c: PJSIP: Allow for identify sections to be specified in sorcery.conf. "identify" is a special type of configuration object in PJSIP because unlike the other objects, it is not provided by the base res_pjsip module. Instead, it is provided by the res_pjsip_endpoint_identifier_ip module. If using the default sorcery wizard (config,criteria=type=identify) then things work because the module that applies the default wizard is the correct module. However, if attempting to use sorcery.conf to apply an alternate wizard, it was not possible. If you attempted to specify the identify object type in the res_pjsip section, then the object could not be registered since the object was undocumented for the res_pjsip module. There was no alternate configuration section defined for it, so you were out of luck if you wanted to override the default wizard. With this change, the identify section will properly have a sorcery.conf-based wizard applied when the identify definition is within the res_pjsip_endpoint_identifier_ip section. ........ Merged revisions 410933 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-19 14:25 +0000 [r410905-410919] Joshua Colp * res/res_stasis.c, /: res_stasis: Fix a bug where the default bridge type was not set. ........ Merged revisions 410918 from http://svn.asterisk.org/svn/asterisk/branches/12 * CHANGES, res/res_stasis.c, rest-api/api-docs/bridges.json, /, res/ari/resource_bridges.h: res_stasis: Extend bridge type to be a comma separated list of bridge attributes. This change turns the bridge type field into a comma separated list of attributes. These attributes include: mixing, holding, dtmf_events, and proxy_media. By setting the various attributes a user can control the type of bridge created with the behavior they need for their application. (closes issue ASTERISK-23437) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3359/ ........ Merged revisions 410904 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-19 02:33 +0000 [r410891] Matthew Jordan * res/res_ari.c, /: res_ari: Fix documentation schema error ........ Merged revisions 410890 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 23:32 +0000 [r410877] Rusty Newton * res/res_ari.c, /: res_ari: Add notes about Asterisk HTTP server to the "enabled" config option for the res_ari general section Added note and see-also reminding user to enable the HTTP server. (closes issue ASTERISK-22499) Reported by: Rusty Newton ........ Merged revisions 410876 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 15:45 +0000 [r410863] Scott Griepentrog * /, main/http.c: ARI: allow json content type with zero length body When a request was received with a Content-type of json, the body was sent for json parsing - even if it was zero length. This resulted in ARI requests failing that were valid, such as a channel DELETE with no parameters. The code has now been changed to skip json parsing with zero content length. (closes issue SWP-6748) Reported by: Samuel Galarneau Review: https://reviewboard.asterisk.org/r/3360/ ........ Merged revisions 410858 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 15:28 +0000 [r410862] Matthew Jordan * main/cdr.c, /: cdr: Add asserts for when we don't know about a CDR for a channel In the CDR core, every channel should either be filtered out (due to being an 'internal' channel used as an implementation detail, such as playing media back into a bridge) or it should get a CDR. Even if that CDR ends up being discarded, we still give the channel a CDR in case we end up needing it. If we hit a situation where a channel does not have a CDR, we should blow up in -dev-mode. Asserts are appropriate for that. This patch adds those asserts, as they would have quickly caught the error fixed by r410814. ........ Merged revisions 410861 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 12:45 +0000 [r410845] Joshua Colp * /, res/res_pjsip/config_system.c: res_pjsip: Fix memory leak of nameservers in off-nominal resolver creation failure. Thanks Walter Doekes! ........ Merged revisions 410844 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 11:52 +0000 [r410831] Sean Bright * res/res_fax_spandsp.c, /: res_fax_spandsp: Use g711_free() when available. Per Johann Steinwendtner on the asterisk-dev mailing list: http://lists.digium.com/pipermail/asterisk-dev/2014-March/066102.html g711_free() was introduced in spandsp 0.0.6pre4 and g711_release() became a noop. I opted not to remove the call to g711_release() since it is harmless and to call g711_free() if we have a sufficiently recent version of spandsp. (issue ASTERISK-20149) Reported by: Alexandr Gordeev ........ Merged revisions 410829 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410830 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-18 02:09 +0000 [r410814] Richard Mudgett * main/stasis_cache.c, /: stasis_cache: Use the right variable in the cache entry ao2 cmp function. ........ Merged revisions 410813 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-17 22:54 +0000 [r410794-410796] Joshua Colp * include/asterisk/dns.h, CHANGES, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c, main/dns.c, /, res/res_pjsip/config_system.c: res_pjsip: Enable PJSIP DNS client support. This change enables DNS client support within PJSIP. System nameservers are automatically discovered using res_init or res_ninit. If this fails then PJSIP will resort to using gethostbyname for resolution. By enabling this support we gain SRV support, failover, and weight support. (closes issue ASTERISK-23435) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3343/ ........ Merged revisions 410795 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Make address replacement less aggressive. This change makes the res_pjsip_multihomed module less aggressive when changing the address in messages. It will now only occur if the transport in use is bound to the any address OR if the system determined source address matches the bound address of the transport in use. Review: https://reviewboard.asterisk.org/r/3369/ ........ Merged revisions 410793 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-17 22:24 +0000 [r410775] Russ Meyerriecks * /, main/callerid.c: callerid: Logic error in checksum processing Callerid checksum-ing was being handled incorrectly here. When the checksum is calculated to be 0x00, it will perform 0x100-0x00 which results in 0x100. This value will then fail the otherwise correct callerid message. This patch changes the logic to simply add the calculated checksum to the transmitted 2's compliment checksum. Review: https://reviewboard.asterisk.org/r/3356/ (closes issue ASTERISK-23488) ........ This is a merge of merged revisions 410750 410747 from http://svn.asterisk.org/svn/asterisk/branches/12 I didn't want a broken patch to be comitted to trunk so I pre-merge merged them. 2014-03-17 19:35 +0000 [r410684-410699] Mark Michelson * res/res_mwi_external.c, res/res_pjsip/config_system.c, configs/sorcery.conf.sample, include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c, tests/test_sorcery_astdb.c, tests/test_sorcery.c, tests/test_sorcery_realtime.c, main/sorcery.c, /: Revert changes to sorcery that accidentally got committed. These changes were still up for review and have not been approved yet. I must have had the changes in my working copy when making a different change. ........ Merged revisions 410696 from http://svn.asterisk.org/svn/asterisk/branches/12 * bridges/bridge_softmix.c, tests/test_sorcery.c, main/channel.c, res/res_pjsip/config_system.c, res/res_mwi_external.c, include/asterisk/bridge_channel.h, funcs/func_frame_trace.c, configs/sorcery.conf.sample, res/res_pjsip/pjsip_configuration.c, include/asterisk/sorcery.h, tests/test_sorcery_astdb.c, include/asterisk/frame.h, main/bridge_channel.c, tests/test_sorcery_realtime.c, main/sorcery.c, res/res_stasis_playback.c, main/frame.c, /: Fix stuck channel in ARI through the introduction of synchronous bridge actions. Playing back a file to a channel in an ARI bridge would attempt to wait until the playback concluded before returning. The method used involved signaling the waiting thread in the ARI custom playback function. The problem with this is that there were some corner cases that were not accounted for: * If a bridge channel could not be found, then we never would attempt the playback but would still attempt to wait for the playback to complete. * If the bridge playfile action failed to queue, we would still attempt to wait for the playback to complete. * If the bridge playfile action were queued but some circumstance caused the playback not to occur (the bridge dies, the channel is removed from the bridge), then we would never be notified. The solution to this is to move the waiting logic into the bridge code. A new bridge API function is added to queue a synchronous action on a bridge. The waiting thread is notified when the queued frame has been freed, either due to an error occurring or due to successful playback. As a failsafe, the waiting thread has a 10 minute timeout just in case there is a frame leak somewhere. Review: https://reviewboard.asterisk.org/r/3338 ........ Merged revisions 410673 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-17 16:48 +0000 [r410672] Richard Mudgett * /, apps/confbridge/conf_chan_announce.c: app_confbridge: Add missing destructor call to announcer channel destructor. ........ Merged revisions 410671 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-16 20:27 +0000 [r410651] Matthew Jordan * /, res/stasis/app.c: stasis/app.c: Add some extra debugging for subscription counts Events are sent to a connected ARI application based on the things that ARI application cares about. These subscriptions can be set up implicitly - such as when that ARI application creates a new object - or explicitly, via the application resource's subscription operations. Debugging *why* something was being sent to an application - or why something was not being sent to an application - was a bit tricky, as there was no debug information for the subscriptions. This patch adds some debug level 3 statements that show the subscription counts for applications. (Level 3 was chosen as it matches the verbose level 3 statements elsewhere) ........ Merged revisions 410650 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-15 15:24 +0000 [r410639] Russell Bryant * include/asterisk/framehook.h: framehook.h: Fix some doc typos. There were a number of instances in this header file where "function all" was intended to be "function call". This patch fixes that up. 2014-03-14 21:56 +0000 [r410626] Mark Michelson * /, tests/test_sorcery_realtime.c: Fix failing realtime sorcery tests. The store realtime callback needs to return a positive value for sorcery to treat the store as a success. ........ Merged revisions 410625 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 21:36 +0000 [r410624] Jonathan Rose * main/manager.c, /: manager: fix memory leak in manager_add_filter function (closes issue ASTERISK-23420) Reported by: Etienne Lessard Patches: manager_eventfilter_leak uploaded by Etienne Lessard (license 6394) ........ Merged revisions 410609 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410623 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 20:55 +0000 [r410591-410608] Mark Michelson * /, main/db.c: Remove an extra ast_cond_wait() that slipped through the patch. ........ Merged revisions 410606 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410607 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/config.c, res/res_sorcery_realtime.c: Handle the return values of realtime updates and stores more accurately. Realtime backends' update and store callbacks return the number of rows affected, or -1 if there was a failure. There were a couple of issues: * The config API was treating 0 as a successful return, and positive values as a failure. Now the config API treats anything >= 0 as a success. * res_sorcery_realtime was treating 0 as a successful return from the store procedure, and any positive values as a failure. Now sorcery treats anything > 0 as a success. It still considers 0 a "failure" since there is no change to report to observers. Review: https://reviewboard.asterisk.org/r/3341 ........ Merged revisions 410592 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_mwi.c: Prevent conflicts regarding unsolicited and solicited MWI to an endpoint. If an endpoint is receiving unsolicited MWI for a mailbox and then attempts to subscribe to an AOR that provides MWI for the same mailbox, then the SUBSCRIBE is rejected with a 500 response. Review: https://reviewboard.asterisk.org/r/3345 ........ Merged revisions 410590 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 17:56 +0000 [r410589] Scott Griepentrog * /, CHANGES: uniqueid: Update CHANGES to reflect new features Note the new features provided by uniqueid in the CHANGES file. (issue ASTERISK-23120) Review: https://reviewboard.asterisk.org/r/3316/ ........ Merged revisions 410588 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 16:42 +0000 [r410575] Jonathan Rose * /, main/acl.c, res/res_pjsip/pjsip_configuration.c, contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py, CHANGES, res/res_pjsip/config_transport.c, include/asterisk/acl.h: PJSIP: TOS values should be represented as decimals in sorcery objects (closes issue ASTERISK-23235) Reported by: George Joseph Review: https://reviewboard.asterisk.org/r/3324/ ........ Merged revisions 410574 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 16:19 +0000 [r410567] Mark Michelson * /, main/db.c: Prevent delayed astdb syncs. The syncing thread sleeps for a second before waiting to be told to attempt to sync again. If a signal were sent during this sleeping period, we would end up having to wait until the next sync signal occurred in order to sync up the astdb. This code rearrangement also ensures that any pending transactions will be synced prior to Asterisk shutting down. Patches: db_sync.patch by John Hardin (License #6512) ........ Merged revisions 410556 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410559 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 16:17 +0000 [r410560] Jonathan Rose * res/ari/resource_bridges.c, /: ARI/bridges: Forward Playback/Recording Started/Finished to bridge topic (closes issue ASTERISK-23444) Reported by: Ben Merrills Review: https://reviewboard.asterisk.org/r/3340/ ........ Merged revisions 410558 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-14 16:01 +0000 [r410542-410557] Richard Mudgett * include/asterisk/app.h, /, res/res_mwi_external.c, main/app.c: res_mwi_external: Clear the stasis cache entry when the external MWI is deleted. One of the things missing when external MWI support was added was the ability to clear the stasis cache entry of deleted external MWI mailboxes. Review: https://reviewboard.asterisk.org/r/3325/ ........ Merged revisions 410555 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/cdr.c: cdr.c: Add missing aow_unlock(cdr) in off nominal path of handle_dial_message(). * Trivial common code hoisting in handle_bridge_leave_message(). * Some whitespace fixing. ........ Merged revisions 410541 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-13 19:33 +0000 [r410528] Kinsey Moore * res/stasis/control.h, res/res_stasis.c, /, res/stasis/control.c: ARI: Ensure managing application receives ChannelEnteredBridge messages This fixes an issue where a Stasis application running over ARI and subscribed to ari/events could miss the ChannelEnteredBridge event because it did not subscribe to the new bridge fast enough. To accomplish this, it subscribes the application controlling the channel to the new bridge before adding it to that bridge which required the stasis_app_control structure to maintain a reference to the stasis_app. (closes issue ASTERISK-23295) Review: https://reviewboard.asterisk.org/r/3336/ ........ Merged revisions 410527 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-13 13:25 +0000 [r410511] Joshua Colp * res/res_pjsip_multihomed.c, /: Multiple revisions 410509-410510 ........ r410509 | file | 2014-03-13 06:23:14 -0700 (Thu, 13 Mar 2014) | 2 lines res_pjsip_multihomed: Fix a bug where the 200 OK for a REGISTER would contain the wrong contact. ........ r410510 | file | 2014-03-13 06:24:17 -0700 (Thu, 13 Mar 2014) | 2 lines res_pjsip_multihomed: Remove change for testing fix. ........ Merged revisions 410509-410510 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-12 19:06 +0000 [r410492-410494] Richard Mudgett * res/res_musiconhold.c, main/channel.c, /: res_musiconhold.c: Generate MOH start/stop events whenever the MOH stream is started/stopped. * Made res_musiconhold.c always post the MusicOnHoldStart/MusicOnHoldStop events when it actually starts/stops the music streams. This allows the events to always happen when MOH starts/stops. The event posting code was moved to the MOH alloc/release routines. * Made channel_do_masquerade() stop any MOH on the original channel before masquerading so the original channel will get a stop event with correct information. * Cleaned up a couple odd codings in moh_files_alloc() and moh_alloc() dealing with the music state variable. (issue ASTERISK-23311) Reported by: Benjamin Keith Ford Review: https://reviewboard.asterisk.org/r/3306/ ........ Merged revisions 410493 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/confbridge/conf_state.c, apps/confbridge/conf_state_single.c, apps/confbridge/conf_state_inactive.c, apps/confbridge/conf_state_single_marked.c, /: app_confbridge: Make explicitly stop MOH if a user is kicked or hangs up while MOH is playing. When MOH is playing to a user in a conference and the user is kicked or hangs up from the conference then the AMI MusicOnHoldStop events didn't happen. (Asterisk v11 AMI event: MusicOnHold, state:Stop) (closes issue ASTERISK-23311) Reported by: Benjamin Keith Ford Review: https://reviewboard.asterisk.org/r/3306/ ........ Merged revisions 410490 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410491 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-12 12:51 +0000 [r410452-410472] Joshua Colp * res/res_pjsip_multihomed.c, /: res_pjsip_multihomed: Fix a bug where outgoing messages for TCP would go out using UDP. This change fixes a bug where the code which changes the transport did not check whether the message is going out over UDP or not before changing it. For TCP and TLS transports we don't need to change the transport as the correct one is already chosen. ........ Merged revisions 410471 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_multihomed.c (added), /: res_pjsip_multihomed: Add module which places the correct address within messages. Due to how messages are handled within PJSIP it is not until a message is actually sent that the destination is reliably known. This means that the addresses placed within the message may not be of the interface the message is being sent out on. This module determines what interface a message is being sent on and updates the message to contain the correct address if applicable. This module was tested by myself in a virtualized environment with multiple interfaces and also by Kinsey Moore in the following configuration: Networks: * 10.24.16.0/21 ** hard phone ** default gateway * 10.24.64.0/21 ** softphone with pjsip-based stack Transport details: bind address: 0.0.0.0 protocol: UDP All endpoints were tested with explicitly configured transports and unconfigured transports. This was tested with inbound and outbound calls, both of which were experiencing detrimental effects from incorrect IP addresses in SIP messages. These effects were only experienced by the soft phone on the 10.24.64.0 network since the messages to the hard phone on the 10.24.16.0 network had the correct IP address. (closes issue ASTERISK-23020) Reported by: xrobau Review: https://reviewboard.asterisk.org/r/3102/ ........ Merged revisions 410451 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-10 17:21 +0000 [r410395] Richard Mudgett * /, main/http.c: AST-2014-001: Stack overflow in HTTP processing of Cookie headers. Sending a HTTP request that is handled by Asterisk with a large number of Cookie headers could overflow the stack. Another vulnerability along similar lines is any HTTP request with a ridiculous number of headers in the request could exhaust system memory. (closes issue ASTERISK-23340) Reported by: Lucas Molas, researcher at Programa STIC, Fundacion; and Dr. Manuel Sadosky, Buenos Aires, Argentina ........ Merged revisions 410380 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 410381 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410383 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-10 16:33 +0000 [r410369] Scott Griepentrog * res/ari/resource_channels.c, main/manager.c, /: unqiueid: correct max uniqueid length test This patch adds null string test prior to checking for a max uniqueid value that was added in r410157. ........ Merged revisions 410368 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-10 13:30 +0000 [r410346] Kinsey Moore * /, channels/chan_sip.c: AST-2014-002: chan_sip: Exit early on bad session timers request This change allows chan_sip to avoid creation of the channel and consumption of associated file descriptors altogether if the inbound request is going to be rejected anyway. (closes issue ASTERISK-23373) Reported by: Corey Farrell Patches: chan_sip-earlier-st-1.8.patch uploaded by Corey Farrell (license 5909) chan_sip-earlier-st-11.patch uploaded by Corey Farrell (license 5909) ........ Merged revisions 410308 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 410311 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410329 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-10 12:53 +0000 [r410307] Joshua Colp * /, res/res_pjsip/pjsip_options.c, res/res_pjsip.c: AST-2014-003: res_pjsip: When handling 401/407 responses don't assume a request will have an endpoint. This change removes the assumption that an outgoing request will always have an endpoint and makes the authenticate_qualify option work once again. (closes issue ASTERISK-23210) Reported by: Joshua Colp ........ Merged revisions 410306 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-08 16:50 +0000 [r410288] George Joseph * res/res_pjsip/config_auth.c, /, res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, res/res_pjsip_endpoint_identifier_ip.c, include/asterisk/res_pjsip_cli.h, include/asterisk/sorcery.h, res/res_pjsip/pjsip_cli.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/config_transport.c, main/sorcery.c, include/asterisk/res_pjsip.h: pjsip_cli: Create pjsip show channel and contact, and general cli code cleanup. Created the 'pjsip show channel' and 'pjsip show contact' commands. Refactored out the hated ast_hashtab. Replaced with ao2_container. Cleaned up function naming. Internal only, no public name changes. Cleaned up whitespace and brace formatting in cli code. Changed some NULL checking from "if"s to ast_asserts. Fixed some register/unregister ordering to reduce deadlock potential. Fixed ast_sip_location_add_contact where the 'name' buffer was too short. Fixed some self-assignment issues in res_pjsip_outbound_registration. (closes issue ASTERISK-23276) Review: http://reviewboard.asterisk.org/r/3283/ ........ Merged revisions 410287 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-08 15:45 +0000 [r410275] Matthew Jordan * /, res/ari/resource_channels.c: resource_channels: Check if a passed in ID is NULL before checking its length Calling strlen on a NULL string is explosive. This patch checks whether or not the passed in string is NULL or zero length before checking to see if the string is too long. ........ Merged revisions 410274 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 22:56 +0000 [r410227] Corey Farrell * /, channels/chan_sip.c: chan_sip: Fix deadlock of monlock between unload_module and do_monitor Release monlock before calling pthread_join. This ensures do_monitor cannot freeze by locking monlock during module unload. (closes issue ASTERISK-21406) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3284/ ........ Merged revisions 410224 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 410225 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410226 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 22:08 +0000 [r410212] Scott Griepentrog * /, include/asterisk/sorcery.h: sorcery: correct field register argument list This fixes mistakes I previously made in merging gtjoseph's changes with mine. ........ Merged revisions 410211 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 21:54 +0000 [r410208-410210] Matthew Jordan * /, main/config_options.c: config_options: Display the see-also information for CLI config option help The config option help information has always parsed the tags in the XML documentation. Unfortunately, it just never bothered displaying them on the CLI. With this patch, when you execute 'config show help [module] [obj] [option]', it will display what other options are useful to you. (closes issue ASTERISK-22008) Reported by: Richard Mudgett ........ Merged revisions 410209 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip.c, /: res_pjsip: Fix documentation for one touch recording see-also links The one touch recording options have several see-also links between the various configuration options. These were 'broken' by the snake casing of those options. This patch corrects the see-also links such that they reference the correct option names. ........ Merged revisions 410194 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 21:23 +0000 [r410207] Mark Michelson * main/sorcery.c, res/res_sorcery_realtime.c, /, include/asterisk/sorcery.h, tests/test_sorcery_realtime.c: Make res_sorcery_realtime filter unknown retrieved results. When retrieving data from a database or other realtime backend, it's quite possible to retrieve variables that Asterisk does not care about but that are legitimate to exist. Asterisk does not need to throw a hissy fit when these variables are encountered but rather just filter them out. Review: https://reviewboard.asterisk.org/r/3305 ........ Merged revisions 410187 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 21:11 +0000 [r410191] Scott Griepentrog * main/sorcery.c, /, include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c: pjsip: allow and disallow show same codecs In order to prevent confusion over the allow and disallow list of codecs being the same an option for registering a field as an alias is added. The alias field will be read from the configuration file, but afterwards is not listed as a known field. With disallow set as an alias, the CLI command pjsip show endpoint # will list the allow= field, but not the disallow field. (closes issue ASTERISK-23092) Review: https://reviewboard.asterisk.org/r/3193/ ........ Merged revisions 410190 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 20:41 +0000 [r410174-410185] Richard Mudgett * include/asterisk/devicestate.h, main/stasis_cache.c, main/stasis_message.c, /, tests/test_devicestate.c, include/asterisk/stasis.h, main/app.c, main/devicestate.c, tests/test_stasis.c: stasis cache: Enhance to keep track of an item from different entities. A stasis cache entry now contains more than a single message/snapshot. It contains messages/snapshots for the local entity as well as any remote entities that post to the cached item. In addition callbacks can be supplied when the cache is created to compute and post the aggregate message/snapshot representing all entities stored in the cache entry. * All stasis messages now have an eid to indicate what entity posted it. * The stasis cache enhancements allow device state to cache and aggregate the device states from local and remote entities in a single operation. The cached aggregate device state is available immediately after it is posted to the stasis bus. This improves performance by eliminating a cache dump and associated ao2 container traversals to calculate the aggregate state. (closes issue ASTERISK-23204) Reported by: Mark Michelson Review: https://reviewboard.asterisk.org/r/3281/ ........ Merged revisions 410184 from http://svn.asterisk.org/svn/asterisk/branches/12 * tests/test_cel.c, channels/sig_pri.c, channels/sig_ss7.c, include/asterisk/bridge.h, tests/test_cdr.c, channels/sig_pri.h, channels/chan_dahdi.c, channels/sig_ss7.h, /: uniqueid: Fix chan_dahdi, sig_pri, sig_ss7, test_cdr, and test_cel compiler errors. (issue ASTERISK-23120) ........ Merged revisions 410171 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 15:47 +0000 [r410158] Scott Griepentrog * tests/test_cdr.c, res/res_clioriginate.c, res/res_ari_bridges.c, tests/test_substitution.c, res/res_stasis_playback.c, channels/chan_multicast_rtp.c, apps/app_meetme.c, /, main/bridge_basic.c, include/asterisk/channel_internal.h, tests/test_app.c, apps/confbridge/conf_chan_record.c, main/core_unreal.c, channels/chan_gtalk.c, include/asterisk/stasis_app_playback.h, res/ari/resource_bridges.c, channels/chan_jingle.c, channels/chan_phone.c, pbx/pbx_spool.c, res/ari/resource_bridges.h, res/parking/parking_tests.c, channels/chan_motif.c, apps/app_confbridge.c, res/ari/resource_channels.c, include/asterisk/pbx.h, res/res_stasis.c, include/asterisk/bridge.h, apps/app_voicemail.c, res/ari/resource_channels.h, apps/app_dial.c, res/res_calendar_exchange.c, channels/chan_vpb.cc, apps/app_page.c, apps/app_chanisavail.c, include/asterisk/dial.h, main/core_local.c, res/parking/parking_bridge_features.c, tests/test_stasis_endpoints.c, res/parking/parking_bridge.c, channels/chan_skinny.c, include/asterisk/stasis_app_snoop.h, addons/chan_mobile.c, main/bridge_channel.c, channels/chan_pjsip.c, channels/chan_mgcp.c, channels/chan_unistim.c, main/pbx.c, res/res_calendar_icalendar.c, main/ccss.c, channels/chan_bridge_media.c, main/bridge.c, tests/test_stasis_channels.c, apps/app_bridgewait.c, apps/app_originate.c, res/res_calendar_caldav.c, include/asterisk/channel.h, res/parking/parking_applications.c, apps/app_followme.c, main/cel.c, apps/app_queue.c, res/res_ari_channels.c, res/res_calendar_ews.c, rest-api/api-docs/bridges.json, main/dial.c, channels/chan_dahdi.c, channels/chan_h323.c, tests/test_cel.c, rest-api/api-docs/channels.json, include/asterisk/bridge_internal.h, apps/confbridge/conf_chan_announce.c, res/res_calendar.c, include/asterisk/core_unreal.h, addons/chan_ooh323.c, res/stasis/control.c, channels/chan_sip.c, main/channel_internal_api.c, include/asterisk/stasis_app.h, res/res_stasis_snoop.c, channels/chan_console.c, channels/chan_iax2.c, channels/chan_oss.c, apps/app_agent_pool.c, main/channel.c, main/manager.c, channels/chan_misdn.c, tests/test_voicemail_api.c, channels/chan_alsa.c, channels/chan_nbs.c, main/message.c: uniqueid: channel linkedid, ami, ari object creation with id's Much needed was a way to assign id to objects on creation, and much change was necessary to accomplish it. Channel uniqueids and linkedids are split into separate string and creation time components without breaking linkedid propgation. This allowed the uniqueid to be specified by the user interface - and those values are now carried through to channel creation, adding the assignedids value to every function in the chain including the channel drivers. For local channels, the second channel can be specified or left to default to a ;2 suffix of first. In ARI, bridge, playback, and snoop objects can also be created with a specified uniqueid. Along the way, the args order to allocating channels was fixed in chan_mgcp and chan_gtalk, and linkedid is no longer lost as masquerade occurs. (closes issue ASTERISK-23120) Review: https://reviewboard.asterisk.org/r/3191/ ........ Merged revisions 410157 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-07 05:04 +0000 [r410108] Matthew Jordan * /, channels/chan_sip.c: chan_sip: Allow static realtime members to be qualified during module load. When a static realtime peer with qualify=yes is loaded, Asterisk will fail to send an OPTIONS request due to the lastms being equal to 0. This results in the peer being unable to receive calls from Asterisk because the status is permanently UNKNOWN. This patch allows an OPTIONS request to be sent during module load by ignoring the lastms value on startup only. Review: https://reviewboard.asterisk.org/r/3294/ (closes issue ASTERISK-17523) Reported by: Maciej Krajewski Tested by: wushumasters patches: realtime_fix_11.7.0.txt uploaded by Trevor Peirce (license 6112) ........ Merged revisions 410105 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 410106 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410107 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 23:47 +0000 [r410092] Richard Mudgett * main/sorcery.c, /: sorcery.c: Fix off-nominal path ref and memory leak in ast_sorcery_objectset_json_create(). * Made exit a loop early on error in ast_sorcery_objectset_json_create(). * Removed some dead code in ast_sorcery_objectset_create2(). ........ Merged revisions 410089 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 23:43 +0000 [r410091] Russell Bryant * /, res/res_musiconhold.c: moh: fix a refcount error with realtime MOH I observed a crash in res_musiconhold on an Asterisk 11 system using realtime MOH. Investigation of the backtrace showed a corrupt mohclass, implying that it got destroyed before the code expected it to. I went looking for reference counting errors that could have caused this crash and this patch this result. It contains 2 changes. 1) Remove a usless block of code that was impossible to reach. There was even a comment indicating that it was impossible to reach. The conditional includes "!ast_test_flag(global_flags, MOH_CACHERTCLASSES)" and it's inside of an if block with the opposite check "ast_test_flag(global_flags, MOH_CACHERTCLASSES)". There's no good reason to keep it around. 2) A similar block to #1 contained a reference counting error. It stores state->class in the local variable mohclass without increasing its reference count. The reference count on mohclass is decremented at the end of the function. This block of code probably very rarely runs, which would help explain why this system was working fine for many months before experiencing a crash. Review: https://reviewboard.asterisk.org/r/3282/ ........ Merged revisions 410043 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 410044 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 410090 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 22:39 +0000 [r410042] George Joseph * res/res_pjsip/config_auth.c, funcs/func_sorcery.c (added), res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, main/bucket.c, res/res_pjsip_endpoint_identifier_ip.c, include/asterisk/config.h, include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c, res/res_pjsip_acl.c, CHANGES, tests/test_sorcery.c, res/res_pjsip/config_transport.c, main/config.c, main/sorcery.c: sorcery: Create AST_SORCERY dialplan function. This patch creates the AST_SORCERY dialplan function which allows someone to retrieve any value from a sorcery-based config file. It's similar to AST_CONFIG. The creation of the function itself was fairly straightforward but it required changes to the underlying sorcery infrastructure that rippled into individual sorcery objects. The changes stemmed from inconsistencies in how sorcery created ast_variable objectsets from sorcery objects and the inconsistency in how individual objects used that feature especially when it came to parameters that can be specified multiple times like contact in aor and match in identify. You can read more here... http://lists.digium.com/pipermail/asterisk-dev/2014-February/065202.html So, what this patch does, besides actually creating the AST_SORCERY function, is the following... * Creates ast_variable_list_append which is a helper to append one ast_variable list to another. * Modifies the ast_sorcery_object_field_register functions to accept the already-defined sorcery_fields_handler callback. * Modifies ast_sorcery_objectset_create to accept a parameter indicating return type preference...a single ast_variable with all values concatenated or an ast_variable list with multiple entries. Also fixed a few bugs. * Modifies individual sorcery object implementations to use the new function definition of the ast_sorcery_object_field_register functions. * Modifies location.c and res_pjsip_endpoint_identifier_ip.c to implement sorcery_fields_handler handlers so they return multiple occurrences as an ast_variable_list. * Added a whole bunch of tests to test_sorcery. (closes issue ASTERISK-22537) Review: http://reviewboard.asterisk.org/r/3254/ 2014-03-06 19:04 +0000 [r410029] Jonathan Rose * include/asterisk/acl.h, /, main/acl.c, res/res_pjsip/pjsip_configuration.c, UPGRADE.txt, contrib/ast-db-manage/config/versions/4c573e7135bd_fix_tos_field_types.py (added), res/res_pjsip/config_transport.c: pjsip configuration: Make transport TOS values consistent with endpoints Transport TOS values were interpreted as DSCP values without being documented as such. Endpoint TOS values (tos_audio/tos_video) behaved normally as TOS values have historically. This patch makes the transport TOS values behave as TOS values and makes all TOS values readable as string values (e.g. AF11). In addition, alembic scripts have been updated to use the proper field types for all TOS/COS values. (issue ASTERISK-23235) Reported by: George Joseph Review: https://reviewboard.asterisk.org/r/3304/ ........ Merged revisions 410028 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 18:20 +0000 [r410027] Joshua Colp * res/ari/resource_channels.c, CHANGES, res/ari/ari_model_validators.c, rest-api/api-docs/recordings.json, res/ari/resource_bridges.c, res/ari/ari_model_validators.h, /, include/asterisk/stasis_app_recording.h, res/res_stasis_recording.c: res_stasis_recording: Add a "target_uri" field to recording events. This change adds a target_uri field to the live recording object. It contains the URI of what is being recorded. (closes issue ASTERISK-23258) Reported by: Ben Merrills Review: https://reviewboard.asterisk.org/r/3299/ ........ Merged revisions 410025 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 15:58 +0000 [r410012] Mark Michelson * res/res_pjsip_mwi.c, /: Don't attempt to link in an aggregate MWI subscription if an endpoint does not aggregate MWI. Attempting to link a NULL object into an ao2 container had been benign previously, but since enabling DO_CRASH in the testsuite, this is now causing a crash. It's better to be right here anyway. ........ Merged revisions 410011 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 02:22 +0000 [r409996] Matthew Jordan * res/res_fax_spandsp.c, /: res_fax_spandsp: Fix crash when passing ulaw/alaw data to spandsp When acting as a T.38 fax gateway, res_fax_spandsp would at times cause a crash in libspandsp. This would occur when, during fax tone detection, a ulaw/alaw frame would be passed to modem_connect_tones_rx. That particular routine expects the data to be in slin format. This patch looks at the frame type and, if the data is ulaw/alaw, converts the format to slin before passing it to modem_connect_tones_rx. Review: https://reviewboard.asterisk.org/r/3296 (closes issue ASTERISK-20149) Reported by: Alexandr Gordeev Tested by: Michal Rybarik patches: spandsp_g711decode.diff uploaded by Michal Rybarik (license 6578) ........ Merged revisions 409990 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409991 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-06 00:33 +0000 [r409970-409977] Richard Mudgett * apps/confbridge/conf_state_multi.c, apps/confbridge/conf_state_inactive.c, /: app_confbridge: Remove some noop code. ........ Merged revisions 409976 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_musiconhold.c: res_musiconhold.c: Remove some unnecessary RAII_VAR() usage. * Made the moh_register() define use useful parameter names. ........ Merged revisions 409967 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 20:41 +0000 [r409904-409919] Kinsey Moore * main/config.c, /: config: Fix inverted test The test of the result of the stat() call was inverted such that its output was only used if the call failed. This inverts the test so that the output of stat() is used correctly. This was causing full reloads on unchanged files. (closes issue ASTERISK-23383) Reported by: David Woolley ........ Merged revisions 409916 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409917 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409918 from http://svn.asterisk.org/svn/asterisk/branches/12 * bridges/bridge_native_rtp.c, /: bridge_native_rtp: Fix crash involving masquerade It is possible for a channel to be masqueraded out of a bridge which means it may no longer have RTP glue to check upon leaving said bridge. If this situation occurred (it's possible at least during dial and call pickup) then Asterisk would crash. This change makes sure the glue is checked before use. (closes issue AST-1290) Reported by: John Bigelow ........ Merged revisions 409900 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 18:51 +0000 [r409889] Richard Mudgett * contrib/ast-db-manage/cdr/versions, contrib/ast-db-manage/cdr/versions/210693f3123d_create_cdr_table.py, /, contrib/ast-db-manage/config/versions/28887f25a46f_create_queue_tables.py (added), contrib/ast-db-manage/cdr.ini.sample (added), contrib/ast-db-manage/cdr/env.py, contrib/ast-db-manage/cdr (added), contrib/ast-db-manage/cdr/script.py.mako: alembic: Add missing queue and CDR table creation scripts. * Added the queues and queue_members tables to the config alembic scripts. * Added the CDR table alembic creation script. The CDR table is more of an example for new setups since the actual table can be fully customized in cdr_adaptive_odbc.conf. (closes issue ASTERISK-23233) Reported by: jmls Review: https://reviewboard.asterisk.org/r/3227/ ........ Merged revisions 409885 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 18:47 +0000 [r409888] Mark Michelson * funcs/func_presencestate.c, /: Fix documentation for PRESENCE_STATE to properly illustrate how to create a presence hint. There was a missing comma. This was discovered by Dan Kaplan. ........ Merged revisions 409886 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409887 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 16:58 +0000 [r409836] David M. Lee * main/config.c, /, configure, include/asterisk/autoconfig.h.in, configure.ac: Corrected cross-platform stat nanosecond code When nanosecond time resolution was added for identifying config file changes, it didn't cover all of the myriad of ways that one might obtain nanosecond time resolution off of struct stat. Rather than complicate the #if even further figuring out one system from the next, this patch directly tests for the three struct members I know about today, and #ifdef's accordingly. Review: https://reviewboard.asterisk.org/r/3273/ ........ Merged revisions 409833 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409834 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409835 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 16:26 +0000 [r409831-409832] Moises Silva * res/res_http_websocket.c: Fix res/res_http_websocket.c build failure in 32bit due to incorrect print format for uint64_t * res/res_http_websocket.c, /: Fix WebRTC over WSS not working Several fixes for the WebSockets implementation in res/res_http_websocket.c * Flush the websocket session FILE* as fwrite() may not actually guarantee sending the data to the network. If we do not flush, it seems that buffering on the SSL socket for outbound messages causes issues * Refactored ast_websocket_read to take into account that SSL file descriptors may be ready to read via fread() but poll() will not actually say so because the data was already read from the network buffers and is now in the libc buffers (closes issue ASTERISK-23099) (closes issue ASTERISK-21930) Review: https://reviewboard.asterisk.org/r/3248/ ........ Merged revisions 409681 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409697 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 12:06 +0000 [r409780] Sean Bright * contrib/scripts/astgenkey, contrib/scripts/astgenkey.8, /: Fix references to 'keys' CLI commands in astgenkey ........ Merged revisions 409777 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409778 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409779 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-05 06:17 +0000 [r409747] Igor Goncharovskiy * channels/chan_unistim.c: Add update_peer function to unistim_rtp_glue, improve other unistim_rtp_glue functions conforming to other channel drivers. Do not forget auto-detected and user-selected phone settings on 'unistim reload' ........ Merged revisions 409705 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409745 from http://svn.asterisk.org/svn/asterisk/branches/11 2014-03-05 01:05 +0000 [r409683] Richard Mudgett * /, include/asterisk/stasis_internal.h: stasis: Made internal_stasis_subscribe() prototype and definition match exactly. ........ Merged revisions 409682 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-04 19:34 +0000 [r409627] Michael L. Young * funcs/func_audiohookinherit.c, /: func_audiohookinheritance: Check If A Channel Was Specified This patch prevents a crash when using the function audiohookinheritance without setting the channel. (closes issue ASTERISK-23104) Reported by: Joel Vandal Tested by: Joel Vandal Patches: asterisk-23104_audiohook_inherit_no_channel-11.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/3272/ ........ Merged revisions 409623 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409625 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409626 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-04 17:22 +0000 [r409587] Jonathan Rose * /, res/res_rtp_asterisk.c: res_rtp_asterisk: Fix one way audio problems with hold/unhold when using ICE ICE sessions will now be restarted if sessions are changed to use new sets of remote candidates. (closes issue ASTERISK-22911) Reported by: Vytis Valentinavičius Review: https://reviewboard.asterisk.org/r/3275/ ........ Merged revisions 409565 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409570 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-04 16:55 +0000 [r409569] Kinsey Moore * /, main/astobj2.c: AO2: Add an assert for bad objects This adds an assert that will only be active if Asterisk is compiled with DO_CRASH and allows the testsuite to fail tests that would otherwise require log file parsing. ........ Merged revisions 409566 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409567 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409568 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-04 14:55 +0000 [r409475] Sean Bright * /, channels/chan_sip.c: Minor whitespace change to 'sip show peers' output. (closes issue ASTERISK-23406) Reported by: ibercom Tested by: ibercom Patches: asterisk-11.patch uploaded by ibercom ........ Merged revisions 409472 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409473 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409474 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-03 19:44 +0000 [r409423] Joshua Colp * /, res/res_stasis_recording.c: res_stasis_recording: Fix memory leak of the absolute name. ........ Merged revisions 409422 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-03 02:08 +0000 [r409364] Matthew Jordan * main/asterisk.c, /: doxygen: Tweak the link back to ye olde Digium website ........ Merged revisions 409361 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409362 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409363 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-02 17:03 +0000 [r409350] Tzafrir Cohen * /, Makefile.rules: Makefile: replace -O6 with -O3 -O6 is not a legal option of gcc. Unofficially gcc considers it to be equivalent of -O3. clang chalks on it, though. This commit sets the default optimization flag to be -O3, like gcc actually considered it. Review: https://reviewboard.asterisk.org/r/3280/ ........ Merged revisions 409308 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409344 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409346 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-01 20:28 +0000 [r409288] Joshua Colp * res/res_pjsip_session.c, /: res_pjsip_session: Set options (100rel, timers) on incoming sessions. This change passes options to the UAS creation function. This in turn sets up 100rel and session timer properties on the incoming session. Reported by Julian Russell on asterisk-users mailing list. ........ Merged revisions 409287 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-03-01 00:05 +0000 [r409257-409275] Richard Mudgett * /, main/devicestate.c: devicestate.c: Simplified some logic in _ast_device_state(). ........ Merged revisions 409274 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_cache.c, /: stasis_cache.c: Remove some unnecessary RAII_VAR() usage. ........ Merged revisions 409272 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis.c, /: stasis.c: Misc code cleanups. * Remove some unnecessary RAII_VAR() usage. * Made the struct stasis_subscription ao2 object use the ao2 lock instead of a redundant join_lock in the struct for ast_cond_wait(). * Removed locks on some ao2 objects that don't need the lock. * Made the topic pool entries container use the ao2 template functions. * Add some missing allocation failure checks. * Add missing cleanup in off nominal path of dispatch_message(). ........ Merged revisions 409270 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: chan_sip: Add precautionary p->owner checks. * Add precautionary p->owner checks in sip_hangup(), get_refer_info(), get_also_info(), and interpret_t38_parameters(). * Simplify some tangled logic in get_refer_info(), get_also_info(), and add_rpid(). * Removed some dead code in handle_request_invite(). (closes issue ASTERISK-23323) Reported by: Walter Doekes Patches: issueA23323-more_p_owner_checks-1.8.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-11.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-12.x.patch (license #5674) uploaded by wdoekes (modified) issueA23323-more_p_owner_checks-trunk.patch (license #5674) uploaded by wdoekes (modified) ........ Merged revisions 409207 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409255 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409256 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-28 21:24 +0000 [r409237] Kinsey Moore * apps/app_queue.c, /: app_queue: Fix documented AMI event name During the rewrite of AMI events to use the Stasis bus, the name of the QueueMemberPaused event was changed to QueueMemberPause. This corrects documentation to reflect that. ........ Merged revisions 409234 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-28 18:03 +0000 [r409159] Richard Mudgett * /, channels/chan_sip.c: chan_sip: Fix crash in ast_channel_hangupcause_set(). * Fix crash in ast_channel_hangupcause_set() because p->owner not checked before calling. Regression introduced by the fix for ASTERISK-22621. (closes issue ASTERISK-23135) Reported by: OK (issue ASTERISK-23323) Reported by: Walter Doekes ........ Merged revisions 409156 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409157 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409158 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-27 19:54 +0000 [r409132] Jonathan Rose * res/res_rtp_asterisk.c, /: Multiple revisions 409129-409130 ........ r409129 | jrose | 2014-02-27 13:19:02 -0600 (Thu, 27 Feb 2014) | 15 lines res_rtp_asterisk: Fix checklist creating problems in ICE sessions Prior to this patch, local candidate lists including SRFLX would fail to start properly when building ICE candidate check lists. This patch fixes that problem by making sure that each SRFLX candidate is associated with the proper base address so that the check list can create matches properly. This patch was written by jcolp. The issue will be left open to await testing by the issue participants. (issue ASTERISK-23213) Reported by: Andrea Suisani Review: https://reviewboard.asterisk.org/r/3256/ ........ r409130 | jrose | 2014-02-27 13:38:10 -0600 (Thu, 27 Feb 2014) | 8 lines res_rtp_asterisk: correct build error from r409129 Accidentally placed a declaration below functional code (issue ASTERISK-23213) Reported by: Andrea Suisani Review: https://reviewboard.asterisk.org/r/3256/ ........ Merged revisions 409129-409130 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409131 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-27 16:26 +0000 [r409091] David M. Lee * utils/astman.c, /: Fix memory stomping bug in astman. This memset complained in dev mod on my Ubuntu box. The memset is both unnecessary and dangerous. At this point, m hasn't been initialized yet, so the memset will write off to whatever address happens to be on the stack at the time. ........ Merged revisions 409077 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409083 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409087 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-27 16:08 +0000 [r409055] Corey Farrell * /, configs/res_fax.conf.sample: res_fax: Comment out default settings from res_fax.conf. Comment out many settings in res_fax.conf.sample. The defaults are set in res_fax.c, so setting the same value in sample config does nothing but make the sample config more fragile. (closes issue ASTERISK-23231) Reported by: David Brillert Review: https://reviewboard.asterisk.org/r/3261/ ........ Merged revisions 409052 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 409053 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 409054 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-27 12:29 +0000 [r409000] Matthew Jordan * /, res/res_pjsip_sdp_rtp.c: res_pjsip_sdp_rtp: Apply packetization rules on inbound SDP handling The setting 'use_ptime' is supposed to tell Asterisk to honour the ptime attribute in an offer, preferring it to whatever packetization preferences have been set internally. Currently, however, something rather quirky will happen: (1) The SDP answer will be constructed in create_outgoing_sdp_stream. This will use the preferences from the endpoint, such that the 200 OK response will add the packetization preferences from the endpoint, and not what was offered. (2) When the 200 response is issued, apply_negotiated_sdp_stream is called. This will call apply_packetization, which will use the ptime attribute from the offer internally. We end up telling the offerer to use the internal ptime attribute, but we end up using the offered ptime attribute. Hilarity ensues. This patch modifies the behaviour by calling apply_packetization from negotiate_incoming_sdp_stream, which is called prior to create_outgoing_sdp_stream. This causes the format preferences on the session's media object to be set to the inbound ptime value (if 'use_ptime' is enabled), such that the construction of the answer gets the right value immediately. Review: https://reviewboard.asterisk.org/r/3244/ ........ Merged revisions 408999 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-26 23:35 +0000 [r408984] Richard Mudgett * /, tests/test_stasis.c: test_stasis.c: Misc cleanups. * Make the consumer ao2 object use the ao2 lock instead of a redundant lock in the struct for ast_cond_wait(). * Fixed some curly brace placements. * Fixed use of malloc(0). malloc(0) has variant behavior. It is up to the implementation to determine if it returns NULL or a valid pointer that can be later passed to free(). ........ Merged revisions 408983 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-26 19:00 +0000 [r408971] Scott Griepentrog * channels/chan_pjsip.c, /: pjsip: avoid edge case potential crash in answer() When accidentally compiling against a wrong version of pjsip headers with a different pjsip_inv_session size, the invite_tsx structure could be null in the answer() function. This led to a crash because it attempted to send the session response with an uninitialized packet pointer. This patch presets packet to null and adds a diagnostic log message to explain why the call fails. Review: https://reviewboard.asterisk.org/r/3267/ ........ Merged revisions 408970 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-26 17:04 +0000 [r408958] Joshua Colp * res/res_ari.c, /: res_ari: Make some additional error responses consistent with the rest of the system. This change makes some error cases use ast_ari_response_error to construct their error responses instead of manually doing it. This ensures they are consistent with the other error responses. Based on the original patch as done by Paul Belanger on the associated review. Review: https://reviewboard.asterisk.org/r/2904/ ........ Merged revisions 408957 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-26 13:47 +0000 [r408942-408944] Kinsey Moore * include/asterisk/res_pjsip_session.h, /: PJSIP: Fix some bad spacing ........ Merged revisions 408943 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_refer.c: PJSIP: Prevent crash if channel has gone away It is currently possible for an ast_sip_session to exist without an associated channel as is the case when a new invite is coming in or just after a hangup is issued on a chan_pjsip channel. Part of the attended transfer code assumed the channel would be non-NULL and used it as such causing a crash. This bug was exposed thanks to the attended transfer ARI test in the test suite. (closes issue ASTERISK-23287) Reported by: Matt Jordan ........ Merged revisions 408941 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-26 08:57 +0000 [r408932] Igor Goncharovskiy * channels/chan_unistim.c: Implement functions handling keypress, display icons and text for i2004 KEM support. 2014-02-25 17:51 +0000 [r408881-408883] Kevin Harwell * res/res_pjsip_exten_state.c, /, res/res_pjsip_pidf_digium_body_supplement.c (added), include/asterisk/res_pjsip_body_generator_types.h: res_pjsip_exten_state: Presence for digium phones Added presence support for digium phones. Review: https://reviewboard.asterisk.org/r/3239/ ........ Merged revisions 408882 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_send_to_voicemail.c (added), res/res_pjsip_header_funcs.c: res_pjsip_send_to_voicemail: transferring to voicemail for digium phones Added the ability for transferring directly to voicemail on digium phones. Added a new module that checks for the presence of a custom header and/or diversion header within a sip REFER. If either is found and they specify a sending to voicemail action then variables are added to the channel allowing the user access to them in the dialplan. Dialplan can then be written that branches based upon these values allowing, for instace, for a single number to be used for dialing and/or accessing voicemail directly. Also fixed a problem where the PJSIP_HEADER function was allowing non pjsip channels through (checked to make sure it has the correct channel type before proceeding). Review: https://reviewboard.asterisk.org/r/3245/ ........ Merged revisions 408880 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-25 17:44 +0000 [r408879] Rusty Newton * configs/voicemail.conf.sample, /: configs/voicemail.conf.sample - Make mailcmd sample text more explicit Made the wording a bit more explicit. Didn't really change the meaning. ........ Merged revisions 408876 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408877 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408878 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-22 23:31 +0000 [r408859] Matthew Jordan * /, main/asterisk.c: main: Initialize dialplan providing core components prior to module pre-load It is possible to pre-load pbx_config. As a result, pbx_config - which will load and parse the dialplan - will attempt to use various dialplan components, such as device state providers and presence state providers, prior to them being initialized by the core. This would lead to a crash, as the components had not created their Stasis cache entries. This patch moves a number of core component initializations before the module pre-load. This guarantees that if someone does pre-load pbx_config - or other pbx modules - that the Stasis caches for the various core components are created. (closes issue ASTERISK-23320) Reported by: xrobau (closes issue ASTERISK-23265) Reported by: Andrew Nagy Tested by: Andrew Nagy, Rusty Newton ........ Merged revisions 408855 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-22 18:01 +0000 [r408840] Alexandr Anikin * addons/chan_ooh323.c, /: ignore AST_CONTROL_PVT_CAUSE_CODE without any messages (closes issue ASTERISK-23336) Reported by: Alexander Semych ........ Merged revisions 408838 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408839 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-22 02:31 +0000 [r408788] Corey Farrell * /, utils/extconf.c, utils/conf2ael.c, res/ael/pval.c, main/pbx.c: Remove extra defines of AST_PBX_MAX_STACK. * Ensure AST_PBX_MAX_STACK is only defined in extconf.h and pbx.h. * Fix incorrect function parameters in utils/extconf.c. (closes issue ASTERISK-23141) Reported by: Maxim Review: https://reviewboard.asterisk.org/r/3241/ ........ Merged revisions 408785 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408786 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408787 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-21 18:37 +0000 [r408731] Kevin Harwell * main/rtp_engine.c, /: rtp_engine: Dynamic payload change in rtp mapping not supported Asterisk didn't support the dynamic payload change in rtp mapping in the 200 OK response. Scenario: Asterisk sends the INVITE proposing alaw and telephone-event, it proposes rtpmap:101 for telephone-event. Peer responds with 2xx, it answers with alaw and telephone-event also, but it proposes a different rtpmap number (rtpmap:103) for telephone-event. Expected Behaviour: Asterisk should honour the rtpmapping in the response and send DTMF packets using 103 as payload type for DTMF. Actual Behaviour: Asterisk sends DTMF packets using payload type 101. With this patch asterisk now supports changes that can occur in the rtp mapping in the response. (closes issue ASTERISK-23279) Reported by: NITESH BANSAL Review: https://reviewboard.asterisk.org/r/3225/ Patches: dynamic_payload_change.patch uploaded by nbansal (license 6418) ........ Merged revisions 408729 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408730 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-21 18:19 +0000 [r408712-408723] Richard Mudgett * main/manager.c, /: manager: Fix AMI Status action of a single channel. Fixed use of uninitialized ao2 container iterator in an off-nominal condition. Either a memory allocation error or the requested channel is an internal channel not exposed to the outside. ........ Merged revisions 408715 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/sorcery.c, res/ari/resource_endpoints.c, /, apps/app_meetme.c, res/res_fax.c, res/res_stasis_recording.c, main/stasis_channels.c, res/res_sorcery_astdb.c, include/asterisk/json.h: json: Fix off-nominal json ref counting issues. * Fixed off-nominal json ref counting issue with using the following API calls: ast_json_object_set() and ast_json_array_append(). * Fixed off-nominal error reporting in ast_ari_endpoints_list(). * Fixed some miscellaneous off-nominal json ref counting issues in report_receive_fax_status() and dial_to_json(). ........ Merged revisions 408713 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/json.c, /: json: Fix json API wrapper code for json library versions earlier than 2.3.0. * Fixed json ref counting issue with json API wrapper code for ast_json_object_update_existing() and ast_json_object_update_missing() when the json library is earlier than version 2.3.0. ........ Merged revisions 408711 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-21 16:49 +0000 [r408699] Corey Farrell * channels/chan_sip.c: chan_sip: prevent add_route from adding empty header. Fix regression caused by ASTERISK-22582. Empty Route headers were added when the route had a single strict hop. (closes issue ASTERISK-23306) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3236/ 2014-02-21 16:27 +0000 [r408645-408652] Kevin Harwell * main/rtp_engine.c, /: rtp_engine: Output mixup in ${CHANNEL(rtpqos,audio,all)} Fixed the output of CHANNEL(rtpqos,audio,all) to use txjitter instead of rxjitter. (closes issue ASTERISK-23261) Reported by: rsw686 Patches: rtpqos.patch uploaded by rsw686 (license 5887) ........ Merged revisions 408646 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408647 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408649 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/channel.c, /: channel.c: MOH is not working for transferee after attended transfer Updated the code to check to see if MOH is playing on the transferor and if so then start it on the channel that replaces it during a masquerade. Example scenario of the problem: Alice calls Bob and then Bob begins the attended transfer process into a queue. Upon going on hold Alice hears music and so does Bob once he is in the queue. Bob then transfers Alice into the queue and then music for Alice stops even though she should be hearing it since has now replaced Bob in the queue. The problem that was occurring is that once the channel was masqueraded the app (queues, confbridge, etc...) had no way of knowing that the channel had just been swapped out thus it did not start music for the present channel. Credit to Olle Johansson for pointing me in the right direction on this issue. (closes issue ASTERISK-19499) Reported by: Timo Teräs Review: https://reviewboard.asterisk.org/r/3226/ ........ Merged revisions 408642 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408643 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408644 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-21 10:45 +0000 [r408592] Alexandr Anikin * /, addons/ooh323c/src/ooCalls.h: Fix type of roundTripDelay variables ........ Merged revisions 408589 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408590 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408591 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-21 00:50 +0000 [r408539] Michael L. Young * /, apps/app_chanspy.c: app_chanspy: Documentation Update To Clarify "x" Option When using the "x" option (specify a DTMF digit to exit the application), it is not obvious in the documentation that this only works when spying on a channel. If a channel being used to spy on other channels is waiting to connect to a channel or is no longer attached to a channel, the DTMF is ignored. As noted on the issue tracker, since there are workarounds available and this is a rarely used option we are opting for a documentation change here. (closes issue ASTERISK-22661) Reported by: Chris Hillman Patches: asterisk-22661-doc-clarify-chan_spy.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2990/ ........ Merged revisions 408536 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408537 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408538 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-20 21:12 +0000 [r408519-408523] George Joseph * /, res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c: pjsip_cli: Add pjsip commands 'show registrations' and 'show contacts'. Added 'show registrations' and 'show contacts' to pjsip cli to make things a little more consistent. The output is exactly the same as the list command. Just needed to add entries to their respective ast_cli_entry structures. (closes issue ASTERISK-23275) Review: http://reviewboard.asterisk.org/r/3210/ ........ Merged revisions 408522 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_cli.c, main/config.c: pjsip_cli: Fix memory leak in ast_sip_cli_print_sorcery_objectset. Fixed memory leaks in ast_sip_cli_print_sorcery_objectset and ast_variable_list_sort. (closes issue ASTERISK-23266) Review: http://reviewboard.asterisk.org/r/3200/ ........ Merged revisions 408520 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/sorcery.h, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c, tests/test_sorcery.c, main/sorcery.c, /, res/res_pjsip/config_system.c: sorcery: Create sorcery instance registry. In order to retrieve an arbitrary sorcery instance from a dialplan function (or any place else) there needs to be a registry of sorcery instances. ast_sorcery_init now creates a hashtab as a registry. ast_sorcery_open now checks the hashtab for an existing sorcery instance matching the caller's module name. If it finds one, it bumps the refcount and returns it. If not, it creates a new sorcery instance, adds it to the hashtab, then returns it. ast_sorcery_retrieve_by_module_name is a new function that does a hashtab lookup by module name. It can be called by the future dialplan function. res_pjsip/config_system needed a small change to share the main res_pjsip sorcery instance. tests/test_sorcery was updated to include a test for the registry. (closes issue ASTERISK-22537) Review: http://reviewboard.asterisk.org/r/3184/ ........ Merged revisions 408518 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-20 19:02 +0000 [r408503] Matthew Jordan * res/res_pjsip.c, /: res_pjsip: Update documentation for 'use_avpf' option When 'use_avpf' is set to True, inbound offers must use the AVPF/SAVPF RTP profile. However, when 'use_avpf' is set to False, Asterisk will accept both AVP/SAVP or AVPF/SAVPF RTP profiles in inbound offers. The documentation previously implied that Asterisk would reject AVPF/SAVPF if 'use_avpf' was set to False and a UA offered said profile in an INVITE request. ........ Merged revisions 408502 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-20 02:44 +0000 [r408450] Rusty Newton * /, apps/app_queue.c: apps/app_queue - Fix incorrect Macro parameter documentation Macro is executed on the called channel, not the calling channel. (closes issue ASTERISK-23069) Reported By: Bryan Anderson ........ Merged revisions 408447 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408448 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408449 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-19 19:09 +0000 [r408386-408390] Richard Mudgett * /, main/config.c: config: Add file size and nanosecond resolution fields to the cached modified config file information. Repeatedly modifying config files and reloading too fast sometimes fails to reload the configuration because the cached modification timestamp has one second resolution. * Added file size and nanosecond resolution fields to the cached config file modification timestamp information. Now if the file size changes or the file system supports nanosecond resolution the modified file has a better chance of being detected for reload. * Added a missing unlock in an off-nominal code path. (closes issue AST-1303) Review: https://reviewboard.asterisk.org/r/3235/ ........ Merged revisions 408387 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408388 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408389 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_sorcery_astdb.c: res_sorcery_astdb.c: Fix regex handling and keep simple prefix matching performance. The sorcery astDB wizzard does not handle regex correctly if the pattern begins with an anchor character. This patch attempts to convert the anchored regex pattern to a prefix pattern supported by astDB for performance reasons. If it is not able to convert the pattern it falls back to getting all astDB members of the family and doing a normal regex pattern matching on the retrieved records. Review: https://reviewboard.asterisk.org/r/3161/ ........ Merged revisions 408385 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-19 12:04 +0000 [r408315-408332] Alexandr Anikin * addons/ooh323c/src/ooCapability.c, /, addons/ooh323c/src/ooh245.c: process receiveAndTransmit user input remote caps instead of receive only send receiveAndTransmit user input our caps instead of receive only ........ Merged revisions 408328 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408330 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408331 from http://svn.asterisk.org/svn/asterisk/branches/12 * addons/ooh323c/src/ooh323.c, /: Allow different socket and signalling ip on h.323 connection if gk mode is active Reported by: Gabriele Odone Patches: ASTERISK-22738-1.patch Tested by: Gabriele Odone (closes issue ASTERISK-22738) ........ Merged revisions 408312 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408314 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-18 19:19 +0000 [r408299] Richard Mudgett * contrib/ast-db-manage/config/env.py, contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py, contrib/ast-db-manage/config, contrib/ast-db-manage/voicemail/env.py, contrib/ast-db-manage/voicemail, contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py, contrib/ast-db-manage/config/versions, contrib/ast-db-manage/config/versions/21e526ad3040_add_pjsip_debug_option.py, contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py, contrib/ast-db-manage/voicemail/versions, contrib/ast-db-manage, /: alembic: Add svn:ignore *.pyc to directories and svn:executable to *.py files. ........ Merged revisions 408297 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-17 15:36 +0000 [r408272] Mark Michelson * /, res/res_pjsip/location.c, UPGRADE.txt, res/res_pjsip.c, res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h: Store SIP User-Agent information in contacts. When an endpoint sends a REGISTER request to Asterisk, we now will associate the User-Agent header with all contacts that were bound in that REGISTER request. ........ Merged revisions 408270 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-16 03:25 +0000 [r408199-408227] Matthew Jordan * /, main/pbx.c: pbx: Handle a completely empty dialplan during a context merge It is highly unlikely, but - at least in Asterisk 12 - theoretically possible to load Asterisk with no dialplan whatsoever. If that occurs, and some other module (that is not a pbx module) attempts to merge its contexts into the dialplan, the existing merge routine will crash. This is because it is not insane, and rightly believes that you provided some sort of dialplan, somewhere. This patch will gracefully merge the contexts in such a case. Note that this is highly unlikely to occur in 1.8/11, as features will most likely provide some dialplan via parking. However, in Asterisk 12, parking is now provided by res_parking, and hence may create its dialplan later. (closes issue ASTERISK-23297) Reported by: CJ Oster Review: https://reviewboard.asterisk.org/r/3222 ........ Merged revisions 408200 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408201 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408220 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, Makefile: buildsystem: Unbreak the build (infloop) on Asterisk 11+ Apparently r408084 ( https://reviewboard.asterisk.org/r/3212/ ) broke the build. This patch fixes it by ignoring the .lastclean dependencies if the MENUSELECT_EMBED variable is not defined. patches: tmp.diff uploaded by wdoekes (License 5674) Review: https://reviewboard.asterisk.org/r/3228/ ........ Merged revisions 408193 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408194 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-14 21:44 +0000 [r408139-408141] Scott Griepentrog * main/stasis_endpoints.c, /: ARI: correct upper/lower case URI discrepancies URI's are supposed to be case sensitive and all lower case. In practice some portions of URI's in ARI are case insensitive and others are not, such as TECH, which in one instance would match a lower case name and in another would not. In this patch, the ast_endpoint_lastest_snapshot() function is modified to change the TECH portion to full upper case before lookup. This resolves the discrepancy noted by the reporter. However I chose to avoid forcing the /ari prefix of the URI's to be lower case for now. Except for the two cases here, all URI's should be lower case, unless they are part of a resource name or id. Review: https://reviewboard.asterisk.org/r/3211/ Reported by: Zane Conkle (closes issue ASTERISK-23125) ........ Merged revisions 408140 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/format.c, /: format.c: correct possible null pointer dereference In ast_format_sdp_parse and ast_format_sdp_generate the check checks for a valid interface and function were potentially confusing, and hid an error in the test of the presence of the function that is called later. This patch clears up and corrects the test. Review: https://reviewboard.asterisk.org/r/3208/ (closes issue ASTERISK-23098) Reported by: marcelloceschia Patches: main_format.patch uploaded by marcelloceschia (license 6036) ASTERISK-23098.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 408137 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408138 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-14 13:31 +0000 [r408086] Walter Doekes * Makefile, /: buildsystem: Don't force main to depend on everything else. Directory 'main' only needs to depend on embedded modules. If no module embedding is selected, the dependency is dropped. Review: https://reviewboard.asterisk.org/r/3212/ ........ Merged revisions 408083 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 408084 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 408085 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-14 12:41 +0000 [r408070] Matthew Jordan * /, channels/chan_sip.c: chnan_sip: Set SIP_DEFER_BYE_ON_TRANSFER prior to calling bridge blind transfer This patch moves setting SIP_DEFER_BY_ON_TRANSFER prior to calling ast_bridge_transfer_blind. This prevents a BYE from being sent prior to the NOTIFY request that informs the transferor if the transfer succeeded or failed. This patch also clears said flag from the off nominal NOTIFY paths in the local_attended_transfer code, as once we've sent the NOTIFY request it is safe to send by the BYE request. This was caught by the blind-transfer-accountcode test in the Asterisk Test Suite. (closes issue ASTERISK-23290) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3214/ ........ Merged revisions 408069 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-14 08:52 +0000 [r408059] Tzafrir Cohen * Makefile, build_tools/install_subst (added): install_subst: helper script for installing with path substitution A helper script to copy a source file substituting any __ASTERISK__DIR__ with the content of $ASTDIR. Review: https://reviewboard.asterisk.org/r/3202/ 2014-02-13 18:52 +0000 [r407990-408006] Mark Michelson * res/res_pjsip_pubsub.c, /, res/res_pjsip_mwi.c: Remove all PJSIP MWI-specific use from our MWI code. PJSIP has built-in MWI code that could be useful to some degree, but our utilization of the API actually made our code a bit more cluttered since we had to have special cases peppered throughout. With this change, we move to using the pjsip_evsub API instead, which streamlines the code by removing special cases. Review: https://reviewboard.asterisk.org/r/3205 ........ Merged revisions 408005 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/location.c: Fix crash in AMI PJSIPShowEndpoint action. If an AOR has no permanent contacts, then the permanent_contacts container is never allocated. This makes the code safe in the face of NULLs. I also changed the variable that counts contacts from "num" to "total_contacts" since there are now two variables that are indicate numbers of things. ........ Merged revisions 407988 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-13 15:51 +0000 [r407989] Kinsey Moore * main/logger.c, CHANGES: Logger: Add dynamic logger channels This adds the ability to dynamically add and remove logger channels from Asterisk via the CLI. (closes issue AST-1150) Review: https://reviewboard.asterisk.org/r/3185/ 2014-02-12 08:25 +0000 [r407970] Walter Doekes * /, main/config.c: realtime: Fix ast_update2_realtime() on raspberry pi. The old code depended on undefined va_arg behaviour: calling a function twice with the same va_list parameter and expecting it to continue where it left off. The changed code behaves like the manpage says it should. Also added a bunch of early returns to trap errors (e.g. OOM) instead of crashing. The problem was found by Julian Lyndon-Smith. The deviant behaviour on the raspberry PI also uncovered another bug (fixed in r407875) in the res_config_pgsql.so driver. Reported by: jmls Tested by: jmls Review: https://reviewboard.asterisk.org/r/3201/ ........ Merged revisions 407968 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-11 20:17 +0000 [r407958] Joshua Colp * main/sched.c: scheduler: Remove hashtab usage. This is a first stab at tweaking the performance profile of the scheduler. Removing the hashtab usage removes an extra memory allocation when scheduling something and makes it so rescheduling does not incur any memory allocation at all. Review: https://reviewboard.asterisk.org/r/3199/ 2014-02-11 03:18 +0000 [r407940] Matthew Jordan * res/ari/resource_channels.c, /: ari/resource_channels: Add channel variables earlier in the creation process This patch tweaks the behaviour of POST /channels with channel variables such that the variables are passed into the pbx.c routines that perform the origination. This allows the variables to be assigned to the newly created channels immediately upon their construction, as opposed to be assigned after the originate has completed. The upshot of this is that the variables are available on the channels if they execute in the dialplan, as opposed to only being available once the channels are answered. Review: https://reviewboard.asterisk.org/r/3183/ ........ Merged revisions 407937 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-10 18:28 +0000 [r407926] Corey Farrell * channels/sip/include/reqresp_parser.h, channels/sip/include/route.h (added), channels/chan_sip.c, channels/sip/route.c (added), channels/sip/include/sip.h: chan_sip: Isolate code that manages struct sip_route. * Move route code to sip/route.c + sip/include/route.h * Rename functions to sip_route_* * Replace ad-hoc list code with macro's from linkedlists.h * Create sip_route_process_header() to processes Path and Record-Route headers (previously done with different code in build_route and build_path) * Add use of const where possible * Move struct uriparams, struct contact and contactliststruct from sip.h to reqresp_parser.h. sip/route.c uses reqresp_parser.h but not sip.h, this was a problem. These moved declares are not used outside of reqresp_parser. * While modifying reqprep() the lack of {} caused me trouble. I added them. * Code outside route.c treats sip_route as an opaque structure, using macro's or procedures for all access. (closes issue ASTERISK-22582) Reported by: Corey Farrell Review: https://reviewboard.asterisk.org/r/3173/ 2014-02-10 16:49 +0000 [r407876] Walter Doekes * res/res_config_pgsql.c, /: res_config_pgsql: Fix ast_update2_realtime calls. Fix so multiple updates from a single call works (add missing ','). Remove bogus ast_free's that weren't supposed to be there. Moved a few spaces for readability. Review: https://reviewboard.asterisk.org/r/3194/ ........ Merged revisions 407873 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407874 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407875 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-10 16:01 +0000 [r407859] Kinsey Moore * apps/app_confbridge.c, apps/confbridge/conf_state_multi_marked.c, apps/confbridge/conf_state_empty.c, apps/confbridge/conf_config_parser.c, configs/confbridge.conf.sample, /, apps/confbridge/include/confbridge.h, UPGRADE.txt: ConfBridge: Correct prompt playback target Currently, when the first marked user enters the conference that contains waitmarked users, a prompt is played indicating that the user is being placed into the conference. Unfortunately, this prompt is played to the marked user and not the waitmarked users which is not very helpful. This patch changes that behavior to play a prompt stating "The conference will now begin" to the entire conference after adding and unmuting the waitmarked users since the design of confbridge is not conducive to playing a prompt to a subset of users in a conference in an asynchronous manner. (closes issue PQ-1396) Review: https://reviewboard.asterisk.org/r/3155/ Reported by: Steve Pitts ........ Merged revisions 407857 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407858 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 20:52 +0000 [r407767] Richard Mudgett * /, channels/chan_iax2.c: chan_iax2: Add some more iaxs[] NULL checks to a routine already full of them. ........ Merged revisions 407764 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407765 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407766 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 20:17 +0000 [r407752] Matthew Jordan * /, main/security_events.c: security_events: Fix assertion failure in dev-mode on optional IE parsing When formatting an optional IE, the value is, of course, optional. As such, it is entirely appropriate for ast_json_object_get to return NULL. If that occurs, we now simply skip the IE that was requested, as it was not provided by the entity that raised the event. Thanks to George Joseph (gtjoseph) for catching this and reporting it in #asterisk-dev ........ Merged revisions 407750 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 20:01 +0000 [r407749] Joshua Colp * main/timing.c, res/res_timing_pthread.c, res/res_timing_dahdi.c, res/res_timing_timerfd.c, include/asterisk/timing.h, res/res_timing_kqueue.c: timing: Improve performance for most timing implementations. This change allows timing implementation data to be stored directly on the timer itself thus removing the requirement for many implementations to do a container lookup for the same information. This means that API calls into timing implementations can directly access the information they need instead of having to find it. Review: https://reviewboard.asterisk.org/r/3175/ 2014-02-07 19:40 +0000 [r407748] Matthew Jordan * /, funcs/func_cdr.c: funcs/func_cdr: Handle empty time values when extracting parsed values When extracting timestamps that are parsed, time stamp values that are not set (time values of 0.000000) should not actually result in a parsed string. The value should be skipped, and the result of the CDR function should be an empty string. Prior to this patch, the result was fed to the time formatting, which would result in an output of a date/time in 1969. ........ Merged revisions 407747 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 18:29 +0000 [r407731] Richard Mudgett * channels/chan_iax2.c, include/asterisk/frame.h, configs/iax.conf.sample, /: chan_iax2: Block unnecessary control frames to/from the wire. Establishing an IAX2 call between Asterisk v1.4 and v1.8 (or later) results in an unexpected call disconnect. The problem happens because newer values in the enum ast_control_frame_type are not consistent between the branch versions of Asterisk. For example: 1) v1.4 calls v1.8 (or later) using IAX2 2) v1.8 answers and sends a connected line update control frame. (on v1.8 AST_CONTROL_CONNECTED_LINE = 22) 3) v1.4 receives the control frame as an end-of-q (on v1.4 AST_CONTROL_END_OF_Q = 22) 4) v1.4 disconnects the call once the receive queue becomes empty. Several things are done by this patch to fix the problem and attempt to prevent it from happening again in the future: * Added a warning at the definition of enum ast_control_frame_type about how to add new control frame values. * Made block sending and receiving control frames that have no reason to go over the wire. * Extended the connectedline iax.conf parameter to also include the redirecting information updates. * Updated the connectedline iax.conf parameter documentation to include a notice that the parameter must be "no" when the peer is an Asterisk v1.4 instance. (closes issue AST-1302) Review: https://reviewboard.asterisk.org/r/3174/ ........ Merged revisions 407678 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407727 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407729 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 16:47 +0000 [r407677] Matthew Jordan * /, main/security_events.c: security_events: Fix error caused by DTD validation error The appdocsxml.dtd specifies that a "required" attribute in a parameter may have a value of yes, no, true, or false. On some systems, specifying "False" instead of "false" would cause a validation error. This patch fixes the casing to explicitly match the DTD. ........ Merged revisions 407676 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-07 13:15 +0000 [r407625] Tzafrir Cohen * /, configs/indications.conf.sample: indications.conf: add stutter tone; end properly * If the "stutter" (voicemail indication) tone is indeed a stutter tone, and it ends with a constant tone, make sure that it is the dial tone. This was done for India (in), Mexico (mx) and the Philippines (ph). * If no "stutter" tone exists for a country, provide one. This was done for Spain (es), Malaysia (my) and Venezuela (ve). Review: https://reviewboard.asterisk.org/r/3158/ ........ Merged revisions 407622 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407623 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407624 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-06 21:24 +0000 [r407602] Matthew Jordan * /, main/security_events.c, UPGRADE.txt, CHANGES: security_events: Add AMI documentation; output optional fields This patch adds documentation for the Security Events that are emited over AMI. It also notes these events in the UPGRADE/CHANGES file. ........ Merged revisions 407589 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-06 19:58 +0000 [r407588] Rusty Newton * /, configs/pjsip.conf.sample: configs/pjsip.conf.sample: Configuration section naming in pjsip.conf.sample needs a little clarification There is a bit of nuance to how you name things in pjsip.conf. This is a documentation patch to at least clear it up a little for users. Review: https://reviewboard.asterisk.org/r/3180/ ........ Merged revisions 407587 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-06 18:11 +0000 [r407574] Kevin Harwell * /, contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py: pjsip realtime: already created enum failure for postgresql If an enum had been previously created the alembic script would attempt to re-create it and an error would be generated while running migrations for a postgresql server. The work around for this is to use the ENUM object type for postgres as opposed to the generic enum type used by sqlalchemy. Using this type in the script seems to work properly for both postgres and mysql. ........ Merged revisions 407572 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-06 17:55 +0000 [r407573] Richard Mudgett * res/res_pjsip_logger.c, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip/pjsip_options.c, res/res_pjsip/config_transport.c, include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c, res/res_pjsip/config_auth.c, /, res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, res/res_pjsip_endpoint_identifier_ip.c, include/asterisk/res_pjsip_cli.h, res/res_pjsip/pjsip_cli.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/config_domain_aliases.c: res_pjsip: Updates and adds more PJSIP CLI commands. * Adds identify, transport, and registration support to the PJSIP CLI. * Creates three additional callbacks, one for an iterator, one for a comparator, and one for a container. This eliminates the link dependency from higher level modules to lower level ones. * Eliminates duplicate sorting in PJSIP CLI commands. * Cleans up PJSIP CLI output formatting. * Pushes CLI command registration down to the implementing source file. * Adds several ast_sip_destroy_sorcery functions to complement existing ast_sip_sorcery_initialize functions. The destroy functions unregister PJSIP CLI commands and PJSIP CLI formatters. Reported by: George Joseph Review: https://reviewboard.asterisk.org/r/3104/ ........ Merged revisions 407568 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 23:04 +0000 [r407514] Rusty Newton * /, formats/format_wav.c: formats/format_wav: enhancing log message "Not a wav file" to be clear on what is supported Modifying the log message to be more specific as to what is supported. Specifically it seems format_wav supports only PCM encoded versions with a lower-case '.wav' extension. (closes issues ASTERISK-22310) Reported by: Jim Credland Review: https://reviewboard.asterisk.org/r/3188/ ........ Merged revisions 407511 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407512 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407513 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 20:56 +0000 [r407462] Jonathan Rose * CHANGES, /: CHANGES: Improved description of Name/Creator changes to bridge ARI, adds AMI The changes log was written with language that was a little too internal Asterisk specific, so it's been changed to be more in the frame of reference of an ARI user. Also, previously the AMI event changes were omitted from the change log as well as the ability to include a bridge name in the ARI post bridges command. ........ Merged revisions 407461 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 20:43 +0000 [r407459] Kinsey Moore * main/logger.c, /: Logger: Fix handling of absolute paths This fixes path handling for log files so that an extra / is not appended to the file path when the path is absolute (begins with /). This would previously result in different but functionally equivalent paths in the output of 'logger show channels'. ........ Merged revisions 407455 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407456 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407458 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 19:42 +0000 [r407443] Kevin Harwell * res/res_pjsip/config_global.c, /: res_pjsip: When no global type the debug option defaults to "yes" If the global section was not specified in pjsip.conf then the configuration object does not exist in sorcery so when retrieving "debug" option it would return NULL. Then the NULL result was passed to ast_false utils function which would return false because it wasn't set to some representation of false, thus enabling sip debug logging. Made it so if the global config object does not exist then it will return a default of "no" for sip debugging. (issue ASTERISK-23038) Reported by: Rusty Newton ........ Merged revisions 407442 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 17:42 +0000 [r407422-407425] Jonathan Rose * CHANGES: CHANGES: Update changes log to include r403414 entry Adds note of additional 0 for operator option on app_record * CHANGES, /: CHANGES: Update changes log to include new bridge fields added in r404042 ........ Merged revisions 407419 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-05 15:29 +0000 [r407407] Matthew Jordan * rest-api/api-docs/playbacks.json, UPGRADE.txt, 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/deviceStates.json, rest-api/api-docs/mailboxes.json, rest-api/api-docs/asterisk.json, rest-api/api-docs/applications.json, rest-api/api-docs/channels.json, rest-api/api-docs/recordings.json, rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json, /: ARI/AMI: Update versions; update UPGRADE/CHANGES notes for 12.1.0 changes Due to backwards compatible changes made to AMI/ARI, the version needs to be bumped to 1.1.0/2.1.0, respectively. ........ Merged revisions 407402 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-04 20:15 +0000 [r407275-407340] Richard Mudgett * include/asterisk/devicestate.h, /, main/devicestate.c: devicestate: Make ast_devstate_changed_literal() return value and doxygen consistent. Nothing actually cares about the value anyway. (closes issue ASTERISK-23178) Reported by: Jonathan Rose ........ Merged revisions 407337 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407338 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407339 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Fix assertion for pjsip.conf authorization list options. (closes issue ASTERISK-23168) Reported by: George Joseph Review: https://reviewboard.asterisk.org/r/3143/ ........ Merged revisions 407324 from http://svn.asterisk.org/svn/asterisk/branches/12 * configs/sip.conf.sample, main/tcptls.c, /: tcptls.c: Made TLS handle a certificate chain file. Thanks to Guillaume Martres for doing the necessary research to validate the change. (closes issue ASTERISK-17727) Reported by: LN Patches: use_certificate_chain.patch (license #5864) patch uploaded by st documente_certificate_chain.patch (license #6576) patch uploaded by Guillaume Martres ........ Merged revisions 407272 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407273 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407274 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-04 16:55 +0000 [r407260] Matthew Jordan * /, funcs/func_cdr.c: funcs/func_cdr: Fix non-epoch timestamps broken by improper char array deref Thanks to snuffy for pointing this issue out and fixing it. (closes issue ASTERISK-23250) Reported by: snuffy patches: func_cdr-fix.diff uploaded by snuffy (License 5024) ........ Merged revisions 407259 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-04 02:22 +0000 [r407217] Joshua Colp * res/res_clialiases.c, /: res_clialiases: Fix crash when reloading and re-aliasing an alias that is in use. The code assumed that unregistering the alias would always succeed while in practice this is not actually true. A common case is the "reload" command itself. If the cli_aliases.conf configuration file was changed and reload executed the command would fail to unregister and ultimately point to freed memory. The reload process now checks whether unregistering succeeded or not and if not the old CLI alias is retained. (closes issue ASTERISK-19773) Reported by: Joel Vandal (closes issue ASTERISK-22757) Reported by: Gareth Blades ........ Merged revisions 407205 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407210 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407213 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-04 02:07 +0000 [r407198] Damien Wedhorn * /, channels/chan_skinny.c: Skinny - Fix deadlock when pickup of no call. Locking issues in skinny when picking up a call that doesn't exist. Cleaned up sub locking by fully removing and using the chan lock instead. Also changed ast_call_pickup to check whether chan was masq'd. (closes issue ASTERISK-23249) Reported by: wedhorn Tested by: snuffy, myself Patches: skinny-locking01.diff uploaded by wedhorn (license 5019) ........ Merged revisions 407197 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-03 01:31 +0000 [r407169] Matthew Jordan * main/cdr.c, /: cdrs: Check for applications to lock onto during dial begin handling This patch brings CDR processing further in line with r407085. During some dial operations, the application would not be locked to the Dial application and would instead continue to show the previously known application. In particular, this would occur when a Parked call would time out. This was due to a previous snapshot already locking the application to Park - processing this in a Dial Begin allows the Dial application to reassert its rightful place. (CDRs. Ugh.) But hooray for the Parked Call tests for catching this in the Asterisk Test Suite. ........ Merged revisions 407166 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-01 16:26 +0000 [r407154] Joshua Colp * res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /, res/stasis/app.c, res/ari/ari_model_validators.c, res/res_stasis.c, main/stasis_bridges.c: res_stasis: Enable transfers and provide events when they occur. This change enables transfers within ARI created bridges and adds events for when they occur. Unlike other events these will be received if *any* subscribed object is involved in the transfer. (closes issue ASTERISK-22984) Reported by: David M. Lee Review: https://reviewboard.asterisk.org/r/3120/ ........ Merged revisions 407153 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-02-01 00:25 +0000 [r407105] Corey Farrell * apps/app_stack.c, /: app_stack: protect against missing parameters to STACK_PEEK and LOCAL_PEEK STACK_PEEK requires 2 parameters and LOCAL_PEEK requires 1 parameter. This protects against situations where those parameters are blank or missing by logging an error and returning. (closes issue ASTERISK-23220) Reported by: James Sharp ........ Merged revisions 407100 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407103 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407104 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 23:40 +0000 [r407083-407085] Matthew Jordan * apps/app_dial.c, main/cdr.c, main/pbx.c, /, main/bridge_after.c, UPGRADE.txt, main/manager_channels.c: CDRs: fix a variety of dial status problems, h/hangup handler creating CDRs This patch fixes a number of small-ish problems that were noticed when witnessing the records that the FreePBX dialplan produces: (1) Mid-call events (as well as privacy options) have the ability to change the overall state of the Dial operation after the called party answers. This means that publishing the DialEnd event when the called party is premature; we have to wait for the execution of these subroutines to complete before we can signal the overall status of the DialEnd. This patch moves that publication and adds handlers for the mid-call events. (2) The AST_FLAG_OUTGOING channel flag is cleared if an after bridge goto datastore is detected. This flag was preventing CDRs from being recorded for all outbound channels that had a 'continue' option enabled on them by the Dial application. (3) The CDR engine now locks the 'Dial' application as being the CDR application if it detects that the current CDR has entered that app. This is similar to the logic that is done for Parking. In general, if we entered into Dial, then we want that CDR to record the application as such - this prevents pre-dial handlers, mid-call handlers, and other shenaniganry from changing the application value. (4) The CDR engine now checks for the AST_SOFTHANGUP_HANGUP_EXEC in more places to determine if the channel is in hangup logic or dead. In either case, we don't want to record changes in the channel. (5) The default option for "endbeforehexten" has been changed to "yes". In general, you don't want to see CDRs in the 'h' exten or in hangup logic. Since the semantics of that option changed in 12, it made sense to update the default value as well. (6) Finally, because we now have the ability to synchronize on the messages published to the CDR topic, on shutdown the CDR engine will now synchronize to the messages currently in flight. This helps to ensure that all in-flight CDRs are written before shutting down. (closes issue ASTERISK-23164) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3154 ........ Merged revisions 407084 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_dial.c, /: app_dial: Allow macro/gosub pre-bridge execution to occur on priorities The parsing for the destination of the macro/gosub uses the '^' character to separate out context, extension, and priority. However, the logic for the macro/gosub execution was written such that it would only do the actual macro/gosub jump if a '^' character existed. This doesn't apply when the macro/gosub jump occurs in a priority/priority label. This patch changes the logic so that the parsing still occurs, but the jump will occur even for priorities/priority labels. (issue ASTERISK-23164) Review: https://reviewboard.asterisk.org/r/3154 ........ Merged revisions 407041 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 407074 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 407082 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 23:15 +0000 [r407035-407037] Kevin Harwell * res/res_pjsip_logger.c, CHANGES, res/res_pjsip.c, include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c, contrib/ast-db-manage/config/versions/21e526ad3040_add_pjsip_debug_option.py (added), /, configs/pjsip.conf.sample, UPGRADE.txt: res_pjsip: Config option to enable PJSIP logger at load time. Added a "debug" configuration option for res_pjsip that when set to "yes" enables SIP messages to be logged. It is specified under the "system" type. Also added an alembic script to add the option to realtime. (closes issue ASTERISK-23038) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/3148/ ........ Merged revisions 407036 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_exten_state.c, /: res_pjsip_exten_state: Exporting global symbols caused load order issues Removed the exportation of global symbols from the module as it is no longer needed and it could potentially cause load problems as on some systems it would try to load before res_pjsip_pubsub ........ Merged revisions 407034 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 23:04 +0000 [r407033] Richard Mudgett * CHANGES, apps/app_chanspy.c: ChanSpy: Add ability to specify channel uniqueids as well as channel names. * Made ChanSpy accept a channel uniqueid or a fully specified channel name as the chanprefix parameter if the 'u' option is specified. (closes issue AFS-42) Review: https://reviewboard.asterisk.org/r/3160/ 2014-01-31 22:39 +0000 [r407030-407032] Mark Michelson * include/asterisk/res_pjsip_presence_xml.h (added), /: Add file that apparently got missed in the merge. ........ Merged revisions 407031 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_pidf_body_generator.c (added), include/asterisk/res_pjsip_exten_state.h (removed), res/res_pjsip_pubsub.exports.in, /, include/asterisk/res_pjsip_body_generator_types.h (added), res/res_pjsip_mwi.c, res/res_pjsip_xpidf_body_generator.c (added), res/res_pjsip_mwi_body_generator.c (added), res/res_pjsip_pubsub.c, res/res_pjsip_pidf.c (removed), res/res_pjsip_pidf_eyebeam_body_supplement.c (added), res/res_pjsip_exten_state.c, res/res_pjsip/presence_xml.c (added), include/asterisk/res_pjsip_pubsub.h: Decouple subscription handling from NOTIFY/PUBLISH body generation. When the PJSIP pubsub framework was created, subscription handlers were required to state what event they handled along with what body types they knew how to generate. While this serves well when implementing a base RFC, it has problems when trying to extend the body to support non-standard or proprietary body elements. The code also was NOTIFY-specific, meaning that when the time comes that we start writing code to send out PUBLISH requests with MWI or presence bodies, we would likely find ourselves duplicating code that had previously been written. This changeset introduces the concept of body generators and body supplements. A body generator is responsible for allocating a native structure for a given body type, providing the primary body content, converting the native structure to a string, and deallocating resources. A body supplement takes the primary body content (the native structure, not a string) generated by the body generator and adds nonstandard elements to the body. With these elements living in their own module, it becomes easy to extend our support for body types and to re-use resources when sending a PUBLISH request. Body generators and body supplements register themselves with the pubsub core, similar to how subscription and publish handlers had done. Now, subscription handlers do not need to know what type of body content they generate, but they still need to inform the pubsub core about what the default body type for a given event package is. The pubsub core keeps track of what body generators and body supplements have been registered. When a SUBSCRIBE arrives, the pubsub core will check that there is a subscription handler for the event in the SUBSCRIBE, then it will check that there is a body generator that can provide the content specified in the Accept header(s). Because of the nature of body generators and supplements, it means res_pjsip_exten_state and res_pjsip_mwi have been completely gutted. They no longer worry about body types, instead calling ast_sip_pubsub_generate_body_content() when they need to generate a NOTIFY body. Review: https://reviewboard.asterisk.org/r/3150 ........ Merged revisions 407016 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 22:23 +0000 [r407015-407029] Kevin Harwell * contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py, contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py, /, UPGRADE.txt: alembic: script modifications due to errors A couple of the scripts had errors that would not allow a full migration to take place. The extensions table needed to make its 'id' column a primary key in order to work with mysql. The other script ...add_endpoints... was missing tables that it was trying to add columns to. Added the primary key on id for extensions and added the tables in for the missing pjsip configuration options. While it is not ideal to modify already released scripts this was a case where it had to be done due to errors in the script and lacking a better alternative. Review: https://reviewboard.asterisk.org/r/3167/ ........ Merged revisions 407019 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_mwi.c: res_pjsip_mwi: Subscribe fails when missing aor name When subscribing to MWI (res_pjsip_mwi) and the sip uri did not contain a name (ex: sip:) then the subscription would fail since it would be unable to locate an associated aor. This patch makes it so that when a subscribe comes with no aor name then it will subscribe to all aors on the located endpoint. (closes issue ASTERISK-23072) Reported by: Bob M Review: https://reviewboard.asterisk.org/r/3164/ ........ Merged revisions 407014 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 15:08 +0000 [r407001] Kinsey Moore * res/res_pjsip_nat.c, /: PJSIP: Fix address for ACK in NAT situations In NAT scenarios where a call is placed to a Grandstream phone, res_pjsip will sometimes send the ACK to a 200 OK to the private address of the device behind the NAT instead of the address of the NAT device. This corrects that behavior by rewriting the address in the Contact header in the incoming 200 OK and the dialog's target address if necessary (since it has already been rewritten to the incorrect private address). (closes issue ASTERISK-23106) Review: https://reviewboard.asterisk.org/r/3168/ Reported by: Matt Jordan ........ Merged revisions 407000 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-31 05:31 +0000 [r406988] Damien Wedhorn * /, channels/chan_skinny.c: Skinny: fix up possible double unlock of chan. Return before chan is possibly unlocked a second time when hanging up a channel in SUBSTATE_OFFHOOK. ........ Merged revisions 406987 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-30 20:36 +0000 [r406936] Corey Farrell * main/udptl.c, res/res_rtp_asterisk.c, /: res_rtp_asterisk & udptl: fix port selection to work with SELinux restrictions ast_bind to a port reserved for another program by SELinux causes errno == EACCES. This caused random failures when binding rtp or udptl sockets. Treat EACCES as a non-fatal error, try next port. (closes issue ASTERISK-23134) Reported by: Corey Farrell ........ Merged revisions 406933 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406934 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406935 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-30 17:35 +0000 [r406920] Sean Bright * main/manager.c, /: Make a NOTICE about an invalid channel name more useful. ........ Merged revisions 406918 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406919 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-29 00:44 +0000 [r406863] Russell Bryant * /, configs/queues.conf.sample: queues.conf.sample Fix documented default for persistentmembers Closes issue ASTERISK-22662 ........ Merged revisions 406860 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406861 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406862 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-28 23:40 +0000 [r406789-406848] Kevin Harwell * res/res_pjsip_pubsub.c, /: res_pjsip_pubsub: potential crash on timeout What seems to be happening is if a subscription has been terminated and the subscription timeout/expires is less than the time it takes for all pending transactions (currently on the subscription) to end then the subscription timer will not have been canceled yet and sub will be null. Since the subscription has already been canceled nothing needs to be done so a null check in the asterisk code is sufficient in working around this problem. (closes issue ASTERISK-23129) Reported by: Dan Jenkins ........ Merged revisions 406847 from http://svn.asterisk.org/svn/asterisk/branches/12 * cdr/cdr_radius.c, cel/cel_radius.c, /, configure, include/asterisk/autoconfig.h.in, configure.ac: cdr_radius, cel_radius: build agains libfreeradius-client Asterisk's RADIUS module currently build against libradiusclient-ng, but this project has been superseeded by libfreeradius-client. The API is 99% compatible except that the header name has changed, the library name has changed, and the configuration file location has changed. (closes issue ASTERISK-22980) Reported by: Jeremy Lainé Patches: freeradius-client.patch uploaded by sharky (license 6561) ........ Merged revisions 406801 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406802 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406803 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip/include/res_pjsip_private.h, /, include/asterisk/compat.h: res_pjsip,compat: INFINITY and NAN undefined On some systems the values for INFINITY and NAN are not defined thus causing a build error on those systems. Added definitions for those if they had not previously been defined. (closes issue ASTERISK-23056) Reported by: capouch Patches: inf-nan-patch.txt uploaded by capouch (license 6564) ........ Merged revisions 406788 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-28 19:19 +0000 [r406778] Kinsey Moore * /, res/res_stasis_device_state.c: ARI: Make double subscribe respond with success Currently, attempting to subscribe an application to a device state that it has already subscribed to will generate a 500 error response. This will now be treated as a subscription refresh even though ARI subscriptions don't currently support lifetimes and will respond with the normal response for a successful subscription (200 OK). (closes issue ASTERISK-23143) Reported by: Matt Jordan ........ Merged revisions 406775 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-28 16:43 +0000 [r406724] Scott Griepentrog * main/rtp_engine.c, /: rtp_engine: improved handling of get_rtp_info failure In ast_rtp_instance_make_compatible(), after a failure of channel tech call get_rtp_info() to return peer_instance, the null pointer would be passed to ao2_ref, producing an error that looked like a refernce counting problem but is not. This patch corrects that and adds helpful LOG_ERROR messages to indicate which failure path occurred. (issue AST-1276) Review: https://reviewboard.asterisk.org/r/3156/ ........ Merged revisions 406721 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406722 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406723 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-28 00:20 +0000 [r406710] Richard Mudgett * /, tests/test_cel.c, tests/test_cdr.c: test_cdr.c, test_cel.c: Correctly destroy created bridges. * Fixed the test_cel_attended_transfer_bridges_link unit test to also account for the local channel link being destroyed now that the bridges are actually destroyed. * Made CDR unit test use its own version of do_sleep() from the CEL unit tests. ........ Merged revisions 406707 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-27 22:54 +0000 [r406647-406696] Kevin Harwell * CHANGES: manager: ExtensionStatus event status human readable Added a note in the changes file about the new 'StatusText' field that was added to the 'ExtensionStatus' event. (issue ASTERISK-23154) Reported by: Jonathan Rose * main/manager.c: manager: ExtensionStatus event status human readable When an 'ExtensionStatus' event was raised it included the status as a numerical value, but did not include a text description of the status. Added a 'StatusText' field to the event which is a string representation of the extension status. Also added this to the 'Extension State' command response. (closes issue ASTERISK-23154) Reported by: Jonathan Rose 2014-01-27 20:38 +0000 [r406646] Russell Bryant * main/config.c, /: Allow nested #includes in extconfig.conf extconfig.conf was hard-coded to not allow nested includes for some reason. The code has been this way since a patch was merged for ASTERISK-3333 (revision 4889), which was a significant update to this code ("Merge config updates"). I can't figure out any good reason why this should be limited. This patch just removes the limit and uses the default nesting depth limit. Closes issue ASTERISK-17837 Review: https://reviewboard.asterisk.org/r/3159/ ........ Merged revisions 406643 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406644 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406645 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-27 08:17 +0000 [r406618] Walter Doekes * main/manager.c, UPGRADE.txt, configs/manager.conf.sample: manager: The eventfilter= option now takes an extended regex. In pre-trunk versions (...12) it accepts a basic regex, which is confusing because all other regexes in asterisk are of the extended kind. Review: https://reviewboard.asterisk.org/r/3147/ 2014-01-27 01:25 +0000 [r406595] Russell Bryant * main/file.c, include/asterisk/channel.h, main/channel.c, /: Protect ast_filestream object when on a channel The ast_filestream object gets tacked on to a channel via chan->timingdata. It's a reference counted object, but the reference count isn't used when putting it on a channel. It's theoretically possible for another thread to interfere with the channel while it's unlocked and cause the filestream to get destroyed. Use the astobj2 reference count to make sure that as long as this code path is holding on the ast_filestream and passing it into the file.c playback code, that it knows it's valid. Bug reported by Leif Madsen. Review: https://reviewboard.asterisk.org/r/3135/ ........ Merged revisions 406566 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406567 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406574 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-26 23:04 +0000 [r406517] Richard Mudgett * /, main/tcptls.c: tcptls.c: Add missing cleanup on off nominal path. ........ Merged revisions 406514 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406515 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406516 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-26 14:19 +0000 [r406503] Tzafrir Cohen * contrib/scripts/live_ast: live_ast: run wrapped programs with exec live_ast can be used as a wrapper script to run asterisk, gdb or valgrind. In those cases it runs them and returns the result. It is more useful to use 'exec' to avoid having another odd process in the chain. Review: https://reviewboard.asterisk.org/r/3110/ 2014-01-26 02:11 +0000 [r406490] Joshua Colp * res/res_pjsip_session.c, /: res_pjsip_session: Be less strict with core requested outgoing capabilities. The core may (depending on circumstances) request a single codec on outgoing calls. Many channel drivers ignore or treat this as a suggestion while still including configured codecs. The res_pjsip_session logic treated this as an explicit request, leaving out other configured codecs. This change makes res_pjsip_session behave like other channel driver and simply adds the requested codec to the list. (closes issue ASTERISK-23082) Reported by: xrobau Review: https://reviewboard.asterisk.org/r/3140/ ........ Merged revisions 406489 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-24 23:33 +0000 [r406466] Richard Mudgett * /, main/cel.c: CEL: Protect data structures during reload and shutdown. The CEL data structures need to be protected during a configuration reload and shutdown. Asterisk crashed during a shutdown because CEL events were still in flight and the CEL data structures were already destroyed. * Protected the cel_backends, cel_dialstatus_store, and cel_linkedids ao2 containers with a global ao2 object wrapper. * Added NULL checks before use of the cel_backends, cel_dialstatus_store, and cel_linkedids ao2 containers in case the CEL module is already shutdown. * Fixed overloading of the cel_linkedids held objects reference count. During shutdown any held objects would be leaked. * Fixed memory leak of cel_linkedids held objects if the LINKEDID_END is not being tracked. The objects in the cel_linkedids container were not removed if the LINKEDID_END event is not used. * Added access protection to the cel_backends container during the CLI "cel show status" command. * Made cel_backends, cel_dialstatus_store, and cel_linkedids use the standard ao2 callback templates for the hash and cmp functions. * Eliminated unnecessary uses of RAII_VAR(). * Made ast_cel_engine_init() cleanup alocated resources on failure. (closes issue AST-1253) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/3128/ ........ Merged revisions 406417 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406418 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406465 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-24 22:34 +0000 [r406416] Jonathan Rose * main/utils.c, CHANGES: Thread Debugging: Add LWP to core show locks output This patch adds the LWP to core show locks output if it is available. Review: https://reviewboard.asterisk.org/r/3142/ 2014-01-24 22:18 +0000 [r406407] Richard Mudgett * main/manager.c, /: manager: Register atexit shutdown routine only once. * Made register atexit shutdown routine only once in __init_manager(). * Fixed some initial load failure conditions in __init_manager(). * Made reset options to defaults on reload when the reload will actually happen. * Removed unnecessary container traversals of the white/black filters during manager_free_user(). * ast_free() does not need a NULL check before calling. ........ Merged revisions 406359 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406400 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406401 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-24 21:46 +0000 [r406399] Jonathan Rose * res/res_config_pgsql.c, /: res_config_pgsql: Fix a memory leak and use RAII_VAR for cleanup when practical Review: https://reviewboard.asterisk.org/r/3141/ ........ Merged revisions 406360 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406361 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406389 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-24 18:13 +0000 [r406343] Richard Mudgett * main/manager.c, /: manager: Protect data structures during shutdown. Occasionally, the manager module would get an "INTERNAL_OBJ: bad magic number" error on a "core restart gracefully" command if an AMI connection is established. * Added ao2_global_obj protection to the sessions global container. * Fixed the order of unreferencing a session object in session_destroy(). * Removed unnecessary container traversals of the white/black filters during session_destructor(). (closes issue AST-1242) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/3144/ ........ Merged revisions 406341 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406342 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-23 23:43 +0000 [r406328] Mark Michelson * /: Today is not my day for writing code that compiles. ........ Merged revisions 406327 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-23 22:56 +0000 [r406312] Michael L. Young * /, addons/res_config_mysql.c: res_config_mysql: Fix Setting The Column Name Incorrectly When support for a realtime sorcery module was added in revision 386731, the wrong property was accidentally used for setting the column name to be updated in the database table. This patch fixes the typo. (closes issue ASTERISK-23177) Reported by: Denis Tested by: Denis Patches: asterisk-23177-use-field-name.diff by Michael L. Young (license 5026) ........ Merged revisions 406311 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-23 21:18 +0000 [r406298] Mark Michelson * res/res_pjsip_pidf.c, /: Multiple revisions 406294-406295 ........ r406294 | mmichelson | 2014-01-23 15:00:24 -0600 (Thu, 23 Jan 2014) | 11 lines Fix presence body errors found during testing: * PIDF bodies were reporting an "open" state in many cases where it should have been reporting "closed" * XPIDF bodies had XML nodes placed incorrectly within the hierarchy. * SIP URIs in XPIDF bodies did not go through XML sanitization * XML sanitization had some errors: * Right angle bracket was being replaced with "&rt;" instead of ">" * Double quote, apostrophe, and ampersand were not being escaped. ........ r406295 | mmichelson | 2014-01-23 15:09:35 -0600 (Thu, 23 Jan 2014) | 11 lines Fix presence body errors found during testing: * PIDF bodies were reporting an "open" state in many cases where it should have been reporting "closed" * XPIDF bodies had XML nodes placed incorrectly within the hierarchy. * SIP URIs in XPIDF bodies did not go through XML sanitization * XML sanitization had some errors: * Right angle bracket was being replaced with "&rt;" instead of ">" * Double quote, apostrophe, and ampersand were not being escaped. ........ Merged revisions 406294-406295 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-22 22:24 +0000 [r406269] Scott Griepentrog * main/pbx.c, /, utils/extconf.c: pbx.c: Pre-initialize timezone to avoid crash on destroy In ast_build_timing, initialize the timezone value to NULL in order to avoid deferencing an uninitialized value later when calling ast_destroy_timing. The timezone value could be uninitialized if ast_build_timing were to fail due to a zero length time string. (closes issue ASTERISK-22861) Reported by: Sebastian Murray-Roberts Review: https://reviewboard.asterisk.org/r/3134/ Patches: ast_build_timing-initialize-timezone.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 406241 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406245 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406264 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-22 19:36 +0000 [r406153-406224] Kinsey Moore * /, apps/app_confbridge.c: ConfBridge: Fix channel parameter documentation Confbridge AMI and CLI commands for mute, unmute, and setting the single video source can accept channel prefixes in lieu of a full channel name, but documentation states only that it is required and is a channel name. This corrects the documentation. (closes issue PQ-1397) Reported by: Steve Pitts ........ Merged revisions 406217 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406223 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: chan_sip: Decline image streams on unsupported transports This change allows chan_sip to decline individual image streams over unsupported transports in the SDP of the 200 response. Previously, an image stream offer with RTP/AVP as the transport would cause chan_sip to respond with a 488. (closes issue ASTERISK-22988) Reported by: adomjan Original patch by: adomjan ........ Merged revisions 406170 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406171 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406172 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_playback.c, /: res_stasis_playback: Correct error argument order Several of the playback error messages for invalid media input in res_stasis_playback.c had the media name and channel name reversed. They now correctly identify the channel name and media name. Reported by: skrusty ........ Merged revisions 406152 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-21 21:48 +0000 [r406134] Rusty Newton * /, res/res_pjsip.c: res_pjsip: Documentation improvement for Endpoint and AOR mailbox options. Making the help text for both more explicit regarding the format of mailbox identifiers. i.e. clarifying the format for app_voicemail mailboxes vs mailboxes from external MWI sources through modules such as res_external_mwi. ........ Merged revisions 406133 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-21 21:08 +0000 [r406082] Walter Doekes * main/manager.c, /, configs/manager.conf.sample: manager: Clarify eventfilter documentation. Textual changes only. Review: https://reviewboard.asterisk.org/r/3133/ ........ Merged revisions 406079 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406080 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406081 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-21 20:28 +0000 [r406006-406078] Kinsey Moore * channels/chan_mgcp.c, /: chan_mgcp: Enforce locking for oseq This restricts direct usage of global oseq so that all accesses are locked and threads are not racing to get oseq values that they did not claim. This also fixes a build error in res_pktccops under dev mode. (closes issue ASTERISK-23100) Reported by: adomjan Patch by: adomjan ........ Merged revisions 406037 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 406038 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 406049 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_outbound_registration.c, res/res_pjsip.c: PJSIP: Handle headers in a list appropriately The PJSIP header parsing function (pjsip_parse_hdr) can generate more than one header instance from a single header field. These header instances exist as a list attached to the returned header and must be handled appropriately when they are added to a message or else only the first header instance will be used. This changes the linked list functions used in outbound proxy code to merge the lists properly. ........ Merged revisions 406020 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_sounds.h, res/ari/resource_bridges.h, res/ari/resource_device_states.h, res/ari/resource_mailboxes.h, res/ari/resource_asterisk.h, rest-api/api-docs/channels.json, res/ari/resource_applications.h, res/ari/resource_channels.c, res/res_ari_playbacks.c, res/res_ari_sounds.c, rest-api-templates/asterisk_processor.py, res/ari/resource_channels.h, res/res_ari_bridges.c, /, res/res_ari_device_states.c, rest-api-templates/ari_resource.h.mustache, res/res_ari_mailboxes.c, res/res_ari_asterisk.c, res/res_ari_applications.c, rest-api-templates/res_ari_resource.c.mustache, rest-api-templates/body_parsing.mustache (added), res/res_ari_channels.c, res/ari/resource_playbacks.h, rest-api-templates/param_parsing.mustache: ARI: Support channel variables in originate This adds back in support for specifying channel variables during an originate without compromising the ability to specify query parameters in the JSON body. This was accomplished by generating the body-parsing code in a separate function instead of being integrated with the URI query parameter parsing code such that it could be called by paths with body parameters. This is transparent to the user of the API and prevents manual duplication of code or data structures. (closes issue ASTERISK-23051) Review: https://reviewboard.asterisk.org/r/3122/ Reported by: Matt Jordan ........ Merged revisions 406003 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-20 23:25 +0000 [r405985] Damien Wedhorn * /, channels/chan_skinny.c: Skinny: fix up handling of fragmented packets. Bad offset in reading second or more fragment of skinny packets. Fixed to offset by char (single byte) rather than size of req. ........ Merged revisions 405982 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-20 22:23 +0000 [r405947] Richard Mudgett * channels/sig_pri.c, /: chan_dahdi/PRI: Suppress CONNECTED_LINE updates when nothing in the udpate is valid. * Also simplified some subddress handling code. (closes issue ASTERISK-23008) Reported by: Michael Cargile ........ Merged revisions 405926 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405927 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405928 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-20 21:56 +0000 [r405925] Damien Wedhorn * /, channels/chan_skinny.c: Skinny: fix up session logging. Logging from the skinny session loop was providing some incorrect reasons for exiting the loop. Cleaned up messages and handling so correct reason displayed. ........ Merged revisions 405924 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-20 18:18 +0000 [r405910] Jonathan Rose * channels/chan_pjsip.c, /: chan_pjsip: Provide a means for tracking device state when holding/unholding Previously PJSIP did not track hold/unhold and it would always simply be 'inuse'. This patch fixes that. review: https://reviewboard.asterisk.org/r/3129/ ........ Merged revisions 405908 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-19 00:01 +0000 [r405894] Damien Wedhorn * /, channels/chan_skinny.c: Skinny: fix reversed device reset from CLI. Existing code would do a full device restart when "skinny reset device" was entered at the CLI and do a reset when "skinny reset device restart" entered. ........ Merged revisions 405893 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-17 22:09 +0000 [r405878] Sean Bright * /, channels/chan_sip.c: Make sure the maxptime attribute is added to the correct offers. ........ Merged revisions 405877 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-17 21:33 +0000 [r405862-405876] Scott Griepentrog * main/format_pref.c, main/sorcery.c, main/frame.c, /, include/asterisk/format_pref.h, res/res_pjsip_sdp_rtp.c: pjsip: fix support for allow=all This change adds improvements to support for allow=all in pjsip.conf so that it functions as intended. Previously, the allow/disallow socery configuration would set & clear codecs from the media.codecs and media.prefs list, but if all was specified the prefs list was not updated. Then a call would fail when create_outgoing_sdp_stream() created an SDP with no audio codecs. A new function ast_codec_pref_append_all() is provided to add all codecs to the prefs list - only those not already on the list. This enables the configuration to specify a codec preference, but still add all codecs, and even then remove some codecs, as shown in this example: allow = ulaw, alaw, all, !g729, !g723 Also, the display order of allow in cli output is updated to match the configuration by using prefs instead of caps when generating a human readable string. Finally, a change to create_outgoing_sdp_stream() skips a codec when it does not have a payload code instead of the call failing. (closes issue ASTERISK-23018) Reported by: xrobau Review: https://reviewboard.asterisk.org/r/3131/ ........ Merged revisions 405875 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/http.c: http: supported chunked Transfer-Encoding This change implements support for HTTP Transfer-Encoding chunked in both JSON and Form (post vars) body content. A new function ast_http_get_contents() handles both regular and chunked mode body, returning after the entire body is received. (closes issue ASTERISK-23068) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3125/ ........ Merged revisions 405861 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-17 18:55 +0000 [r405778-405844] Rusty Newton * res/res_pjsip.c, /: Fixing some XML syntax issues with my previous commit at r405777 for ASTERISK-23071 ........ Merged revisions 405843 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c, doc/asterisk.8, main/features.c, configs/sip.conf.sample, apps/app_queue.c, apps/app_transfer.c, channels/chan_iax2.c: Documentation: doc fixes across various parts of the code for ASTERISK issues 23061,23028,23046,23027 Fixes typos of "transfered" instead of "transferred" in various code. Fixes incorrect gosub param help text for app_queue. Fixes Asterisk man pages containing unquoted minus signs. Adds note about the "textsupport" option in sip.conf.sample. (issue ASTERISK-23061) (issue ASTERISK-23028) (issue ASTERISK-23046) (issue ASTERISK-23027) (closes issue ASTERISK-23061) (closes issue ASTERISK-23028) (closes issue ASTERISK-23046) (closes issue ASTERISK-23027) Reported by: Eugene, Jeremy Laine, Denis Pantsyrev Patches: transferred.patch uploaded by Jeremy Laine (license 6561) hyphen.patch uploaded by Jeremy Laine (license 6561) sip.conf.sample.patch uploaded by Eugene (license 6360) ........ Merged revisions 405791 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405792 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405829 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip.c, /: res_pjsip: enhance documentation for mailboxes options, for both endpoints and aors Made documentation more explicit as to the use of the both options. (issue ASTERISK-23071) (closes issue ASTERISK-23071) Reported by: Matt Jordan ........ Merged revisions 405777 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-17 14:17 +0000 [r405766] Walter Doekes * res/res_musiconhold.c, CHANGES: Enable wide band audio in musiconhold streams. Review: https://reviewboard.asterisk.org/r/3112/ 2014-01-16 20:06 +0000 [r405747-405749] Kevin Harwell * res/res_pjsip/pjsip_options.c, /: res_pjsip: AOR option qualify_frequency not respected on startup If an endpoint had previously dynamically registered a contact and the contact information was successfully stored in astdb then upon restart the qualify notifications would not be sent out if the qualify_frequency was set. This was due to the fact that only permanent contacts were being checked and scheduled for qualifies on startup. Modified the code to check and schedule all registered contacts at startup. (closes issue ASTERISK-23062) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/3124/ ........ Merged revisions 405748 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/manager.c, /: manager: Originate doesn't abort on failed format_cap allocation action_originate responds to the remote system with an error when cap==NULL, but doesn't return (abort the originate). Patched to return. (closes issue ASTERISK-23034) Reported by: Corey Farrell Patches: ASTERISK-23034.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 405745 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405746 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-16 19:33 +0000 [r405744] Kinsey Moore * /, res/res_pjsip.c: PJSIP: Fix outbound OPTIONS support When path support was added and contacts were made available during request creation and transmission, the code path used by outbound qualify support was not modified correctly and was causing request creation to fail. This ensures that outbound request creation with only a contact and no dialog, endpoint, or uri can succeed which restores qualify support. Reported by: gtjoseph Reported by: kharwell ........ Merged revisions 405743 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-16 19:13 +0000 [r405644-405695] Kevin Harwell * /, res/res_fax.c, configs/res_fax.conf.sample: res_fax: check_modem_rate() returned incorrect rate for V.27 According to the new standard for V.27 and V.32 they are able to transmit at a bit rate of 4,800 or 9,600. The check_mode_rate function needed to be updated to reflect this. Also, because of this change the default 'minrate' value was updated to be 4800. (closes issue ASTERISK-22790) Reported by: Paolo Compagnini Patches: res_fax.txt uploaded by looserouting (license 6548) ........ Merged revisions 405656 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405693 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405694 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_pjsip.c: chan_pjsip: initial device state on endpoints is INVALID When endpoints get loaded their device state gets set to 'INVALID' because the channel driver has not been loaded yet. Fixed by updating the device state for every endpoint upon load of the channel driver. (closes issue ASTERISK-23065) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/3123/ ........ Merged revisions 405643 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-15 16:51 +0000 [r405586-405589] Jonathan Rose * CHANGES: Make 12 - 12.1 CHANGES log the same as in 12 * CHANGES, /: Include CHANGES info for r405553 ........ Merged revisions 405585 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-15 16:36 +0000 [r405584] Joshua Colp * /, cel/cel_manager.c: cel_manager: Don't crash if configuration file is invalid. The cel_manager module did not properly handle the case where the configuration file was invalid. The module will now output a warning message and disable itself if this occurs. Reported by: Bryan Walters ........ Merged revisions 405581 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405582 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405583 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-15 13:16 +0000 [r405566] Kinsey Moore * res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, res/res_pjsip_path.c (added), res/res_pjsip_mwi.c, res/res_pjsip/pjsip_distributor.c, res/res_pjsip_diversion.c, channels/chan_pjsip.c, res/res_pjsip_registrar.c, res/res_pjsip_refer.c, include/asterisk/res_pjsip.h, include/asterisk/res_pjsip_session.h, res/res_pjsip_notify.c, /, res/res_pjsip_messaging.c, res/res_pjsip_caller_id.c, res/res_pjsip_t38.c, res/res_pjsip.c, res/res_pjsip/pjsip_options.c, res/res_pjsip_nat.c, res/res_pjsip_session.c, contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py (added), res/res_pjsip_header_funcs.c: PJSIP: Add Path header support This adds Path support to chan_pjsip in res_pjsip_path.c with minimal additions in res_pjsip_registrar.c to store the path and additions in res_pjsip_outbound_registration.c to enable advertisement of path support to registrars and intervening proxies. Path information is stored on contacts and is enabled via Address of Record (AoRs) and Registration configuration sections. While adding path support, it became necessary to be able to add SIP supplements that handled messages outside of sessions, so a framework for handling these types of hooks was added in parallel to the already-existing session supplements and several senders of out-of-dialog requests were refactored as a result. (closes issue ASTERISK-21084) Review: https://reviewboard.asterisk.org/r/3050/ ........ Merged revisions 405565 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-14 23:44 +0000 [r405554] Jonathan Rose * res/res_stasis_mailbox.exports.in (added), res/ari/ari_model_validators.h, rest-api/api-docs/mailboxes.json (added), include/asterisk/stasis_app_mailbox.h (added), res/ari/resource_mailboxes.c (added), /, res/ari.make, res/res_ari_mailboxes.c (added), res/ari/resource_mailboxes.h (added), res/res_stasis_mailbox.c (added), rest-api/resources.json, res/ari/ari_model_validators.c: ARI: Add mailboxes resource for controlling and polling external MWI Adds the following AMI commands: PUT mailboxes/mailboxName modifies mailbox state and implicitly creates new mailboxes GET mailboxes/mailboxName retrieves a JSON representation of a single mailbox if it exists GET mailboxes retrieves a JSON array of all mailboxes DELETE mailbox/mailboxName deletes a mailbox Note that res_mwi_external must be loaded for these functions to actually do anything. Review: https://reviewboard.asterisk.org/r/3117/ ........ Merged revisions 405553 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-14 21:46 +0000 [r405542] Richard Mudgett * main/strings.c, /: string container: Remove unnecessary RAII_VAR usage and string object lock. ........ Merged revisions 405541 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-14 18:15 +0000 [r405437] Scott Griepentrog * /, channels/chan_sip.c: chan_sip: fix Local From tag on outbound register regression In ASTERISK-12117, an improvement to insure consistant local from tags on outbound registrations resulted in an undesirable behavior - caused by leftover unexpired sip_pvt dialogs (with the previous cseq number), resulting in many uncessary REGISTER requests. Instead of significant rework of transmit_register(), this change deletes the dialogs after a 200 OK response indiciating a successful registration, keeping the old dialogs from interfering with normal operation. (closes issue ASTERISK-22946) Reported by: Stephan Eisvogel Review: https://reviewboard.asterisk.org/r/3109/ ........ Merged revisions 405433 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405434 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405435 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-14 18:14 +0000 [r405436] Richard Mudgett * apps/app_verbose.c, main/asterisk.c, configs/logger.conf.sample, main/cli.c, include/asterisk/logger.h, main/pbx.c, main/manager.c, /, funcs/func_timeout.c, apps/app_dumpchan.c, main/logger.c, UPGRADE.txt: verbosity: Fix performance of console verbose messages. The per console verbose level feature as previously implemented caused a large performance penalty. The fix required some minor incompatibilities if the new rasterisk is used to connect to an earlier version. If the new rasterisk connects to an older Asterisk version then the root console verbose level is always affected by the "core set verbose" command of the remote console even though it may appear to only affect the current console. If an older version of rasterisk connects to the new version then the "core set verbose" command will have no effect. * Fixed the verbose performance by not generating a verbose message if nothing is going to use it and then filtered any generated verbose messages before actually sending them to the remote consoles. * Split the "core set debug" and "core set verbose" CLI commands to remove the per module verbose support that cannot work with the per console verbose level. * Added a silent option to the "core set verbose" command. * Fixed "core set debug off" tab completion. * Made "core show settings" list the current console verbosity in addition to the root console verbosity. * Changed the default verbose level of the 'verbose' setting in the logger.conf [logfiles] section. The default is now to once again follow the current root console level. As a result, using the AMI Command action with "core set verbose" could again set the root console verbose level and affect the verbose level logged. (closes issue AST-1252) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/3114/ ........ Merged revisions 405431 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405432 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-14 16:43 +0000 [r405420] Mark Michelson * res/res_pjsip/pjsip_distributor.c: Fix erroneous behavior when sending auth rejection to artificial endpoint. We were not including an authentication challenge when sending a 401 response to unmatched endpoints. This was due to the conversion to use a vector for authentication section names on an endpoint. The vector for artificial endpoints was empty, resulting in the challenge being sent back containing no challenges. This is worked around by placing a bogus value in the artificial endpoint's auth vector. This value is never looked up by anything, since they instead will directly call ast_sip_get_artificial_auth(). 2014-01-14 03:27 +0000 [r405369] Damien Wedhorn * /, channels/chan_skinny.c: Skinny: do not add call to missed calls list if answered elsewhere. Patch updates skinny devices with a SKINNY_CONNECTED callstate if an inbound ringing or callwaiting call is answered elsewhere. ........ Merged revisions 405367 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-13 13:34 +0000 [r405339] Kinsey Moore * /, res/res_pjsip/pjsip_cli.c: res_pjsip: Fix CLI tab completion issues This fixes several issues with the new res_pjsip CLI tab completion such as output of headers during tab completion and being able to tab-complete more items than the code actually handled (further items would simply be ignored). (closes issue ASTERISK-23081) Review: https://reviewboard.asterisk.org/r/3115/ Reported by: xrobau ........ Merged revisions 405338 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-12 22:24 +0000 [r405326] Joshua Colp * res/ari/resource_playbacks.c, res/ari/resource_channels.c, include/asterisk/ari.h, res/ari/resource_bridges.c, res/ari/resource_recordings.c, res/ari/resource_device_states.c, res/res_ari.c, res/ari/resource_endpoints.c, /, res/ari/resource_applications.c: res_ari: Fix various memory leaks. This change fixes a few memory leaks that were found based on a mailing list post. 1. Some JSON response messages were never freed. This was caused by the documentation stating that message references were stolen when in reality they were not. The code now follows the documentation and usage has been updated. 2. HTTP response headers were never freed. 3. The variable list for wildcards paths was never freed. (closes issue ASTERISK-23128) Reported by: Kenneth Watson (on list) Review: https://reviewboard.asterisk.org/r/3119/ ........ Merged revisions 405325 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-12 22:13 +0000 [r405313-405314] Matthew Jordan * apps/app_forkcdr.c, /, funcs/func_cdr.c, include/asterisk/cdr.h, apps/app_cdr.c, main/cdr.c: CDRs: Synchronize dialplan applications that manipulate CDRs with the engine In https://reviewboard.asterisk.org/r/3057/, applications and functions that manipulate CDRs were made to interact over Stasis. This was done to synchronize manipulations of CDRs from the dialplan with the updates the engine itself receives over the message bus. This change rested on a faulty premise: that messages published to the CDR topic or to a topic that forwards to the CDR topic are synchronized with the messages handled by the CDR topic subscription in the CDR engine. This is not the case. There is no ordering guaranteed for two messages published to the same topic; ordering is only guaranteed if a message is published to the same subscriber. Stasis was modified in r405311 to allow a publisher to synchronize on the subscriber. This patch uses that API to synchronize the CDR publishers with the CDR engine message router, which maintains the overall topic subscription. (closes issue ASTERISK-22884) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3099/ ........ Merged revisions 405312 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis.c, main/stasis_message_router.c, /, include/asterisk/stasis.h, include/asterisk/stasis_message_router.h, tests/test_stasis.c: stasis: Add methods to allow for synchronous publishing to subscriber This patch adds an API call to Stasis that allows a publisher to publish a stasis message that will not return until a specific subscriber handles the message. Since a subscriber can have their own forwarding topic which orders messages from many topics, this allows a publisher who knows of that subscriber to synchronize to that subscriber regardless of the forwarding relationships between topics. This is of particular use for dialplan applications that need to synchronize on a particular subscriber's handling of a message. (issue ASTERISK-22884) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3099/ ........ Merged revisions 405311 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-10 20:00 +0000 [r405299] Mark Michelson * /, res/res_pjsip/security_events.c: Print "" for artificial endpoint in PJSIP security events. Previously, this printed a UUID, which was not very clear when dealing with an artificial endpoint. Review: https://reviewboard.asterisk.org/r/3113 ........ Merged revisions 405298 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-10 18:17 +0000 [r405284] Richard Mudgett * /, main/logger.c: Logging callid: Fix some sizeof() references per coding guidelines. ........ Merged revisions 405281 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405282 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 23:52 +0000 [r405270] Jonathan Rose * res/res_pjsip_session.c: PJSIP: Add unhold on reinvite without SDP behavior Review: https://reviewboard.asterisk.org/r/3106/ 2014-01-09 23:50 +0000 [r405269] Damien Wedhorn * channels/chan_dahdi.c, /: Fix chan_dahdi copile issue in dev-mode. Error "unused variable i in dahdi_create_channel_range" when compiling in dev-mode. Small restructure to dahdi_create_channel_range to move the for(x) loop and int i,x to a block within the IFDEF. ........ Merged revisions 405268 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 23:39 +0000 [r405267] Kevin Harwell * res/res_pjsip.c, /, res/res_pjsip_messaging.c: res_pjsip_messaging: potential for field values in from/to headers to be missing Added in ability to specify display name format ("name" ) for a given URI and made sure it was fully propagated to the outgoing message. Also made it so outoing messages in res_pjsip always send as "sip:". (closes issue ASTERISK-22924) Reported by: Anthony Messina Review: https://reviewboard.asterisk.org/r/3094/ ........ Merged revisions 405266 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 20:34 +0000 [r405254] Kinsey Moore * main/astobj2.c, res/res_pjsip_session.c, /, include/asterisk/astobj2.h: astobj2: Correct ao2_iterator opacity violations This corrects the ao2_iterator opacity violations in res_pjsip_session.c by adding a global function to get the number of elements inside the container hidden behind the iterator. (closes issue ASTERISK-23053) Review: https://reviewboard.asterisk.org/r/3111/ Reported by: Richard Mudgett ........ Merged revisions 405253 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 16:52 +0000 [r405236] Kevin Harwell * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fails to resume WebRTC call from hold In ast_rtp_ice_start if the ice session create check list failed, start check was never initiated and ice_started was never set to true. Upon re-entering the function (for instance, [un]hold) it would try to create the check list again with duplicate remote candidates. Fixed so that if the create check list fails the necessary data structures are properly re-initialized for any subsequent retries. Note, it was decided to not stop ice support (by calling ast_rtp_ice_stop) on a check list failure because it possible things might still work. However, a debug message was added to help with any future troubleshooting. (closes issue ASTERISK-22911) Reported by: Vytis Valentinavičius Patches: works_on_my_machine.patch uploaded by xytis (license 6558) ........ Merged revisions 405234 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405235 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 15:50 +0000 [r405217] Matthew Jordan * /, apps/app_confbridge.c, apps/confbridge/conf_state_multi_marked.c: app_confbridge: Fix crash caused when waitmarked/marked users leave together When waitmarked users join a ConfBridge, the conference state is transitioned from EMPTY -> INACTIVE. In this state, the users are maintined in a waiting users list. When a marked user joins, the ConfBridge conference transitions from INACTIVE -> MULTI_MARKED, and all users are put onto the active list of users. This process works correctly. When the marked user leaves, if they are the last marked user, the MULTI_MARKED state does the following: (1) It plays back a message to the bridge stating that the leader has left the conference. This requires an unlocking of the bridge. (2) It moves waitmarked users back to the waiting list (3) It transitions to the appropriate state: in this case, INACTIVE However, because it plays the prompt back to the bridge before moving the users and before finishing the state transition, this creates a race condition: with the bridge unlocked, waitmarked users who leave the conference (or are kicked from it) can cause a state transition of the bridge to another state before the conference is transitioned to the INACTIVE state. This causes the state machine to get a bit wonky, often leading to a crash when the MULTI_MARKED state attempts to conclude its processing. This patch fixes this problem: (1) It prevents kicked users from being kicked again. That's just a nicety. (2) More importantly, it fixes the race condition by only playing the prompt once the state has transitioned correctly to INACTIVE. If waitmarked users sneak out during the prompt being played, no harm no foul. Review: https://reviewboard.asterisk.org/r/3108/ Note that the patch committed here is essentially the same as uploaded by Simon Moxon on ASTERISK-22740, with the addition of the double kick prevention. (closes issue AST-1258) Reported by: Steve Pitts (closes issue ASTERISK-22740) Reported by: Simon Moxon patches: ASTERISK-22740.diff uploaded by Simon Moxon (license 6546) ........ Merged revisions 405215 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405216 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-09 14:15 +0000 [r405163] Walter Doekes * /, apps/app_dumpchan.c: "Minimun" typo. ........ Merged revisions 405160 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405161 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405162 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-08 17:23 +0000 [r405144] Mark Michelson * /, res/res_pjsip/security_events.c: Use proper case for checking if digest authentication is used. ........ Merged revisions 405131 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-08 16:34 +0000 [r405129-405130] Kinsey Moore * /, configure, configure.ac, pbx/pbx_lua.c: pbx_lua: Add support for Lua 5.2 This adds support for Lua 5.2 in pbx_lua which is available on newer operating systems. (closes issue ASTERISK-23011) Review: https://reviewboard.asterisk.org/r/3075/ Reported by: George Joseph Patch by: George Joseph ........ Merged revisions 405090 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405091 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405124 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: Add the missing part of r400140 When the patch to add retry-on-forbidden-response was committed, part of the patch for chan_sip was not committed which caused the feature to be entirely nonfunctional. This corrects the code in question. (closes issue ASTERISK-17138) Review: https://reviewboard.asterisk.org/r/2874 ........ Merged revisions 405033 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 405081 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405083 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-07 19:56 +0000 [r405020-405035] Joshua Colp * /, res/res_pjsip_acl.c: res_pjsip_acl: Fix another case of assuming a contact will always contain a URI. ........ Merged revisions 405034 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_nat.c: res_pjsip_nat: Don't assume a Contact header will always contain a URI. If the 'rewrite_contact' option was enabled and a Contact header was received which contained a '*' a crash would occur. This change makes the res_pjsip_nat module ignore the Contact header if it contains only a '*'. (closes issue ASTERISK-23101) Reported by: Matt Jordan ........ Merged revisions 405019 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-06 21:55 +0000 [r404953-405007] Richard Mudgett * apps/app_voicemail.c, /: app_voicemail: Explicitly set defaultenabled=yes ........ Merged revisions 405006 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_mwi_external_ami.c (added): External MWI AMI support. The external MWI AMI interface provides a thin wrapper around the core external MWI resource. The resource adds the following AMI actions: MWIGet, MWIDelete, and MWIUpdate. (closes issue AFS-46) Review: https://reviewboard.asterisk.org/r/3061/ ........ Merged revisions 404954 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_mwi_external.c (added), configs/sorcery.conf.sample, include/asterisk/res_mwi_external.h (added), res/res_mwi_external.exports.in (added), apps/app_voicemail.c: External MWI core support. * The core external MWI resource provides for MWI message counts persistence using sorcery. With sorcery, the user is able to configure which sorcery wizzard backend to use if the default astdb is not desired. * The core external MWI resoruce provides some debugging CLI commands enabled by defining MWI_DEBUG_CLI. The debugging CLI commands are: "mwi delete all", "mwi delete like ", "mwi delete mailbox ", "mwi list all", "mwi list like ", "mwi show mailbox ", and "mwi update mailbox [ []]". (closes issue AFS-43) Review: https://reviewboard.asterisk.org/r/3061/ ........ Merged revisions 404952 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-05 16:01 +0000 [r404924-404936] Joshua Colp * /, res/res_pjsip_outbound_registration.c: res_pjsip_outbound_registration: Don't assume that a registration client will always exist. ........ Merged revisions 404935 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_outbound_registration.c: res_pjsip_outbound_registration: Create registration client in pj thread. Depending on which threading was loading the outbound registration it was possible for the registration client to be allocated outside of a pj thread. This change moves the creation inside the synchronous task where it is guaranteed it will occur in a pj thread. Reported by: Rob Thomas ........ Merged revisions 404923 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-04 10:52 +0000 [r404912] Tzafrir Cohen * main/asterisk.c, /: asterisk.c: suppress live_dangerously warning on rasterisk Even since the fixes of AST-2013-007, Asterisk prints the following warning on startup if the user decided to live dangerously: Privilege escalation protection disabled! See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details. This message is intended for the logs and interactive startup. No need for it to appear on a remote console. This commit removes it from there. (closes issue ASTERISK-23084) Review: https://reviewboard.asterisk.org/r/3101/ ........ Merged revisions 404861 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404888 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404911 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 22:00 +0000 [r404860] Kevin Harwell * cel/cel_pgsql.c, /: cel_pgsql: module not correctly reloading Upon reload the module unconditionally "unloaded" the module (freeing memory and setting pointers to NULL) and then when attempting a "load" if the config file had not changed then nothing would be reinitialized. By moving the "unload" to occur conditionally (reload only) after an attempted configuration load, but before module "loading" alleviates the issue. The module now loads/unloads/reloads correctly. (closes issue ASTERISK-22871) Reported by: Matteo ........ Merged revisions 404857 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404858 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404859 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 21:45 +0000 [r404844-404856] Matthew Jordan * /, res/res_pjsip_logger.c: res_pjsip_logger: Add the ASTERISK_FILE_VERSION macro Registering yourself with the Asterisk core is the nice thing to do, even when you're a logging module. ........ Merged revisions 404855 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_authenticator_digest.c, tests/test_utils.c: res_pjsip_authenticator_digest: Fix md5 hash buffer An md5 hash is 32 bytes long. The char buffer must be at least 33 bytes to avoid clobbering of the stack. This patch also fixes a potential clobbering in test_utils.c. Thanks to Andrew Nagy for reporting and testing this out in #asterisk-dev Reported by: Andrew Nagy Tested by: Andrew Nagy ........ Merged revisions 404843 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 20:02 +0000 [r404787-404832] Kevin Harwell * main/manager.c: manager: UserEvent including action on output AMI action UserEvent event response would include the action header in its keyvalue pairs list. Adjusted the start of the header loop to skip over the action part. (closes issue ASTERISK-22899) Reported by: outtolunc Patches: svn_manager.c.skip_action.diff.txt uploaded by outtolunc (license 5198) * channels/chan_dahdi.c, /: chan_dahdi: dahdi show channels slices PRI channel dnid on output dahdi show channels output slices the callerid (which is dnid copied over on PRI channels). If the channel naming structures look like: 'DAHDI/i1/1408409XXXX-6' then the output slices 1408409XXXX down to 1408409XXX. This patch just opens it up to 15 chars so you can see the whole thing. (closes issue ASTERISK-22918) Reported by: outtolunc Patches: svn_chan_dahdi.c.format12_15.diff.txt uploaded by outtolunc (license 5198) ........ Merged revisions 404784 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404785 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404786 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 18:33 +0000 [r404783] Richard Mudgett * tests/test_stasis.c, /: test_stasis.c: Fix ref leak in normal execution path. ........ Merged revisions 404764 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 18:31 +0000 [r404782] Kevin Harwell * /, apps/app_meetme.c: app_meetme: compiler warning Fixed a compiler warning (errors in 'dev-mode') given by gcc version 4.8.1. The one in app_meetme involved the 'sizeof-pointer-memaccess' (see: http://gcc.gnu.org/gcc-4.8/porting_to.html) warning. Fixed so it would no longer issue a warning and can compile again in 'dev-mode'. Review: https://reviewboard.asterisk.org/r/3098/ ........ Merged revisions 404742 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404773 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404781 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-03 17:27 +0000 [r404726-404738] Joshua Colp * res/res_pjsip/pjsip_configuration.c, /, res/res_pjsip/location.c: res_pjsip: Ensure more URI validation happens in pj threads. ........ Merged revisions 404737 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_outbound_registration.c: res_pjsip_outbound_registration: Ensure URI validation happens in a pjlib thread. This change moves outbound registration URI validation into the task executed within a pjlib thread. Reported by: Andrew Nagy ........ Merged revisions 404725 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-02 19:38 +0000 [r404677] Scott Griepentrog * /, funcs/func_strings.c: func_strings: use memmove to prevent overlapping memory on strcpy When calling REPLACE() with an empty replace-char argument, strcpy is used to overwrite the the matching . However as the src and dest arguments to strcpy must not overlap, it causes other parts of the string to be overwritten with adjacent characters and the result is mangled. Patch replaces call to strcpy with memmove and adds a test suite case for REPLACE. (closes issue ASTERISK-22910) Reported by: Gareth Palmer Review: https://reviewboard.asterisk.org/r/3083/ Patches: func_strings.patch uploaded by Gareth Palmer (license 5169) ........ Merged revisions 404674 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404675 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404676 from http://svn.asterisk.org/svn/asterisk/branches/12 2014-01-02 19:08 +0000 [r404664] Kevin Harwell * channels/chan_pjsip.c, include/asterisk/res_pjsip.h, /, configs/pjsip.conf.sample, res/res_pjsip/pjsip_configuration.c, CHANGES, res/res_pjsip.c: res_pjsip: add 'set_var' support on endpoints Added a new 'set_var' option for ast_sip_endpoint(s). For each variable specified that variable gets set upon creation of a pjsip channel involving the endpoint. (closes issue ASTERISK-22868) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/3095/ ........ Merged revisions 404663 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-31 22:51 +0000 [r404620-404653] Joshua Colp * channels/chan_pjsip.c, res/res_pjsip_session.c, /: chan_pjsip: Handle hanging up before calling. Channel creation in Asterisk is broken up into two steps: requesting and calling. In some cases a channel may be requested but never called. This happens in the ChanIsAvail dialplan application for determining if something is reachable or not. The PJSIP channel driver did not take this situation into account and attempted to end a session that was never called out on. The code now checks the session state to determine if the session has been called out on and if not terminates it instead of ending it. (closes issue ASTERISK-23074) Reported by: Kilburn ........ Merged revisions 404652 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_endpoint_identifier_ip.c: res_pjsip_endpoint_identifier_ip: Accept hostnames in the 'match' field. Hostnames specified in the 'match' field will be resolved and all addresses returned. Each address will be added to the endpoint identifier for the matching process. Reported by: Rob Thomas ........ Merged revisions 404613 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-31 21:39 +0000 [r404606] Kevin Harwell * cel/cel_pgsql.c, /: cel_pgsql: deadlock on unload and core_event_dispatcher A deadlock can happen between a thread unloading or reloading the cel_pgsql module and the core_event_dispatcher taskprocessor thread. Description of what is happening: Thread 1 (for example, a netconsole thread): a "module reload cel_pgsql" is launched the thread enter the "my_unload_module" function (cel_pgsql.c) the thread acquire the write lock on psql_columns the thread enter the "ast_event_unsubscribe" function (event.c) the thread try to acquire the write lock on ast_event_subs[sub->type] Thread 2 (core_event_dispatcher taskprocessor thread): the taskprocessor pop a CEL event the thread enter the "handle_event" function (event.c) the thread acquire the read lock on ast_event_subs[sub->type] the thread callback the "pgsql_log" function (cel_pgsql.c), since it's a subscriber of CEL events the thread try to acquire a read lock on psql_columns (closes issue ASTERISK-22854) Reported by: Etienne Lessard Patches: cel_pgsql_fix_deadlock_event.patch uploaded by hexanol (license 6394) ........ Merged revisions 404603 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404604 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404605 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-31 20:27 +0000 [r404593] Joshua Colp * res/res_pjsip_outbound_registration.c, /: res_pjsip_outbound_registration: Add validation for 'server_uri' and 'client_uri'. When applying configuration for outbound registrations the 'server_uri' and 'client_uri' fields were not validated. The code will now confirm that they exist and that they contain parseable SIP URIs. Reported by: Andrew Nagy ........ Merged revisions 404592 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-30 23:25 +0000 [r404582] Kevin Harwell * main/channel.c, /: channels.c: core show channeltypes slicing 'core show channeltypes' type column is being sliced, resulting in incomplete type names. (closes issue ASTERISK-22919) Reported by: outtolunc Patches: svn_channel.c.format_15.diff.txt uploaded by outtolunc (license 5198) ........ Merged revisions 404579 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404581 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-24 17:12 +0000 [r404567-404569] David M. Lee * UPGRADE-12.txt, /: Added note to UPGRADE.txt about the default value of live_dangerously changing ........ Merged revisions 404568 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/http.c: http: Properly reject requests with Transfer-Encoding set Asterisk does not support any of the transfer encodings specified in HTTP/1.1, other than the default "identity" encoding. According to RFC 2616: A server which receives an entity-body with a transfer-coding it does not understand SHOULD return 501 (Unimplemented), and close the connection. A server MUST NOT send transfer-codings to an HTTP/1.0 client. This patch adds the 501 Unimplemented response, instead of the hard work of actually implementing other recordings. This behavior is especially problematic for Node.js clients, which use chunked encoding by default. (closes issue ASTERISK-22486) Review: https://reviewboard.asterisk.org/r/3092/ ........ Merged revisions 404565 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-24 02:20 +0000 [r404554] Joshua Colp * /, res/res_pjsip_pubsub.c: res_pjsip_pubsub: Ensure dialog manipulation happens on proper thread. When destroying a subscription we remove the serializer from its dialog and decrease its reference count. Depending on which thread dropped the subscription reference count to 0 it was possible for this to occur in a thread where it is not possible. (closes issue ASTERISK-22952) Reported by: Matt Jordan ........ Merged revisions 404553 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-23 16:38 +0000 [r404542] Tzafrir Cohen * channels/chan_dahdi.c, configs/chan_dahdi.conf.sample, UPGRADE-12.txt: chan_dahdi: enable ignore_failed_channels by default If ignore_failed_channels is set to "true" for a channel, the channel will continue to be configured even if configuring it has failed. This allows Asterisk to start before all the DAHDI initialization is done and thus not force the starting order dahdi -> asterisk. Review: https://reviewboard.asterisk.org/r/3063/ 2013-12-21 03:35 +0000 [r404532] Matthew Jordan * /, res/res_pjsip/pjsip_cli.c: res_pjsip/pjsip_cli: fix compilation error caused by passing ast_free When wanting to pass *free as a function pointer, ast_free_ptr has to be used instead of ast_free. This allows it to be compiled with MALLOC_DEBUG enabled. ........ Merged revisions 404531 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 22:04 +0000 [r404511-404512] David M. Lee * rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, /, rest-api/api-docs/applications.json: ari: Remove support for specifying channel vars during origination. When we added support for specifying channel variables for an origination, we didn't consider how that would interact with another feature, namely specifying request parameters in a JSON request body. The method of specifying channel variables (as a flat JSON object passed in the JSON body) interferes with parsing parameters out of the request body. Unfortunately, fixing this would be a backward incompatible change. In the interest of keeping the API sane and keeping our release schedule, we're dropping the feature for specifying channel variables in the origination request. We will bring the feature back soon, as a backward compatible addition to the API. (closes issue ASTERISK-23051) Review: https://reviewboard.asterisk.org/r/3088 ........ Merged revisions 404509 from http://svn.asterisk.org/svn/asterisk/branches/12 * /: Remove automerge properties ........ Merged revisions 404488 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 21:32 +0000 [r404507] Matthew Jordan * include/asterisk/config.h, main/config.c, main/channel.c, res/res_pjsip/location.c, include/asterisk/res_pjsip_cli.h (added), res/res_pjsip/pjsip_cli.c (added), include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip_registrar.c, main/sorcery.c, include/asterisk/res_pjsip.h, CREDITS, res/res_pjsip/config_auth.c, /, res/res_pjsip_endpoint_identifier_ip.c: res_pjsip: Add PJSIP CLI commands Implements the following cli commands: pjsip list aors pjsip list auths pjsip list channels pjsip list contacts pjsip list endpoints pjsip show aor(s) pjsip show auth(s) pjsip show channels pjsip show endpoint(s) Also... Minor modifications made to the AMI command implementations to facilitate reuse. New function ast_variable_list_sort added to config.c and config.h to implement variable list sorting. (issue ASTERISK-22610) patches: pjsip_cli_v2.patch uploaded by george.joseph (License 6322) ........ Merged revisions 404480 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 21:18 +0000 [r404461] Scott Griepentrog * /, main/say.c: say.c: correct time for polish In ast_say_date_with_format_pl(), change ast_say_number() to use tm_sec instead of tm_mn. (closes issue ASTERISK-22856) Reported by: Robert Mordec Review: https://reviewboard.asterisk.org/r/3082/ Patches: say.c.patch uploaded by veilen (license 6555) ........ Merged revisions 404456 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404457 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404458 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 20:28 +0000 [r404452] Mark Michelson * /, res/res_pjsip_refer.c: Fix issue where PJSIP blind transferer dialog may not complete as planned. When transferring to a dialplan extension that will not place any outbound calls, the only control frames that the PJSIP REFER framehook will receive are inconsequential (such as unhold or srcchange). As such, we shouldn't allow for the reception of those types of frames prevent us from signaling to the transferring party that the transfer has completed successfully once voice frames are read. Thanks to Jonathan Rose for pointing this out. ........ Merged revisions 404439 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 20:05 +0000 [r404438] Matthew Jordan * /, res/ari/resource_applications.h, res/res_stasis_device_state.c: res_stasis_device_state: Set resource type for subscriptions to deviceState The documentation for ARI already specifies that the device state resource when used for subscribing for events is "deviceState", not "device_state". The code, however, used "device_state"; although this was inconsistent as well in doxygen comments in resource_applications. Because the actual resource being subscribed to is /deviceStates/{device}/, it makes sense for the resource type specifier to be deviceState. Note that the key value in the events is still "device_state". ........ Merged revisions 404437 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 20:00 +0000 [r404436] Richard Mudgett * res/ari/resource_channels.c, tests/test_scoped_lock.c, tests/test_stasis.c, res/parking/parking_manager.c, res/ari/resource_bridges.c, res/ari/resource_endpoints.c, /, res/res_pjsip/location.c, tests/test_cel.c: ao2_iterator: Mini-audit of the ao2_iterator loops in the new code files. * Fixed several places where ao2_iterator_destroy() was not called. * Fixed several iterator loop object variable reference problems. * Fixed res_parking AMI actions returning non-zero. Only the AMI logoff action can return non-zero. Review: https://reviewboard.asterisk.org/r/3087/ ........ Merged revisions 404434 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 19:25 +0000 [r404433] Matthew Jordan * include/asterisk/manager.h, /: manager: bump version to 2.0.0 AMI has received substantial updates over the past year. Not only has the syntax been vastly improved and made consistent (which entails many event changes), but the underlying things that those events convey have changed substantially as well. After some conversation in #asterisk-dev, it was agreed that this is a good time to jump to 2. At the same time, since ARI will most likely use semantic versioning, we might as well use that for AMI as well. That also affords us greater meaning for the AMI version. ........ Merged revisions 404421 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 19:06 +0000 [r404420] Richard Mudgett * /, main/sounds_index.c: Whitespace fixes. ........ Merged revisions 404419 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-20 17:22 +0000 [r404406] Rusty Newton * /, configs/pjsip.conf.sample: Documentation: Updates for info about NAT-related settings and fixes for pjsip.conf.sample Added another NAT example to pjsip.conf.sample. We had a few mentions of NAT configuration throughout the sample, but I added another for a little bit more clarity. Additionally many pjsip options were affected by the change to snake case, so I fixed any instances of those options in pjsip.conf. I regenerated the config option list (at the bottom of the file) from a new xml config doc dump, so all the snake case changes should be reflected there, as well as any other changes to those options. (issue ASTERISK-23004) (closes issue ASTERISK-23004) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3086/ ........ Merged revisions 404405 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 20:48 +0000 [r404387] Scott Griepentrog * main/security_events.c: security_events: log events with descriptive names This patch updates the log messages to include descriptive names for event types. This is an improvement over having only cryptic type numbers. (closes issue ASTERISK-22909) Reported by: outtolunc Review: https://reviewboard.asterisk.org/r/3081/ Patches: svn_security_events.c.names.diff.txt uploaded by outtolunc (license 5198) 2013-12-19 18:16 +0000 [r404376] Richard Mudgett * /, CHANGES: Put notice in CHANGES as well as UPGRADE.txt. ........ Merged revisions 404375 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 18:00 +0000 [r404370-404372] Joshua Colp * res/res_pjsip/pjsip_outbound_auth.c, /: res_pjsip: Ignore 401/407 responses for transactions and dialogs we don't know about. Under normal conditions it is unlikely we will ever receive a response for a transaction or dialog we don't know about but if any are received ignore them. ........ Merged revisions 404371 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_session.c: res_pjsip_session: Fix SDP negotiation when resending an INVITE with authentication. The process for resending an INVITE with authentication involves restarting the UAC session. We were incorrectly passing in that a new offer is being sent, causing the SDP negotiation to get into a (technically speaking) funky state. ........ Merged revisions 404369 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 17:45 +0000 [r404368] Mark Michelson * include/asterisk/channel.h, res/res_pjsip.c, main/channel.c, /, include/asterisk/autochan.h: Fix a deadlock that occurred due to a conflict of masquerades. For the explanation, here is a copy-paste of the review board explanation: Initially, it was discovered that performing an attended transfer of a multiparty bridge with a PJSIP channel would cause a deadlock. A PBX thread started a masquerade and reached the point where it was calling the fixup() callback on the "original" channel. For chan_pjsip, this involves pushing a synchronous task to the session's serializer. The problem was that a task ahead of the fixup task was also attempting to perform a channel masquerade. However, since masquerades are designed in a way to only allow for one to occur at a time, the task ahead of the fixup could not continue until the masquerade already in progress had completed. And of course, the masquerade in progress could not complete until the task ahead of the fixup task had completed. Deadlock. The initial fix was to change the fixup task to be asynchronous. While this prevented the deadlock from occurring, it had the frightful side effect of potentially allowing for tasks in the session's serializer to operate on a zombie channel. Taking a step back from this particular deadlock, it became clear that the problem was not really this one particular issue but that masquerades themselves needed to be addressed. A PJSIP attended transfer operation calls ast_channel_move(), which attempts to both set up and execute a masquerade. The problem was that after it had set up the masquerade, the PBX thread had swooped in and tried to actually perform the masquerade. Looking at changes that had been made to Asterisk 12, it became clear that there never is any time now that anyone ever wants to set up a masquerade and allow for the channel thread to actually perform the masquerade. Everyone always is calling ast_channel_move(), performs the masquerade itself before returning. In this patch, I have removed all blocks of code from channel.c that will attempt to perform a masquerade if ast_channel_masq() returns true. Now, there is no distinction between setting up a masquerade and performing the masquerade. It is one operation. The only remaining checks for ast_channel_masq() and ast_channel_masqr() are in ast_hangup() since we do not want to interrupt a masquerade by hanging up the channel. Instead, now ast_hangup() will wait for a masquerade to complete before moving forward with its operation. The ast_channel_move() function has been modified to basically in-line the logic that used to be in ast_channel_masquerade(). ast_channel_masquerade() has been killed off for real. ast_channel_move() now has a lock associated with it that is used to prevent any simultaneous moves from occurring at once. This means there is no need to make sure that ast_channel_masq() or ast_channel_masqr() are already set on a channel when ast_channel_move() is called. It also means the channel container lock is not pulling double duty by both keeping the container locked and preventing multiple masquerades from occurring simultaneously. The ast_do_masquerade() function has been renamed to do_channel_masquerade() and is now internal to channel.c. The function now takes explicit arguments of which channels are involved in the masquerade instead of a single channel. While it probably is possible to do some further refactoring of this method, I feel that I would be treading dangerously. Instead, all I did was change some comments that no longer are true after this changeset. The other more minor change introduced in this patch is to res_pjsip.c to make ast_sip_push_task_synchronous() run the task in-place if we are already a SIP servant thread. This is related to this patch because even when we isolate the channel masquerade to only running in the SIP servant thread, we would still deadlock when the fixup() callback is reached since we would essentially be waiting forever for ourselves to finish before actually running the fixup. This makes it so the fixup is run without having to push a task into a serializer at all. (closes issue ASTERISK-22936) Reported by Jonathan Rose Review: https://reviewboard.asterisk.org/r/3069 ........ Merged revisions 404356 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 17:13 +0000 [r404355] Richard Mudgett * main/udptl.c, addons/chan_ooh323.c, /, channels/chan_sip.c, include/asterisk/udptl.h: udptl: Dead code elimination. ast_udptl_bridge was not used. Removing dead code starting with ast_udptl_bridge() eliminated the code in this change. Note: This code has actually been dead since Asterisk v1.4 when it was first put in. Review: https://reviewboard.asterisk.org/r/3079/ ........ Merged revisions 404354 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 17:03 +0000 [r404353] Scott Griepentrog * /, res/res_fax.c: res_fax.c: crash on framehook with no dsp in fax detect In fax_detect_framehook() a null pointer reference can occur where a voice frame is processed but no dsp is attached to the fax detection structure. The code block that rejects frames that detection cannot be processed on is checking for dsp but falls through when it should instead return, as this change implements. (closes issue ASTERISK-22942) Reported by: adomjan Review: https://reviewboard.asterisk.org/r/3076/ ........ Merged revisions 404351 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404352 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 16:52 +0000 [r404350] Richard Mudgett * configs/skinny.conf.sample, res/res_xmpp.c, res/res_jabber.c, CHANGES, channels/chan_iax2.c, channels/sig_pri.c, channels/h323/chan_h323.h, configs/iax.conf.sample, channels/sig_pri.h, channels/chan_dahdi.c, include/asterisk/app.h, channels/chan_skinny.c, channels/chan_dahdi.h, channels/chan_h323.c, main/app.c, UPGRADE-12.txt, configs/sip.conf.sample, channels/sip/include/sip.h, channels/chan_mgcp.c, apps/app_voicemail.c, channels/chan_unistim.c, configs/chan_dahdi.conf.sample, /, channels/chan_sip.c, configs/voicemail.conf.sample, funcs/func_vmcount.c: Voicemail: Remove mailbox identifier format (box@context) assumptions in the system. This change is in preparation for external MWI support. Removed code from the system for normal mailbox handling that appends @default to the mailbox identifier if it does not have a context. The only exception is the legacy hasvoicemail users.conf option. The legacy option will only work for app_voicemail mailboxes. The system cannot make any assumptions about the format of the mailbox identifer used by app_voicemail. chan_sip and chan_dahdi/sig_pri had the most changes because they both tried to interpret the mailbox identifier. chan_sip just stored and compared the two components. chan_dahdi actually used the box information. The ISDN MWI support configuration options had to be reworked because chan_dahdi was parsing the box@context format to get the box number. As a result the mwi_vm_boxes chan_dahdi.conf option was added and is documented in the chan_dahdi.conf.sample file. Review: https://reviewboard.asterisk.org/r/3072/ ........ Merged revisions 404348 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 16:33 +0000 [r404346] Scott Griepentrog * main/db.c, /: astdb: crash in sqlite3 during shutdown When Asterisk is shut down, the astdb_atexit() function releases (finalize) the previously initiated (prepared) SQL statements in sqlite3. Another thread making a subsequent request can cause a crash in sqlite3. This patch eliminates that issue by resetting the statement pointer after it is released/cleared. The sqlite3 code detects the null pointer, and aborts the operation cleanly. (closes issue AST-1265) Reported by: Alexander Hömig (closes issue ASTERISK-22350) Reported by: Birger "WIMPy" Harzenetter Review: https://reviewboard.asterisk.org/r/3078/ ........ Merged revisions 404344 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404345 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 12:18 +0000 [r404333] Joshua Colp * main/channel.c, /: channel: Add a missing ast_channel_unlock when allocating a Surrogate channel. ........ Merged revisions 404332 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 08:35 +0000 [r404321] Alexandr Anikin * addons/ooh323c/src/oochannels.c, addons/ooh323c/src/ooGkClient.c, addons/chan_ooh323.c, /, addons/ooh323c/src/ooGkClient.h: Handle temporary failures on gk registration Introduce new 'stopped' state for gk client and restart gk client on failures Remove ooh323 stack command lock as it is not need now. (closes issue ASTERISK-21960) Reported by: Dmitry Melekhov Patches: ASTERISK-21960.patch ASTERISK-21960-stacklockup-2.patch Tested by: Dmitry Melekhov ........ Merged revisions 404318 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404320 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 02:59 +0000 [r404307] Damien Wedhorn * /, channels/chan_skinny.c: Fixup some skinny bugs causing Fracks and ao2 cleanup issues. Moved channel locking into setsubstate so that a process can complete working on a sub before another starts changing it. The existing code was causing some Fracks with schedule deletion. Removed multiple rtp cleanup. Now only cleansup up once, fixing ao2 object cleanup issues. ........ Merged revisions 404306 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 00:50 +0000 [r404295] Matthew Jordan * include/asterisk/cdr.h, CHANGES, apps/app_cdr.c, main/cdr.c, apps/app_forkcdr.c, main/pbx.c, /, funcs/func_cdr.c, apps/app_disa.c, UPGRADE-12.txt: app_cdr,app_forkcdr,func_cdr: Synchronize with engine when manipulating state When doing the rework of the CDR engine that pushed all of the logic into cdr.c and made it respond to changes in channel state over Stasis, we knew that accessing the CDR engine from the dialplan would be "slightly" non-deterministic. Dialplan threads would be accessing CDRs while Stasis threads would be updating the state of said CDRs - whereas in the past, everything happened on the dialplan threads. Tests have shown that "slightly" is in reality "very". This patch synchronizes things by making the dialplan applications/functions that manipulate CDRs do so over Stasis. ForkCDR, NoCDR, ResetCDR, CDR, and CDR_PROP now all use Stasis to send their requests over to the CDR engine, and synchronize on the channel Stasis topic via a subscription so that they return their values/control to the dialplan at the appropriate time. While going through this, the following changes were also made: * DISA, which can reset the CDR when a user successfully authenticates, now just uses the ResetCDR app to do this. This prevents having to duplicate the same Stasis synchronization logic in that application. * Answer no longer disables CDRs. It actually didn't work anyway - calling DISABLE on the channel's CDR doesn't stop the CDR from getting the Answer time - it just kills all CDRs on that channel, which isn't what the caller would intend. (closes issue ASTERISK-22884) (closes issue ASTERISK-22886) Review: https://reviewboard.asterisk.org/r/3057/ ........ Merged revisions 404294 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-19 00:32 +0000 [r404293] Damien Wedhorn * /, channels/chan_skinny.c: Fixup skinny registration following network issues. On session registration, if device is already reporting that it is connected to a device, an innocuous packet (update time) is sent to the already connected device. If the tcp connection is down, the device will be unregistered and the new connection allowed. Without this patch, network issues can see a situation where a device can not reregister until after 3*timeout. ........ Merged revisions 404292 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 23:00 +0000 [r404280] Jason Parker * main/manager.c, /: Add AMI event for presence state. Review: https://reviewboard.asterisk.org/r/3039/ ........ Merged revisions 404275 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404279 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 21:12 +0000 [r404264] Richard Mudgett * addons/ooh323c/src/ooTimer.c, /: ooh323c: Fix gcc 4.6.3 compiler warnings. ........ Merged revisions 404212 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404219 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404263 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 20:48 +0000 [r404260-404262] Kevin Harwell * channels/chan_oss.c, /: chan_oss.c: channel being locked twice and unlocked once Removed channel lock as it is now being down in ast_channel_alloc ........ Merged revisions 404261 from http://svn.asterisk.org/svn/asterisk/branches/12 * pbx/pbx_realtime.c, channels/chan_alsa.c, main/stasis_channels.c, addons/chan_mobile.c, main/bridge_channel.c, tests/test_cdr.c, channels/chan_pjsip.c, res/parking/parking_manager.c, channels/chan_mgcp.c, channels/chan_unistim.c, main/pbx.c, funcs/func_timeout.c, /, apps/app_meetme.c, main/bridge.c, tests/test_stasis_channels.c, include/asterisk/channel.h, channels/chan_gtalk.c, channels/sig_pri.c, apps/app_queue.c, main/cel.c, main/stasis_bridges.c, channels/chan_jingle.c, channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c, channels/sig_analog.c, include/asterisk/stasis_channels.h, res/res_agi.c, channels/chan_motif.c, tests/test_cel.c, apps/app_confbridge.c, res/res_stasis.c, res/res_pjsip_refer.c, apps/app_voicemail.c, apps/app_dial.c, channels/chan_vpb.cc, addons/chan_ooh323.c, main/pickup.c, include/asterisk/aoc.h, include/asterisk/stasis_bridges.h, apps/app_userevent.c, apps/app_disa.c, channels/chan_console.c, include/asterisk/channelstate.h, main/core_local.c, channels/chan_iax2.c, main/endpoints.c, channels/chan_oss.c, res/parking/parking_bridge_features.c, apps/app_agent_pool.c, main/channel.c, channels/chan_misdn.c, channels/chan_skinny.c: channel locking: Add locking for channel snapshot creation Original commit message by mmichelson (asterisk 12 r403311): "This adds channel locks around calls to create channel snapshots as well as other functions which operate on a channel and then end up creating a channel snapshot. Functions that expect the channel to be locked prior to being called have had their documentation updated to indicate such." The above was initially committed and then reverted at r403398. The problem was found to be in core_local.c in the publish_local_bridge_message function. The ast_unreal_lock_all function locks and adds a reference to the returned channels and while they were being unlocked they were not being unreffed when no longer needed. Fixed by unreffing the channels. Also in bridge.c a lock was obtained on "other->chan", but then an attempt was made to unlock "other" and not the previously locked channel. Fixed by unlocking "other->chan" (closes issue ASTERISK-22709) Reported by: John Bigelow ........ Merged revisions 404237 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 19:36 +0000 [r404211] Alexandr Anikin * addons/chan_ooh323.c, configs/ooh323.conf.sample: Introduce new config option 'aniasdni'. If yes then asterisk set dialed number as own id back to the caller on incoming h.323 calls. Option can be set globally or per user section. (closes issue ASTERISK-22020) Reported by: Ross Beer 2013-12-18 19:28 +0000 [r404210] Joshua Colp * channels/chan_mgcp.c, main/pbx.c, channels/chan_sip.c, apps/confbridge/conf_chan_record.c, tests/test_app.c, tests/test_stasis_channels.c, main/core_unreal.c, include/asterisk/channel.h, channels/chan_console.c, channels/chan_oss.c, channels/chan_jingle.c, channels/chan_misdn.c, channels/chan_h323.c, tests/test_cel.c, channels/chan_nbs.c, channels/chan_pjsip.c, res/res_calendar.c, apps/app_voicemail.c, channels/chan_unistim.c, tests/test_substitution.c, channels/chan_vpb.cc, addons/chan_ooh323.c, channels/chan_multicast_rtp.c, /, apps/app_meetme.c, res/res_stasis_snoop.c, channels/chan_gtalk.c, channels/chan_iax2.c, main/channel.c, channels/chan_dahdi.c, channels/chan_phone.c, channels/chan_skinny.c, res/parking/parking_tests.c, channels/chan_motif.c, tests/test_voicemail_api.c, channels/chan_alsa.c, main/message.c, addons/chan_mobile.c, tests/test_cdr.c: channels: Return allocated channels locked. This change makes ast_channel_alloc return allocated channels locked. By doing so no other thread can acquire, lock, and manipulate the channel before it is completely set up. (closes issue AST-1256) Review: https://reviewboard.asterisk.org/r/3067/ ........ Merged revisions 404204 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 19:10 +0000 [r404198] Alexandr Anikin * addons/chan_ooh323.c: Implement module reload command for chan_ooh323 (close issue ASTERISK-22817) Patches: ooh323_module_reload.patch 2013-12-18 12:46 +0000 [r404185] Matthew Jordan * rest-api/api-docs/applications.json, rest-api/api-docs/playbacks.json, rest-api/api-docs/channels.json, rest-api/api-docs/sounds.json, rest-api/resources.json, 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/events.json, /, rest-api/api-docs/asterisk.json: ari: Bump the version of ARI to 1.0.0 (closes issue ASTERISK-23007) ........ Merged revisions 404184 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 12:01 +0000 [r404138] Joshua Colp * res/res_calendar.c, /: res_calendar: Protect channel when adding datastore. This change adds a missing channel lock when adding a datastore to a channel. ........ Merged revisions 404135 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404136 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404137 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 00:36 +0000 [r404100] Rusty Newton * /, funcs/func_strings.c: func_strings: Documentation fix for QUOTE() Example output was inaccurate. (issue ASTERISK-22970) (closes issue ASTERISK-22970) Reported by: Gareth Palmer Patches: func_strings.patch uploaded by Gareth Palmer (license 5169) ........ Merged revisions 404081 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 404087 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 404099 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-18 00:17 +0000 [r404051] Matthew Jordan * /, LICENSE: LICENSE: Update language to include ARI ........ Merged revisions 404050 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 23:57 +0000 [r404049] Jonathan Rose * /, tests/test_cel.c, tests/test_cdr.c: tests: fix ast_bridge_base_new calls not using the additional arguments r404042 gave ast_bridge_base_new two new arguments for setting a bridge creator and name. Unfortunately since a couple test modules aren't compiled by default, I missed the fact that this change impacted those tests and caused compilation failures against them. ........ Merged revisions 404048 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 23:38 +0000 [r404047] Rusty Newton * include/asterisk/test.h, main/channel.c, main/rtp_engine.c, /, channels/chan_iax2.c, apps/app_chanspy.c, apps/app_mixmonitor.c: Several components: fixing Typos in comments and code, "avaliable" instead of "available" (issue ASTERISK-23021) (closes issue ASTERISK-23021) Reported by: Jeremy Lainé Tested by: Rusty Newton Patches: available.patch uploaded by Jeremy Lainé (license 6561) ........ Merged revisions 404046 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 23:25 +0000 [r404043] Jonathan Rose * apps/app_bridgewait.c, res/ari/ari_model_validators.c, doc/appdocsxml.xslt, main/stasis_bridges.c, rest-api/api-docs/bridges.json, res/ari/resource_bridges.c, apps/app_agent_pool.c, res/parking/parking_bridge.c, res/ari/ari_model_validators.h, main/manager_bridges.c, res/ari/resource_bridges.h, include/asterisk/bridge_internal.h, apps/app_confbridge.c, res/res_stasis.c, include/asterisk/bridge.h, res/res_ari_bridges.c, /, main/bridge.c, main/bridge_basic.c, include/asterisk/stasis_bridges.h, include/asterisk/stasis_app.h: bridging: Give bridges a name and a known creator Bridges have two new optional properties, a creator and a name. Certain consumers of bridges will automatically provide bridges that they create with these properties. Examples include app_bridgewait, res_parking, app_confbridge, and app_agent_pool. In addition, a name may now be provided as an argument to the POST function for creating new bridges via ARI. (closes issue AFS-47) Review: https://reviewboard.asterisk.org/r/3070/ ........ Merged revisions 404042 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 18:35 +0000 [r404028-404030] Joshua Colp * res/res_sorcery_config.c, /: res_sorcery_config: Output an error message when an object can't be created. If object creation fails an error message will now be output with the id, type, and configuration file. ........ Merged revisions 404029 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/framehook.c: framehooks: Re-iterate if framehook provides different frame. Framehooks can be used in a reactive manner to execute specific logic when a frame is received with a certain type and payload. Since it is possible for framehooks to provide frames it was possible for this reactive framehook to be unaware of frames it is looking for. This change makes it so that when framehooks return a modified frame the code will now re-iterate (from the beginning) and call any previous framehooks that have not provided a modified frame themselves. Review: https://reviewboard.asterisk.org/r/3046/ ........ Merged revisions 404027 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 14:41 +0000 [r404008-404009] David M. Lee * /, configs/asterisk.conf.sample, main/asterisk.c: Changed the default for live_dangerously to no ........ Merged revisions 404006 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/pjsip, /: Setting svn:ignore ........ Merged revisions 403748 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-17 12:59 +0000 [r403994] Matthew Jordan * /, res/ari/resource_channels.c: ari/resource_channels: When creating a channel, specify a default format (SLIN) When creating channels via ARI, the current code fails to provide any default format capabilities. For non-virtual channels this isn't really a problem - the channels typically receive their capabilities as a result of the underlying channel driver configuration. For virtual channels (such as Local channels), the lack of any format capabilities causes the Asterisk core to make some 'odd' choices with respect to the translation paths. The issue reporter had some paths that had 3 hops on each channel leg, causing multiple transcodings and some really crappy audio/performance. By specifying a baseline of SLIN, we prevent that from occurring. Note that this is what AMI does when it performs an Originate, as does res_clioriginate. Review: https://reviewboard.asterisk.org/r/3068/ (issue ASTERISK-22962) Reported by: Matt DiMeo ........ Merged revisions 403993 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-16 19:11 +0000 [r403960] David M. Lee * include/asterisk/pbx.h, main/asterisk.c, funcs/func_realtime.c, main/pbx.c, main/tcptls.c, funcs/func_db.c, /, README-SERIOUSLY.bestpractices.txt, configs/asterisk.conf.sample, funcs/func_shell.c, funcs/func_env.c, funcs/func_lock.c, UPGRADE-12.txt: security: Inhibit execution of privilege escalating functions This patch allows individual dialplan functions to be marked as 'dangerous', to inhibit their execution from external sources. A 'dangerous' function is one which results in a privilege escalation. For example, if one were to read the channel variable SHELL(rm -rf /) Bad Things(TM) could happen; even if the external source has only read permissions. Execution from external sources may be enabled by setting 'live_dangerously' to 'yes' in the [options] section of asterisk.conf. Although doing so is not recommended. Also, the ABI was changed to something more reasonable, since Asterisk 12 does not yet have a public release. (closes issue ASTERISK-22905) Review: http://reviewboard.digium.internal/r/432/ ........ Merged revisions 403913 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403917 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403959 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-16 18:31 +0000 [r403958] Jonathan Rose * /, main/bridge.c: transfers: Fix bug setting both BLINDTRANSFER and ATTENDEDTRANSFER The ast_bridge_set_transfer_variables function is supposed to wipe whichever variable isn't being set. Instead it was setting both to the new value. Oops. (issue AFS-24) ........ Merged revisions 403957 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-16 16:12 +0000 [r403857-403865] Scott Griepentrog * main/pbx.c, /: pbx.c: put copy of ast_exten.data on stack to prevent memory corruption During dialplan execution in pbx_extension_helper(), the contexts global read lock prevents link list corruption, but was released with a pointer to the ast_exten and data later used in variable substitution. Instead, this patch removes pbx_substitute_variables() and locates a copy of the ast_exten data on the stack before releasing the lock, where ast_exten could get free'd by another thread performing a module reload. (issue AST-1179) Reported by: Thomas Arimont (issue AST-1246) Reported by: Alexander Hömig Review: https://reviewboard.asterisk.org/r/3055/ ........ Merged revisions 403862 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403863 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403864 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_sms.c: app_sms: BufferOverflow when receiving odd length 16 bit message This patch prevents an infinite loop overwriting memory when a message is received into the unpacksms16() function, where the length of the message is an odd number of bytes. (closes issue ASTERISK-22590) Reported by: Jan Juergens Tested by: Jan Juergens ........ Merged revisions 403856 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-15 01:39 +0000 [r403824] Matthew Jordan * channels/pjsip/dialplan_functions.c, /: pjsip/dialplan_functions: Use the right buffer length when printing URIs While entertaining, sizeof(buflen) is not the same as buflen. Doh. ........ Merged revisions 403823 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-14 17:28 +0000 [r403810-403812] Joshua Colp * include/asterisk/res_pjsip.h, /, res/res_pjsip/location.c, res/res_pjsip/pjsip_options.c, res/res_pjsip.c: res_pjsip: Apply outbound proxy to all SIP requests. Objects which are involved in SIP request creation and sending now allow an outbound proxy to be specified. For cases where an endpoint is used the outbound proxy specified there will be applied. (closes issue ASTERISK-22673) Reported by: Antti Yrjola Review: https://reviewboard.asterisk.org/r/3022/ ........ Merged revisions 403811 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_channels.c, apps/app_queue.c, res/ari/ari_model_validators.c, apps/app_dial.c, res/ari/ari_model_validators.h, main/dial.c, include/asterisk/stasis_channels.h, rest-api/api-docs/events.json, /, res/stasis/app.c: res_stasis: Expose event for call forwarding and follow forwarded channel. This change adds an event for when an originated call is redirected to another target. This event contains the original channel and the newly created channel. If a stasis subscription exists on the original originated channel for a stasis application then a new subscription will also be created on the stasis application to the redirected channel. This allows the application to follow the call path completely. (closes issue ASTERISK-22719) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/3054/ ........ Merged revisions 403808 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 21:35 +0000 [r403797] Jonathan Rose * /, res/res_pjsip_messaging.c, main/message.c: documentation: Add PJSIP technology to messaging documentation ........ Merged revisions 403796 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 20:17 +0000 [r403784] Richard Mudgett * /, main/test.c: test.c: Fix too sticky unit test failed status. Rerunning a failed unit test after loading any required modules should allow the test to report a pass status if it now passes. ........ Merged revisions 403782 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 20:13 +0000 [r403783] Jonathan Rose * /, main/bridge.c, main/bridge_basic.c, include/asterisk/bridge.h, res/parking/parking_bridge_features.c, res/parking/parking_manager.c: Transfers: Make Asterisk set ATTENDEDTRANSFER/BLINDTRANSFER more reliably There were still a few cases in which ATTENDEDTRANSFER and BLINDTRANSFER wouldn't be set on channels involved with blind and attended transfers. This would happen with features that were initialized by channel driver specific mechanisms in multiparty calls. This patch resolves those cases while attempted to keep the behavior for setting those variables as consistent as possible. (closes issue AFS-24) Review: https://reviewboard.asterisk.org/r/3040/ ........ Merged revisions 403781 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 18:33 +0000 [r403750-403768] Kevin Harwell * main/channel.c, /, channels/chan_sip.c, include/asterisk/channel.h, bridges/bridge_native_rtp.c, channels/chan_pjsip.c: bridge_native_rtp: Deadlock during 4-way conference creation The change contains a slightly adjusted patch that was on the issue (submitted by kmoore). A fix was made by adding in a bridge lock while calling bridge_start/stop from the framehook callback. Since the framehook callback is not called from the bridging core the bridge is not locked, but needs to be before calling bridge_start. (closes issue ASTERISK-22749) Reported by: Kinsey Moore Review: https://reviewboard.asterisk.org/r/3066/ Patches: lock_inversion.diff uploaded by kmoore (license 6273) ........ Merged revisions 403767 from http://svn.asterisk.org/svn/asterisk/branches/12 * rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, /, main/http.c: ARI: Allow specifying channel variables during a POST /channels Added the ability to specify channel variables when creating/originating a channel in ARI. The variables are sent in the body of the request and should be formatted as a single level JSON object. No nested objects allowed. For example: {"variable1": "foo", "variable2": "bar"}. (closes issue ASTERISK-22872) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3052/ ........ Merged revisions 403752 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_answer.c, rest-api/api-docs/bridges.json, res/ari/resource_bridges.c, res/res_ari_bridges.c, res/stasis/command.c, res/res_stasis_playback.c, /, res/stasis/control.c, res/stasis/command.h, include/asterisk/stasis_app.h, include/asterisk/stasis_app_impl.h, res/res_stasis_recording.c: ARI: Adding a channel to a bridge while a live recording is active blocks Added the ability to have rules that are checked when adding and/or removing channels to/from a bridge. In this case, if a channel is currently recording and someone attempts to add it to a bridge an "is recording" rule is checked, fails, and a 409 conflict is returned. Also command functions now return an integer value that can be descriptive of what kind of problems, if any, occurred before or during execution. (closes issue ASTERISK-22624) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2947/ ........ Merged revisions 403749 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 05:00 +0000 [r403737] Matthew Jordan * /, channels/Makefile: channels/Makefile: clean pjsip directory ........ Merged revisions 403736 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-13 00:40 +0000 [r403726] Richard Mudgett * include/asterisk/app.h, tests/test_voicemail_api.c, main/app.c: test_voicemail_api: Add check for a registered voicemail provider before tests. It is much nicer diagnosing a test failure if app_voicemail is actually loaded. 2013-12-12 19:46 +0000 [r403714] Scott Griepentrog * contrib/ast-db-manage/config/versions/581a4264e537_adding_extensions.py (added), /: realtime: Create extensions in alembic ast-db-manage contribution When the alembic scripts were written for creating Asterisk realtime databases the extensions table for dialplan wasn't included. This update creates the extensions table. (closes issue ASTERISK-22815) Reported by: Zone Conkle Review: https://reviewboard.asterisk.org/r/3064/ ........ Merged revisions 403713 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-12 19:18 +0000 [r403707] Jonathan Rose * /, channels/chan_pjsip.c: chan_pjsip: Revert r403587 This patch was intended to eliminate a deadlock that occurs when masquerades occur in pjsip channels, but has some potential side effects. Mark Michelson is currently working on addressing this problem from another angle. (issue ASTERISK-22936) Reported by: Jonathan Rose ........ Merged revisions 403705 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-11 20:24 +0000 [r403687] Kevin Harwell * include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c, /, configs/pjsip.conf.sample, res/res_pjsip/pjsip_configuration.c, res/res_pjsip_messaging.c, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip.c: res_pjsip_messaging: send message to a default outbound endpoint In some cases messages need to be sent to a direct URI (sip:). This patch adds in that support by using a default outbound endpoint. When sending messages, if no endpoint can be found then the default one is used. To facilitate this a new default_outbound_endpoint option was added to the globals section for pjsip.conf. Review: https://reviewboard.asterisk.org/r/2944/ ........ Merged revisions 403680 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-11 19:22 +0000 [r403652] Russell Bryant * /, channels/chan_sip.c: Reset peer outboundproxy on sip.conf reload If you set a peer's outboundproxy and then removed it from the config, this would not get picked up in a config reload. This patch fixes that by resetting it in set_peer_defaults(). Closes ASTERISK-19454 Review: https://reviewboard.asterisk.org/r/3065/ ........ Merged revisions 403634 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403635 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403639 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-11 19:19 +0000 [r403643] Richard Mudgett * apps/app_voicemail.c, include/asterisk/app.h, include/asterisk/doxyref.h, main/app.c: app_voicemail: Voicemail callback registration/unregistration function improvements. * The voicemail registration/unregistration functions now take a struct of callbacks instead of a lengthy parameter list of callbacks. * The voicemail registration/unregistration functions now prevent a competing module from interfering with an already registered callback supplying module. 2013-12-11 13:06 +0000 [r403617-403619] Matthew Jordan * channels/pjsip/dialplan_functions.c, include/asterisk/res_pjsip_session.h, channels/pjsip (added), /, funcs/func_channel.c, channels/pjsip/include, channels/pjsip/include/dialplan_functions.h, res/res_pjsip_t38.c, channels/pjsip/include/chan_pjsip.h, channels/Makefile, channels/chan_pjsip.c, main/xmldoc.c: func_channel, chan_pjsip: Add CHANNEL read function support for chan_pjsip This patch adds CHANNEL read support for chan_pjsip. This allows the dialplan to use the CHANNEL function on a chan_pjsip channel to obtain run-time information about the channel from the PJSIP channel driver and the PJSIP stack. This includes: * RTP information, including source/destination media addresses, whether or not the media is secure, held, and other properties. * RTCP information. This includes sets of parseable information, as well as individual statistic attriutes. * PJSIP information. This includes URIs, local/remote signalling addresses, whether or not the signalling is secure, and other properties. * The endpoint name. This can be used in conjunction with the PJSIP_ENDPOINT function to obtain more detailed endpoint information. Review: https://reviewboard.asterisk.org/r/3038/ ........ Merged revisions 403618 from http://svn.asterisk.org/svn/asterisk/branches/12 * Makefile, funcs/func_pjsip_endpoint.c (added), doc/snapshots.xslt (removed), /, doc/appdocsxml.xslt (added), doc/appdocsxml.dtd, main/sorcery.c: func_pjsip_endpoint: Add PJSIP_ENDPOINT function for querying endpoint details This patch adds a new function, PJSIP_ENDPOINT, which lets the dialplan query, for any endpoint, any property configured on an endpoint. This function is a companion to the CHANNEL function, which can be used to extract the endpoint name for a channel. Review: https://reviewboard.asterisk.org/r/3035 ........ Merged revisions 403616 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-10 15:15 +0000 [r403605] Mark Michelson * res/res_pjsip_authenticator_digest.c: Fix correct authentication behavior for artificial endpoint. When switching to using a vector for authentication, I initialized the vector for the artificial endpoint to be of size 1. However, this does not result in AST_VECTOR_SIZE() returning 1 since there isn't actually anything in the vector. Rather than trifle with the vector by putting unnecessary elements in, I simply changed the callback in res_pjsip_authenticator_digest.c to explicitly report that the artificial endpoint requires authentication. Thanks to Joshua Colp for pointing this out. 2013-12-09 22:59 +0000 [r403576-403588] Jonathan Rose * /, channels/chan_pjsip.c: chan_pjsip: Fix a sticking channel lock caused by channel masquerades (closes issue ASTERISK-22936) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/3042/ ........ Merged revisions 403587 from http://svn.asterisk.org/svn/asterisk/branches/12 * CHANGES, main/dial.c, apps/app_page.c, include/asterisk/dial.h: app_page: Add predial handlers for app_page. (closes issue AFS-14) Review: https://reviewboard.asterisk.org/r/3045/ 2013-12-09 19:24 +0000 [r403544-403560] Richard Mudgett * /, res/res_sorcery_astdb.c: Reverting regex part of -r403545 at request of file. res_sorcery_astdb.c: Fix get multiple records by regex. * Fix sorcery_astdb_retrieve_regex() pattern matching. Let the regexec() function match the stored key values instead of having astdb prefilter them. Previoiusly you could only use a simple regex pattern when the pattern began with '^'. ........ Merged revisions 403559 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_sorcery_astdb.c: res_sorcery_astdb.c: Fix get multiple records by regex. * Fix sorcery_astdb_retrieve_regex() pattern matching. Let the regexec() function match the stored key values instead of having astdb prefilter them. Previoiusly you could only use a simple regex pattern when the pattern began with '^'. * Fix off nominal memory leak in sorcery_astdb_retrieve_regex(). ........ Merged revisions 403545 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/sorcery.c, /: sorcery: Eliminate shadowing a varaible that caused confusion. * Eliminated shadowing of the __ast_sorcery_apply_config() name parameter causing confusion. * Fix potential crash from sorcery.conf user input in __ast_sorcery_apply_config() if the user supplied a malformed config line that is missing the sorcery object type name. * Remove redundant test in __ast_sorcery_apply_config(). !config and config == CONFIGS_STATUS_FILEMISSING are identical. ........ Merged revisions 403541 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-09 18:32 +0000 [r403543] Joshua Colp * /, main/endpoints.c: endpoints: Keep a reference to channel ids when creating snapshot. The snapshot process for endpoints uses the channel ids present on the endpoint itself. Without keeping a reference it was possible for the strings to be freed underneath any consumer of an endpoint snapshot. A reference is now held by the snapshot to the channel ids and released when the snapshot is destroyed. (issue ASTERISK-22801) Reported by: Matt Jordan ........ Merged revisions 403542 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-09 18:14 +0000 [r403528] Richard Mudgett * main/sorcery.c, /: sorcery: Whitespace You would think that a new file would start off without any whitespace oddities. ........ Merged revisions 403527 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-09 17:29 +0000 [r403512-403526] Mark Michelson * apps/app_confbridge.c, CHANGES, apps/confbridge/conf_state_multi_marked.c: Add a CONFBRIDGE_RESULT channel variable to discern why a channel left a ConfBridge. Review: https://reviewboard.asterisk.org/r/3009 * CHANGES, apps/app_mixmonitor.c: Create function for retrieving Mixmonitor instance data. For the time, this is only useful for retrieving the filename. The purpose of this function is to better facilitate multiple mixmonitors per channel. Setting a MIXMONITOR_FILENAME channel variable is not conducive to such behavior, so allowing finer grained access to individual mixmonitor properties improves the situation. The MIXMONITOR_FILENAME channel variable is still set, though, so there is no worry about backwards compatibility. Review: https://reviewboard.asterisk.org/r/3023 2013-12-09 16:41 +0000 [r403511] Joshua Colp * res/res_pjsip_nat.c, /: res_pjsip_nat: Add NAT module to session dialogs. Due to the way pjproject internally works it was possible for the NAT module to not be invoked on messages with-in a session dialog. This means that the various parts of the message would not get rewritten with the source IP address and port. This change uses a session supplement to add the NAT module to the dialog on the first incoming or outgoing INVITE. (closes issue ASTERISK-22941) Reported by: Leif Madsen ........ Merged revisions 403510 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-09 16:10 +0000 [r403499] Mark Michelson * res/res_pjsip/config_auth.c, res/res_pjsip_outbound_authenticator_digest.c, res/res_pjsip_authenticator_digest.c, res/res_pjsip_outbound_registration.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip/pjsip_distributor.c, res/res_pjsip.c, include/asterisk/res_pjsip.h: Switch PJSIP auth to use a vector. Since Asterisk has a vector API now, places where arrays are manually resized don't really make sense any more. Since the auth work in PJSIP was freshly-written, it was easy to reform it to use a vector. Review: https://reviewboard.asterisk.org/r/3044 2013-12-09 03:21 +0000 [r403436-403466] Matthew Jordan * /, res/res_fax_spandsp.c: res_fax_spandsp: Always init T.38 session to avoid crashes during state change Prior to this patch, res_fax_spandsp was conservative with how it initialized the spandsp T.38 context. It would only initialize it if the driver thought the current state was a T.38 fax. While this works fine in nominal situations, in certain off nominal situations, res_fax_spandsp can believe that a T.38 fax will not occur when in fact one has started. In particular, this was discovered when res_fax would fall back to audio after timing out on a T.38 upgrade. The SIP channel driver would continue to retry the re-INVITE and - if the remote end responded after res_fax timed out with a 200 OK - a T.38 frame would be delivered to the res_fax stack when it no longer expected it. As it turns out, there does not appear to be any downside to always initializing the T.38 context, other than the actual memory allocation. Since that avoids this off nominal situation (and others which are equally likely hard to predict), this is the safest way to avoid this problem. Much thanks to Torrey as well for providing a scenario that reproduces this issue. (closes issue ASTERISK-21242) Reported by: Ashley Winters Tested by: Torrey Searle patches: always-init-t38.patch uploaded by awinters (License 6477) A_PARTY.xml uploaded by tsearle (License 5334) ........ Merged revisions 403449 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403450 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403458 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_config_sqlite.c: res_config_sqlite: Check for CDR unregistration failures If the CDR unregistration fails due to an inflight CDR, the res_config_sqlite module needs to bail on unloading itself. Otherwise, the config could be unloaded (including the CDR table name) while the CDR engine posts a CDR to the still registered backend, resulting in a crash. ........ Merged revisions 403435 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-05 23:40 +0000 [r403414] Jonathan Rose * apps/app_record.c: app_record: Add an option that allows DTMF '0' to act as an additional terminator Using this terminator when active results in ${RECORD_STATUS} being set to 'OPERATOR' instead of 'DTMF' (closes issue AFS-7) Review: https://reviewboard.asterisk.org/r/3041/ 2013-12-05 22:10 +0000 [r403402-403404] David M. Lee * addons/chan_mobile.c, main/bridge_channel.c, tests/test_cdr.c, channels/chan_pjsip.c, res/parking/parking_manager.c, channels/chan_mgcp.c, channels/chan_unistim.c, main/pbx.c, /, apps/app_meetme.c, funcs/func_timeout.c, main/bridge.c, tests/test_stasis_channels.c, main/core_unreal.c, include/asterisk/channel.h, channels/chan_gtalk.c, main/cel.c, apps/app_queue.c, channels/sig_pri.c, main/stasis_bridges.c, channels/chan_jingle.c, channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c, channels/sig_analog.c, include/asterisk/stasis_channels.h, res/res_agi.c, channels/chan_motif.c, channels/chan_h323.c, tests/test_cel.c, apps/app_confbridge.c, res/res_stasis.c, res/res_pjsip_refer.c, apps/app_voicemail.c, apps/app_dial.c, channels/chan_vpb.cc, addons/chan_ooh323.c, channels/chan_sip.c, main/pickup.c, include/asterisk/aoc.h, include/asterisk/stasis_bridges.h, apps/app_userevent.c, apps/app_disa.c, main/core_local.c, include/asterisk/channelstate.h, channels/chan_console.c, channels/chan_iax2.c, main/endpoints.c, channels/chan_oss.c, res/parking/parking_bridge_features.c, apps/app_agent_pool.c, main/channel.c, channels/chan_misdn.c, channels/chan_skinny.c, pbx/pbx_realtime.c, channels/chan_alsa.c, main/stasis_channels.c, channels/chan_nbs.c: Reverting r403311. It's causing ARI tests to hang. ........ Merged revisions 403398 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/stasis/control.c: ari: Fix deadlock problem with functions that use autoservice. The code for getting channel variables from ARI assumed that you needed to lock the channel in order to properly execute functions and read channel variables. Apparently, this is not the case, since any dialplan function that puts the channel into autoservice deadlocks when attempting to remove the channel from autoservice. ........ Merged revisions 403342 from http://svn.asterisk.org/svn/asterisk/branches/12 * /: Multiple revisions 403304,403310 ........ r403304 | dlee | 2013-12-02 12:34:50 -0600 (Mon, 02 Dec 2013) | 1 line Fixed the filename for the ari.conf docs ........ r403310 | file | 2013-12-03 10:32:12 -0600 (Tue, 03 Dec 2013) | 5 lines Revert revision 403304: Fixed the filename for the ari.conf docs The changed value refers to the name of the module. The name of the configuration file is specified in the configFile section. ........ Merged revisions 403304,403310 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-04 21:42 +0000 [r403378] Kevin Harwell * /, res/res_pjsip_registrar.c: res_pjsip_registrar: undefined function pointer symbol Used a static wrapper around the offending function to alleviate the issue. Reported by: rmudgett ........ Merged revisions 403377 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-04 20:54 +0000 [r403365] Joshua Colp * res/res_pjsip_t38.c, /: res_pjsip_t38: Don't pass T.38 control frames through to other hooks. This crept up during gateway testing where the gateway would receive the request to negotiate and assume it came from the remote side, causing the gateway state machine to go a little, to a use a technical term, "wonky". ........ Merged revisions 403364 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-04 18:41 +0000 [r403350] Mark Michelson * /, res/res_pjsip.c: Initialize the hash value argument to pj_hash_get() to 0. Passing a non-zero value causes PJLIB to use the given input as the hash value. Passing zero causes the parameter to become an output parameter that receives the hash value that was computed based on the given key. This change essentially makes ast_sip_dict_get() properly retrieve the desired value. ........ Merged revisions 403349 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-03 18:01 +0000 [r403330] Joshua Colp * /, configure, include/asterisk/autoconfig.h.in, configure.ac, res/res_pjsip_session.c: res_pjsip_session: Add support for PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE flag. Newer versions of PJSIP have changed to using a flag for the PJMEDIA_SDP_NEG_ALLOW_MEDIA_CHANGE instead of a define. This adds a configure check to detect the presence of the flag and use it if found. ........ Merged revisions 403329 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-03 17:35 +0000 [r403327] Richard Mudgett * include/asterisk/sorcery.h, res/res_pjsip/pjsip_configuration.c, res/res_pjsip_registrar_expire.c, res/res_pjsip/pjsip_options.c, tests/test_sorcery.c, include/asterisk/bucket.h, main/sorcery.c, /, main/bucket.c: sorcery, bucket: Change observer remove calls to take const callbacks struct. * Make ast_sorcery_observer_remove() accept a const callbacks struct. * Make ast_sorcery_observer_remove() tolerant of the sorcery parameter being NULL. Now it can be called within a module unload routine if the sorcery initialization fails. * Fix ast_sorcery_observer_add() to fail if the container link fails. ........ Merged revisions 403324 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-03 17:07 +0000 [r403314] Mark Michelson * channels/chan_nbs.c, main/bridge_channel.c, res/res_stasis.c, channels/chan_pjsip.c, res/parking/parking_manager.c, apps/app_voicemail.c, channels/chan_unistim.c, channels/chan_vpb.cc, addons/chan_ooh323.c, /, include/asterisk/aoc.h, apps/app_meetme.c, main/bridge.c, apps/app_userevent.c, channels/chan_gtalk.c, channels/chan_iax2.c, main/endpoints.c, main/stasis_bridges.c, main/channel.c, channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c, channels/sig_analog.c, channels/chan_skinny.c, res/res_agi.c, channels/chan_motif.c, pbx/pbx_realtime.c, channels/chan_alsa.c, main/stasis_channels.c, apps/app_confbridge.c, addons/chan_mobile.c, tests/test_cdr.c, res/res_pjsip_refer.c, channels/chan_mgcp.c, apps/app_dial.c, main/pbx.c, channels/chan_sip.c, main/pickup.c, funcs/func_timeout.c, tests/test_stasis_channels.c, main/core_unreal.c, include/asterisk/stasis_bridges.h, apps/app_disa.c, include/asterisk/channel.h, main/core_local.c, include/asterisk/channelstate.h, channels/chan_console.c, main/cel.c, apps/app_queue.c, channels/sig_pri.c, channels/chan_oss.c, res/parking/parking_bridge_features.c, apps/app_agent_pool.c, channels/chan_jingle.c, channels/chan_misdn.c, include/asterisk/stasis_channels.h, channels/chan_h323.c, tests/test_cel.c: Add channel locking for channel snapshot creation. This adds channel locks around calls to create channel snapshots as well as other functions which operate on a channel and then end up creating a channel snapshot. Functions that expect the channel to be locked prior to being called have had their documentation updated to indicate such. ........ Merged revisions 403311 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-03 16:39 +0000 [r403313] Joshua Colp * main/media_index.c, /: media_index: Make media indexing tolerable of bad symlinks. Media indexing will now skip over files and directories that stat will not return information about. This can occur under normal conditions when a symbolic link points to a location that no longer exists. ........ Merged revisions 403312 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-02 18:12 +0000 [r403292] Alexandr Anikin * addons/chan_ooh323.c, /: Check and reject non-digits e164 values on peers and general sections in ooh323.conf Regenerate e164 endpoint list on reload ooh323 (issue ASTERISK-22901) Reported by: Cyril CONSTANTIN Patches: ASTERISK-22901.patch ........ Merged revisions 403288 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403290 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-12-01 21:13 +0000 [r403257-403272] Joshua Colp * /, res/res_pjsip_session.c: res_pjsip_session: Apply fromuser and fromdomain to all requests as documented. ........ Merged revisions 403271 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_t38.c, /: res_pjsip_t38: Add the framehook to the channel only on first INVITE. The check for determining whether the T.38 framehook should be added to the channel or not has now been changed to guarantee adding only occurs on the first incoming or outgoing INVITE. ........ Merged revisions 403258 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip/security_events.c, res/res_pjsip/pjsip_options.c, res/res_pjsip.c, res/res_pjsip_transport_websocket.c, include/asterisk/res_pjsip.h, /, res/res_pjsip/location.c: res_pjsip_transport_websocket: Fix security events and simplify implementation. Transport type determination for security events has been simplified to use the type present on the message itself instead of searching through configured transports to find the transport used. The actual WebSocket transport has also been simplified. It now leverages the existing PJSIP transport manager for finding the active WebSocket transport for outgoing messages. This removes the need for res_pjsip_transport_websocket to store a mapping itself. (closes issue ASTERISK-22897) Reported by: Max E. Reyes Vera J. Review: https://reviewboard.asterisk.org/r/3036/ ........ Merged revisions 403256 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-30 14:12 +0000 [r403241] Joshua Colp * res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /, res/ari/ari_model_validators.c: res_ari: Add Recording events to the validator. ........ Merged revisions 403240 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-28 02:12 +0000 [r403208-403224] Joshua Colp * res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Don't produce an invalid media stream with no formats. Depending on configuration it was possible for a media stream to be created without any media formats. The produced SDP would fail internal validation and cause a crash. The code will now no longer add media streams with no formats to the SDP, allowing it to pass validation and work. (closes issue ASTERISK-22858) Reported by: Anthony Messina ........ Merged revisions 403223 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_header_funcs.c, /: res_pjsip_header_funcs: Don't add headers to re-INVITEs. When sending a re-INVITE to an endpoint it was possible for received headers to be added as well (since they are stored for retrieval using the PJSIP_HEADER dialplan function). This caused a broken (and potentially large) SIP INVITE to be produced and sent. This changes the module so it will no longer add headers to re-INVITEs. (closes issue ASTERISK-22882) Reported by: David M. Lee ........ Merged revisions 403221 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_playback.c, /: res_stasis_playback: Add 'number', 'digits', and 'characters' URI scheme implementations. This change adds new URI scheme implementations for playing numbers, digits, and characters. This is done as part of the normal playback mechanism and can be used with queueing to create a combined sentence. Review: https://reviewboard.asterisk.org/r/3028/ ........ Merged revisions 403209 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_configuration.c, res/res_pjsip.c, res/res_pjsip_session.c, include/asterisk/res_pjsip.h: res_pjsip_session: Add configurable behavior for redirects. The action taken when a redirect occurs is now configurable on a per-endpoint basis. The redirect can either be treated as a redirect to a local extension, to a URI that is dialed through the Asterisk core, or to a URI that is dialed within PJSIP itself. (closes issue ASTERISK-21710) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2963/ ........ Merged revisions 403207 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-27 17:32 +0000 [r403192] Richard Mudgett * include/asterisk/astdb.h: astdb: Tweak some doxygen comments. 2013-11-27 16:12 +0000 [r403180] Joshua Colp * /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Fix crash when reloading certain configurations. Certain options available that specify a SIP URI perform validation on the provided URI using the PJSIP URI parser. This operation requires that the thread executing it be registered with the PJLIB library. During reloads this was done on a thread which was NOT registered with it. This fixes the problem by creating a task which reloads the configuration on a PJSIP thread. (closes issue ASTERISK-22923) Reported by: Anthony Messina ........ Merged revisions 403179 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-27 15:48 +0000 [r403177] David M. Lee * res/res_ari_channels.c, include/asterisk/ari.h, rest-api-templates/param_parsing.mustache, include/asterisk/http.h, res/res_ari_recordings.c, res/res_ari_endpoints.c, main/http.c, rest-api-templates/swagger_model.py, res/res_ari_playbacks.c, res/res_ari_sounds.c, rest-api-templates/asterisk_processor.py, res/res_ari_bridges.c, tests/test_ari.c, res/res_ari.c, /, res/res_ari_device_states.c, res/res_ari_asterisk.c, rest-api-templates/res_ari_resource.c.mustache, res/res_ari_applications.c: ari:Add application/json parameter support The patch allows ARI to parse request parameters from an incoming JSON request body, instead of requiring the request to come in as query parameters (which is just weird for POST and DELETE) or form parameters (which is okay, but a bit asymmetric given that all of our responses are JSON). For any operation that does _not_ have a parameter defined of type body (i.e. "paramType": "body" in the API declaration), if a request provides a request body with a Content type of "application/json", the provided JSON document is parsed and searched for parameters. The expected fields in the provided JSON document should match the query parameters defined for the operation. If the parameter has 'allowMultiple' set, then the field in the JSON document may optionally be an array of values. (closes issue ASTERISK-22685) Review: https://reviewboard.asterisk.org/r/2994/ 2013-11-27 15:31 +0000 [r403161-403174] Joshua Colp * /, res/res_pjsip/pjsip_configuration.c: res_pjsip: Update handling of some options to work with new option names. Some options (such as call_group and pickup_group) share the same configuration handler and decide what logic to use based on the name of the option. These handlers were not updated to check for the new option names and were treating the options as invalid. This change simply updates the handlers with the proper names of the options. (closes issue ASTERISK-22922) Reported by: Anthony Messina ........ Merged revisions 403173 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, configure, include/asterisk/autoconfig.h.in, configure.ac: Fix a configure issue with PJSIP transaction group lock detection. The configure check did not use the provided paths for pjproject if provided when looking for transaction group lock support. ........ Merged revisions 403160 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-23 17:48 +0000 [r403133-403135] Kevin Harwell * res/ari.make, rest-api/api-docs/applications.json, res/ari/resource_device_states.h (added), include/asterisk/stasis_app_device_state.h (added), res/ari/resource_applications.h, res/res_stasis.c, include/asterisk/devicestate.h, rest-api/api-docs/events.json, res/res_stasis_device_state.exports.in (added), res/stasis/app.c, res/res_ari_device_states.c (added), /, include/asterisk/stasis_app.h, main/devicestate.c, res/stasis/app.h, rest-api/resources.json, res/res_stasis_device_state.c (added), res/ari/ari_model_validators.c, res/ari/ari_model_validators.h, res/ari/resource_device_states.c (added), rest-api/api-docs/deviceStates.json (added), rest-api-templates/ari.make.mustache: ARI: Implement device state API Created a data model and implemented functionality for an ARI device state resource. The following operations have been added that allow a user to manipulate an ARI controlled device: Create/Change the state of an ARI controlled device PUT /deviceStates/{deviceName}&{deviceState} Retrieve all ARI controlled devices GET /deviceStates Retrieve the current state of a device GET /deviceStates/{deviceName} Destroy a device-state controlled by ARI DELETE /deviceStates/{deviceName} The ARI controlled device must begin with 'Stasis:'. An example controlled device name would be Stasis:Example. A 'DeviceStateChanged' event has also been added so that an application can subscribe and receive device change events. Any device state, ARI controlled or not, can be subscribed to. While adding the event, the underlying subscription control mechanism was refactored so that all current and future resource subscriptions would be the same. Each event resource must now register itself in order to be able to properly handle [un]subscribes. (issue ASTERISK-22838) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3025/ ........ Merged revisions 403134 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_registrar.c, main/sorcery.c, include/asterisk/res_pjsip.h, include/asterisk/acl.h, res/res_pjsip/config_auth.c, include/asterisk/utils.h, res/res_pjsip.exports.in, /, res/res_pjsip_endpoint_identifier_ip.c, main/acl.c, main/utils.c, res/res_pjsip.c, res/res_pjsip_exten_state.c, include/asterisk/res_pjsip_pubsub.h, res/res_pjsip/location.c, res/res_pjsip_outbound_registration.c, res/res_pjsip_mwi.c, res/res_pjsip/pjsip_configuration.c, include/asterisk/sorcery.h, include/asterisk/strings.h, res/res_pjsip/include/res_pjsip_private.h, res/res_pjsip_pubsub.c, res/res_pjsip/config_transport.c: res_pjsip: AMI commands and events. Created the following AMI commands and corresponding events for res_pjsip: PJSIPShowEndpoints - Provides a listing of all pjsip endpoints and a few select attributes on each. Events: EndpointList - for each endpoint a few attributes. EndpointlistComplete - after all endpoints have been listed. PJSIPShowEndpoint - Provides a detail list of attributes for a specified endpoint. Events: EndpointDetail - attributes on an endpoint. AorDetail - raised for each AOR on an endpoint. AuthDetail - raised for each associated inbound and outbound auth TransportDetail - transport attributes. IdentifyDetail - attributes for the identify object associated with the endpoint. EndpointDetailComplete - last event raised after all detail events. PJSIPShowRegistrationsInbound - Provides a detail listing of all inbound registrations. Events: InboundRegistrationDetail - inbound registration attributes for each registration. InboundRegistrationDetailComplete - raised after all detail records have been listed. PJSIPShowRegistrationsOutbound - Provides a detail listing of all outbound registrations. Events: OutboundRegistrationDetail - outbound registration attributes for each registration. OutboundRegistrationDetailComplete - raised after all detail records have been listed. PJSIPShowSubscriptionsInbound - A detail listing of all inbound subscriptions and their attributes. Events: SubscriptionDetail - on each subscription detailed attributes SubscriptionDetailComplete - raised after all detail records have been listed. PJSIPShowSubscriptionsOutbound - A detail listing of all outboundbound subscriptions and their attributes. Events: SubscriptionDetail - on each subscription detailed attributes SubscriptionDetailComplete - raised after all detail records have been listed. (issue ASTERISK-22609) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2959/ ........ Merged revisions 403131 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-23 12:52 +0000 [r403118-403120] Joshua Colp * res/res_stasis_playback.c, rest-api/api-docs/events.json, /, res/res_stasis_recording.c, res/ari/ari_model_validators.c, rest-api/api-docs/recordings.json, res/ari/ari_model_validators.h: ari: Add events for playback and recording. While there were events defined for playback and recording these were not actually sent. This change implements the to_json handlers which produces them. (closes issue ASTERISK-22710) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/3026/ ........ Merged revisions 403119 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_snoop.exports.in (added), /, include/asterisk/stasis_app_snoop.h (added), rest-api/api-docs/channels.json, res/res_stasis_snoop.c (added), main/audiohook.c, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h: ari: Add Snoop operation for spying/whispering on channels. The Snoop operation can be invoked on a channel to spy or whisper on it. It returns a channel that any channel operations can then be invoked on (such as record to do monitoring). (closes issue ASTERISK-22780) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/3003/ ........ Merged revisions 403117 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-23 00:22 +0000 [r403106] Rusty Newton * apps/app_voicemail.c: app_voicemail: when forwarding a message, play vm-msgforwarded instead of vm-msgsaved In the last release of sounds, 1.4.25 we added a vm-msgforwarded prompt for various core languages. Now we use that prompt. (issue ASTERISK-21413) (closes issue ASTERISK-21413) Reported by: netwrkr Tested by: newtonr 2013-11-22 23:57 +0000 [r403095] Kinsey Moore * tests/test_stasis.c, /, tests/test_stasis_channels.c: Make sure unit tests compile This fixes the unit tests that were broken by r403069 and several functions requiring a new parameter for sanitization of JSON messages generated from object snapshots. ........ Merged revisions 403094 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-22 22:37 +0000 [r403083] Kevin Harwell * /, contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py, res/res_pjsip/pjsip_configuration.c: res_pjsip: convert configuration settings names to snake case some more Updated the alembic script for pjsip. Also, the dtls config parsing stuff was expecting strings with no underscores, so removed the underscores from the option name before passing it to the parser. ........ Merged revisions 403082 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-22 20:10 +0000 [r403070] Kinsey Moore * res/res_stasis.c, main/stasis_endpoints.c, res/ari/resource_endpoints.c, main/rtp_engine.c, /, res/stasis/app.c, include/asterisk/stasis_bridges.h, include/asterisk/stasis.h, include/asterisk/stasis_app.h, main/stasis_bridges.c, res/ari/resource_bridges.c, main/json.c, main/stasis_message.c, include/asterisk/stasis_channels.h, main/stasis_channels.c, res/ari/resource_channels.c, include/asterisk/stasis_endpoints.h: ARI: Don't leak implementation details This change prevents channels used as implementation details from leaking out to ARI. It does this by preventing creation of JSON blobs of channel snapshots created from those channels and sanitizing JSON blobs of bridge snapshots as they are created. This introduces a framework for excluding information from output targeted at Stasis applications on a consumer-by-consumer basis using channel sanitization callbacks which could be extended to bridges or endpoints if necessary. This prevents unhelpful error messages from being generated by ast_json_pack. This also corrects a bug where BridgeCreated events would not be created. (closes issue ASTERISK-22744) Review: https://reviewboard.asterisk.org/r/2987/ Reported by: David M. Lee ........ Merged revisions 403069 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-22 17:27 +0000 [r403051] Kevin Harwell * res/res_pjsip_acl.c, res/res_pjsip.c, res/res_pjsip/config_transport.c, res/res_pjsip/config_global.c, /, configs/pjsip.conf.sample, res/res_pjsip/config_system.c, contrib/scripts/sip_to_pjsip/sip_to_pjsip.py, res/res_pjsip/pjsip_configuration.c: res_pjsip: convert configuration settings names to snake case Renamed, where appropriate, the configuration options for chan/res_pjsip to use snake case (compound words separated by an underscore). For example, faxdetect will become fax_detect, recordofffeature will become record_off_feature, etc... Review: https://reviewboard.asterisk.org/r/3002/ ........ Merged revisions 403022 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-22 17:12 +0000 [r403017] Joshua Colp * /, main/translate.c: translate: Move freeing of frame to after it is used. When translating from one format to another it is possible to inform the translation function that the source frame should be freed. This was previously done immediately but shortly afterwards the frame that was freed was accessed and used again. This change moves code around a bit so that the frame is now freed after it has been completely used. (closes issue ASTERISK-22788) Reported by: Corey Farrell Patches: translate-access-after-free-11up.patch uploaded by coreyfarrell (license 5909) translate-access-after-free-1.8.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 403014 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 403015 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 403016 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-22 16:43 +0000 [r403013] Richard Mudgett * apps/app_directed_pickup.c, CHANGES: PickupChan: Add ability to specify channel uniqueids as well as channel names. * Made PickupChan() search by channel uniqueids if the search could not find a channel by name. * Ensured PickupChan() never considers the picking channel for pickup. * Made PickupChan() option p use a common search by name routine. The original search was erroneously case sensitive. (issue AFS-42) Review: https://reviewboard.asterisk.org/r/3017/ 2013-11-21 22:38 +0000 [r402995] Jonathan Rose * CHANGES, apps/app_directory.c: app_directory: Set variable indicating reason directory exited By the time the directory application exits, a channel variable DIRECTORY_RESULT will be set for the channel that invoked it which can be used to determine the reason for exit. The changes log and the app_directory documentation contain specific details about each of the possible values for DIRECTORY_RESULT. Review: https://reviewboard.asterisk.org/r/3016/ 2013-11-21 22:36 +0000 [r402982-402994] David M. Lee * rest-api-templates/ari_resource.c.mustache, /, rest-api-templates/res_ari_resource.c.mustache: ari: Fix #include to match generated headers for snakeCase resource files ........ Merged revisions 402993 from http://svn.asterisk.org/svn/asterisk/branches/12 * rest-api-templates/make_ari_stubs.py, /: ari: Fix generators for resources with camelCase names. For the new deviceState resource, we need to properly generate device_state.[ch] files. ........ Merged revisions 402981 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-21 19:22 +0000 [r402969] Matthew Jordan * res/res_pjsip_session.c, /: res_pjsip_session: Fix memory leak of direct media format capabilities The direct media format capabilities are always allocated in ast_sip_session_alloc and were not freed in the session destructor. Whoops. (This being the third whoops caught by Scott and Nitesh's valgrind work for the Asterisk Test Suite. Nifty!) ........ Merged revisions 402968 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-21 19:09 +0000 [r402945-402957] Richard Mudgett * include/asterisk/app.h, /: voicemail: Fixup some doxygen comments. ........ Merged revisions 402956 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/bucket.c: bucket: Fix scheme ref leak in __ast_bucket_scheme_register(). ........ Merged revisions 402944 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-21 17:53 +0000 [r402942-402943] Matthew Jordan * res/res_pjsip_sdp_rtp.c, /: res_pjsip_sdp_rtp: Fix use of uninitialized value in PJSIP In PJMEDIA, pjmedia_sdp_rtpmap_to_attr will attempt to use the string rtpmap.param regardless of its length value. Simply setting the length to 0 does not prevent the garbage on the stack in rtpmap.param.ptr from being formatted in a sprintf call. This patch initializes the string to NULL so that at the very least, something is provided to the function that is predictable. ........ Merged revisions 402941 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_mwi.c: res_pjsip_mwi: Fix memory leak of MWI subscriptions container This patch fixes a reference counting memory leak on the ao2_container created as part of create_mwi_subscriptions. When we create the container in this routine, the intent is to hand lifetime ownership over to the global container unsolicited_mwi. When ao2_global_obj_replace_unref is called, the reference count on mwi_subscriptions (the container) will be bumped by 1; however, the function does not decrement the reference count on mwi_subscriptions when this occurs. This will prevent the container from being fully disposed of when Asterisk exits (or on any subsequent call to this operation, such as during a reload). ........ Merged revisions 402940 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-21 15:57 +0000 [r402928-402929] David M. Lee * res/res_stasis.c, /: stasis: Fixed scoping problem with bridge tracking. ........ Merged revisions 402817 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, /, res/stasis/control.c, include/asterisk/stasis_app.h, rest-api/api-docs/channels.json: ari: Add silence generator controls This patch adds the ability to start a silence generator on a channel via ARI. This generator will play silence on the channel (avoiding audio timeouts on the peer) until it is stopped, or some other media operation is started (like playing media, starting music on hold, etc.). (closes issue ASTERISK-22514) Review: https://reviewboard.asterisk.org/r/3019/ ........ Merged revisions 402926 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-19 23:17 +0000 [r402892] Joshua Colp * /, res/res_pjsip_caller_id.c: res_pjsip_caller_id: Don't overwrite user portion of the From header when fromuser is set. The fromuser option is used to explicitly set the user within the From header. The res_pjsip_caller_id module did not take this setting into account when determining if the From header could be modified or not. (closes issue ASTERISK-22866) Reported by: Anthony Messina ........ Merged revisions 402891 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-16 13:51 +0000 [r402865] Joshua Colp * res/res_pjsip/pjsip_distributor.c, /, configure, include/asterisk/autoconfig.h.in, configure.ac: res_pjsip: Add support for building against pjproject with SIP transaction group lock support. SIP transaction group lock support has been backported into our pjproject. Since the code now internally uses a group lock the code is now changed to unlock it if present. Note that the act of finding the transaction is what actually returns it locked. For further information about group locks check out the wiki page at: http://trac.pjsip.org/repos/wiki/Group_Lock (issue ASTERISK-22818) Reported by: Matt Jordan ........ Merged revisions 402864 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-15 22:38 +0000 [r402854] Jonathan Rose * apps/app_confbridge.c, CHANGES, apps/confbridge/conf_config_parser.c, configs/confbridge.conf.sample, apps/confbridge/include/confbridge.h: Confbridge: Add option to review the recording similar to announce_join_leave Review: https://reviewboard.asterisk.org/r/3008/ 2013-11-15 14:37 +0000 [r402839] Kinsey Moore * /, main/cel.c: CEL: Fix crash when using CELGenUserEvent This fixes a crash when CELGenUserEvent is called from the dialplan while CEL is disabled. Currently, CEL does not create its topics and forwards if it is not enabled and external entities may depend on these topics blindly since they should always be available. This patch breaks up route creation and topic/forward creation such that the CEL topics and forwards will always exist while the router and its associated routes will be torn down and recreated as necessary. (closes issue ASTERISK-22799) Review: https://reviewboard.asterisk.org/r/3010/ Reported by: Matt Jordan ........ Merged revisions 402838 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-14 21:36 +0000 [r402820-402829] Richard Mudgett * apps/app_directed_pickup.c: Pickup: Pickup() and PickupChan() parameter parsing improvements. * Made Pickup() and PickupChan() tollerate empty pickup values. i.e., You can now have Pickup(&&exten@context). * Made PickupChan() use the standard option flag parsing code. * apps/app_directed_pickup.c: Pickup: Ensure using PICKUPMARK never considers the picking channel. 2013-11-14 20:32 +0000 [r402819] Jonathan Rose * CHANGES, main/pbx.c, apps/app_sayunixtime.c: Say: If SAY_DTMF_INTERRUPT is set to an ast_true value, jump on DTMF Similar to how background works, if a say application is called with this variable set to 'true', 'yes', 'on', etc. then using DTMF while the say action is in progress will result in the channel jumping to that extension in the dialplan. Review: https://reviewboard.asterisk.org/r/3011/ 2013-11-13 23:11 +0000 [r402805] Joshua Colp * rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, /, res/stasis/control.c, include/asterisk/stasis_app.h: res_ari_channels: Add the ability to stop locally generated ringing on a channel. Using the 'ring' operation it is possible to start locally generated ringback if the channel is answered. This change adds the ability to stop it by using DELETE. ........ Merged revisions 402804 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 23:17 +0000 [r402788-402795] Kevin Harwell * res/ari/resource_endpoints.c, /: ari endpoints: GET /ari/endpoints/{invalid-tech} should return a 404 Was returning a 404 on a valid technology with an empty list of endpoints. Now checking against the channel tech to make sure the tech itself is valid and not just an empty list of endpoints. (issue ASTERISK-22803) Reported by: David M. Lee ........ Merged revisions 402793 from http://svn.asterisk.org/svn/asterisk/branches/12 * rest-api/api-docs/endpoints.json, res/ari/resource_endpoints.c, /, res/res_ari_endpoints.c: ari endpoints: GET /ari/endpoints/{invalid-tech} should return a 404 Implementation listing endpoints by technology returned an empty array if no matching endpoints were found. Fixed so a "404 Not Found" will be returned instead. (closes issue ASTERISK-22803) Reported by: David M. Lee ........ Merged revisions 402787 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 19:38 +0000 [r402768-402778] Mark Michelson * /, main/channel.c: Switch to a scoped lock to avoid missing unlocks in failure returns. ........ Merged revisions 402769 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/channel.c, /: Move a NULL check to a place that makes more sense. Two variables were being checked for NULLity immediately after being declared NULL. I moved the NULL check until after the variables are allocated. This allows for the "channelvars" option in manager.conf to work as intended again. ........ Merged revisions 402767 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 16:49 +0000 [r402758] Kevin Harwell * res/res_pjsip_messaging.c, res/res_pjsip_header_funcs.c, /: pjsip_messaging, pjsip_header_funcs: Crashes due to NULL pointer dereferences Both res_pjsip_messaging and res_pjsip_header_funcs were causing asterisk to crash because they were trying to dereference a NULL pointer. In the case of res_pjsip_messaging it was attempting to "print" a contact header that did not exist. In fact contact headers should not be part of a SIP MESSAGE, so the offending code was simply removed. In the case of res_pjsip_header_funcs a null private channel tech was being passed to the function and then later dereferenced. Added null checks (and error logging) to the read/write function handlers to guard against crashing. (closes issue ASTERISK-22821) Reported by: Anthony Messina ........ Merged revisions 402757 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 16:34 +0000 [r402756] Kinsey Moore * /, apps/app_celgenuserevent.c: CELGenUserEvent: Fix error message from ast_json_pack This prevents NULL from being passed into an ast_json_pack call when no extra information is passed to the application which prevents an error message about NULL arguments from being generated. ........ Merged revisions 402755 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 15:27 +0000 [r402741] David M. Lee * res/ari/ari_model_validators.h, rest-api/api-docs/events.json, /: Fixed a typ. ........ Merged revisions 402738 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-12 15:03 +0000 [r402711] Kinsey Moore * channels/chan_dahdi.c, /: chan_dahdi: Fix crash during caller ID read Asterisk will sometimes core dump during caller id read on analog channels due to a negative return value from the read() in my_get_callerid that slips through as a negative length argument to callerid_feed() if the errno returned by DAHDI is ELAST. This change ensures that the negative return is treated properly even when it is ELAST. (closes issue ASTERISK-22746) Reported by: Michael Walton Patches: chan_dahdi_cid_crash_fix.r401410.patch uploaded by Michael Walton (License 6502) ........ Merged revisions 402708 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402709 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402710 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-11 20:28 +0000 [r402698] Jonathan Rose * apps/app_confbridge.c: Confbridge: add test events for dynamic menus test Adds a couple of test events for conference menu actions so that it's easy to discern when those menu actions have been triggered. (issue ASTERISK-22760) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2999/ 2013-11-11 19:31 +0000 [r402688] Mark Michelson * apps/app_confbridge.c, /: Get rid of some inaccurate comments. I'm doing some unrelated work in app_confbridge and finding these "invalid pin" comments to be annoying. Get out! ........ Merged revisions 402686 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402687 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-11 15:37 +0000 [r402648] Kinsey Moore * /, apps/app_queue.c: app_queue: Honor penalty limits of 0 In the current app_queue code from 1.8 up to trunk the upper and lower penalties can be set to 0 but the value is interpreted to be disabled instead of actually setting limits. This is especially evident if min and max limits are set to 0 and members with penalties of 0 and 1 are in the queue since the member with penalty 1 will still receive calls. This patch adjusts the special disabled value to be INT_MAX instead of 0. (closes issue ASTERISK-20862) Review: https://reviewboard.asterisk.org/r/2995/ Reported by: Schmooze Com ........ Merged revisions 402645 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402646 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402647 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 23:07 +0000 [r402607] Scott Griepentrog * /, channels/chan_sip.c, channels/sip/include/sip.h: chan_sip: keep same local (from) tag for outgoing register requests For outbound register requests the tag on the From line was updated every 20 seconds prior to a successful registration and also once for each registration renewal. That behavior can possibly cause the registration to be denied because of the different tag, and is not aligned with the intention of RFC 3261 8.1.3.5 "... request constitutes a new transaction and SHOULD have the same value of the Call-ID, To, and From of the previous request...". This updates chan_sip to have a field to keep the local tag in the registration structure and use that tag for registration requests where the callid is also unchanged. (closes issue ASTERISK-12117) Reported by: Pawel Pierscionek Review: https://reviewboard.asterisk.org/r/2988/ ........ Merged revisions 402604 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402605 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402606 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 20:37 +0000 [r402595] Richard Mudgett * /, res/res_stasis.c: res_stasis.c: Fix locking issues with the app_bridge_moh container. * Fix unlinking from the app_bridges_moh container in remove_bridge_moh() without a lock under normal circumstances. * Made check ast_bridge_set_after_callback() return value in bridge_moh_create() to handle failure. * Fixed SCOPED_AO2LOCK() locking over too much scope in stasis_app_bridge_moh_channel() and stasis_app_bridge_moh_stop(). * Fixed unusual usage of ao2_unlink_flag() in control_unlink(). * Fixed orphaned bridge from off nominal path in stasis_app_bridge_create(). * Fixed strange construct in stasis_app_unsubscribe(). From a bad merge? * Made load_module() cleanup on failure. Review: https://reviewboard.asterisk.org/r/2962/ ........ Merged revisions 402593 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 19:33 +0000 [r402585] Jonathan Rose * /, main/security_events.c, configs/manager.conf.sample, CHANGES, include/asterisk/manager.h, main/manager.c: security_events: Push out security events over AMI events Security Events will now be written to any listener of the new 'security' class Review: https://reviewboard.asterisk.org/r/2998/ ........ Merged revisions 402584 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 19:22 +0000 [r402583] Mark Michelson * res/res_pjsip.c, /: Clarify an ambiguous error message. ........ Merged revisions 402582 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 18:53 +0000 [r402571-402572] David M. Lee * /, res/res_pjsip/config_system.c: res_pjsip: Print a helpful error message if sorcery registration fails ........ Merged revisions 402570 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_playbacks.h, /: Changes from make ari-stubs after r402560 ........ Merged revisions 402561 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 17:59 +0000 [r402562] Kevin Harwell * rest-api/resources.json, res/ari/resource_playback.h (removed), res/res_ari_playbacks.c (added), res/ari/resource_playbacks.h (added), /, res/ari.make, rest-api/api-docs/playback.json (removed), res/ari/resource_playback.c (removed), res/res_ari_playback.c (removed), rest-api/api-docs/playbacks.json (added), res/ari/resource_playbacks.c (added): ARI playback: Rename ARI Playback to Playbacks Before playback was the only non plural resource. It has been renamed to playbacks for consistency. (closes issue ASTERISK-22737) Reported by: Paul Belanger ........ Merged revisions 402560 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 17:29 +0000 [r402557] David M. Lee * res/res_ari.c, main/manager.c, /, main/http.c: ari: Add application/x-www-form-urlencoded parameter support ARI POST calls only accept parameters via the URL's query string. While this works, it's atypical for HTTP API's in general, and specifically frowned upon with RESTful API's. This patch adds parsing for application/x-www-form-urlencoded request bodies if they are sent in with the request. Any variables parsed this way are prepended to the variable list supplied by the query string. (closes issue ASTERISK-22743) Review: https://reviewboard.asterisk.org/r/2986/ ........ Merged revisions 402555 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-08 14:58 +0000 [r402546] Kevin Harwell * apps/app_dahdiras.c, utils/extconf.c, main/asterisk.c: app_dahdiras: Use waitpid instead of wait4. Several places in the code were using wait4 while other places were using waitpid. This change makes all places use waitpid in order to make things more consistent and since the 'rusage' object passed in/out of wait4 was never used. (closes issue ASTERISK-22557) Reported by: YvesGael Patches: asterisk-11.5.1-wait4.patch uploaded by hurdman (license 6537) 2013-11-07 23:42 +0000 [r402538] Jonathan Rose * res/res_pjsip_authenticator_digest.c, /: PJSIP: Improve error handling in digest authenticator Previously, regardless of whether failure to authenticate was due to lacking any authentication or actually failing authentication, the Digest Authenticator would simply return that a challenge was still needed. It will continue to do that when no authentication information is in the received SIP digest, but when authentication information is present and does not pass authentication, that will be treated as an authentication error. This is to ensure that PJSIP will issue security events indicated failed auths. ........ Merged revisions 402537 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-07 21:10 +0000 [r402529] David M. Lee * res/ari/resource_applications.c, res/ari/resource_playback.c, rest-api/api-docs/channels.json, res/ari/resource_applications.h, res/ari/resource_channels.c, res/ari/resource_playback.h, rest-api/api-docs/recordings.json, res/ari/resource_recordings.c, rest-api-templates/ari_resource.c.mustache, rest-api-templates/asterisk_processor.py, res/ari/resource_channels.h, rest-api/api-docs/endpoints.json, res/ari/resource_endpoints.c, res/ari/resource_recordings.h, res/ari/resource_events.c, res/res_ari_playback.c, res/res_ari_applications.c, res/ari/resource_endpoints.h, res/ari/resource_events.h, rest-api/api-docs/sounds.json, res/ari/resource_sounds.c, res/res_ari_channels.c, rest-api/api-docs/bridges.json, res/ari/resource_bridges.c, res/ari/resource_sounds.h, res/res_ari_recordings.c, res/ari/resource_bridges.h, rest-api/api-docs/asterisk.json, res/ari/resource_asterisk.c, res/res_ari_endpoints.c, rest-api/api-docs/applications.json, rest-api/api-docs/playback.json, res/res_ari_events.c, res/ari/resource_asterisk.h, rest-api-templates/swagger_model.py, res/res_ari_sounds.c, res/res_ari_bridges.c, /, rest-api-templates/ari_resource.h.mustache, rest-api-templates/rest_handler.mustache, res/res_ari_asterisk.c, rest-api-templates/res_ari_resource.c.mustache: ari: User better nicknames for ARI operations While working on building client libraries from the Swagger API, I noticed a problem with the nicknames. channel.deleteChannel() channel.answerChannel() channel.muteChannel() Etc. We put the object name in the nickname (since we were generating C code), but it makes OO generators redundant. This patch makes the nicknames more OO friendly. This resulted in a lot of name changing within the res_ari_*.so modules, but not much else. There were a couple of other fixed I made in the process. * When reversible operations (POST /hold, POST /unhold) were made more RESTful (POST /hold, DELETE /unhold), the path for the second operation was left in the API declaration. This worked, but really the two operations should have been on the same API. * The POST /unmute operation had still not been REST-ified. Review: https://reviewboard.asterisk.org/r/2940/ ........ Merged revisions 402528 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-06 21:58 +0000 [r402518] Kevin Harwell * /, apps/app_queue.c: app_queue: crash if first agent is "busy" If the first agent/member (via CLI "queue show") in a queue is "busy" (dnd, circuit busy, etc...) and no agents answered then app_queue would crash. This occurred because while the calling of agent(s) remained valid the channel on "busy" agent would be set to NULL and then later dereferenced upon a second "rna" function call. The original intention of the code is to have only valid "call attempt" objects (channels != NULL) checked while attempting to call agent(s). It does this by building a "call_next" list of valid "call attempt" objects. In the case of the "busy" agent subsequent builds of the valid "call attempt" list would sometimes include (the case mentioned above) an invalid "call attempt" object. The fix was to make sure the "call attempt" list was appropriately built on every iteration. A NULL sanity check was also added at the original offending spot of the crash just in case another one slipped by somehow. (closes issue ASTERISK-22644) Reported by: Marco Signorini Review: https://reviewboard.asterisk.org/r/2983/ ........ Merged revisions 402517 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-05 21:17 +0000 [r402502-402508] Matthew Jordan * /, channels/chan_sip.c: chan_sip: Use AST_AF* defined constant when calling ast_get_ip While the structure passed to ast_get_ip should be set memset to 0, thus initializing the ss_family member to 0, explicitly setting it to AST_AF_UNSPEC is more portable. ........ Merged revisions 402507 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Fix incorrect usage of ast_get_ip involving uninitialized struct This started off as a fix for the failing IAX2 acl_call test in the Asterisk Test Suite. When inspecting why that test was failing, it became clear that all attempts to bind to any local loopback address was failing: [Nov 2 15:56:28] VERBOSE[15787] chan_iax2.c: == Binding IAX2 to address 127.0.0.1:4569 [Nov 2 15:56:28] DEBUG[15787] netsock2.c: Splitting '127.0.0.1' into... [Nov 2 15:56:28] DEBUG[15787] netsock2.c: ...host '127.0.0.1' and port ''. [Nov 2 15:56:28] ERROR[15787] netsock2.c: getaddrinfo("127.0.0.1", "(null)", ...): ai_family not supported [Nov 2 15:56:28] WARNING[15787] acl.c: Unable to lookup '127.0.0.1' While there's conceivably other ways for getaddrino to return EAI_FAMILY, the most common way is if AF_INET, AF_INET6, or AF_UNSPEC is not provided as the desired family. The culprit was the call to ast_get_ip, defined in acl.h. This function uses the family from the passed in addr object (which it will also populate when it returns!) when it eventually calls getaddrinfo. This patch fixes the use of ast_get_ip that were not specifying the family in chan_iax2. This prevents uninitialized use of the structure, so that the addresses resolve correctly. Review: https://reviewboard.asterisk.org/r/2991 ........ Merged revisions 402505 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/acl.h, /, include/asterisk/netsock2.h: netsock2: Define AST_AF_* enum constants to their AF_* equivalents This patch explicitly defines AST_AF_* enum constants to their sys/socket.h defined equivalents. It is certainly unclear why these constants actually have to exist, given that netsock2.h includes sys/socket.h; however, since the code base is already liberally sprinkled with the usage of AST_AF_* (as well as with direct calls to AF_*), this will at least keep the semantics consistent between their usage across systems. ........ Merged revisions 402503 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_channels.c, /: stasis_channels: Don't give preference to ANI info in channel snapshots When publishing channel snapshots, we currently compute the caller ID name and number by giving preference first to ani.{name|number}, then to id.{name|number}. However, when a channel driver (such as chan_sip) updates the caller ID, it typically only updates the caller ID stored in id.{name|number}. This means that we are currently giving preference to stale information. When looking at the rest of the code base, the only other place where we appear to use this same logic is in app_amd. Everywhere else, we treat the party information in ani as being separate to the party information in id. This patch publishes only the caller ID name and number in the snapshot field for caller_name and caller_num. Note that the information in ANI is still available in caller_ani. Review: https://reviewboard.asterisk.org/r/2992/ ........ Merged revisions 402501 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-04 21:02 +0000 [r402453] Kevin Harwell * /, channels/chan_sip.c: chan_sip: notify dialog info ignores presentation indicator in callerid The presentation indicator in a callerid (e.g. set by dialplan function Set(CALLERID(name-pres)= ...)) is not checked when SIP Dialog Info Notifies are generated during extension monitoring. Added a check to make sure the name and/or number presentations on the callee (remote identity) are set to allow. If they are restricted then "anonymous" is used instead. (closes issue AST-1175) Reported by: Thomas Arimont Review: https://reviewboard.asterisk.org/r/2976/ ........ Merged revisions 402450 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402452 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-02 04:30 +0000 [r402406-402439] Richard Mudgett * main/stasis.c, main/stasis_message_router.c, /, include/asterisk/vector.h: vector: Uppercase API to follow C convention. C does not support templates like C++. ........ Merged revisions 402438 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/lock.h, main/stasis.c, main/stasis_message_router.c, /, include/asterisk/vector.h: vector: Update API to be more flexible. Made the vector macro API be more like linked lists. 1) Added a name parameter to ast_vector() to name the vector struct. 2) Made the API take a pointer to the vector struct instead of the struct itself. 3) Added an element cleanup macro/function parameter when removing an element from the vector for ast_vector_remove_cmp_unordered() and ast_vector_remove_elem_unordered(). 4) Added ast_vector_get_addr() in case the vector element is not a simple pointer. * Converted an inline vector usage in stasis_message_router to use the vector API. It needed the API improvements so it could be converted. * Fixed topic reference leak in router_dtor() when the stasis_message_router is destroyed. * Fixed deadlock potential in stasis_forward_all() and stasis_forward_cancel(). Locking two topics at the same time requires deadlock avoidance. * Made internal_stasis_subscribe() tolerant of a NULL topic. * Made stasis_message_router_add(), stasis_message_router_add_cache_update(), stasis_message_router_remove(), and stasis_message_router_remove_cache_update() tolerant of a NULL message_type. * Promoted a LOG_DEBUG message to LOG_ERROR as intended in dispatch_message(). Review: https://reviewboard.asterisk.org/r/2903/ ........ Merged revisions 402429 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/confbridge/conf_state_single.c, apps/confbridge/conf_state_inactive.c, apps/confbridge/conf_state_single_marked.c, /, apps/confbridge/include/confbridge.h, apps/confbridge/conf_state_multi.c, apps/app_confbridge.c, apps/confbridge/conf_state_multi_marked.c, apps/confbridge/conf_state.c: confbridge: Separate user muting from system muting overrides. The system overrides the user muting requests when MOH is playing or a waitmarked user is waiting for a marked user to join. System muting overrides interfere with what the user may wish the muting to be when the system override ends. * User muting requests are now independent of the system muting overrides. The effective muting is now the logical or of the user request and system override. * Added a Muted flag to the CLI "confbridge list " command. * Added a Muted header to the AMI ConfbridgeList action ConfbridgeList event. (closes issue AST-1102) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2960/ ........ Merged revisions 402425 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402427 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/config.c, apps/confbridge/conf_config_parser.c, configs/confbridge.conf.sample, /: config: Allow ConfBridge DTMF menus to have '#' as the first digit. ConfBridge allows custom DTMF menus to be created in the confbridge.conf file by assigning a DTMF key sequence to a sequence of actions as follows: DTMF-sequence = action,action... Unfortunately, the normal config file processing code interprets an initial '#' character as starting a directive such as #include. * Add the ability to escape the first non-blank character in a config line so the '#' character can be used without triggering the directive processing code. (closes issue AFS-2) (closes issue ASTERISK-22478) Reported by: Nicolas Tanski Patches: jira_asterisk_22478_v11.patch (license #5621) patch uploaded by rmudgett (modified) Review: https://reviewboard.asterisk.org/r/2969/ ........ Merged revisions 402407 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402416 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/app.h, /, main/app.c: voicemail: Simplify callback pointer declarations and add doxygen. * Typedefed and added doxegen for the voicemail callback functions. * Simplified the prototypes for ast_install_vm_functions() and ast_install_vm_test_functions() to use the new function typedefs. * Simplified the voicemail callback function pointer variable declarations to use the new function typedefs. ........ Merged revisions 402398 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-01 22:48 +0000 [r402397] Jonathan Rose * apps/confbridge/conf_config_parser.c, apps/confbridge/include/confbridge.h, apps/app_confbridge.c, CHANGES: app_confbridge: Make the CONFBRIDGE function be able to create dynamic menus Also adds the ability to clear all profile items and makes behavior more consistent with documentation as when choosing whether to use CONFBRIDGE datastore profiles or the application arguments to the confbridge application. (closes issue ASTERISK-22760) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2971/ 2013-11-01 21:51 +0000 [r402388] Scott Griepentrog * main/manager_bridges.c, /, main/bridge.c, include/asterisk/bridge.h: Manager: Add equivalent AMI actions for the bridge CLI commands. Adds the following AMI events, closely following their CLI counterparts: BridgeDestroy BridgeKick BridgeTechnologyList BridgeTechnologySuspend BridgeTechnologyUnsuspend BridgeDestroy kicks an entire bridge, where BridgeKick kicks just one channel off the bridge. When kicking a channel, specifying the bridge also (optional) insures it is not removed from the wrong bridge. The BridgeTechnology events allow viewing and changing suspension status, which affects only subsequent not active bridging. (closes ASTERISK-22356) Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/2973/ ........ Merged revisions 402387 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-01 16:31 +0000 [r402368] David M. Lee * /, rest-api-templates/api.wiki.mustache: ari wiki docs: add notes about allowMultiple parameters. This patch adds a note to any parameter that has 'allowMultiple' set in the Swagger documentation. (closes issue ASTERISK-22704) ........ Merged revisions 402367 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-01 14:38 +0000 [r402359] Joshua Colp * include/asterisk/stasis_app.h, rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, res/res_stasis_playback.c, /, res/stasis/control.c: res_ari_channels: Add ring operation, dtmf operation, hangup reasons, and tweak early media. The ring operation sends ringing to the specified channel it is invoked on. The dtmf operation can be used to send DTMF digits to the specified channel of a specific length with a wait time in between. Finally hangup reasons allow you to specify why a channel is being hung up (busy, congestion). Early media behavior has also been tweaked slightly. When playing media to a channel it will no longer automatically answer. If it has not been answered a progress indication is sent instead. (closes issue ASTERISK-22701) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2916/ ........ Merged revisions 402358 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-01 12:40 +0000 [r402349] Kinsey Moore * res/res_rtp_asterisk.c, /, channels/chan_sip.c, include/asterisk/rtp_engine.h: chan_sip: Fix RTCP port for SRFLX ICE candidates This corrects one-way audio between Asterisk and Chrome/jssip as a result of Asterisk inserting the incorrect RTCP port into RTCP SRFLX ICE candidates. This also exposes an ICE component enumeration to extract further details from candidates. (closes issue ASTERISK-21383) Reported by: Shaun Clark Review: https://reviewboard.asterisk.org/r/2967/ ........ Merged revisions 402345 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402348 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-11-01 12:33 +0000 [r402337-402347] Joshua Colp * /, include/asterisk/stasis_app.h, res/ari/resource_channels.c: res_ari_channels: Fix a deadlock when originating multiple channels close to eachother. If a Stasis application is specified an implicit subscription is done on the originated channel. This was previously done with the channel lock held which is dangerous as the underlying code locks the container and iterates items. This change releases the lock on the originated channel before subscribing occurs. (closes issue ASTERISK-22768) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2979/ ........ Merged revisions 402346 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/stasis/control.c: res_stasis: Ensure the channel is always departed from the bridge when it leaves. This change adds a command to the command queue to explicitly depart the channel from the bridge when it is told it has left. If the channel has already been departed or has entered a different bridge this command will become a no-op. (closes issue ASTERISK-22703) Reported by: John Bigelow (closes issue ASTERISK-22634) Reported by: Kevin Harwell Review: https://reviewboard.asterisk.org/r/2965/ ........ Merged revisions 402336 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-31 22:09 +0000 [r402328] Mark Michelson * /, contrib/scripts/sip_to_pjsip/sip_to_pjsip.py, contrib/scripts/sip_to_res_sip (removed), contrib/scripts/sip_to_pjsip (added), contrib/scripts/sip_to_pjsip/astconfigparser.py, contrib/scripts/sip_to_pjsip/astdicts.py: Update the conversion script from sip.conf to pjsip.conf (closes issue ASTERISK-22374) Reported by Matt Jordan Review: https://reviewboard.asterisk.org/r/2846 ........ Merged revisions 402327 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-31 16:06 +0000 [r402286-402290] Matthew Jordan * main/loader.c, /: core/loader: Don't call dlclose in a while loop For awhile now, we've noticed continuous integration builds hanging on CentOS 6 64-bit build agents. After resolving a number of problems with symbols, strange locks, and other shenanigans, the problem has persisted. In all cases, gdb shows the Asterisk process stuck in loader.c on one of the infinite while loops that calls dlclose repeatedly until success. The documentation of dlclose states that it returns 0 on success; any other value on error. It does not state that repeatedly calling it will eventually clear those errors. Most likely, the repeated calls to dlclose was to force a close by exhausting the references on the library; however, that will never succeed if: (a) There is some fundamental error at work in the loaded library that precludes unloading it (b) Some other loaded module is referencing a symbol in the currently loaded module This results in Asterisk sitting forever. Since we have matching pairs of dlopen/dlclose, this patch opts to only call dlclose once, and log out as an ERROR if dlclose fails to return success. If nothing else, this might help to determine why on the CentOS 6 64-bit build agent things are not closing successfully. Review: https://reviewboard.asterisk.org/r/2970 ........ Merged revisions 402287 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402288 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402289 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/media_index.c, /: medix_index: Display errors when library calls fail Based on feedback from ipengineer in #asterisk, when the media indexer cannot access a sound file on the system (or otherwise fails) Asterisk displays a "Cannot frob file" error but fails to tell you why. This is especially problematic as the media_indexer failing will rpevent Asterisk from starting, as it is in the core. We now display the errno error messages so folks can figure out what they've done wrong. ........ Merged revisions 402285 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-31 14:45 +0000 [r402277] David M. Lee * /, res/stasis/app.c: stasis: add functions embarrassingly missing from r400522 I neglected to implement two of the endpoint subscription functions when I did the work. Normally, you'll only hit that when you unsubscribe from a specific endpoint. ........ Merged revisions 402276 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-30 17:54 +0000 [r402266] Kevin Harwell * channels/chan_pjsip.c, /, res/res_pjsip_messaging.c: pjsip_messaging: Added debug for in dialog messaging (issue ASTERISK-22777) Reported by: Matt Jordan ........ Merged revisions 402265 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-29 23:43 +0000 [r402227] Rusty Newton * /, sounds/Makefile: Updates for 1.4.25 core sounds and 1.4.14 extra sounds, plus new en_GB language set The new sound packages relate to issues: ASTERISK-22544, ASTERISK-22411, ASTERISK-21413, ASTERISK-20782 Modified sounds/Makefile for the new sound versions and to account for the new en_GB language set. (issue ASTERISK-22659) (closes issue ASTERISK-22659) (closes issue ASTERISK-22411) (closes issue ASTERISK-22544) ........ Merged revisions 402224 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402225 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402226 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-29 12:57 +0000 [r402155] Matthew Jordan * main/xmldoc.c, main/channel.c, main/pbx.c, /, main/translate.c: Remove some spammy debug messages; improve clarity of others Debug messages aren't free. Even when the debug level is sufficiently low such that the messages are never evaluated, there is a cost to having to parse Asterisk logs that contain debug messages that (a) fail to convey sufficient information or (b) occur so frequently as to be next to meaningless. Based on having to stare at lots of DEBUG messages, this patch makes the following changes: * channel.c: When copying variables from a parent channel to a child channel, specify the channels involved. Do not log anything for a variable that is not inherited; the fact that it doesn't have an _ or __ already signifies that it won't be inherited. * pbx.c: Specify what function evaluation has occurred that created the result. * translate.c: Bump up the translator path messages to 10. I've never once had to use these debug messages, and for each format that is registered (on startup) and unregistered (on shutdown) the entire f^2 matrix is logged out. For short tests in the Asterisk Test Suite, this should make finding the actual test much easier. * xmldoc.c: The debug message that 'blah' is not found in the tree is expected. Often, description elements - which are not required - are not provided. This debug message adds no additional value, as it is not indicative of an error or helpful in debugging which element did not contain a 'blah' element as a child. If an element is supposed to contain a child element, then that XML tree should have failed validation in the first place. Review: https://reviewboard.asterisk.org/r/2966/ ........ Merged revisions 402150 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 402151 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402154 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-29 12:51 +0000 [r402149-402153] Kinsey Moore * rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, res/ari/resource_channels.h, /: ARI: Remove channels/{channelId}/dial This removes the /ari/channels/{channelId}/dial URI since it is redundant, overly complex, is likely to become more externally complex over time, and is too high-level compared with other ARI operations. See the following for further information: http://lists.digium.com/pipermail/asterisk-app-dev/2013-October/000002.html (closes issue ASTERISK-22784) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2968/ ........ Merged revisions 402152 from http://svn.asterisk.org/svn/asterisk/branches/12 * bridges/bridge_native_rtp.c, /: bridge_native_rtp: Ensure bridge is torn down When a bridge transitions away from one tech to another, the tech going away is provided a dummy bridge with no channels in it to tear down. Currently this means that the teardown code exits prematurely and does not tear anything down. This change tears down RTP bridging for the channel provided in the leave bridge tech callback. This also reverts the majority of r400403 since it is now redundant. (closes issue ASTERISK-22628) (closes issue ASTERISK-22676) Reported by: John Bigelow Reported by: Kevin Harwell Tested by: John Bigelow Review: https://reviewboard.asterisk.org/r/2905/ Patches: native_rtp_fix.diff uploaded by Kinsey Moore (License 6273) ........ Merged revisions 402148 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-29 11:15 +0000 [r402140] Joshua Colp * /, rest-api/api-docs/playback.json, res/res_ari_playback.c: res_ari_playback: Add missing 404 error response for GET and DELETE. (closes issue ASTERISK-22722) Reported by: Richard Mudgett ........ Merged revisions 402139 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-28 22:10 +0000 [r402128-402130] David M. Lee * /, doc: Ignore full docs ........ Merged revisions 402127 from http://svn.asterisk.org/svn/asterisk/branches/12 * /: Put back several merge revisions that were lost in r402054 * /: Put back several merge revisions that were lost in r401962 2013-10-28 15:08 +0000 [r402113-402117] Michael L. Young * /, UPGRADE-11.txt, UPGRADE-12.txt: Fix UPGRADE.txt Due To Merging From Branch 11 When merging in the patch for ASTERISK-22728, the UPGRADE.txt file was changed incorrectly. That change should have gone into ASTERISK-11.txt. This commit is to fix that. Also, another comment in the UPGRADE-11.txt was missing and this commit adds that as well. ........ Merged revisions 402115 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c, UPGRADE-12.txt: chan_sip: Clarify 'Forcerport' Setting Displayed When Running "sip show peers" While looking at ASTERISK-22236, Walter Doekes pointed out that when running "sip show peers", the setting being displayed can be confusing. The display of "N" used to mean NAT (i.e. yes). The NAT setting has gone through many different changes resulting in the display of different characters to try and convey what the current setting is for 'Forcerport' (A for Auto and Forcerport is currently on, a for Auto but Forcerport is off, Y for yes, and N for no). During the initial code review to try and clarify these settings (especially since "N" no longer meant what it used to mean in prior versions of Asterisk), Mark Michelson suggested using the full space available to display the settings which helped to make the settings very clear. That was a great suggestion. Therefore, this patch does the following: * The column for 'Forcerport' now will show: Auto (Yes), Auto (No), Yes, or No. * A column for the 'Comedia' setting has been added. It too will display the setting in a non-cryptic way: Auto (Yes), Auto (No), Yes, or No. * UPGRADE.txt has been updated to document this change. (closes issue ASTERISK-22728) Reported by: Walter Doekes Tested by: Michael L. Young Patches: asterisk-forcerport-display-clarification_v3.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2941 ........ Merged revisions 402111 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402112 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-27 23:22 +0000 [r402073-402091] Matthew Jordan * main/cdr.c, /: Filter out internal channels from dial message handling Surrogate channels would pop up from time to time in dial message handling. This would cause a WARNING message to appear, indicating that the Surrogate channel had no CDR. This patch filters out those channels that have the internal implementation flag set, such that the WARNING message isn't displayed. ........ Merged revisions 402090 from http://svn.asterisk.org/svn/asterisk/branches/12 * cdr/cdr_sqlite3_custom.c, /, cdr/cdr_syslog.c, cdr/cdr_sqlite.c, cdr/cdr_adaptive_odbc.c, addons/cdr_mysql.c, include/asterisk/cdr.h, cdr/cdr_pgsql.c, cdr/cdr_odbc.c, cdr/cdr_radius.c, cdr/cdr_custom.c, cdr/cdr_manager.c, cdr/cdr_tds.c, cdr/cdr_csv.c, main/cdr.c: Prevent CDR backends from unregistering while billing data is in flight This patch makes it so that CDR backends cannot be unregistered while active CDR records exist. This helps to prevent billing data from being lost during restarts and shutdowns. Review: https://reviewboard.asterisk.org/r/2880/ ........ Merged revisions 402081 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, contrib/ast-db-manage/config/env.py, contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py, contrib/ast-db-manage/voicemail/env.py: Update Alembic database scripts for external scripting and PostgreSQL, Oracle This patch does the following: 1) The env scripts have been updated to be tolerant of a NULL configuration file. This occurs when configuration is provided by an external script, such that the actual config.ini file is not used. 2) Enum types have all been given names. This is needed for PostgreSQL script generation. 3) The identifier meetme_confno_starttime_endtime is greater than 30 characters, and hence invalid for Oracle databases. This has been truncated down to meetme_confno_start_end. ........ Merged revisions 400383 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-26 12:56 +0000 [r402065] Joshua Colp * channels/chan_pjsip.c, include/asterisk/res_pjsip_session.h, /: chan_pjsip: Fix a crash when direct media is enabled and an ACK is received after the channel is hung up. (closes issue ASTERISK-22731) Reported by: Kinsey Moore ........ Merged revisions 402064 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-26 00:36 +0000 [r402056] Richard Mudgett * res/res_stasis.c, /: res_stasis.c: Made use the ao2_container callback templates. * Made res_stasis.c use the OBJ_SEARCH_XXX defines. ........ Merged revisions 402055 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-26 00:27 +0000 [r402054] Scott Griepentrog * main/rtp_engine.c, /, include/asterisk/rtp_engine.h: rtp_engine: fix rtp payloads copy and improve argument names In function ast_rtp_instance_early _bridge_make_compatible the use of instance 0/1 as arguments doesn't clearly communicate a direction that the copying of payloads from the source channel to the destination channel will occur, making it more probable to have the arguments to ast_rtp_codecs_payloads_copy() put in the reverse order. This patch renames the arguments with _dst and _src suffixes and corrects the copy direction. (closes issue ASTERISK-21464) Reported by: Kevin Stewart Review: https://reviewboard.asterisk.org/r/2894/ ........ Merged revisions 402000 from http://svn.asterisk.org/svn/asterisk/branches/1.8 Test shows rtpmap:119 being copied per this change, but is not in sip invite ........ Merged revisions 402042 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 402043 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 23:58 +0000 [r402004-402045] Richard Mudgett * /, main/taskprocessor.c: taskprocessor: Made use pthread_equal() to compare thread ids. * Removed another silly use of RAII_VAR(). RAII_VAR() and SCOPED_LOCK() are not silver bullets that allow you to turn off your brain. ........ Merged revisions 402044 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/stasis/app.c: You'd think that new files would be free of whitespace issues. But you would be wrong. ........ Merged revisions 402003 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 22:01 +0000 [r401999-402002] Jonathan Rose * res/ari/resource_bridges.c, res/res_ari_bridges.c, /, rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c, rest-api/api-docs/bridges.json: ARI: channel/bridge recording errors when invalid format specified Asterisk will now issue 422 if recording is requested against channels or bridges with an unknown format (closes issue ASTERISK-22626) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2939/ ........ Merged revisions 402001 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_recording.c, rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/ari/ari_model_validators.c, res/res_ari_channels.c, rest-api/api-docs/bridges.json, rest-api/api-docs/recordings.json, res/ari/resource_bridges.c, res/ari/ari_model_validators.h, res/res_ari_bridges.c, rest-api/api-docs/events.json, /: ARI recordings: Issue HTTP failures for recording requests with file conflicts If a file already exists in the recordings directory with the same name as what we would record, issue a 422 instead of relying on the internal failure and issuing success. (closes issue ASTERISK-22623) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2922/ ........ Merged revisions 401973 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 20:51 +0000 [r401962] Scott Griepentrog * include/asterisk/pbx.h, main/pbx.c, /: pbx.c: fix confused match caller id that deleted exten still in hash This fixes a bug where a zero length callerid match adjacent to a no match callerid extension entry would be deleted together, which then resulted in hashtable references to free'd memory. A third state of the matchcid value has been added to indicate match to any extension which allows enforcing comparison of matchcid on/off without errors. (closes issue AST-1235) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/2930/ ........ Merged revisions 401959 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401960 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401961 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 17:41 +0000 [r401898-401939] Jonathan Rose * /, res/res_pjsip/pjsip_distributor.c, res/res_pjsip_endpoint_identifier_user.c: PJSIP: Add log messages when requests are received for non-existent endpoints (closes issue ASTERISK-22552) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/2934/ ........ Merged revisions 401938 from http://svn.asterisk.org/svn/asterisk/branches/12 * utils/clicompat.c, utils/refcounter.c, /: Put clicompat-r2.patch back in We've figured out how to resolve the problems this was causing in 12/trunk, so this can go back in now. (issue ASTERISK-22467) Reported by: Corey Farrell Patches: clicompat-r2.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401914 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401935 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401936 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, utils/clicompat.c: revert clicompat-r2.patch from r401704 Patch caused the following build errors against testsuite https://bamboo.asterisk.org/bamboo/browse/AST-ATRUNKBUILD4-244 (issue ASTERISK-22467) Reported by: Corey Farrell ........ Merged revisions 401895 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401896 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401897 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 16:09 +0000 [r401886] Kevin Harwell * /, channels/chan_sip.c: chan_sip: Allow a sip peer to accept both AVP and AVPF calls Adapts the behaviour of avpf to only impact the format of outgoing calls. For inbound calls, both AVP and AVPF calls will be accepted regardless of the value of avpf in the configuration. (closes issue ASTERISK-22005) Reported by: Torrey Searle Patches: optional_avpf_trunk.patch uploaded by tsearle (license 5334) ........ Merged revisions 401884 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401885 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-25 13:49 +0000 [r401873] David M. Lee * tests/test_json.c, /: test_json: Fix deprecation warnings After a series of upgrades over recent weeks, I've discovered that test_json.c won't compile in dev mode any more for me. One of gcc-4.8.2, OS X Mavericks or Xcode 5 has decided to deprecate tempnam. Which, in general, is a good thing. But for test code that just needs a temporary file, it's just annoying. This patch replaces usage of tempname with mkstemp, avoiding the deprecation warning. It also removes the temporary files when the test is complete, which apparently we weren't doing before (oops). Review: https://reviewboard.asterisk.org/r/2957/ ........ Merged revisions 401872 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-24 21:06 +0000 [r401836] Kevin Harwell * /, main/logger.c: Logging: Logging types ignored after specifying a verbose level If one specified a verbose level within a logging facility in logger.conf then any component after it was ignored. Fixed so all values are correctly read. (closes issue ASTERISK-22456) Reported by: Kevin Harwell ........ Merged revisions 401833 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401835 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-24 20:48 +0000 [r401834] David M. Lee * rest-api-templates/models.wiki.mustache, rest-api/api-docs/events.json, /, rest-api-templates/swagger_model.py, rest-api-templates/ari_model_validators.c.mustache: The Swagger 1.2 specification for type extension ended up being slightly different than my proposal. Instead of putting an 'extends' field on the subtype, the base type has a 'subTypes' field, which is a list of the subTypes. Given that its a messaging model and not an object model, kinda makes sense. This patch changes the events.json api-doc, and the python translators to take the new format into account. Other changes that are in Swagger 1.2 were not adopted, since the spec is still in flux, and could change before it's finalized. A summary of changes to the Swagger-1.2 spec can be found at https://github.com/wordnik/swagger-core/wiki/1.2-transition. (closes issue ASTERISK-22440) Review: https://reviewboard.asterisk.org/r/2909/ ........ Merged revisions 401701 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-24 20:34 +0000 [r401622-401832] Jonathan Rose * /, main/utils.c: utils: Fix memory leaks and missed unregistration of CLI commands on shutdown Final set of patches in a series of memory leak/cleanup patches by Corey Farrell (closes issue ASTERISK-22467) Reported by: Corey Farrell Patches: main-utils-1.8.patch uploaded by coreyfarrell (license 5909) main-utils-11.patch uploaded by coreyfarrell (license 5909) main-utils-12up.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401829 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401830 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401831 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, tests/test_linkedlists.c: test_linkedlists: Fix memory leak (issue ASTERISK-22467) Reported by: Corey Farrell Patches: test_linkedlists-1.8.patch uploaded by coreyfarrell (license 5909) test_linkedlists-11up.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401790 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401791 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401792 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/jitterbuf.c: jitterbuf: Fix memory leak on jitter buffer reset (issue ASTERISK-22467) Reported by: Corey Farrell Patches: jitterbuf-jb_reset-leak-1.8.patch jitterbuf-jb_reset-leak-11up.patch ........ Merged revisions 401786 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401787 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401788 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/astobj2.c, /: astobj2: Unregister debug CLI commands at exit (issue ASTERISK-22467) Reported by: Corey Farrell Patches: astobj2-clean-debug-cli-1.8-11.patch uploaded by coreyfarrell (license 5909) astobj2-clean-debug-cli-12up.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401781 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401783 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401784 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_voicemail.c, /: app_voicemail: Memory Leaks against tests (issue ASTERISK-22467) Reported by: Corey Farrell Patches: app_voicemail-1.8.patch uploaded by coreyfarrell (license 5909) app_voicemail-11up.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401743 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401744 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401745 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/app.c, main/asterisk.c, utils/clicompat.c, channels/chan_dahdi.c, codecs/ilbc/doCPLC.c, main/data.c, /: memory leaks: Memory leak cleanup patch by Corey Farrell (second set) Also covers ast_app_parse_timelen-fail-zero-length.patch, but the patch was replaced with one of my own. (issue ASTERISK-22467) Reported by: Corey Farrell Patches: chan_dahdi-cleanup_push.patch uploaded by coreyfarrell (license 5909) clicompat-r2.patch uploaded by coreyfarrell (license 5909) codecs-ilbc-doCPLC.patch uploaded by coreyfarrell (license 5909) data-cleanup-test-registration.patch uploaded by coreyfarrell (license 5909) main-asterisk-kill-listener.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401704 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401705 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401706 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, tests/test_dlinklists.c, funcs/func_math.c, channels/sip/reqresp_parser.c, main/test.c, main/editline/readline.c: memory leaks: Memory leak cleanup patch by Corey Farrell (first set) (issue ASTERSIK-22467) Reported by: Corey Farrell Patches: chan_sip-parse_contact_header_test-free-contacts.patch uploaded by coreyfarrell (license 5909) cli-filename-completion-leak.patch uploaded by coreyfarrell (license 5909) func_math.patch uploaded by corefarrell (license 5909) main-test-cleanup.patch uploaded by coreyfarrell (license 5909) test_dlinklists.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 401660 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401661 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401662 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/translate.c, res/res_rtp_asterisk.c: res_rtp_asterisk: Address jittery DTMF events in RTP streams (closes issue ASTERISK-21170) Reported by: NITESH BANSAL Patches: dtmf-timestamp.patch uploaded by NITESH BANSAL (license 6418) Review: https://reviewboard.asterisk.org/r/2938/ ........ Merged revisions 401619 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401620 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401621 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-23 16:52 +0000 [r401582] Richard Mudgett * /, cdr/cdr_adaptive_odbc.c: cdr_adaptive_odbc: Also apply a filter when the CDR value is empty. Extra CDR records are written if a filtered CDR value is empty because the filter is not checked. (closes issue ASTERISK-22272) Reported by: Jordi Llull Chavarria ........ Merged revisions 401577 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401579 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401581 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-23 16:48 +0000 [r401580] John Bigelow * /, main/bridge_channel.c: Add a test suite event to indicate when the atxfer 3-way feature is detected This adds a test suite event that indicates to tests when the attended transfer three-way call feature is detected. Review: https://reviewboard.asterisk.org/r/2912/ ........ Merged revisions 401578 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-23 15:23 +0000 [r401540] Kinsey Moore * channels/chan_mgcp.c, /: chan_mgcp: Properly handle malformed media lines This corrects a situation in which a media line was not parsed properly and resulted in a crash. (closes issue ASTERISK-21190) Reported by: adomjan Patches: chan_mgcp.c-sscnaf_fix uploaded by adomjan (License 5448) ........ Merged revisions 401537 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401538 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401539 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-23 11:16 +0000 [r401500] Joshua Colp * /, channels/chan_sip.c: chan_sip: Fix an issue where an incompatible audio format may be added to SDP. If preferred codecs included any non-audio format the code would mistakenly add the audio format, even if it was not a joint capability with the remote side. (closes issue ASTERISK-21131) Reported by: nbougues Patches: patch_unsupported_codec_1.8.patch uploaded by nbougues (license 6470) ........ Merged revisions 401497 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401498 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401499 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-23 02:36 +0000 [r401489] Michael L. Young * channels/chan_iax2.c, configs/iax.conf.sample, /: chan_iax2: Fix Binding To Multiple Addresses Again When reworking chan_iax2 for IPv6, the ability to bind to multiple addresses was removed by mistake. This patch restores this functionality and adds notes about IPv6 addresses in the sample config. (closes issue ASTERISK-22741) Reported by: Joshua Colp Tested by: Michael L. Young Patches: asterisk-22741-fix-binding-multiple-addr.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2945/ ........ Merged revisions 401488 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-22 23:10 +0000 [r401450] Matthew Jordan * /, res/res_rtp_asterisk.c: res_rtp_asterisk: Fix crash when RTCP is not available during SSRC change In r400089, a patch was put in to correct erroneous RTCP statistic resets. Unfortunately, ast_rtp_read can be called on an RTP instance that does not have RTCP information. This patch prevents that crash by only resetting the statistics if we do actually have an RTCP instance. (issue AST-1174) (closes issue ASTERISK-22667) Reported by: John Bigelow ........ Merged revisions 401445 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401446 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401447 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-22 19:04 +0000 [r401421-401435] Richard Mudgett * apps/app_queue.c, /: app_queue: Fix CLI "queue remove member" queue_log entry. The queue_log entry resulting from CLI "queue remove member" when log_membername_as_agent is enabled is wrong. It always uses the interface name instead of the member name in the queue_log entry. * Get the queue member before removing it from the queue so the member name is available for the queue_log entry. (closes issue ASTERISK-21826) Reported by: Oscar Esteve Patches: fix_membername.diff (license #6505) patch uploaded by Oscar Esteve (modified to fix potential ref leak) ........ Merged revisions 401433 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401434 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/bridge_channel.c, include/asterisk/bridge_channel_internal.h, /, main/bridge.c: Bridging: Fix orphaned bridge if neither of the joining channels can join. The original issue noted that the bridge is orphaned when res_parking.so is not loaded and a call uses the dial kK flags. A similar issue happens when only one of the park flags is used. In this case you have the bridge with one or the other channel left in it. The channel and bridge will stay around until the channel hangs up. * Fixed the initial bridge channel push failure to act as if the channel were kicked out of the bridge. The bridge then decides if it needs to be dissolved. (closes issue ASTERISK-22629) Reported by: Kevin Harwell Review: https://reviewboard.asterisk.org/r/2928/ ........ Merged revisions 401424 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/parking/parking_bridge_features.c, res/parking/parking_bridge.c, /: res_parking: Give parking timeout comebacktoorigin channel DTMF features. Parking timeouts did not set any DTMF features for the channel calling the parker back. * Added code to set the parkedcalltransfers, parkedcallreparking, parkedcallhangup, and parkedcallrecording options appropriately for the channels when a parking timeout occurs. The recall channel DTMF options are set using the BRIDGE_FEATURES channel variable to allow the other timeout options to have the DTMF features available. (closes issue ASTERISK-22630) Reported by: Kevin Harwell Review: https://reviewboard.asterisk.org/r/2942/ ........ Merged revisions 401422 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_parking.c: res_parking: Update XML documention for DTMF features after parking timeout. * Updated the XML documentation to indicate that the parkedcalltransfers, parkedcallreparking, parkedcallhangup, and parkedcallrecording configuration options also apply to parking timeouts. (issue ASTERISK-22630) Reported by: Kevin Harwell Review: https://reviewboard.asterisk.org/r/2942/ ........ Merged revisions 401420 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-22 15:17 +0000 [r401411] Joshua Colp * apps/app_dial.c: Add an 'R' option to Dial which sends ringing until early media has been received. (closes issue ASTERISK-10487) Reported by: Gaspar Zoltan Patches: 10487.patch uploaded by n8ideas (license 6075) 2013-10-21 21:06 +0000 [r401365] Mark Michelson * /, main/bridge_channel.c: Remove a noisy debug message from bridging code. This particular debug message, during a stress test, was logged so often that it appeared that there may be a memory leak in the logger code. In actuality, there was no memory leak, but the logger thread was having a hard time keeping up with the demands of the rest of the system. Since this debug message has no value at all, the best way to fix the problem was to just remove the message. (closes issue AST-1225) reported by John Bigelow Patches: spammy_log.diff uploaded by Mark Michelson (License #5049) ........ Merged revisions 401364 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-21 19:50 +0000 [r401328] Kevin Harwell * /, main/editline/term.c: Segfault in LIBEDIT_INTERNAL after tgetstr(), when libncurses5-dev isn't installed Include the appropriate declarations when not using termcap, but term+curses and [n]curses do not exist. (closes issue ASTERISK-22351) Reported by: A. Iglesias Patches: issueA22351_libedit_internal_without_ncurses_dev.patch uploaded by wdoekes (license 5674) ........ Merged revisions 401325 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401326 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401327 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-21 18:59 +0000 [r401316-401317] David M. Lee * rest-api/api-docs/channels.json, /: Fixing r401281; the model name is Channel, with a capital C ........ Merged revisions 401315 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_ari.c, /: Fixed malformed Access-Control-Allow-Methods header. Was causing Safari to barf on POST and DELETE. ........ Merged revisions 401106 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-19 21:57 +0000 [r401292] Kinsey Moore * /, channels/chan_iax2.c: Fix IAX2 incoming call address lookups This fixes address lookup for incoming calls without a peer definition. The address family was unset instead of being set to AST_AF_UNSPEC which was causing lookup failures on "127.0.0.1". This is one of the causes of the current failure of the app_page integration test. Review: https://reviewboard.asterisk.org/r/2933/ ........ Merged revisions 401291 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-19 14:45 +0000 [r401282] Joshua Colp * res/ari/resource_channels.h, main/pbx.c, /, rest-api/api-docs/channels.json, res/ari/resource_channels.c, res/res_ari_channels.c: Return a channel snapshot when originating using ARI, and subscribe the Stasis application to it. This change allows a user of ARI to know what channel it has originated and also follow any progress. If a Stasis application is provided it will be automatically subscribed to the originated channel immediately. (closes issue ASTERISK-22485) Reported by: David Lee Review: https://reviewboard.asterisk.org/r/2910/ ........ Merged revisions 401281 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 22:52 +0000 [r401272] Richard Mudgett * /, res/parking/parking_controller.c: res_parking: Remove setting useless flag. ........ Merged revisions 401271 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 21:51 +0000 [r401263] David M. Lee * contrib/scripts/get_swagger_ui.sh (added), Makefile, /, static-http: This is just a quick script for dumping swagger-ui into static-http, so that it can be served by the Asterisk web server. I had to change the Makefile in order to recursively install content from the static-http directory, hence the code review instead of just putting it in. Review: https://reviewboard.asterisk.org/r/2924/ ........ Merged revisions 401261 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 18:44 +0000 [r401249] Mark Michelson * main/sorcery.c, main/cli.c, main/manager.c, /, main/bridge.c, main/bucket.c: Resolve some memory leaks due to incorrect for loop / ao2 ref usage. A common idiom in Asterisk is to due something like: for (ao2_obj = list_beginning; ao2_obj = next_item; ao2_ref(ao2_obj, -1)) { ...do stuff... } This is nice because it automatically takes care of the object references for you. However, there is a pitfall here. If a break statement is in the for loop, then the current reference is not cleaned up. In some cases, this is on purpose, but in others there is a leak. This commit fixes the leak cases. ........ Merged revisions 401248 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 16:59 +0000 [r401233-401240] Richard Mudgett * /, res/res_fax.c, include/asterisk/channel.h, apps/app_dial.c, main/channel.c: Add channel lock protection around translation path setup. Most callers of ast_channel_make_compatible() happen before the channels enter a two party bridge. With the new bridging framework, two party bridging technologies may also call ast_channel_make_compatible() when there is more than one thread involved with the two channels. * Added channel lock protection in set_format() and ast_channel_make_compatible_helper() when dealing with the channel's native formats while setting up a translation path. * Fixed best_src_fmt and best_dst_fmt usage consistency in ast_channel_make_compatible_helper(). The call to ast_translator_best_choice() got them backwards. * Updated some callers of ast_channel_make_compatible() and the function documentation. There is actually a difference between the two channels passed in. * Fixed the deadlock potential in res_fax.c dealing with ast_channel_make_compatible(). The deadlock potential was already there anyway because res_fax called ast_channel_make_compatible() with chan locked. (closes issue ASTERISK-22542) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2915/ ........ Merged revisions 401239 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, include/asterisk/bridge.h: Tweak ast_bridge_depart() doxygen. ........ Merged revisions 401232 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 16:06 +0000 [r401216-401224] Mark Michelson * include/asterisk/bridge.h, /: Remove the bit about requiring ast_bridge_depart() to be called before ast_bridge_destroy(). ........ Merged revisions 401223 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/bridge.h, /: Clarify in ast_bridge_destroy() about how departable channels must be handled. ........ Merged revisions 401212 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 15:14 +0000 [r401184] Michael L. Young * /, channels/chan_sip.c: Remove Port Restriction When Checking For NAT When trying to determine if a peer is behind NAT, we should not be using the ports when comparing addresses. This patch removes the port from being checked and just useds the addresses now. (closes issue ASTERISK-22729) Reported by: Michael L. Young Tested by: Michael L. Young Patches: asterisk-remove-using-port-for-nat-check.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2927/ ........ Merged revisions 401182 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401183 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-18 14:50 +0000 [r401181] Walter Doekes * main/channel.c, /: Properly copy/remove the device state cache flag over a masquerade. In r378303 the AST_FLAG_DISABLE_DEVSTATE_CACHE flag was added that tells the devstate system to not cache states for non-real devices. However, when optimizing away channels (ast_do_masquerade), that flag wasn't copied. In my case, using Local devices as queue members created a situation where the endpoint was considered in use, but the state change of the device being available again was ignored (not cached). The endpoint channel was optimized into the (previously) Local channel, but kept the do-not-cache flag. The end result being that the queue member apparently stayed in use forever. (closes issue ASTERISK-22718) Reported by: Walter Doekes Review: https://reviewboard.asterisk.org/r/2925/ ........ Merged revisions 401178 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401179 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401180 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-17 20:39 +0000 [r401169] Michael L. Young * /, channels/chan_sip.c: Fix Setting A chan_sip Dialog's SIP_NAT_FORCE_RPORT Flag A condition was added in a commit to fix ASTERISK-21374, that, if the SIP_PAGE3_NAT_AUTO_RPORT flag was set, to then copy a peer's SIP_NAT_FORCE_RPORT flag to the dialog. This condition should not have been there since it assumed that if Asterisk is in an environment where NAT is involved, that the auto_* nat settings or force_rport setting would be on in the global settings. If the nat setting in the global setting is set to 'nat=no' and then turned on for peers (which is not quite the recommended way, although it is allowed) this flag is never copied to the dialog resulting in problems like, REGISTER replies going to the wrong port. This patch removes this conditional check and will now always use the peer's flag which by this point in the code the checks on whether the peer is behind NAT or not (if using auto_force_rport) have already been run. (closes issue ASTERISK-22236) Reported by: Filip Frank Tested by: Michael L. Young Patches: asterisk-2236-always-set-rport.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2919/ ........ Merged revisions 401167 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401168 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-17 18:25 +0000 [r401159] Jonathan Rose * res/res_parking.c, /: res_parking: Fix bug where reloading immediately wipes new parkpos extensions (closes issue ASTERISK-22631) Reported by: Kevin Harwell ........ Merged revisions 401158 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-17 15:41 +0000 [r401122] Kinsey Moore * /, res/res_xmpp.c, res/res_jabber.c: Reduce log level of a non-pubsub error message Drop an error log message to debug level 1 since distributed device state functions correctly when receiving this message and it spams the logs. (closes issue ASTERISK-22410) Reported by: abelbeck Patches: asterisk-1.8-res_jabber-log-nonpubsub-error-to-debug.patch uploaded by abelbeck (License 5903) asterisk-11-res_xmpp-log-nonpubsub-error-to-debug.patch uploaded by abelbeck (License 5903) ........ Merged revisions 401119 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401120 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401121 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-16 21:22 +0000 [r401108] Richard Mudgett * /, res/ari/resource_playback.c: ARI: Fix crash when POST /playback/{id}/control does not have an operation parameter. (closes issue ASTERISK-22680) Reported by: John Bigelow ........ Merged revisions 401107 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-16 17:01 +0000 [r401097] David M. Lee * rest-api/resources.json, /: Oops. Leftover /stasis reference ........ Merged revisions 401096 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-16 14:02 +0000 [r401088] Kinsey Moore * rest-api/api-docs/bridges.json, res/ari/resource_channels.h, /, res/ari/resource_bridges.h, rest-api/api-docs/channels.json: Clarify documentation for channel and bridge list This makes it clear that the ARI API calls for listing channels and bridges will list all channels or bridges in the system and not just those that are in or are controlled by a Stasis application. (closes issue ASTERISK-22635) Reported by: Kevin Harwell ........ Merged revisions 401087 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-16 12:19 +0000 [r401079] Walter Doekes * /, apps/app_queue.c: Don't check all realtime queues when doing "queue show some_queue". When using realtime queues, queues have to be fetched from the database every now and then to see if any info has been changed or to see if the queue has been removed. When fetching info for an individual queue, the pruning of other queues is unnecessarily costly. Review: https://reviewboard.asterisk.org/r/2907/ ........ Merged revisions 401049 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 401076 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401077 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-16 00:12 +0000 [r401041] Paul Belanger * /, rest-api/api-docs/bridges.json, res/res_ari_bridges.c: Use POST / DELETE to toggle ARI bridge moh Review: https://reviewboard.asterisk.org/r/2911/ ........ Merged revisions 401040 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-15 23:44 +0000 [r401020-401039] Richard Mudgett * main/translate.c: translate.c: Some minor code tweaks. * Consistently compare format2index() return value so matrix_get() cannot get passed negative values. * Optimize ast_translator_best_choice() to defer initializing things until needed. Also cached the matrix_get() return value rather than repeatedly calling it. * /, channels/dahdi/bridge_native_dahdi.c: bridge_native_dahdi: Return channel join failure if could not make the channels compatible. ........ Merged revisions 401030 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_iax2.c: chan_iax2: Fix channel left locked in off nominal code path. ........ Merged revisions 401016 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 401017 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-15 20:03 +0000 [r401019] Kinsey Moore * rest-api/api-docs/bridges.json, res/res_ari_bridges.c, /: Ensure bridge record error responses validate This adds the list of expected errors to the /bridges/{bridgeId}/record ARI documentation so that outbound 4xx errors validate properly. Previously, this would result in a response validation failure. (closes issue ASTERISK-22627) Reported by: Joshua Colp ........ Merged revisions 401018 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-15 15:30 +0000 [r401007] Paul Belanger * rest-api/api-docs/channels.json, res/res_ari_channels.c, /: Use POST / DELETE to toggle hold / moh for ARI channels This change updates how we handle toggle events, rather then create two different function names, we'll just use POST / DELETE from HTTP to handle it. Review: https://reviewboard.asterisk.org/r/2906/ ........ Merged revisions 400999 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-15 15:26 +0000 [r400998] Mark Michelson * /, channels/chan_sip.c: Prevent chan_sip from sending duplicate BYEs. When a 200 OK for an initial INVITE is received, we were doing the right thing by ACKing and sending an immediate BYE. However, we also were doing the wrong thing and queuing an answer frame, thus causing the call to be answered. This would cause the call to be hung up by the channel thread, thus resulting in a second BYE being sent out. In this fix, I also have set the hangupcause to be correct since the initial BYE being sent by Asterisk had an unknown hangup cause. I have changed to using "Bearer capabilty not available" since the call was hung up due to an SDP offer/answer error. (closes issue ASTERISK-22621) reported by Kinsey Moore ........ Merged revisions 400970 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400971 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400984 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-15 13:44 +0000 [r400959] David M. Lee * /, rest-api-templates/asterisk_processor.py: My doc correction in r400842 had a silly bug. Because I added a wiki_description to models and not their properties, the rendered wiki page had the model description instead of the property descriptions, which looks very silly indeed. (closes issue ASTERISK-22705) ........ Merged revisions 400958 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-14 22:52 +0000 [r400913-400950] Richard Mudgett * channels/chan_dahdi.c, configs/chan_dahdi.conf.sample, channels/chan_dahdi.h: chan_dahdi: Add config support for hwgain settings. * Add hwtxgain and hwrxgain config options to chan_dahdi.conf with documentation in chan_dahdi.conf.sample. (closes issue ASTERISK-22429) Reported by: Jaco Kroon Patches: jira_asterisk_22429_hwgain_trunk.patch (license #5621) patch uploaded by rmudgett * channels/chan_dahdi.c, /, channels/chan_dahdi.h: chan_dahdi: Reflect the set software gain in the CLI "dahdi show channel" output. * Remember the swgain setting from CLI "dahdi set swgain" command so the CLI "dahdi show channel" output will reflect the current setting. * Updated CLI "dahdi set hwgain" and "dahdi set swgain" documentation. (issue ASTERISK-22429) Reported by: Jaco Kroon Patches: jira_asterisk_22429_v1.8_v2.patch (license #5621) patch uploaded by rmudgett ........ Merged revisions 400907 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400909 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400911 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-14 22:03 +0000 [r400912] Mark Michelson * /, channels/chan_sip.c: chan_sip: Do not increment the SDP version between 183 and 200 responses. Bumping the SDP version number can cause interoperability problems since receivers of the responses will expect that a 200 SDP will be identical to a previous 183 SDP. (closes issue ASTERISK-21204) reported by NITESH BANSAL Patches: dont-increment-session-version-in-2xx-after-183.patch uploaded by NITESH BANSAL (License #6418) ........ Merged revisions 400906 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400908 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400910 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-14 15:54 +0000 [r400891] Kevin Harwell * /, res/res_pjsip_outbound_registration.c: pjsip outbound registration: Log message says received a 408 when we didn't If the server didn't exist that we are trying to register to the log message would say that a 408 was received from that server when in reality one wasn't. Added log messages stating no response was received if the response does not exist. (closes issue ASTERISK-22554) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/2893/ ........ Merged revisions 400890 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-14 15:01 +0000 [r400882] Matthew Jordan * res/res_pjsip_mwi.c, /: Remove duplicate module info block The module info block was repeated twice. Once is sufficient. ........ Merged revisions 400881 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-13 15:42 +0000 [r400873] Joshua Colp * res/res_pjsip_session.c, /: Fix a race condition in res_pjsip_session with rapidly terminating the session. The INVITE session state callback wrongly assumes that a session will always exist, but when rapidly terminating the session this assumption goes out the window. As all handler code for the INVITE session state callback requires the session it will now just exit immediately if no session exists. (closes issue ASTERISK-22668) Reported by: John Bigelow ........ Merged revisions 400872 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-12 16:53 +0000 [r400864] Kinsey Moore * /, res/res_pjsip_outbound_authenticator_digest.c: Fix realm comparison for outbound auth When generating the list of authentication credentials to pass to PJSIP, Asterisk was using the raw pointer of a pj_str_t which is not always NULL-terminated. This sometimes resulted in incorrect text for the realm and a failure to match the realm for authentication purposes which was causing the outbound nominal auth pjsip basic call test to bounce. This now uses the pj_str_t that contains the realm instead of generating a new one. Thanks to John Bigelow for helping to narrow this down. ........ Merged revisions 400863 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-11 17:05 +0000 [r400855] Richard Mudgett * include/asterisk/channel.h, /: channel.h: whitespace changes. ........ Merged revisions 400854 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-11 16:36 +0000 [r400851-400852] David M. Lee * /, res/ari/resource_bridges.h, rest-api/api-docs/playback.json, rest-api-templates/api.wiki.mustache, res/res_ari_playback.c, rest-api/api-docs/channels.json, res/ari/resource_playback.h, rest-api/api-docs/bridges.json, rest-api-templates/asterisk_processor.py, res/ari/resource_channels.h, rest-api-templates/models.wiki.mustache: Multiple revisions 400508,400842-400843,400848 ........ r400508 | dlee | 2013-10-03 23:54:51 -0500 (Thu, 03 Oct 2013) | 1 line Corrected response class for stopPlayback ........ r400842 | dlee | 2013-10-10 14:23:24 -0500 (Thu, 10 Oct 2013) | 1 line Correct some ARI wiki rendering errors ........ r400843 | dlee | 2013-10-10 14:26:19 -0500 (Thu, 10 Oct 2013) | 1 line Updated /play resource docs. The playback of http: resources isn't implemented... yet ........ r400848 | dlee | 2013-10-11 11:18:46 -0500 (Fri, 11 Oct 2013) | 5 lines Fix a stupid copy/paste error in ARI docs. Patches: ari-doc-patch.txt uploaded by jbigelow (license 5091) ........ Merged revisions 400508,400842-400843,400848 from http://svn.asterisk.org/svn/asterisk/branches/12 * /: Fixed merge tracking for r400360, which was somehow lost 2013-10-11 16:28 +0000 [r400850] Richard Mudgett * bridges/bridge_softmix.c, /: Softmix: Fix crash when switching from softmix to another bridge technology. The crash is caused by a race condition when switching between native RTP and softmix bridging technologies. In this situation, the bridging technology is switched from native RTP to softmix, and then back to native RTP fast enough that the softmix private data gets destroyed before the softmix mixing thread gets started. Thanks to Kinsey Moore for the crash analysis. * Fix race condition when starting the softmix mixing thread and switching to another bridge technology. (closes issue ASTERISK-22678) Reported by: John Bigelow Patches: jira_asterisk_22678_v12.patch (license #5621) patch uploaded by rmudgett Tested by: John Bigelow ........ Merged revisions 400849 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-10 18:21 +0000 [r400825-400834] Joshua Colp * /, res/res_pjsip/location.c: Perform validation of permanent contacts on AORs in res_pjsip. ........ Merged revisions 400833 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_configuration.c, res/res_pjsip.c: Fix an assertion in res_pjsip when specifying an invalid outbound proxy. This change fixes two issues when setting an outbound proxy: 1. The outbound proxy URI was not parsed and validated during configuration. 2. If an outgoing dialog was created and the outbound proxy could not be set an assertion would occur because the usage count on the dialog was not decremented. The documentation has also been updated to specify that a full URI must be specified for the outbound proxy. (closes issue ASTERISK-22672) Reported by: Antti Yrjola ........ Merged revisions 400824 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-09 11:02 +0000 [r400772-400813] Matthew Jordan * res/res_pjsip_header_funcs.c, /: Use 'z' as the format specifier for size_t Using 'lu' will produce a compiler warning for some versions of gcc and on some architectures. 'z' should be portable as a format specifier for size_t. ........ Merged revisions 400812 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_header_funcs.c (added), /: Add PJSIP_HEADER function for manipulation of SIP headers in the PJSIP stack This patch adds support to the PJSIP stack in Asterisk for SIP header manipulation. Note that this is analagous to SIPAddHeader/SIPRemoveHeader. For PJSIP_HEADER, an incoming supplemental session callback is registered that takes the pjsip_hdrs from the incoming session and stores them in a linked list in the session datastore. Calls to PJSIP_HEADER traverse over the list and return the nth matching header where 'n' is the 'number' argument to the function. When adding a header, the first call creates a datastore and linked list and adds the datastore to the session. The header is then created as a pjsip_hdr and added to the list. An outgoing supplemental session callback then traverses the list and adds the headers to the outgoing pjsip_msg. When removing a header, the list created with PJSIP_HEADER(add,...) is traversed and all matching entries are removed. (closes issue ASTERISK-22498) Reported by: George Joseph patch: res_pjsip_header_funcs_v1.patch uploaded by george.joseph (License 6322) ........ Merged revisions 400771 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 22:33 +0000 [r400770] Kinsey Moore * /, configure, configure.ac: Add warning when compiling with iODBC support When running configure, libiodbc2 development headers will fulfill the requirement for ODBC development headers, but will not function properly. This adds a warning when libiodbc2 development headers are detected instead of unixodbc development headers. (closes issue ASTERISK-22459) Reported by: Patrick Maille Tested by: Walter Doekes Patches: issueA22459_warn_when_using_iodbc.patch uploaded by Walter Doekes (License 5674) ........ Merged revisions 400767 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400768 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400769 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 21:20 +0000 [r400759] Richard Mudgett * apps/app_agent_pool.c, /: app_agent_pool: Fix AMI/CLI AgentLogoff soft preventing agents from logging back in. * Clear the deferred_logoff flag when an agent logs in. (closes issue ASTERISK-22669) Reported by: John Bigelow ........ Merged revisions 400754 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 20:52 +0000 [r400750] Mark Michelson * /, res/res_pjsip.c, res/res_pjsip/config_transport.c: Switch from using pjsip_strerror to pj_strerror. pjsip_strerror is only aware of PJSIP-specific error codes. pj_strerror() is aware of all PJProject error codes and OS-specific error codes. This specifically fixes an oft-seen error in transport configuration code where EADDRINUSE would result in "Unknown PJSIP error 120098" instead of a useful message. ........ Merged revisions 400749 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 20:18 +0000 [r400728-400744] Richard Mudgett * configs/confbridge.conf.sample, /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c, CHANGES, apps/confbridge/conf_config_parser.c: app_confbridge: Can now set the language used for announcements to the conference. ConfBridge now has the ability to set the language of announcements to the conference. The language can be set on a bridge profile in confbridge.conf or by the dialplan function CONFBRIDGE(bridge,language)=en. (closes issue ASTERISK-19983) Reported by: Jonathan White Patches: M19983_rev2.diff (license #5138) patch uploaded by junky (modified) Tested by: rmudgett ........ Merged revisions 400741 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400742 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/confbridge/conf_config_parser.c, /: app_confbridge: Fix duplicate default_user profile. * Fixed looking in the wrong profiles container to see if the default_user profile is already created in verify_default_profiles(). The bridge profile container is never going to hold user profiles. :) ........ Merged revisions 400723 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400724 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 18:19 +0000 [r400684-400704] Kinsey Moore * funcs/func_config.c, /: Fix func_config list entry allocation The AST_CONFIG dialplan function defined in func_config.c allocates its config file list entries using ast_malloc. List entry allocations destined for use with Asterisk's linked list API must be ast_calloc()d or otherwise initialized so that list pointers are set to NULL. These uses of ast_malloc have been replaced by ast_calloc to prevent dereferencing of uninitialized pointer values when traversing the list. (closes issue ASTERISK-22483) Reported by: Brian Scott ........ Merged revisions 400694 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400697 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400701 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_rtp_asterisk.c, /: Fix STUN crash when using IPv6 any address Ensure that when chan_sip binds to the IPv6 any address ([::]), IPv4 candidates are also added. (closes issue ASTERISK-21917) Reported by: Torrey Searle Patches: 0023_ipv6_stun_crash.patch uploaded by Torrey Searle (License 5334) ........ Merged revisions 400681 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400682 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 15:44 +0000 [r400683] Mark Michelson * res/res_pjsip/pjsip_options.c, /: Push CLI qualify into the threadpool. If you run Asterisk in the background and then connect to it through a separate console, the thread that runs CLI commands is not registered with PJLIB. Thus PJLIB does not like it when you attempt to send OPTIONS requests from that thread. So now we push the task into the threadpool, which we know to be registered with PJLIB. Thanks to Antti Yrjola for reporting this. ........ Merged revisions 400680 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-08 15:12 +0000 [r400662-400672] Richard Mudgett * /, res/res_agi.c, apps/app_queue.c: Make app_queue and res_agi independent of AMI being enabled. The https://reviewboard.asterisk.org/r/2888/ review changes manager to not subscribe to stasis when it is disabled for performance reasons. When manager is disabled app_queue and res_agi decline to load and fail to clean up what they have already allocated. * Made app_queue and res_agi clean up allocated resources when they decline to load. * Made app_queue and res_agi use their own subscriptions to the stasis topics instead of borrowing manager's message router structure inappropriately. (closes issue ASTERISK-22604) Reported by: rmudgett Review: https://reviewboard.asterisk.org/r/2902/ ........ Merged revisions 400671 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, include/asterisk/stasis.h, apps/app_queue.c, include/asterisk/manager.h: Miscellaneous stand alone comment cleanups. ........ Merged revisions 400661 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-06 17:13 +0000 [r400625] Michael L. Young * /, apps/app_queue.c: app_queue: Fix Queuelog EXITWITHKEY only logging two of four fields Commit r62462 added two extra fields for logging "the original position the caller entered the queue at, and the amount of time the caller was waiting in the queue." But when r75969 was merged from 1.4 into trunk (r75977), these two fields disappeared. Those two extra fields were not logged in 1.4 and when the patch was merged, those fields went away. Therefore, this is a regression and was caught by the reporter because he was reading the awesome "Asterisk: The Definitive Guide" book. (closes issue ASTERISK-22197) Reported by: Dalius M. Tested by: Dalius M. Patches: asterisk-22197-q-log-exitwithkey.diff uploaded by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2901/ ........ Merged revisions 400622 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400623 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400624 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-05 00:59 +0000 [r400593] Richard Mudgett * /, channels/iax2/include/parser.h: chan_iax2: Fix compile error. ........ Merged revisions 400588 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-04 21:41 +0000 [r400568] Michael L. Young * main/acl.c, include/asterisk/netsock2.h, CHANGES, channels/chan_iax2.c, channels/iax2/parser.c, main/netsock.c, main/netsock2.c, /, channels/iax2/include/parser.h: Add IPv6 Support To chan_iax2 This patch adds IPv6 support to chan_iax2. Yay! (closes issue ASTERISK-22025) Patches: iax2-ipv6-v5-reviewboard.diff by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2660/ ........ Merged revisions 400567 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-04 19:32 +0000 [r400553] David M. Lee * rest-api/api-docs/applications.json (added), /: Added missing file from r400522 ........ Merged revisions 400552 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-04 19:11 +0000 [r400533-400543] Jonathan Rose * res/res_pjsip_logger.c, /: chan_pjsip: Make logger togglable without loading/unloading This patch makes the res_pjsip_logger do a few things... First, it will be built and installed by default now, so end users won't need to enable it in menuselect. Second, while it is loaded, it no longer will immediately issue log messages. Upon loading, it is in the disabled state and must be turned on with the new CLI command. The CLI command 'pjsip set logger has been added and can be used to do the following: pjsip set logger on: Enables logger for all PJSIP traffic pjsip set logger off: Disables logger for all PJSIP traffic pjsip set logger host : Enables logger for the specific host Review: https://reviewboard.asterisk.org/r/2900/ ........ Merged revisions 400542 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, contrib/ast-db-manage/config/versions/43956d550a44_add_tables_for_pjsip.py (added), configs/extconfig.conf.sample, configs/sorcery.conf.sample, contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py: chan_pjsip: Add alembic scripts for generating db tables for PJSIP Also updates sample configurations for sorcery and extconfig to demonstrate how to use databases created by that alembic script. (closes issue ASTERISK-22133) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2892/ ........ Merged revisions 400532 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-04 16:01 +0000 [r400523] Matthew Jordan * res/res_stasis.c, main/asterisk.c, rest-api/api-docs/endpoints.json, rest-api/api-docs/events.json, res/stasis/app.c, /, rest-api-templates/ari_model_validators.h.mustache, include/asterisk/endpoints.h, res/res_ari_applications.c (added), res/ari/resource_endpoints.h, include/asterisk/stasis_app.h, res/stasis/app.h, rest-api/resources.json, include/asterisk/_private.h, res/ari/ari_model_validators.c, main/endpoints.c, res/ari/ari_model_validators.h, main/json.c, res/res_ari_model.c, res/ari.make, res/ari/resource_applications.c (added), res/ari/resource_applications.h (added): ARI: Add subscription support This patch adds an /applications API to ARI, allowing explicit management of Stasis applications. * GET /applications - list current applications * GET /applications/{applicationName} - get details of a specific application * POST /applications/{applicationName}/subscription - explicitly subscribe to a channel, bridge or endpoint * DELETE /applications/{applicationName}/subscription - explicitly unsubscribe from a channel, bridge or endpoint Subscriptions work by a reference counting mechanism: if you subscript to an event source X number of times, you must unsubscribe X number of times to stop receiveing events for that event source. Review: https://reviewboard.asterisk.org/r/2862 (issue ASTERISK-22451) Reported by: Matt Jordan ........ Merged revisions 400522 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-04 15:49 +0000 [r400511-400521] Joshua Colp * /, res/res_pjsip.c: Enclose the To URI and update its user portion if a request user has been specified. ........ Merged revisions 400520 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_session.c, /: Replace the connection address at the SDP level if altering the SDP with the external media address. ........ Merged revisions 400510 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 23:20 +0000 [r400482] Jonathan Rose * /, channels/chan_sip.c: chan_sip: Don't ignore expires value in contact header if it lacks semicolon (closes issue ASTERISK-22574) Reported by: Filip Jenicek Patches: chan_sip_expires.patch uploaded by Filip Jenicek (license 6277) ........ Merged revisions 400469 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400470 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400471 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 21:46 +0000 [r400461] Matthew Jordan * /, main/channel_internal_api.c: Remove publication of a channel snapshot when the technology is set This patch removes said publication for a few reasons: (1) It is unnecessary. Association of the channel technology with a specific channel is an implementation detail that should be assumed to "just happen", and consumers of Stasis don't need to be informed about it. (2) Publication of said message can now cause crashes, as the actual creation of a channel in normal locations now stages its messages. As a result, things that create dummy channels (such as the SIP RTP QOS unit test) and associate them with a channel technology were now crashing, as the channel itself was not known by Stasis. ........ Merged revisions 400460 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 20:22 +0000 [r400452] Mark Michelson * bridges/bridge_native_rtp.c, /, include/asterisk/bridge_technology.h: Fix assumption in bridge_native_rtp.c regarding number of participants in a bridge. When a party leaves a bridge, there may be more participants in the bridge than expected. As such, it is important not to make assumptions regarding the list of channels in a bridge. This change makes it so that when a party leaves a native RTP bridge, we unbridge it and the party it was bridged with. Previously, the first and last channels in the list were unbridged since it was assumed that these were the two channels that had been bridged. As previously stated, a new party had been inserted into the bridge, so this logic did not work properly. (closes issue ASTERISK-22615) reported by Matt Jordan Review: https://reviewboard.asterisk.org/r/2899 ........ Merged revisions 400403 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 19:32 +0000 [r400443] Joshua Colp * /, main/cdr.c: When serializing CDR variables (like for "core show channels") don't output an error if CDRs aren't enabled. ........ Merged revisions 400442 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 19:30 +0000 [r400441] Kinsey Moore * /, main/security_events.c: Fix security events for AMI invalid password In r337595, additional security events were added for chan_sip authentication failures. The new IEs added to the existing invalid password event were defined as required IEs, but existing users of the event did not set the new IEs and could not since they didn't apply to existing uses. They are now marked as optional IEs. (closes issue ASTERISK-22578) Reported by: Matt Jordan ........ Merged revisions 400421 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400440 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 19:06 +0000 [r400402] Joshua Colp * res/ari/resource_channels.c, /: Fix a crash caused by muting and unmuting a channel in ARI without specifying a direction. (closes issue ASTERISK-22637) Reported by: Scott Griepentrog Patch by Matt Jordan, whose office I have taken over in the name of Canada. ........ Merged revisions 400401 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 18:51 +0000 [r400399] Richard Mudgett * /, main/cel.c: cel: Some whitespace cleanups ........ Merged revisions 400398 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 18:32 +0000 [r400385-400397] Kinsey Moore * res/res_rtp_multicast.c, /: res_rtp_multicast: Ensure SSRC is set properly This fixes a bug where the SSRC field on multicast RTP can be stuck at 0 which can cause problems for endpoints trying to make sense of incoming streams. (closes issue ASTERISK-22567) Reported by: Simone Camporeale Patches: 22567_res_mulitcast_ssrc.patch uploaded by Simone Camporeale (License 6536) ........ Merged revisions 400393 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400394 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400395 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, configure, include/asterisk/autoconfig.h.in, configure.ac, main/xml.c: Detect and use xsltCleanupGlobals when available This introduces usage of an additional libxslt cleanup function, xsltCleanupGlobals, when the configure script detects that it is available. Early versions of the library did not include this function. (closes issue ASTERISK-22570) Reported by: Corey Farrell Patches: xsltCleanupGlobals.patch uploaded by Corey Farrell (License 5909) ........ Merged revisions 400384 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 16:28 +0000 [r400374] Richard Mudgett * channels/chan_vpb.cc, /: chan_vpb: Make compile again. ........ Merged revisions 400373 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 14:59 +0000 [r400363-400364] Mark Michelson * tests/test_cel.c, /: Get rid of uses of stasis_topic_wait() ........ Merged revisions 400362 from http://svn.asterisk.org/svn/asterisk/branches/12 * pbx/pbx_spool.c, main/manager.c, main/format_cap.c, channels/chan_skinny.c, res/res_agi.c, channels/chan_motif.c, channels/chan_alsa.c, apps/app_confbridge.c, addons/chan_mobile.c, channels/chan_mgcp.c, res/res_clioriginate.c, channels/chan_bridge_media.c, channels/chan_sip.c, tests/test_format_api.c, res/res_pjsip_sdp_rtp.c, bridges/bridge_simple.c, apps/app_originate.c, res/parking/parking_applications.c, main/core_local.c, channels/chan_console.c, channels/chan_oss.c, include/asterisk/format_cap.h, res/res_pjsip_session.c, res/ari/resource_bridges.c, channels/chan_jingle.c, channels/chan_misdn.c, channels/dahdi/bridge_native_dahdi.c, res/res_pjsip/pjsip_configuration.c, main/file.c, channels/chan_h323.c, channels/chan_nbs.c, bridges/bridge_native_rtp.c, tests/test_config.c, res/res_stasis.c, channels/chan_pjsip.c, channels/chan_unistim.c, channels/chan_multicast_rtp.c, addons/chan_ooh323.c, main/rtp_engine.c, /, main/ccss.c, apps/app_meetme.c, bridges/bridge_holding.c, main/bridge_basic.c, bridges/bridge_softmix.c, channels/chan_gtalk.c, channels/chan_iax2.c, main/media_index.c, main/channel.c, channels/chan_phone.c, channels/chan_dahdi.c, main/dial.c: Cache string values of formats on ast_format_cap() to save processing. Channel snapshots have string representations of the channel's native formats. Prior to this change, the format strings were re-created on ever channel snapshot creation. Since channel native formats rarely change, this was very wasteful. Now, string representations of formats may optionally be stored on the ast_format_cap for cases where string representations may be requested frequently. When formats are altered, the string cache is marked as invalid. When strings are requested, the cache validity is checked. If the cache is valid, then the cached strings are copied. If the cache is invalid, then the string cache is rebuilt and copied, and the cache is marked as being valid again. Review: https://reviewboard.asterisk.org/r/2879 ........ Merged revisions 400356 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-03 14:52 +0000 [r400361] Joshua Colp * res/res_pjsip_sdp_rtp.c, res/res_pjsip_t38.c, /: Fix crashes in res_pjsip_sdp_rtp and res_pjsip_t38 when a stream is rejected and external_media_address is set. The callback function for changing the media address in streams wrongly assumes that a connection line will always be present. This is false as no line is present if a stream has been rejected. (closes issue ASTERISK-22645) Reported by: Rusty Newton ........ Merged revisions 400360 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 22:22 +0000 [r400335] Mark Michelson * main/stasis_wait.c (removed), res/ari/resource_endpoints.c, /, include/asterisk/stasis.h, tests/test_cel.c, include/asterisk/stasis_endpoints.h, channels/chan_pjsip.c, main/stasis.c, main/stasis_endpoints.c: Multiple revisions 400318-400319 ........ r400318 | mmichelson | 2013-10-02 17:08:49 -0500 (Wed, 02 Oct 2013) | 12 lines Remove unnecessary waits from stasis. Since caches are updated on publisher threads, there is no need to wait for the cache updates to occur after a stasis message is published. In the case of chan_pjsip device state changes, this set of changes caused an improvement to performance. Review: https://reviewboard.asterisk.org/r/2890 ........ r400319 | mmichelson | 2013-10-02 17:10:54 -0500 (Wed, 02 Oct 2013) | 3 lines Remove svn:mergeinfo property. ........ Merged revisions 400318-400319 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 21:33 +0000 [r400317] Michael L. Young * channels/chan_iax2.c, /: Cast Integer Argument To Unsigned Char The member reg in the peercnt structure is an unsigned char and peercnt_modify() is expecting an unsigned char argument which gets assigned to peercnt->reg. This patch fixes that by casting the integer argument being passed to peercnt_modify to unsigned char. ........ Merged revisions 400314 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400315 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400316 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 21:26 +0000 [r400313] Matthew Jordan * main/cdr.c, main/manager.c, /, main/cel.c: Only create Stasis subscriptions when enabled Subscribing to Stasis isn't free. As such, this patch makes AMI, CDR, and CEL - the "big 3" - only subscribe when enabled. Toggling their availability via a .conf file will unsubscribe/subscribe as appropriate. Review: https://reviewboard.asterisk.org/r/2888/ ........ Merged revisions 400312 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 20:31 +0000 [r400304] Richard Mudgett * main/pbx.c, /: Originate: Make setting caller id on outgoing call use either name or number. Previous code was requiring both name and number to be available. Also restored a comment block on why caller id is also set on an outgoing call leg in addition to connected line from earlier versions of Asterisk. ........ Merged revisions 400303 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 19:20 +0000 [r400295] Kinsey Moore * /, rest-api/api-docs/asterisk.json: Correct allowable values for ARI general information filter ........ Merged revisions 400291 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 19:17 +0000 [r400287] Matthew Jordan * main/cdr.c, /: Fix the CDR CLI command 'cdr show active {channel}' When the switch from channel names to channel unique IDs happened, the poor CLI command got left in the dust. This fixes the command so that users can once again see how Asterisk is messing up your billing information. ........ Merged revisions 400286 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 18:44 +0000 [r400285] Joshua Colp * /, res/res_pjsip_t38.c: Fix a crash in res_pjsip_t38 caused by the wrong assumption that a session will always have a channel. When starting up or shutting down this assumption is false. ........ Merged revisions 400284 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 18:28 +0000 [r400282] Tzafrir Cohen * Makefile, doc/astdb2sqlite3.8 (added), /, doc/astdb2bdb.8 (added): man pages for astdb2bdb and astdb2sqlite3 Review: https://reviewboard.asterisk.org/r/2898/ ........ Merged revisions 400279 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400281 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 17:12 +0000 [r400269-400271] Richard Mudgett * apps/app_stack.c, res/stasis_recording/stored.c, main/json.c, main/stasis_cache.c, res/res_ari.c, /, main/utils.c: MALLOC_DEBUG: Fix some misuses of free() when MALLOC_DEBUG is enabled. * There were several places in ARI where an external library was mallocing memory that must always be released with free(). When MALLOC_DEBUG is enabled, free() is redirected to the MALLOC_DEBUG version. Since the external library call still uses the normal malloc(), MALLOC_DEBUG complains that the freed memory block is not registered and will not free it. These cases must use ast_std_free(). * Changed calls to asprintf() and vasprintf() to the equivalent ast_asprintf() and ast_vasprintf() versions respectively. ........ Merged revisions 400270 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/sig_ss7.c, /: sig_ss7: Fix compiler warnings. ........ Merged revisions 400268 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-02 16:23 +0000 [r400246-400266] Joshua Colp * channels/chan_alsa.c, main/stasis_channels.c, channels/sig_ss7.c, channels/chan_pjsip.c, channels/chan_mgcp.c, channels/chan_unistim.c, apps/app_dial.c, main/pbx.c, /, channels/chan_sip.c, main/bridge.c, include/asterisk/channel.h, channels/chan_gtalk.c, channels/chan_console.c, channels/sig_pri.c, channels/chan_iax2.c, channels/chan_jingle.c, main/channel.c, channels/chan_dahdi.c, main/dial.c, include/asterisk/stasis_channels.h, channels/chan_skinny.c, channels/chan_motif.c: Reduce channel snapshot creation and publishing by up to 50%. This change introduces the ability to stage channel snapshot creation and publishing by suppressing the implicit creation and publishing that some functions have. Once all operations are executed the staging is marked as done and a single snapshot is created and published. Review: https://reviewboard.asterisk.org/r/2889/ ........ Merged revisions 400265 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_session.c, /: Fix a random one way audio issue in PJSIP. Due to the asynchronous design of the PJMEDIA SDP negotiator it was possible for the SDP to be negotiated *after* a channel was created and after it was being wait on by an application. It is only after negotiation occurs that the file descriptors for RTP are placed on the channel. Since the channel was already being waited on these file descriptors were not monitored, causing incoming media to never be read. This change wakes up any application waiting on the channel so that added file descriptors end up being monitored. (closes issue AST-1227) Reported by: John Bigelow ........ Merged revisions 400256 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/stasis/control.c, include/asterisk/stasis_app.h, res/ari/resource_channels.c: Allow specifying a channel to dial an extension and context in an ARI dial operation. (issue ASTERISK-22625) Reported by: Scott Griepentrog ........ Merged revisions 400254 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip_session.c: Retrieve and store the hostname only once so multiple threads do not potentially initialize it at the same time. ........ Merged revisions 400245 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-01 21:19 +0000 [r400228-400237] Richard Mudgett * channels/chan_dahdi.c, channels/sig_analog.c, /: chan_dahdi: Fix analog parking using flash-hook. Transferring an analog call using a flash-hook to parking would fail to park the call and result in an invalid ao2 object unref. * Park the correct bridged channel. ........ Merged revisions 400236 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/features_config.c, /: Features: Rearm the parking config options have moved warning for each reload. ........ Merged revisions 400227 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-10-01 15:54 +0000 [r400218] Matthew Jordan * main/cdr.c, /: Filter out internal channels for bridge leave messages and parked call messages Granted, if you manage to park a Conference announcer channel, something has gone horrifically wrong. ........ Merged revisions 400217 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-30 21:40 +0000 [r400206] Jonathan Rose * configs/features.conf.sample, /, configs/res_parking.conf.sample: configuration samples: Pull all parking related stuff out of features.conf This patch also adds documentation for parking from features.conf to res_parking.conf ........ Merged revisions 400205 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-30 19:58 +0000 [r400195-400197] Matthew Jordan * /, funcs/func_cdr.c: Parse arguments passed to the CDR_PROP function correctly I can only blame this on a bad merge, because this in no way worked properly the way it was written. Mea culpa. The function should now parse its arguments correctly and function properly. (Note that the API used by the CDR_PROP function has working unit tests... this was merely bad coding of the actual registered function) (closes issue ASTERISK-22613) Reported by: Private Name ........ Merged revisions 400196 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: Remove spurious event raised when CDRs are reloaded The Reload event is now raised by the module loading core. As such, the Reload event in the CDR engine was a duplicate and not needed. ........ Merged revisions 400194 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-30 18:55 +0000 [r400186] David M. Lee * tests/test_devicestate.c, include/asterisk/sem.h (added), tests/test_taskprocessor.c, res/res_pjsip_mwi.c, res/res_pjsip/include/res_pjsip_private.h, tests/test_stasis.c, res/parking/parking_manager.c, res/res_security_log.c, channels/chan_mgcp.c, main/stasis_cache_pattern.c, main/pbx.c, include/asterisk/vector.h (added), /, main/ccss.c, apps/app_meetme.c, include/asterisk/taskprocessor.h, configs/stasis.conf.sample (removed), configure.ac, res/parking/parking_applications.c, channels/sig_pri.c, apps/app_queue.c, main/cel.c, main/stasis.c, channels/chan_dahdi.c, funcs/func_presencestate.c, main/stasis_message_router.c, configure, apps/confbridge/confbridge_manager.c, res/res_agi.c, main/manager_system.c, res/res_stasis_test.c, main/sem.c (added), main/manager_channels.c, res/res_pjsip_refer.c, main/manager_mwi.c, apps/app_voicemail.c, main/stasis_cache.c, main/stasis_wait.c, main/stasis_config.c (removed), include/asterisk/stasis_internal.h, res/stasis/app.c, channels/chan_sip.c, include/asterisk/autoconfig.h.in, main/manager_endpoints.c, main/channel_internal_api.c, include/asterisk/stasis.h, main/devicestate.c, main/taskprocessor.c, res/res_xmpp.c, main/sounds_index.c, include/asterisk/stasis_message_router.h, channels/chan_iax2.c, res/res_jabber.c, main/endpoints.c, main/astobj2.c, res/res_chan_stats.c, res/parking/parking_bridge_features.c, tests/test_stasis_endpoints.c, main/cdr.c, main/channel.c, main/manager_bridges.c, main/manager.c, channels/chan_skinny.c: Multiple revisions 399887,400138,400178,400180-400181 ........ r399887 | dlee | 2013-09-26 10:41:47 -0500 (Thu, 26 Sep 2013) | 1 line Minor performance bump by not allocate manager variable struct if we don't need it ........ r400138 | dlee | 2013-09-30 10:24:00 -0500 (Mon, 30 Sep 2013) | 23 lines Stasis performance improvements This patch addresses several performance problems that were found in the initial performance testing of Asterisk 12. The Stasis dispatch object was allocated as an AO2 object, even though it has a very confined lifecycle. This was replaced with a straight ast_malloc(). The Stasis message router was spending an inordinate amount of time searching hash tables. In this case, most of our routers had 6 or fewer routes in them to begin with. This was replaced with an array that's searched linearly for the route. We more heavily rely on AO2 objects in Asterisk 12, and the memset() in ao2_ref() actually became noticeable on the profile. This was #ifdef'ed to only run when AO2_DEBUG was enabled. After being misled by an erroneous comment in taskprocessor.c during profiling, the wrong comment was removed. Review: https://reviewboard.asterisk.org/r/2873/ ........ r400178 | dlee | 2013-09-30 13:26:27 -0500 (Mon, 30 Sep 2013) | 24 lines Taskprocessor optimization; switch Stasis to use taskprocessors This patch optimizes taskprocessor to use a semaphore for signaling, which the OS can do a better job at managing contention and waiting that we can with a mutex and condition. The taskprocessor execution was also slightly optimized to reduce the number of locks taken. The only observable difference in the taskprocessor implementation is that when the final reference to the taskprocessor goes away, it will execute all tasks to completion instead of discarding the unexecuted tasks. For systems where unnamed semaphores are not supported, a really simple semaphore implementation is provided. (Which gives identical performance as the original taskprocessor implementation). The way we ended up implementing Stasis caused the threadpool to be a burden instead of a boost to performance. This was switched to just use taskprocessors directly for subscriptions. Review: https://reviewboard.asterisk.org/r/2881/ ........ r400180 | dlee | 2013-09-30 13:39:34 -0500 (Mon, 30 Sep 2013) | 28 lines Optimize how Stasis forwards are dispatched This patch optimizes how forwards are dispatched in Stasis. Originally, forwards were dispatched as subscriptions that are invoked on the publishing thread. This did not account for the vast number of forwards we would end up having in the system, and the amount of work it would take to walk though the forward subscriptions. This patch modifies Stasis so that rather than walking the tree of forwards on every dispatch, when forwards and subscriptions are changed, the subscriber list for every topic in the tree is changed. This has a couple of benefits. First, this reduces the workload of dispatching messages. It also reduces contention when dispatching to different topics that happen to forward to the same aggregation topic (as happens with all of the channel, bridge and endpoint topics). Since forwards are no longer subscriptions, the bulk of this patch is simply changing stasis_subscription objects to stasis_forward objects (which, admittedly, I should have done in the first place.) Since this required me to yet again put in a growing array, I finally abstracted that out into a set of ast_vector macros in asterisk/vector.h. Review: https://reviewboard.asterisk.org/r/2883/ ........ r400181 | dlee | 2013-09-30 13:48:57 -0500 (Mon, 30 Sep 2013) | 28 lines Remove dispatch object allocation from Stasis publishing While looking for areas for performance improvement, I realized that an unused feature in Stasis was negatively impacting performance. When a message is sent to a subscriber, a dispatch object is allocated for the dispatch, containing the topic the message was published to, the subscriber the message is being sent to, and the message itself. The topic is actually unused by any subscriber in Asterisk today. And the subscriber is associated with the taskprocessor the message is being dispatched to. First, this patch removes the unused topic parameter from Stasis subscription callbacks. Second, this patch introduces the concept of taskprocessor local data, data that may be set on a taskprocessor and provided along with the data pointer when a task is pushed using the ast_taskprocessor_push_local() call. This allows the task to have both data specific to that taskprocessor, in addition to data specific to that invocation. With those two changes, the dispatch object can be removed completely, and the message is simply refcounted and sent directly to the taskprocessor. Review: https://reviewboard.asterisk.org/r/2884/ ........ Merged revisions 399887,400138,400178,400180-400181 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-30 15:57 +0000 [r400142] Kinsey Moore * /, channels/chan_sip.c, configs/pjsip.conf.sample, res/res_pjsip_outbound_registration.c, configs/sip.conf.sample, CHANGES: chan_sip: Allow Asterisk to retry after 403 on register This adds a global option in chan_sip to allow it to continue attempting registration if a 403 is received, clearing the cached nonce and treating it as a non-fatal response. Normally, this would cause registration attempts to that endpoint to stop. This also adds a similar per-outbound-registration option to chan_pjsip which allows the retry interval to be altered for 403 responses to REGISTER requests. (closes issue ASTERISK-17138) Review: https://reviewboard.asterisk.org/r/2874/ Reported by: Rudi ........ Merged revisions 400137 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400140 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400141 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-28 22:57 +0000 [r400059-400122] Matthew Jordan * /, res/res_pjsip_notify.c, configs/pjsip_notify.conf.sample (added): res_pjsip_notify: Add documentation We forgot to add documentation for res_pjsip_notify, which would prevent it from being loaded. Whoops. This patch also updates res_pjsip_notify to use pjsip_notify.conf, which now has its own sample file in the configs directory as well. Review: https://reviewboard.asterisk.org/r/2835/ ........ Merged revisions 400121 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Correct erroneous lost packet information in RTCP reports RTCP's calculation of the number of lost packets in an RTP stream is based on that stream's sequence number count, the number of received packets, and how many packets we expect to receive. When the SSRC for an RTP stream changes, there can - and almost always will be - a large jump in the next packet's timestamp and sequence number. If we don't reset the number of received packets, sequence number count, and other metrics used by RTCP, the next RR/SR report will use the previous SSRC's values to calculate the lost packet count for the new SSRC - resulting in a very large number of lost packets. This patch modifies res_rtp_asterisk such that, if it detects a SSRC change, it will reset the various values used by the RTCP calculations. From the perspective of RTCP, this appears as a new media stream - which is what it is. Review: https://reviewboard.asterisk.org/r/2886/ (closes issue AST-1174) Reported by: Thomas Arimont ........ Merged revisions 400089 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400093 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400108 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, configure, configure.ac: Add check for openSUSE when detecting bfd library In ASTERISK-17842, some additional library checks were added to the configure script so that the bfd library could be found on CentOS and Fedora systems. As it turns out, openSUSE requires an additional library. This patch adds another check to the configure script for openSUSE that will add that library. Review: https://reviewboard.asterisk.org/r/2885/ (closes issue AST-1169) Reported by: Guenther Kelleter ........ Merged revisions 400073 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400075 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400077 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: CDR: Improve handling of parking; resolve assertion when originating into park This patch covers two problems: 1) Currently, when a call is transferred into a parking lot from a bridge (using either the blind transfer or one touch parking mechanisms), the application fails to be set to "Park" in the resulting CDR record for the parked channel. This is due to the ParkedCall message arriving before the BridgeEnter for the channel entering the parking bridge. The ParkedCall message isn't handled as the CDR for the channel has already been finalized (due to the channel having left its two party bridge), and the BridgeEnter - which creates the new CDR - doesn't have the parking information. This patch modifies the behavior so that reception of a ParkedCall message will - if not handled by a CDR chain - cause a new CDR to be created and put into the Parking state. 2) It fixes a FRACK that occurred when a channel is originated into a parking space. The DialedPending state - which occurs for both Dialed and Originated channels - assumed that it couldn't handle the parking transitions due to it having a Party B; however, Originated channels don't have a Party B. As such, the existing CDR needs to transition into the parking state - this patch does that. Review: https://reviewboard.asterisk.org/r/2877/ (closes issue ASTERISK-22482) Reported by: Richard Mudgett ........ Merged revisions 400062 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_queue.c: app_queue: Make manager events tolerant of Local channel shenanigans app_queue currently attempts to handle Local channel optimizations in an effort to provide accurate information in Stasis messages (and their corresponding AMI events) as well as the Queue log. Sometimes, however, things don't go as planned. Consider the following scenario: SIP/foo <-> L;1 <-> L;2 <-> SIP/agent SIP/agent answers, triggering a Local channel optimization. app_queue will normally do the following: * Listen for the Local optimization events and update our agent accordingly to SIP/agent in the queue log and messages * When we get a hangup, publish the AgentComplete event based on our information (SIP/foo and SIP/agent) However, as with all things that depend on sanity from something as capricious as Local channels, things can go wrong: (1) SIP/agent immediately hangs up upon answering. This triggers a race condition between termination messages coming from SIP/agent and the ongoing Local channel optimization messages. (Note that this can also occur with SIP/foo) (2) In a race condition, Asterisk can (rarely) deliver the hangup messages prior to the Local channel optimization. In that case, the messages *may* arrive to app_queue in the following order: * Hangup SIP/Agent * Hangup SIP/foo * Optimize L;1/L;2 * Hangup L;2 * Hangup L;1 When app_queue receives the hangup of the agent or the caller, it will attempt to publish the AgentComplete event. However, it now has a problem - it thinks its agent is the ;1 side of the Local channel, as it never received the optimization event. At the same time, that channel is already gone. This results in getting NULL from the Stasis cache. What's more, we can't really wait for the optimization message, as we are currently handling the hangup of the channel that the optimization event would tell us to use. This patch modifies the behavior in app_queue such that, since we still have a lot of pertinent queue information (interface, queue name, etc.), we now raise the event with what information we know. The channels involved now may or may not be present. Users will still at least get the "AgentComplete" event, which "completes" the known Agent information. Review: https://reviewboard.asterisk.org/r/2878/ (closes issue ASTERISK-22507) Reported by: Richard Mudgett ........ Merged revisions 400060 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/manager.c, /: manager: Fix crash when appending a manager channel variable In r399887, a minor performance improvement was introduced by not allocating the manager variable struct if it wasn't used. Unfortunately, when directly accessing an ast_channel struct, manager assumed that the struct was always allocated. Since this was no longer the case, things got a bit crashy. This fixes that problem by simply bypassing appending variables if the manager channel variable struct isn't there. ........ Merged revisions 400058 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 21:58 +0000 [r400016-400021] Richard Mudgett * apps/app_cdr.c, res/res_parking.c, /: app_cdr and res_parking: Fix some resource leaks. * app_cdr left the ResetCDR application registered. * res_parking leaked a ref to config global. (closes issue ASTERISK-22566) Reported by: Corey Farrell Patches: ASTERISK-22566-r2.patch (license #5909) patch uploaded by Corey Farrell ........ Merged revisions 400020 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/sip/reqresp_parser.c, /, channels/chan_sip.c: chan_sip: Increase some scratch buffer sizes dealing with caller id. * Eliminated an unnecessary initialization in check_user_full(). (closes issue ASTERISK-22477) Reported by: Michael Shepelev ........ Merged revisions 400013 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 400014 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 400015 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 19:18 +0000 [r400000] Sean Bright * configs/sip.conf.sample: Remove some trailing whitespace and steal revision 400000. 2013-09-27 18:28 +0000 [r399991] Kevin Harwell * /, res/res_pjsip.c, res/res_pjsip_session.c, include/asterisk/res_pjsip.h, res/res_pjsip.exports.in: res_pjsip: crash when using localnet and external_signaling_address options There was a collision of mod_data use on the transaction between using a nat hook and an session response callback. During state change it was assumed what was in the mod_data was nothing or the response callback. However, it was possible for it to also contain a nat hook thus resulting in a bad cast and a crash. Added the ability to store multiple data elements in mod_data via a hash table. In this instance, mod_data now stores a hash table of the two values that can be retrieved using an associated string key. (closes issue ASTERISK-22394) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/2843/ ........ Merged revisions 399990 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 17:46 +0000 [r399978] Jonathan Rose * channels/sip/include/sip.h, /, channels/chan_sip.c: chan_sip: Reject calls on 200 OKs if no SDP has been received When Asterisk receives a 200 OK in response to an invite, that peer should have sent an SDP at some point by then. If the channel has never received an SDP, media won't have been set and the remote address won't be known. Endpoints in general should not be doing this. This patch makes it so that Asterisk will simply hang up a call if it sends a 200 OK at this point. So far this odd behavior for endpoints has only been observed in tests which involved manually created SIP transactions in SIPp. (closes issue ASTERISK-22424) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/2827/ ........ Merged revisions 399939 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399962 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399976 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 17:11 +0000 [r399938] Richard Mudgett * include/asterisk/astobj2.h, tests/test_astobj2.c, main/astobj2.c, /: astobj2: Remove OBJ_CONTINUE support. OBJ_CONTINUE was a strange feature that came into the world under suspicious circumstances to support an abuse of the ao2_container by chan_iax2. Since chan_iax2 no longer uses OBJ_CONTINUE, it is safe to remove it. The simplified code should help performance slightly and make understanding the code easier. Review: https://reviewboard.asterisk.org/r/2887/ ........ Merged revisions 399937 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 14:35 +0000 [r399925] Mark Michelson * /, bridges/bridge_native_rtp.c: Fix refleaks of ast_rtp_instance structures. These refleaks were causing bridged calls not to close their RTP ports. Thus a call would leave open 4 ports (RTP for party A, RTCP for party A, RTP for party B, and RTCP for party B). This led to an eventual depletion of available RTP ports. ........ Merged revisions 399924 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-27 14:08 +0000 [r399913] Kinsey Moore * tests/test_cel.c, main/cel.c, /, include/asterisk/cel.h: Restore usefulness of the CEL Peer field This change makes the CEL peer field useful again for BRIDGE_ENTER and BRIDGE_EXIT events and fills the field with a comma-separated list of all channels in the bridge other than the channel that is entering or exiting the bridge. Review: https://reviewboard.asterisk.org/r/2840/ (closes issue ASTERISK-22393) ........ Merged revisions 399912 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-26 18:51 +0000 [r399898] Kevin Harwell * res/res_pjsip_registrar.c, include/asterisk/res_pjsip.h, res/res_pjsip.exports.in, /, res/res_pjsip/security_events.c: pjsip: race condition in registrar While handling a registration request a race condition could occur if/when two+ clients registered at the same time. This happened when one request obtained a copy of the current contacts for an AOR and another request did the same before the first request updated. Thus the second would update and overwrite the first (or vice-versa depending on which actually updated first). In the case of it being the same contact two "add" events would be raised. pjsip registration handling is now serialized to alleviate this issue. (closes issue AST-1213) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2860/ ........ Merged revisions 399897 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-26 14:13 +0000 [r399875] Rusty Newton * /, apps/app_dial.c: Adding a few words to the Dial option 'r' help text to clarify its tone argument description ........ Merged revisions 399874 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-25 20:38 +0000 [r399844] Richard Mudgett * channels/sig_ss7.c, channels/chan_dahdi.c, /: chan_dahdi: CLI "core stop gracefully" has needless delay for PRI and SS7. The PRI and SS7 link control threads are not stopped correctly when the chan_dahdi.so module is unloaded. The link control threads pri_dchannel() and ss7_linkset() are not awakened from a poll() to cancel the thread. * Added a SIGURG signal after requesting the thread cancel to break the link control thread poll() immediately. For SS7 it was slightly worse, the link poll() timeout would always be whatever was the last libss7 scheduled event time used. If no libss7 scheduled event was pending, the thread could run more often than necessary. * Set nextms to 60 seconds for the ss7_linkset() poll() if there is no other libss7 scheduled event. ........ Merged revisions 399818 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399834 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399842 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-25 19:43 +0000 [r399799] Rusty Newton * /, res/res_pjsip.c: Broke the build - Fixing XML DTD violation added in r399782, missing tags inside a ........ Merged revisions 399798 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-25 19:29 +0000 [r399797] Michael L. Young * /, channels/chan_sip.c: chan_sip: Fix Realtime Peer Update Problem When Un-registering And Expires Header In 200ok 1st Issue When a realtime peer sends an un-REGISTER request, Asterisk un-registers the peer but the database table record still has regseconds and fullcontact for the peer. This results in calls attempting to be routed to the peer which is no longer registered. The expected behavior is to get busy/congested when attempting to call an un-registered peer through the dialplan. What was discovered is that we are clearing out the peer's registration in the database in parse_register_contact() when calling expire_register() but then upon returning from parse_register_contact(), update_peer() is run which stores back in the database table regseconds and fullcontact. 2nd Issue The reporter pointed out that the 200 ok being returned by Asterisk after un-registering a peer contains a Contact header with ;expires= and the Expires header is not set to 0. This is actually a regression. Tests were created for this second issue (ASTERISK-22548). The tests have been reviewed and a Ship It! was received on those tests. This patch does the following: * Do not ignore the Expires header value even when it is set to 0. The patch sets the pvt->expiry earlier on in the function so that it is set properly and used. * If pvt->expiry is 0, do not call update_peer since that means the peer has already been un-registered and there is no need to update the database record again since nothing has changed. (closes issue ASTERISK-22428) Reported by: Ben Smithurst Tested by: Ben Smithurst, Michael L. Young Patches: asterisk-22428-rt-peer-update-and-expires-header.diff by Michael L. Young (license 5026) Review: https://reviewboard.asterisk.org/r/2869/ ........ Merged revisions 399794 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399795 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399796 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-25 18:38 +0000 [r399782] Rusty Newton * /, res/res_pjsip.c: Fixing documentation for the configOption "external_media_address" of both Endpoints and Transports Re-using some of Mark Michelson's text from an E-mail discussion for: * Modifying synopsis for both options * Adding description to both options * Changing name of "external_media_address" for Endpoint configuration to "media_address" in anticipation of the option name being changed. (As it is not really specific to external destinations) (issue ASTERISK-22405) (closes issue ASTERISK-22405) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/2850/ ........ Merged revisions 399781 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-24 22:55 +0000 [r399737-399750] Richard Mudgett * /, main/astobj2.c: astobj2: Made use OBJ_SEARCH_xxx identifiers as field enum values internally. * Made ao2_unlink to protect itself from stray OBJ_SEARCH_xxx values passed in. ........ Merged revisions 399749 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Prevent some needless breaking of the native IAX2 bridge. * Clean up some twisted code in the iax2_bridge() loop. * Add AST_CONTROL_VIDUPDATE and AST_CONTROL_SRCCHANGE to a list of frames to prevent the native bridge loop from breaking. * Passing the AST_CONTROL_T38_PARAMETERS frame should also allow FAX over a native IAX2 bridge. (issue ABE-2912) Review: https://reviewboard.asterisk.org/r/2870/ ........ Merged revisions 399697 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399708 from http://svn.asterisk.org/svn/asterisk/branches/11 For v12 and above this is really just documentation until IAX2 native bridging is restored. ........ Merged revisions 399736 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-24 19:22 +0000 [r399667-399696] Matthew Jordan * apps/app_queue.c, /: app_queue: Don't be quite so aggressive in initializing the array We only need the first character. ........ Merged revisions 399695 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_queue.c, /: app_queue: Initialize array holding MixMonitor exec options If the channel variable MONITOR_EXEC is set, app_queue will pass the specified execution parameters to the MixMonitor application when a queue is recorded. If that channel variable is not set, the buffer that holds the escaped value was not being initialized to NULL, and so would be passed to the MixMonitor application with garbage. Hilarity ensued as app_mixmonitor attempted to execute gobeldy-gook. ........ Merged revisions 399681 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/stasis_bridges.c, tests/test_cdr.c, main/cdr.c, /: Fix a performance problem CDRs There is a large performance price currently in the CDR engine. We currently perform two ao2_callback calls on a container that has an entry for every channel in the system. This is done to create matching pairs between channels in a bridge. As such, the portion of the CDR logic that this patch deals with is how we make pairings when a channel enters a mixing bridge. In general, when a channel enters such a bridge, we need to do two things: (1) Figure out if anyone in the bridge can be this channel's Party B. (2) Make pairings with every other channel in the bridge that is not already our Party B. This is a two step process. In the first step, we look through everyone in the bridge and see if they can be our Party B (single_state_process_bridge_enter). If they can - yay! We mark our CDR as having gotten a Party B. If not, we keep searching. If we don't find one, we wait until someone joins who can be our Party B. Step 2 is where we changed the logic (handle_bridge_pairings and bridge_candidate_process). Previously, we would first find candidates - those channels in the bridge with us - from the active_cdrs_by_channel container. Because a channel could be a candidate if it was Party B to an item in the container, the code implemented multiple ao2_container callbacks to get all the candidates. We also had to store them in another container with some other meta information. This was rather complex and costly, particularly if you have 300 Local channels (600 channels!) going at once. Luckily, none of it is needed: when a channel enters a bridge (which is when we're figuring all this stuff out), the bridge snapshot tells us the unique IDs of everyone already in the bridge. All we need to do is: For all channels in the bridge: If the channel is us or our Party B that we got in step 1, skip it Compare us and the candidate to figure out who is Party A (based on some specific rules) If we are Party A: Make a new CDR for us, append it to our chain, and set the candidate as Party B If they are Party A: If they don't have a Party B: Make a new CDR for them, append us to their chain, and us as Party B Otherwise: Copy us over as Party B on their existing CDR. This patch does that. Because we now use channel unique IDs to find the candidates during bridging, active_cdrs_by_channel now looks up things using uniqueid instead of channel name. This makes the more complex code simpler; it does, however, have the drawback that dialplan applications and functions will be slightly slower as they have to iterate through the container looking for the CDR by name. That's a small price to pay however as the bridging code will be called a lot more often. This patch also does two other minor changes: (1) It reduces the container size of the channels in a bridge snapshot to 1. In order to be predictable for multi-party bridges, the order of the channels in the container must be stable; that is, it must always devolve to a linked list. (2) CDRs and the multi-party test was updated to show the relationship between two dialed channels. You still want to know if they talked - previously, dialed channels were always ignored, which is wrong when they have managed to get a Party B. (closes issue ASTERISK-22488) Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/2861/ ........ Merged revisions 399666 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-23 12:03 +0000 [r399625] Joshua Colp * res/res_pjsip.c, res/res_pjsip_session.c, /: Fix crash in res_pjsip on load if error occurs, and prevent unloading of res_pjsip and res_pjsip_session. During load time in res_pjsip if an error occurred the operation would attempt to rollback all operations done during load. This is not permitted by PJSIP as it will assert if the operation has not been done. This fix changes the code so it will only rollback what has been initialized already. Further changes also prevent res_pjsip and res_pjsip_session from being unloaded. This is due to limitations within PJSIP itself. The library environment can only be changed to a certain extent and does not provide the ability, currently, to deinitialize certain required functionality. (closes issue ASTERISK-22474) Reported by: Corey Farrell ........ Merged revisions 399624 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-21 04:49 +0000 [r399578-399608] Richard Mudgett * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix ref leaks in ast_rtcp_read(). Moved rtcp_report RAII_VAR declaration into the loop so it is unref'ed after every loop. Moved message_blob to loop and switched it to a regular variable. The regular variable was used since message_blob is used in a very contained way. (closes issue ASTERISK-22565) Reported by: Corey Farrell Patches: rtcp_report-leak.patch (license #5909) patch uploaded by Corey Farrell Tested by: Corey Farrell ........ Merged revisions 399607 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/media_index.c: media_index: Fix process_description_file() memory leak of file_id_persist. ........ Merged revisions 399596 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/features_config.c: features_config: Fix config ref leak of parkinglots. This leak happend for just about every channel created. ........ Merged revisions 399585 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, apps/app_queue.c: app_queue: Fix json blob ref leak. The json ref from queue_member_blob_create() was never released. ........ Merged revisions 399583 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/json.c, /: json: Make it obvious that ast_json_unref() is NULL safe. It looked like the safety check was done after the NULL pointer was used. ........ Merged revisions 399576 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-20 22:44 +0000 [r399566] Kinsey Moore * main/config_options.c, /: Ensure global types in the config framework are initialized If a config object was allocated but one of its global objects was never encountered, then the global object's defaults were never applied. Ensure that global objects are initialized properly upon allocation instead of on configuration. Review: https://reviewboard.asterisk.org/r/2866/ ........ Merged revisions 399564 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399565 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-20 22:06 +0000 [r399554] Jonathan Rose * main/dial.c, /: originate/call forwarding: Fix a crash when forwarding a call from originate (closes issue ASTERISK-22487) Reported by: David M. Lee Review: https://reviewboard.asterisk.org/r/2868/ ........ Merged revisions 399553 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-20 16:18 +0000 [r399533] Joshua Colp * /, channels/chan_pjsip.c: Add a missing session supplement unregistration in chan_pjsip for ACKs. (closes issue ASTERISK-22453) Reported by: Corey Farrell Patches: chan_pjsip_session_unregister_supplement.patch uploaded by Corey Farrell (license 5909) ........ Merged revisions 399531 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-20 14:26 +0000 [r399515] Kevin Harwell * /, main/logger.c: Fix memory leak in logger. Fixed a memory leak discovered in the logger where a temporary string buffer was not being freed. (closes issue ASTERISK-22540) Reported by: John Hardin ........ Merged revisions 399513 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399514 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-19 23:20 +0000 [r399503] Richard Mudgett * /, main/optional_api.c: optional_api: Make always use the standard malloc functions even with MALLOC_DEBUG. ........ Merged revisions 399501 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-19 17:01 +0000 [r399459] Jonathan Rose * /, channels/chan_sip.c: chan_sip: Make direct media reinvites for T38 put Asterisk in the media path Prior to this patch, Asterisk would incorrectly use the previous endpoint addresses in SDP in spite of providing its own port. T38 is never meant to be done through directmedia and Asterisk should always be in the media path for these streams. (closes issue ASTERISK-17273) Reported by: Kevin Stewart (closes issue ASTERISK-18706) Reported by: Jeremy Kister Review: https://reviewboard.asterisk.org/r/2853/ ........ Merged revisions 399456 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399457 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399458 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-18 20:04 +0000 [r399405] Kinsey Moore * /, main/abstract_jb.c: Fix jitter buffer log file creation This adjusts '/'-to-'#' replacement to replace all instances of '/' instead of just the first to ensure that the jitter buffer log file gets the correct name as per Richard Kenner's suggestion. (closes issue ASTERISK-21036) Reported by: Richard Kenner ........ Merged revisions 399402 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399403 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399404 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-18 17:23 +0000 [r399368-399378] Matthew Jordan * /, build_tools/prep_tarball: Update prep_tarball with new documentation files on the Asterisk wiki This will now pull both a command reference for the version being prepared, as well as an Admin Guide that applies to all versions of Asterisk. (issue ASTERISK-22439) Reported by: Olle Johansson ........ Merged revisions 399351 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399373 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399376 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, bridges/bridge_softmix.c: Add a WARNING in bridge_softmix when a timing module isn't loaded If bridge_softmix fails to be created because no timing source is present in Asterisk, this will currently fail gracefully but with (most likely) a generic error message by whatever module tried to create the softmix bridge. This patch adds a more explicit warning so you can actually diagnose and fix the problem. Review: https://reviewboard.asterisk.org/r/2857/ ........ Merged revisions 399353 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399365 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-18 17:15 +0000 [r399352] Richard Mudgett * main/config_options.c: Make config framework able to reload module configs with multiple config files. The config framework is supposed to be able to load configs that come from multiple config files. The principle example is chan_sip's sip.conf and users.conf. Unfortunately, it only does this correctly on initial load. This patch causes the module's config to be reloaded entirely if any of the config files change. (closes issue ASTERISK-22009) Reported by: Richard Mudgett Review: https://reviewboard.asterisk.org/r/2859/ 2013-09-18 14:56 +0000 [r399340] Kevin Harwell * res/res_pjsip_messaging.c, /: res_pjsip_messaging: Register message technology as pjsip pjsip's message technology was being registered as 'sip', which was causing it to not load due it conflicting with chan_sip's registered 'sip' technology for messaging. It now registers as 'pjsip'. However, due to this change the "to" field for outgoing pjsip messages need to be prefixed with 'pjsip:' instead of 'sip:'. Incoming messages to res_pjsip_messaging will automatically have their "to" fields altered in order to accommodate the change. Outgoing messages also handle changing it back to 'sip' before being sent so the pjsip library will properly handle it. (closes issue ASTERISK-22445) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2833/ ........ Merged revisions 399339 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-18 00:13 +0000 [r399295] Michael L. Young * /, main/features_config.c: Fix Segfault In features-config.c When Application Has No Arguments Some applications do not require arguments. Therefore, when parsing application maps in features.conf, it is possible that app_data will be set to NULL. * This patch sets app_data to "" if it is NULL. Review: https://reviewboard.asterisk.org/r/2804 ........ Merged revisions 399294 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-17 23:10 +0000 [r399284] Mark Michelson * res/res_pjsip_sdp_rtp.c, res/res_pjsip/pjsip_configuration.c, res/res_pjsip_t38.c, include/asterisk/res_pjsip.h, /: Change the "external_media_address" PJSIP endpoint option to "media_address". The endpoint option does not apply to communication with external entities. Rather, the option is applied to all communications with the endpoint. The external_media_address transport configuration option may override the endpoint option if it turns out that we are going to be communicating with an external entity. Two things of note: 1) I have not updated the XML documentation. This is being taken care of by Rusty as part of his work on issue ASTERISK-22405 2) This commit is likely to cause testsuite failures since there are tests that use the external_media_address endpoint option, and they will need to be changed over. Well, I'm planning to get that updated ASAP after this commit. (closes issue ASTERISK-22528) reported by Rusty Newton ........ Merged revisions 399283 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-17 18:44 +0000 [r399269] Kevin Harwell * main/logger.c, main/asterisk.c, /: Remote console: more output discrepancies The remote console continued to have issues with its output. In this case CLI command output would either not show up (if verbose level = 0) or would contain verbose prefixes (if verbose level > 0) once log messages were sent to the remote console. The fix now now adds verbose prefix data to all new lines contained in a verbose log string. (closes issue ASTERISK-22450) Reported by: David Brillert (closes issue AST-1193) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/2825/ ........ Merged revisions 399267 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399268 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-17 17:55 +0000 [r399258] Richard Mudgett * /, include/asterisk/features_config.h: Fix doxygen to use correct units of features.conf options. ........ Merged revisions 399257 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-17 17:10 +0000 [r399238-399248] Mark Michelson * main/bridge_basic.c, main/features_config.c, /: Fix other timeouts (atxferloopdelay and atxfernoanswertimeout) to use seconds instead of milliseconds. Thanks to Richard Mudgett for pointing this out. ........ Merged revisions 399247 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/features_config.c, /, include/asterisk/features_config.h, main/bridge_basic.c: Switch transferdigittimeout to be configured as seconds instead of milliseconds. This was an unintentional consequence of the update of features.conf to use the config framework in Asterisk 12. Thanks to Marco Signorini on the Asterisk developers list for pointing out the problem. ........ Merged revisions 399237 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-17 14:58 +0000 [r399226] Kevin Harwell * apps/confbridge/conf_state_multi_marked.c, /: Confbridge: empty conference not being torn down Confbridge would not properly tear down an empty conference bridge when all users were kicked via end_marked=yes and at least one user was also set to wait_marked. This occurred because while end_marked users were being kicked and at least one was also set to wait_marked then the leave wait_marked handler would be called on that user, but there would be no waiting user (still considered active). The waiting users would decrement and now be negative. The conference would remain, but be put into an inactive state. The solution was to move from the active list to the wait list, those users with wait_marked set right before kicking. This allows both the active and wait users to decrement correctly and the confbridge to tear down properly. A crashed also occurred when trying to list the specific conference from the CLI. This happened because the conference specified was invalid. Since the conference properly tears down now there is no way to reference it thus alleviating the crash as well. (closes issue ASTERISK-21859) Reported by: Chris Gentle Review: https://reviewboard.asterisk.org/r/2848/ ........ Merged revisions 399222 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399225 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-16 18:36 +0000 [r399161-399208] Richard Mudgett * tests/test_ari_model.c, /: Fix module load errors for test_ari_model.so. You cannot use a function pointer variable with an external function from another dynamically loaded module because data variables are always resolved even with RTLD_LAZY. * Added wrapper functions for ast_ari_validate_int() and ast_ari_validate_string() to use instead for the function pointer variable. (closes issue ASTERISK-22457) Reported by: David M. Lee ........ Merged revisions 399207 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_speech_utils.c, /, res/res_speech.exports.in: app_speech_utils: Fix unresolved symbol ast_speech_get_setting(). Fixes regression introduced by -r374096. * Made res_speech.export.in export ast_* symbols instead of specific functions. * Made app_speech_utils.c declare that it is dependent upon res_speech. (issue ASTERISK-17136) Reported by: Richard Kenner ........ Merged revisions 399197 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Fix saving the wrong expiry time in astdb. When a new IAX2 client registers, the astdb database is updated with the value of minregexpire defined in iax.conf instead of using the expiry time that is provided by the client. The provided expiry time of the client is updated after inserting the astdb entry. As a consequence, restarting or reloading asterisk creates clients whose registration may expire before they reregister. The clients are therefore unavailable after minregexpire seconds until they reregister. * Move updating of the expiry time to before inserting into the astdb. (closes issue ASTERISK-22504) Reported by: Stefan Wachtler Patches: chan_iax2.c.patch (license #6533) patch uploaded by Stefan Wachtler ........ Merged revisions 399158 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399159 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399160 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-16 02:37 +0000 [r399147] Matthew Jordan * main/cdr.c, /: Filter internal channels out of bridge enter/leave message handling Some channels exist merely as an implementation detail in Asterisk, such as ConfBridge's announcer/recorder channels. These channels should never be exposed to the outside world, or to interfaces that report on Asterisk. We already filter out such channels in snapshot processing; however, we failed to filter out bridge related messages that involved these channels. This patch filters out bridge related messages that are for such channels. This prevents a spurious WARNING message from being displayed when those channels move in and out of bridges. ........ Merged revisions 399146 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 22:19 +0000 [r399138] Richard Mudgett * res/parking/parking_bridge_features.c, apps/app_agent_pool.c, include/asterisk/features.h, main/channel.c, res/parking/parking_tests.c, include/asterisk/bridge_channel.h, main/features.c, tests/test_cel.c, main/bridge_channel.c, tests/test_cdr.c, apps/confbridge/conf_chan_announce.c, include/asterisk/bridge.h, res/res_pjsip_refer.c, /, channels/chan_sip.c, res/stasis/control.c, main/bridge.c, main/bridge_basic.c, main/core_unreal.c, res/parking/parking_applications.c, main/core_local.c: Restore Dial, Queue, and FollowMe 'I' option support. The Dial, Queue, and FollowMe applications need to inhibit the bridging initial connected line exchange in order to support the 'I' option. * Replaced the pass_reference flag on ast_bridge_join() with a flags parameter to pass other flags defined by enum ast_bridge_join_flags. * Replaced the independent flag on ast_bridge_impart() with a flags parameter to pass other flags defined by enum ast_bridge_impart_flags. * Since the Dial, Queue, and FollowMe applications are now the only callers of ast_bridge_call() and ast_bridge_call_with_flags(), changed the calling contract to require the initial COLP exchange to already have been done by the caller. * Made all callers of ast_bridge_impart() check the return value. It is important. As a precaution, I also made the compiler complain now if it is not checked. * Did some cleanup in parking_tests.c as a result of checking the ast_bridge_impart() return value. An independent, but associated change is: * Reduce stack usage in ast_indicate_data() and add a dropping redundant connected line verbose message. (closes issue ASTERISK-22072) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2845/ ........ Merged revisions 399136 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 20:55 +0000 [r399101] David M. Lee * /, main/astobj2.c: Don't write to /tmp/refs when REF_DEBUG is not defined. If MALLOC_DEBUG is enabled, then the debug destructor for the container is used, which would erroneously write to /tmp/refs. This patch only uses the debug destructor if ref_debug is used. (closes issue ASTERISK-22536) ........ Merged revisions 399098 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399099 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399100 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 14:50 +0000 [r399082-399084] Mark Michelson * res/res_pjsip.c, res/res_pjsip_pubsub.c, res/res_pjsip_session.c, include/asterisk/res_pjsip.h, res/res_pjsip.exports.in, /: Create more accurate Contact headers for dialogs when we are the UAS. (closes issue AST-1207) reported by John Bigelow Review: https://reviewboard.asterisk.org/r/2842 ........ Merged revisions 399083 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip/config_auth.c, /, res/res_pjsip_outbound_authenticator_digest.c, res/res_pjsip_authenticator_digest.c: Change how realms are handled for outbound authentication. With this change, if no realm is specified in an outbound auth section, then we will simply match the realm that was present in the 401/407 challenge. (closes issue ASTERISK-22471) Reported by George Joseph (closes issue ASTERISK-22386) Reported by Rusty Newton Patches: outbound_auth_realm_v4.patch uploaded by George Joseph (License #6322) ........ Merged revisions 399059 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 14:43 +0000 [r399080-399081] David M. Lee * /: Recorded merge of revisions 399035,399049 from http://svn.asterisk.org/svn/asterisk/branches/12 These were lost in r399071 * /: Put merge tracking for r399039 back. 2013-09-13 14:27 +0000 [r399071] Rusty Newton * /, res/res_pjsip_endpoint_identifier_ip.c: Broke the build! Forgot para tags within my description. https://bamboo.asterisk.org/bamboo/browse/AST-ATRUNKBUILD-304 ........ Merged revisions 399064 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 14:22 +0000 [r399042-399051] David M. Lee * res/res_pjsip_log_forwarder.c (added), res/res_pjsip_logger.c, res/res_rtp_asterisk.c, /: res_pjsip: Forward PJSIP logging to Asterisk logging This patch uses PJSIP's pj_log_set_log_func() to forward PJSIP's log messages to Asterisk's logger. This is done in a new module: res_pjsip_log_forwarder.so. This patch sets defaultenabled on the existing res_pjsip_logger.so to no, since logging every SIP packet seems a bit odd to do by default, and is (hopefully) less necessary with regular PJSIP logging. It also removes res_rtp_asterisk's disabling of PJSIP logging. (closes issue ASTERISK-22360) Reported by: Joshua Colp Review: https://reviewboard.asterisk.org/r/2830/ ........ Merged revisions 399049 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_http_websocket.c: ARI: Fix WebSocket response when subprotocol isn't specified When I moved the ARI WebSocket from /ws to /ari/events, I added code to allow a WebSocket to connect without specifying the subprotocol if there's only one subprotocol handler registered for the WebSocket. Naively, I coded it to always respond with the subprotocol in use. Unfortunately, according to RFC 6455, if the server's response includes a subprotocol header field that "indicates the use of a subprotocol that was not present in the client's handshake [...], the client MUST _Fail the WebSocket Connection_.", emphasis theirs. This patch correctly omits the Sec-WebSocket-Protocol if one is not specified by the client. (closes issue ASTERISK-22441) Review: https://reviewboard.asterisk.org/r/2828/ ........ Merged revisions 399039 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 14:17 +0000 [r399036] Kinsey Moore * /, apps/app_meetme.c: Fix several crashes in MeetMeAdmin This change ensures that MeetMeAdmin commands requiring a user actually get a user and fixes another issue where an extra dereference could occur for a last-entered user being ejected if a user identifier was also provided. (closes issue ASTERISK-21907) Reported by: Alex Epshteyn Review: https://reviewboard.asterisk.org/r/2844/ ........ Merged revisions 399033 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 399034 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 399035 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-13 13:28 +0000 [r399032] Rusty Newton * /, res/res_pjsip_endpoint_identifier_ip.c: 'identify' configObject doesn't have a synopsis Add a straightforward synopsis and description to the identify config object in XML documentation. (issue ASTERISK-22311) (closes issue ASTERISK-22311) Reported By: Rusty Newton ........ Merged revisions 399031 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 23:42 +0000 [r399020-399022] Richard Mudgett * /, main/bridge.c: CLI bridge: Fix "bridge destroy " and "bridge kick " tab completion. These two commands must deal with the live bridges container for tab completion and not the stasis cache. ........ Merged revisions 399021 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/bridge.c, /: astobj2: Register the bridges container for debug inspection. ........ Merged revisions 399019 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 23:23 +0000 [r399018] Rusty Newton * /, res/res_pjsip_acl.c: Documentation fix and improvements to XML configuration help res_pjsip_acl * One bug fix. Made the synopsis for "type" to accurate. * changing the usage of "IP-domains" to "IP addresses" * clarifying the usage for the options, by adding a relevant description for each * modified other areas of the XML help for clarity, such as the module description and a few synopsis changes here and there. See the patch. (issue ASTERISK-22458) (closes issue ASTERISK-22458) Reported By: Rusty Newton Review: https://reviewboard.asterisk.org/r/2823/ ........ Merged revisions 399017 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 20:27 +0000 [r399006] Jonathan Rose * channels/sip/include/sip.h, /, channels/chan_sip.c: chan_sip: Revert r398835 due to failing tests involving originate (issue ASTERISK-22424) Reported by: Jonathan Rose ........ Merged revisions 398977 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398986 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398991 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 16:44 +0000 [r398939] Richard Mudgett * main/core_unreal.c, /: core_local: Fix memory corruption race condition. The masquerade super test is failing on v12 with high fence violations and crashing. The fence violations are showing that party id allocated memory strings are somehow getting corrupted in the bridge_reconfigured_connected_line_update() function. The invalid string values happen to be the freed memory fill pattern. After much puzzling, I deduced that the bridge_reconfigured_connected_line_update() is copying a string out of the source channel's caller party id struct just as another thread is updating it with a new value. The copying thread is using the old string pointer being freed by the updating thread. A search of the code found the unreal_colp_redirect_indicate() routine updating the caller party id's without holding the channel lock. A latent bug in v1.8 and v11 hatched in v12 because of the bridging and connected line changes. :) (issue ASTERISK-22221) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2839/ ........ Merged revisions 398938 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 15:23 +0000 [r398928] David M. Lee * res/res_pjsip.c, /: Fix symbol collision with pjsua. We shouldn't be exporting any symbols that start with pjsip_. ........ Merged revisions 398927 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-12 00:04 +0000 [r398883-398887] Rusty Newton * /, apps/app_queue.c: 'queue add member' help text correction You are adding dial strings to the queue, not channels. An aribitrary string could be used, but you are typically referencing a channel. Correcting the command help text. (issue ASTERISK-22263) (closes issue ASTERISK-22263) Reported By: Rusty Newton ........ Merged revisions 398884 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398885 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398886 from http://svn.asterisk.org/svn/asterisk/branches/12 * configs/chan_dahdi.conf.sample, /: Documentation fix - waitfordialtone is not boolean, it's time in milliseconds Changing text in chan_dahdi.conf sample to be accurate. (issue ASTERISK-22308) (closes issue ASTERISK-22308) Reported By: Malcolm Davenport ........ Merged revisions 398880 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398881 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398882 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-11 20:03 +0000 [r398838] Jonathan Rose * /, channels/chan_sip.c, channels/sip/include/sip.h: chan_sip: Reject calls without prior SDP on 200 OK If we receive a 200 OK without SDP, we will now check to see if the remote address has been established for that channel's RTP session and if the to tag for that channel has changed from the most recent to tag in a response less than 200. If either a change has been made since the last to-tag was received or the remote address is unset, then we will drop the call. (closes issue ASTERISK-22424) Reported by: Jonathan Rose Review: https://reviewboard.asterisk.org/r/2827/diff/#index_header ........ Merged revisions 398835 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398836 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398837 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-11 18:03 +0000 [r398822] Russell Bryant * configs/confbridge.conf.sample, /: Fix typo in confbridge.conf.sample The denoise filter requires func_speex, not codec_speex. Fix this in the description of the denoise=yes option in confbridge.conf. ........ Merged revisions 398820 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398821 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-11 14:23 +0000 [r398808] Kevin Harwell * res/res_pjsip_caller_id.c, channels/chan_pjsip.c, /: pjsip: reinvite for connected line updates occurs when it should not Connected line updates are now only sent out if an actual update needs to occur. This happens under the following conditions: 1. The endpoint we are sending to is trusted. 2. Either a P-Asserted-Identity or Remote Party-ID header needs to be added/sent. 3. The connected id's number and name are valid. Also added an SDP when an update is sent out. (closes issue AST-1212) Reported by: John Bigelow Review: https://reviewboard.asterisk.org/r/2831/ ........ Merged revisions 398806 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-10 18:05 +0000 [r398760] Richard Mudgett * main/event.c, res/res_musiconhold.c, main/indications.c, main/asterisk.c, main/xmldoc.c, main/cli.c, /, funcs/func_dialgroup.c, main/heap.c, res/res_pjsip/pjsip_configuration.c: Fix incorrect usages of ast_realloc(). There are several locations in the code base where this is done: buf = ast_realloc(buf, new_size); This is going to leak the original buf contents if the realloc fails. Review: https://reviewboard.asterisk.org/r/2832/ ........ Merged revisions 398757 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398758 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398759 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-10 17:50 +0000 [r398751-398755] David M. Lee * utils/check_expr.c, /: Fixed utils directory breakage from r398748, this time with extra hate. ........ Merged revisions 398752 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398753 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398754 from http://svn.asterisk.org/svn/asterisk/branches/12 * utils/check_expr.c, /, utils/ael_main.c, utils/conf2ael.c: Fixed utils directory breakage from r398648 ........ Merged revisions 398748 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398749 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398750 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-09 23:29 +0000 [r398732] Richard Mudgett * main/astmm.c, /: MALLOC_DEBUG: Change fence magic number to be completely different from the freed magic number. Race conditions between freeing a nul terminated string and ast_strdup()'ing it are more likely to be detected if the fence and freed magic numbers are completely different. ........ Merged revisions 398703 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398721 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398726 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-09 22:00 +0000 [r398695] Mark Michelson * res/res_pjsip_endpoint_identifier_ip.c, /: Add extra debugging to res_pjsip_endpoint_identifier_ip ........ Merged revisions 398694 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-09 20:13 +0000 [r398641-398652] David M. Lee * /, main/utils.c, include/asterisk/lock.h, main/lock.c: Fix DEBUG_THREADS when lock is acquired in __constructor__ This patch fixes some long-standing bugs in debug threads that were exacerbated with recent Optional API work in Asterisk 12. With debug threads enabled, on some systems, there's a lock ordering problem between our mutex and glibc's mutex protecting its module list (Ubuntu Lucid, glibc 2.11.1 in this instance). In one thread, the module list will be locked before acquiring our mutex. In another thread, our mutex will be locked before locking the module list (which happens in the depths of calling backtrace()). This patch fixes this issue by moving backtrace() calls outside of critical sections that have the mutex acquired. The bigger change was to reentrancy tracking for ast_cond_{timed,}wait, which wrongly assumed that waiting on the mutex was equivalent to a single unlock (it actually suspends all recursive locks on the mutex). (closes issue ASTERISK-22455) Review: https://reviewboard.asterisk.org/r/2824/ ........ Merged revisions 398648 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398649 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398651 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/ari/resource_channels.h, /, rest-api/api-docs/channels.json: Multiple revisions 398638-398639 ........ r398638 | dlee | 2013-09-09 14:01:54 -0500 (Mon, 09 Sep 2013) | 1 line Added note about expected behavior of originate ........ r398639 | dlee | 2013-09-09 14:02:27 -0500 (Mon, 09 Sep 2013) | 1 line Added note about expected behavior of originate (the rest of the commit) ........ Merged revisions 398638-398639 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-08 23:30 +0000 [r398629] Matthew Jordan * tests/test_cdr.c, /: Update CDR Unit tests to reflect container changes in r398579 When a channel joins a multi-party bridge, the ordering of the CDRs that is created is determined by the ordering of the channels who happen to be in that bridge. When r398579 changed the number of buckets in the container to something sensible, it changed the ordering that the CDRs was created in, causing one of the multiparty tests to fail. This fixes the test with the now expected ordering. ........ Merged revisions 398628 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-07 01:03 +0000 [r398603-398620] Kinsey Moore * /, res/res_xmpp.c: Prevent XMPP timeout on blank responses Sometimes the Google Voice servers have a bad habit of sending out 1 byte replies to the xmpp resource. When a blank 1 byte reply is received from the socket the buffer attempts to wait (endlessly) for the rest of the reply from google which effectively blocks the socket and google voice calls will no longer come into the server. This patch allows the xmpp module to correctly detect empty packets and send out ping replies to google. It also sets a socket timeout on the default socket which prevents the xmpp socket from closing and preventing future google voice calls from coming into the server. Furthermore instead of sending an empty reply back to google we send a proper xmpp ping reply back. This also adds several more socket messages. (closes issue ASTERISK-22347) Reported by: Andrew Nagy Review: https://reviewboard.asterisk.org/r/2771 Patches: xmpp_fix_1.diff uploaded by Andrew Nagy (License #6524) ........ Merged revisions 398618 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398619 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_xmpp.c, res/res_jabber.c: Multiple revisions 398558,398577 ........ r398558 | kmoore | 2013-09-06 14:28:16 -0500 (Fri, 06 Sep 2013) | 17 lines Fix Jabber/XMPP distributed MWI The mailbox and context are swapped on the receiving end for all users of Jabber and XMPP distributed MWI in Asterisk 1.8 and all more recent versions. This swaps those values to be correct when publishing to the internal event system from Jabber/XMPP distributed MWI state. (closes issue ASTERISK-22435) Reported by: abelbeck Tested by: Michael Keuter Patches: asterisk-1.8-res_jabber-aji_handle_pubsub_event.patch uploaded by abelbeck asterisk-11-res_xmpp-xmpp_pubsub_handle_event.patch uploaded by abelbeck ........ Merged revisions 398523 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ r398577 | kmoore | 2013-09-06 16:00:56 -0500 (Fri, 06 Sep 2013) | 10 lines Commit the remainder of r398523 This is a missing part of the commit in revision 398523 that corrects the name of a variable. (issue ASTERISK-22435) ........ Merged revisions 398576 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398558,398577 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398580 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-06 21:17 +0000 [r398557-398583] Richard Mudgett * main/cdr.c, /: cdr: Change the number of container buckets to be similar to the channels container. * Fix the temporary cdr candidate containers to use a prime number of buckets. ........ Merged revisions 398579 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/core_local.c, /: core_local: Fix LocalOptimizationBegin AMI event missing Source channel snapshot. * Fix the LocalOptimizationBegin AMI event by eliminating an artificial buffer size limitation that is too small anyway. ........ Merged revisions 398572 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: cdr: Fix some ref leaks. * Added missing unregister of the cdr container in cdr_engine_shutdown(). * Fixed ref leak in off nominal path of cdr_object_alloc(). * Removed some unnecessary NULL checks in cdr_object_dtor(). ........ Merged revisions 398562 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/astobj2.h, main/cel.c, main/features_config.c, apps/app_agent_pool.c, main/cdr.c, main/udptl.c, /, main/parking.c, main/stasis_config.c: astobj2: Add warn unused attribute to some functions. * Fixed resulting warnings with improper use of ao2_global_obj_replace(). * Made a couple uses of ao2_global_obj_replace_unref(x, NULL) into the equivalent and more appropriate ao2_global_obj_release() call. ........ Merged revisions 398533 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-06 18:53 +0000 [r398512-398522] Kinsey Moore * main/http.c, /, res/stasis/app.c: Fix build warnings When AST_DEVMODE is not defined, ast_asserts are not compiled into the binary. In some cases, this means variables are not referenced or are set but unused which causes warnings to show up. (closes issue ASTERISK-22446) Reported by: Jason Parker (qwell) ........ Merged revisions 398521 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_h323.c: Fix chan_h323 compilation This fixes the things in chan_h323 that were missed or ignored in the great channel opaquification and gets chan_h323 back into a compiling state. (closes issue ASTERISK-22365) Reported by: Dmitry Melekhov Patches: chan_h323.patch uploaded by Dmitry Melekhov ........ Merged revisions 398510 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398511 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-05 21:48 +0000 [r398384-398499] Richard Mudgett * /, main/astobj2.c: astobj2: Only define ao2_bt() once. * Make ao2_bt() not use single char variable names. * Fix ao2_bt() formatting. ........ Merged revisions 398498 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Reduce indentation in __attempt_transmit(). * Reduce indentation in __attempt_transmit(). * Don't update the static last error time variable every time in __schedule_action() and socket_read(). ........ Merged revisions 398456 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398457 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398458 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Fix stray reference to worker thread idle_list. * Fix stray reference to idle_list in cleanup_thread_list(). This may be the reason for the note in iax2_process_thread() about threads not being removed from the task lists. * Move cleanup_thread_list(&idle_list) to after the other lists are cleaned up. ........ Merged revisions 398416 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398417 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398418 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/chan_iax2.c, /: chan_iax2: Fix bridgecallno deadlock avoidance. * Fix bridgecallno deadlock avoidance. When doing deadlock avoidance, you need to retest the status of values for each loop to see if you still need the lock for bridgecallno. * As a safety check, after acquiring the bridgecallno lock you should check if iaxs[bridgecallno] is NULL just like the current callno checks. * Move setting thread->iostate to IAX_IOSTATE_IDLE to after processing any deferred frames to ensure that the iostate is IDLE when it is placed back into the idle list. defer_full_frame() tries to ensure iax2_process_thread() wakes up to process the frame. ........ Merged revisions 398379 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398380 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398381 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-05 14:10 +0000 [r398369] Mark Michelson * /, res/res_pjsip_outbound_registration.c: Clarify server_uri and client_uri registration settings. Used some of Rusty's suggested language plus also included more SIPesque descriptions of where the URIs are actually used in an outgoing REGISTER. (closes issue ASTERISK-22390) reported by Rusty Newton ........ Merged revisions 398368 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-04 23:07 +0000 [r398304] Richard Mudgett * channels/iax2/parser.c, /: chan_iax2: Add missing control frame names to debug frame decode output. ........ Merged revisions 398301 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398302 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398303 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-04 22:49 +0000 [r398300] Mark Michelson * /, res/res_pjsip_outbound_authenticator_digest.c: Give more detail regarding failures to create request with auth credentials. (issue ASTERISK-22386) ........ Merged revisions 398299 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-04 21:37 +0000 [r398284-398287] Jonathan Rose * /, tests/test_voicemail_api.c: unit tests: test_voicemail_api leaks stringfields from snapshots (closes issue ASTERISK-22414) Reported by: Corey Farrell Patches: test_voicemail_api-leaks-11.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 398285 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398286 from http://svn.asterisk.org/svn/asterisk/branches/12 * apps/app_voicemail.c, /: app_voicemail: Fix leaking config objects when msg_id doesn't match (issues ASTERISK-22414) Reported by: Corey Farrell Patch: test_voicemail_api-leaks-11.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 398281 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398283 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-04 16:03 +0000 [r398238] Richard Mudgett * channels/chan_misdn.c, /: chan_misdn: Fix misdn debug output printed with arbitrary verbose levels. Fix the misdn debug output to remote consoles. chan_misdn uses ast_console_puts() which doesn't know about verbose levels. Better to use ast_verbose() instead. Without this patch the misdn debug messages are appended to the verbose level which ever was set by the message sent to the console before, i.e. any undefined level. (closes issue AST-1218) Reported by: Guenther Kelleter Patches: misdnlog.patch (license #6372) patch uploaded by Guenther Kelleter ........ Merged revisions 398235 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398236 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398237 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-04 14:32 +0000 [r398227] Kevin Harwell * /, res/res_pjsip_outbound_registration.c: Debug messages for pjsip outbound registration Added debug messages indicating that an outbound registration attempt was made and it was successful in pjsip. (closes issue ASTERISK-22388) Reported by: Rusty Newton ........ Merged revisions 398226 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-03 20:28 +0000 [r398217] Alexandr Anikin * /, addons/ooh323c/src/ooh245.c: Fix remote tcs sequence handling on empty tcs received ........ Merged revisions 398214 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398215 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-03 18:09 +0000 [r398207] Kinsey Moore * res/res_pjsip_dtmf_info.c, /: Prevent a crash in res_pjsip_dtmf_info.c This change makes sure that a content type header exists before checking the contents of the header against known SIP INFO DTMF content types. ........ Merged revisions 398206 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-03 17:19 +0000 [r398205] David M. Lee * Makefile, /: Fixed 'make clean' for wiki docs ........ Merged revisions 398198 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-09-03 14:29 +0000 [r398197] Walter Doekes * /, cel/cel_custom.c: Be a little more verbose when loading cel_custom.conf. Review: https://reviewboard.asterisk.org/r/2805/ ........ Merged revisions 398167 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398168 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398196 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 20:58 +0000 [r398150] David M. Lee * main/asterisk.c, include/asterisk/optional_api.h, /, main/optional_api.c: Fix graceful shutdown crash. The cleanup code for optional_api needs to happen after all of the optional API users and providers have unused/unprovided. Unfortunately, regsitering the atexit() handler at the beginning of main() isn't soon enough, since module destructors run after that. ........ Merged revisions 398149 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 20:37 +0000 [r398148] Rusty Newton * /, configs/pjsip.conf.sample: New pjsip.conf.sample (issue ASTERISK-22145) (closes issue ASTERISK-22145) Reported By: Matt Jordan Review: https://reviewboard.asterisk.org/r/2811/ ........ Merged revisions 398147 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 19:55 +0000 [r398124-398140] Kevin Harwell * /, res/res_pjsip_outbound_registration.c, include/asterisk/sorcery.h, res/res_pjsip.c, res/res_pjsip/config_transport.c, main/sorcery.c: Add a reloadable option for sorcery type objects Some configuration objects currently won't place nice if reloaded. Specifically, in this case the pjsip transport objects. Now when registering an object in sorcery one may specify that the object is allowed to be reloaded or not. If the object is set to not reload then upon reloading of the configuration the objects of that type will not be reloaded. The initially loaded objects of that type however will remain. While the transport objects will not longer be reloaded it is still possible for a user to configure an endpoint to an invalid transport. A couple of log messages were added to help diagnose this problem if it occurs. (closes issue ASTERISK-22382) Reported by: Rusty Newton (closes issue ASTERISK-22384) Reported by: Rusty Newton Review: https://reviewboard.asterisk.org/r/2807/ ........ Merged revisions 398139 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/config.c, res/res_security_log.c, /, channels/chan_sip.c, main/translate.c, main/named_acl.c, main/indications.c: Fix various memory leaks main/config.c - cleanup cache fie includes res/res_security_log.c - unregister logger level channesl/chan_sip.c - cleanup io context and notify_types main/translator.c - cleanup at shutdown main/named_acl.c - cleanup cli commands main/indications.c - ast_get_indication_tone() unref default_tone_zone if used (closes issues ASTERISK-22378) Reported by: Corey Farrell Patches: config_shutdown.patch uploaded by coreyfarrell (license 5909) res_security_log.patch uploaded by coreyfarrell (license 5909) chan_sip-11.patch uploaded by coreyfarrell (license 5909) indications_refleak.patch uploaded by coreyfarrell (license 5909) named_acl-cli_unreg-trunk.patch uploaded by coreyfarrell (license 5909) translate_shutdown.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 398102 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398103 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398116 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 18:38 +0000 [r398101] Matthew Jordan * /, UPGRADE-12.txt (added), UPGRADE.txt: Update UPGRADE.txt file for Asterisk 12 This simply pulls in the changes that were breaking from the CHANGES file and updates a few other areas accordingly. It also removes the 10 => 11 notes, which are traditionally removed from each major version and stored in the appropriate UPGRADE-X.txt file. ........ Merged revisions 398100 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 18:30 +0000 [r398064-398099] Jonathan Rose * main/features_config.c, /, main/config_options.c: features_config: Ignore parkinglots in features.conf instead of failing to load Parkinglots are defined in res_features.conf now, but this patch fixes features_config so that features don't fail to load when parkinglots are present in features.conf Review: https://reviewboard.asterisk.org/r/2801/ ........ Merged revisions 398068 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/features_config.c, main/udptl.c, /: features_config: Don't require features.conf to be present for Asterisk to load (closes issue ASTERISK-22426) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2806/ ........ Merged revisions 398020 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 17:59 +0000 [r398063] Kevin Harwell * main/manager.c, /, res/res_agi.c: Memory leak fix ast_xmldoc_printable returns an allocated block that must be freed by the caller. Fixed manager.c and res_agi.c to stop leaking these results. (closes issue ASTERISK-22395) Reported by: Corey Farrell Patches: manager-leaks-12.patch uploaded by coreyfarrell (license 5909) res_agi-xmldoc-leaks.patch uploaded by coreyfarrell (license 5909) ........ Merged revisions 398060 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398061 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398062 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 17:11 +0000 [r398024-398026] Richard Mudgett * tests/test_substitution.c, /: test_substitution: Fix failing test. Revert the -r392190 change. The original test was correct. The CDR code was actually returning an unititialized buffer. ........ Merged revisions 398025 from http://svn.asterisk.org/svn/asterisk/branches/12 * tests/test_substitution.c, /: test_substituition: Fix failed test reporting to actually report failure. You cannot put the "Testing pass/fail" on a single line before actually performing the test. Now any additional failure information is logged before the test pass/fail announcement. * Added an additional CDR(answer,u) test. ........ Merged revisions 398018 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 398019 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398023 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 16:27 +0000 [r398003-398017] Kevin Harwell * /, apps/app_mixmonitor.c: Fix memory leaks (closes issue ASTERISK-22368) Reported by: Corey Farrell Patches: issueA22368_mixmonitor_free_filename.patch uploaded by wdoekes (license 5674) ........ Merged revisions 398004 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 398011 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398016 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/asterisk.c, /: Check return value on fwrite ........ Merged revisions 398000 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 398002 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 13:40 +0000 [r397987-397990] David M. Lee * rest-api-templates/swagger_model.py, res/ari/ari_websockets.c, channels/sip/include/sip.h, main/asterisk.c, res/res_ari.c, tests/test_optional_api.c (added), /, channels/chan_sip.c, include/asterisk/autoconfig.h.in, configure.ac, rest-api-templates/res_ari_resource.c.mustache, res/ari/internal.h, res/res_http_websocket.c, CHANGES, include/asterisk/compiler.h, include/asterisk/ari.h, main/loader.c, include/asterisk/optional_api.h, build_tools/cflags.xml, configure, res/res_ari_events.c, include/asterisk/http_websocket.h, main/optional_api.c (added): optional_api: Fix linking problems between modules that export global symbols With the new work in Asterisk 12, there are some uses of the optional_api that are prone to failure. The details are rather involved, and captured on [the wiki][1]. This patch addresses the issue by removing almost all of the magic from the optional API implementation. Instead of relying on weak symbol resolution, a new optional_api.c module was added to Asterisk core. For modules providing an optional API, the pointer to the implementation function is registered with the core. For modules that use an optional API, a pointer to a stub function, along with a optional_ref function pointer are registered with the core. The optional_ref function pointers is set to the implementation function when it's provided, or the stub function when it's now. Since the implementation no longer relies on magic, it is now supported on all platforms. In the spirit of choice, an OPTIONAL_API flag was added, so we can disable the optional_api if needed (maybe it's buggy on some bizarre platform I haven't tested on) The AST_OPTIONAL_API*() macros themselves remained unchanged, so existing code could remain unchanged. But to help with debugging the optional_api, the patch limits the #include of optional API's to just the modules using the API. This also reduces resource waste maintaining optional_ref pointers that aren't used. Other changes made as a part of this patch: * The stubs for http_websocket that wrap system calls set errno to ENOSYS. * res_http_websocket now properly increments module use count. * In loader.c, the while() wrappers around dlclose() were removed. The while(!dlclose()) is actually an anti-pattern, which can lead to infinite loops if the module you're attempting to unload exports a symbol that was directly linked to. * The special handling of nonoptreq on systems without weak symbol support was removed, since we no longer rely on weak symbols for optional_api. [1]: https://wiki.asterisk.org/wiki/x/wACUAQ (closes issue ASTERISK-22296) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2797/ ........ Merged revisions 397989 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_stasis_playback.c, /, include/asterisk/stasis_app_recording.h, res/ari/resource_recordings.h, res/res_stasis_recording.c, res/Makefile, res/ari/ari_model_validators.c, rest-api/api-docs/recordings.json, res/stasis_recording (added), res/ari/resource_recordings.c, res/ari/ari_model_validators.h, res/res_ari_recordings.c: ARI: Implement /recordings/stored API's his patch implements the ARI API's for stored recordings. While the original task only specified deleting a recording, it was simple enough to implement the GET for all recordings, and for an individual recording. The recording playback operation was modified to use the same code for accessing the recording as the REST API, so that they will behave consistently. There were several problems with the api-docs that were also fixed, bringing the ARI spec in line with the implementation. There were some 'wishful thinking' fields on the stored recording model (duration and timestamp) that were removed, because I ended up not implementing a metadata file to go along with the recording to store such information. The GET /recordings/live operation was removed, since it's not really that useful to get a list of all recordings that are currently going on in the system. (At least, if we did that, we'd probably want to also list all of the current playbacks. Which seems weird.) (closes issue ASTERISK-21582) Review: https://reviewboard.asterisk.org/r/2693/ ........ Merged revisions 397985 from http://svn.asterisk.org/svn/asterisk/branches/12 * /: Multiple revisions 397975-397976 ........ r397975 | rmudgett | 2013-08-29 20:00:00 -0500 (Thu, 29 Aug 2013) | 1 line pbx.c: Make ast_str_substitute_variables_full() not mask variables. ........ r397976 | rmudgett | 2013-08-29 20:00:41 -0500 (Thu, 29 Aug 2013) | 1 line Revert last commit. ........ Merged revisions 397975-397976 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 01:20 +0000 [r397978] Richard Mudgett * main/pbx.c, /: pbx.c: Make pbx_substitute_variables_helper_full() not mask variables. ........ Merged revisions 397977 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-30 00:11 +0000 [r397962-397969] Mark Michelson * res/res_pjsip_pidf.c, /: Sanitize XML output for PIDF bodies. PJSIP's PIDF API does not replace angle brackets with their appropriate counterparts for XML. So we have to do it ourself. In this particular case, the problem had to do with attempting to place an unsanitized SIP URI into an XML node. Now we don't get a 488 from recipients of our PIDF NOTIFYs. ........ Merged revisions 397968 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_pidf.c, /: Fix method for creating activities string in PIDF bodies. The previous method did not allocate enough space to create the entire string, but adjusted the string's slen value to be larger than the actual allocation. This resulted in garbled text in NOTIFY requests from Asterisk. This method allocates the proper amount of space first and then writes the content into the buffer. ........ Merged revisions 397960 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 22:49 +0000 [r397959] Kevin Harwell * apps/app_dumpchan.c, main/logger.c, apps/app_verbose.c, main/asterisk.c, channels/chan_misdn.c, /: Verbose logging discrepancies Refactored cases where a combination of ast_verbose/options_verbose were present. Also in general tried to eliminate, in as many places as possible, where the options_verbose global variable was being used. Refactored the way local and remote consoles handle verbose message logging in an attempt to solve the various discrepancies that sometimes would show between the two. (closes issue AST-1193) Reported by: Guenther Kelleter Review: https://reviewboard.asterisk.org/r/2798/ ........ Merged revisions 397948 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 397958 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 22:26 +0000 [r397956-397957] Mark Michelson * /, res/res_pjsip_pubsub.c: Fix when the subscription_terminated callback is called for subscription handlers. The previous placement would result in the resubscribe() callback called instead of the subscription_terminated() callback being called when a subscription was ended via a SUBSCRIBE request. This would result in confusing PJSIP and having it throw an assertion. ........ Merged revisions 397955 from http://svn.asterisk.org/svn/asterisk/branches/12 * res/res_pjsip_session.c, /: Fix a race condition where a canceled call was answered. RFC 5407 section 3.1.2 details a scenario where a UAC sends a CANCEL at the same time that a UAS sends a 200 OK for the INVITE that the UAC is canceling. When this occurs, it is the role of the UAC to immediately send a BYE to terminate the call. This scenario was reproducible by have a Digium phone with two lines place a call to a second phone that forwarded the call to the second line on the original phone. The Digium phone, upon realizing that it was connecting to itself, would attempt to cancel the call. The timing of this happened to trigger the aforementioned race condition about 80% of the time. Asterisk was not doing its job of sending a BYE when receiving a 200 OK on a cancelled INVITE. The result was that the ast_channel structure was destroyed but the underlying SIP session, as well as the PJSIP inv_session and dialog, were still alive. Attempting to perform an action such as a transfer, once in this state, would result in Asterisk crashing. The circumstances are now detected properly and the session is ended as recommended in RFC 5407. (closes issue AST-1209) reported by John Bigelow ........ Merged revisions 397945 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 21:37 +0000 [r397947] Kevin Harwell * main/file.c, main/app.c, main/config_options.c, main/cel.c, main/asterisk.c, main/cdr.c, main/manager.c, /, main/stasis_config.c: Memory leaks fix (closes ASTERISK-22376) Reported by: John Hardin Patches: memleak.patch uploaded by jhardin (license 6512) memleak2.patch uploaded by jhardin (license 6512) ........ Merged revisions 397946 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 20:22 +0000 [r397939] Matthew Jordan * configs/safe_asterisk.conf.sample (removed), /, CHANGES, contrib/scripts/safe_asterisk, Makefile: Revert r394939 due to (numerous) objections The patch from ASTERISK-21965 was committed perhaps a bit too hastily. Walter and Tzafrir have pointed out numerous issues with the approach and have propsed an alternative in r/2757. Since it's not a time critical issue and is not worth holding up the release of 12 for it, I've gone ahead and reverted r394939 from 12/trunk and re-opened ASTERISK-21965. ........ Merged revisions 397938 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 16:21 +0000 [r397932] David M. Lee * rest-api-templates/make_ari_stubs.py, /, rest-api-templates/api.wiki.mustache, rest-api-templates/asterisk_processor.py: Account for {} in Swagger notes ........ Merged revisions 397927 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 16:05 +0000 [r397925] Matthew Jordan * Makefile, /: Recursively search for '.c' files when making documentation with 'make full' Without this, documentation defined in sub-folders is ignored. Since having properly generated documentation is especially important in Asterisk 12 - not having it can cause a module to not load - 'make full' needs to look in all .c files. ........ Merged revisions 397924 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 15:43 +0000 [r397923] Mark Michelson * /, apps/app_queue.c, main/cel.c, main/stasis_bridges.c: Multiple revisions 397921-397922 ........ r397921 | mmichelson | 2013-08-29 10:42:10 -0500 (Thu, 29 Aug 2013) | 6 lines Resolve assumptions that bridge snapshots would be non-NULL for transfer stasis events. Attempting to transfer an unbridged call would result in crashes in either CEL code or in the conversion to AMI messages. ........ r397922 | mmichelson | 2013-08-29 10:42:29 -0500 (Thu, 29 Aug 2013) | 3 lines Remove extra debug message. ........ Merged revisions 397921-397922 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-29 12:30 +0000 [r397912] Matthew Jordan * contrib/ast-db-manage/config, contrib/ast-db-manage/config/script.py.mako, contrib/ast-db-manage/voicemail.ini.sample, contrib/ast-db-manage/voicemail/env.py, contrib/ast-db-manage/voicemail, contrib/ast-db-manage/voicemail/script.py.mako, contrib/ast-db-manage/README.md, contrib/ast-db-manage/config/versions, contrib/ast-db-manage/voicemail/versions/a2e9769475e_create_tables.py, contrib/ast-db-manage (added), contrib/ast-db-manage/voicemail/versions, /, contrib/ast-db-manage/config.ini.sample, contrib/ast-db-manage/config/env.py, contrib/ast-db-manage/config/versions/4da0c5f79a9c_create_tables.py: Actually *add* the database schema management utilities In r397874, the scripts were removed... but not replaced. Thanks to Michael Young for noticing this! ........ Merged revisions 397911 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-28 23:15 +0000 [r397886-397903] Richard Mudgett * main/cdr.c, /, funcs/func_cdr.c, main/stdtime/localtime.c: Fix some uninitialized buffers for CDR handling valgrind found. * Made ast_strftime_locale() ensure that the output buffer is initialized. The std library strftime() returns 0 and does not touch the buffer if it has an error. However, the function can also return 0 without an error. (closes issue ASTERISK-22412) Reported by: rmudgett ........ Merged revisions 397902 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: Fixed problems with ast_cdr_serialize_variables(). * Fixed return value of ast_cdr_serialize_variables() on error. It needs to return 0 indicating no CDR variables found. * Made ast_cdr_serialize_variables() check the return value of cdr_object_format_property() and assert if nonzero. A member of the cdr_readonly_vars[] was not handled. * Removed unused elements from cdr_readonly_vars[]: total_duration, total_billsec, first_start, and first_answer. ........ Merged revisions 397900 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: Made the on/off in CLI "cdr set debug [on|off]" case insensitive. ........ Merged revisions 397898 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/cdr.c, /: Make CDR variable name chandling consistently case insensitive. ........ Merged revisions 397896 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, main/cdr.c: Make CDR code deal with channel names case insensitively. ........ Merged revisions 397894 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, funcs/func_cdr.c, main/cdr.c: Some CDR code optimization. ........ Merged revisions 397892 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, funcs/func_cdr.c: Whitespace and curly braces. ........ Merged revisions 397885 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-28 21:09 +0000 [r397877] Mark Michelson * /, res/res_pjsip_refer.c: Improve detection of answer on SIP blind transfer. A problem encountered during testing was that res_pjsip_refer would not ever send a NOTIFY with a 200 OK sipfrag. This is because the framehook that was supposed to send the NOTIFY would never be told that an answer had occurred. This happened for two reasons: 1) The transferee channel on which the framehook was on was already up. 2) Answers are rarely if ever written to channels. Rather, the ast_answer() or ast_raw_answer() function is used to answer channels. Thanks to a suggestion by Matt Jordan, the best way to detect that the call had been answered was to find out when the transferee channel joined a bridge. With stasis this is an easy task. So now, in addition to the framehook logic, there is a stasis subscription used to determine when the transferee has entered a bridge. Once it has entered, an appropriate NOTIFY is sent. ........ Merged revisions 397876 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-28 20:55 +0000 [r397872-397875] Matthew Jordan * contrib/realtime/mysql/queue_log.sql, contrib/realtime/mysql/voicemail.sql, contrib/realtime/mysql/sippeers.sql, /, contrib/realtime/mysql/iaxfriends.sql, contrib/realtime/mysql/meetme.sql, contrib/realtime/mysql/voicemail_messages.sql, contrib/realtime/postgresql/realtime.sql, contrib/realtime/mysql/voicemail_data.sql, CHANGES, contrib/realtime/mysql/musiconhold.sql: Add database schema management using Alembic This patch replaces contrib/realtime/ with a new setup for managing the database schema required for database integration with Asterisk. In addition to initializing a database with the proper schema, alembic can do a database migration to assist with upgrading Asterisk in the future. Hopefully this helps make setting up and operating Asterisk with a database easier. With this the schema only needs to be maintained in one place instead of once per database. The schemas I have added here have a bit of improvement over the examples that were there before (some added consistency and added some missing indexes). Managing the schema in one place here also applies to all databases supported by SQLAlchemy. See contrib/ast-db-manage/README.md for more details. Review: https://reviewboard.asterisk.org/r/2731 patch by Russell Bryant (license 6300) ........ Merged revisions 397874 from http://svn.asterisk.org/svn/asterisk/branches/12 * CHANGES, /: Update CHANGES file for Asterisk 12 This updates the Asterisk 12 CHANGES file with the things that were missed during the development cycle. Review: https://reviewboard.asterisk.org/r/2795/ ........ Merged revisions 397870 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-28 16:13 +0000 [r397857-397860] Richard Mudgett * /, main/pbx.c: pbx.c: Make ast_str_substitute_variables_full() not mask variables. ........ Merged revisions 397859 from http://svn.asterisk.org/svn/asterisk/branches/12 * main/chanvars.c: ast_free() is null tollerant. * include/asterisk/threadstorage.h, /: Match use of ast_free() with ast_calloc() and add some curly braces. ........ Merged revisions 397856 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-28 15:43 +0000 [r397855] Mark Michelson * res/res_pjsip/pjsip_distributor.c, /: Fix dialog matching in the SIP distributor. Dialog matching is performed in the distributor for the sole purpose of retrieving an associated serializer so the request may be serialized. This patch fixes two problems. First, incoming CANCEL requests that had no to-tag (which really should be *all* CANCEL requests) would not match with a dialog. An earlier bug fix to deal with early CANCEL requests would result in the CANCEL being replied to with a 481. The fix for this is to find the matching INVITE transaction and get the dialog from that transaction. Second, no SIP responses were matching dialogs. This is because we were inverting the tags that we were passing into PJSIP's dialog finding function. This logic has been corrected by setting local and remote tag variables based on whether the incoming message is a request or response. ........ Merged revisions 397854 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-27 19:19 +0000 [r397820] David M. Lee * rest-api-templates/param_parsing.mustache, res/res_ari_bridges.c, /, res/stasis/app.c, res/res_ari_events.c, res/res_ari_asterisk.c, rest-api-templates/res_ari_resource.c.mustache, res/stasis/app.h, res/res_stasis.c, main/stasis_bridges.c: ARI: WebSocket event cleanup Stasis events (which get distributed over the ARI WebSocket) are created by subscribing to the channel_all_cached and bridge_all_cached topics, filtering out events for channels/bridges currently subscribed to. There are two issues with that. First was a race condition, where messages in-flight to the master subscribe-to-all-things topic would get sent out, even though the events happened before the channel was put into Stasis. Secondly, as the number of channels and bridges grow in the system, the work spent filtering messages becomes excessive. Since r395954, individual channels and bridges have caching topics, and can be subscribed to individually. This patch takes advantage, so that channels and bridges are subscribed to on demand, instead of filtering the global topics. The one case where filtering is still required is handling BridgeMerge messages, which are published directly to the bridge_all topic. Other than the change to how subscriptions work, this patch mostly just moves code around. Most of the work generating JSON objects from messages was moved to .to_json handlers on the message types. The callback functions handling app subscriptions were moved from res_stasis (b/c they were global to the model) to stasis/app.c (b/c they are local to the app now). (closes issue ASTERISK-21969) Reported by: Matt Jordan Review: https://reviewboard.asterisk.org/r/2754/ ........ Merged revisions 397816 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-27 18:52 +0000 [r397811] Richard Mudgett * /, main/astmm.c: Made MALLOC_DEBUG less CPU intensive by default. Storing a backtrace for each allocation in anticipation of a memory management problem is very CPU intensive. * Added the CLI "memory backtrace {on|off}" command to request that the backtrace be gathered only on request. The backtrace is off by default. (issue ASTERISK-22221) Reported by: Matt Jordan ........ Merged revisions 397809 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-27 18:10 +0000 [r397753-397760] Matthew Jordan * /, channels/chan_sip.c: AST-2013-005: Fix crash caused by invalid SDP If the SIP channel driver processes an invalid SDP that defines media descriptions before connection information, it may attempt to reference the socket address information even though that information has not yet been set. This will cause a crash. This patch adds checks when handling the various media descriptions that ensures the media descriptions are handled only if we have connection information suitable for that media. Thanks to Walter Doekes, OSSO B.V., for reporting, testing, and providing the solution to this problem. (closes issue ASTERISK-22007) Reported by: wdoekes Tested by: wdoekes patches: issueA22007_sdp_without_c_death.patch uploaded by wdoekes (License 5674) ........ Merged revisions 397756 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 397757 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 397758 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 397759 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, channels/chan_sip.c: AST-2013-004: Fix crash when handling ACK on dialog that has no channel A remote exploitable crash vulnerability exists in the SIP channel driver if an ACK with SDP is received after the channel has been terminated. The handling code incorrectly assumed that the channel would always be present. This patch adds a check such that the SDP will only be parsed and applied if Asterisk has a channel present that is associated with the dialog. Note that the patch being applied was modified only slightly from the patch provided by Walter Doekes of OSSO B.V. (closes issue ASTERISK-21064) Reported by: Colin Cuthbertson Tested by: wdoekes, Colin Cutherbertson patches: issueA21064_fix.patch uploaded by wdoekes (License 5674) ........ Merged revisions 397710 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 397711 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 397712 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 397713 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-27 16:51 +0000 [r397746] Richard Mudgett * channels/chan_iax2.c, channels/sig_pri.c, channels/sig_ss7.c, channels/chan_dahdi.c, channels/sig_analog.c, /, channels/chan_sip.c, channels/chan_motif.c: Fix uninitialized value in struct ast_control_pvt_cause_code usage. ........ Merged revisions 397744 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 397745 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-26 23:48 +0000 [r397691] Matthew Jordan * /, main/bridge_channel.c: Better handle clearing the OUTGOING flag when a channel leaves a bridge When a channel with the OUTGOING flag leaves a bridge, and it will survive being pulled from the bridge (either because it will execute dialplan, go into another bridge, or live in a friendly autoloop), we have to clear the OUTGOING flag. This is the signal to the CDR engine that this channel is no longer a second class citizen, i.e., it is not "dialed". The soft hangup flags are only half the picture. If a channel is being moved from one bridge to another, the soft hangup flags aren't set; however, the state of the bridge_channel will not be hung up. Since the channel does not have one of the two hang up states, that implies that the channel is still technically alive. This patch modifies the check so that it checks both the soft hangup flags as well as the bridge_channel state. If either suggests that the channel is going to persist, we clear the OUTGOING flag. ........ Merged revisions 397690 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-26 21:32 +0000 [r397674] David M. Lee * /, main/bucket.c: Fixed bucket.c for systems where tv_usec is not an unsigned long. ........ Merged revisions 397673 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-26 16:25 +0000 [r397644-397651] Richard Mudgett * /, include/asterisk/bridge_channel.h, main/bridge_channel.c: bridging: Fix a livelock with local channel optimization. Use a better means of waking up the bridge channel thread. ........ Merged revisions 397650 from http://svn.asterisk.org/svn/asterisk/branches/12 * channels/Makefile, /: chan_dahdi: Add some missing build cleanup. ........ Merged revisions 397643 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-25 18:12 +0000 [r397622-397631] Matthew Jordan * tests/test_bucket.c, /: Fix bucket unit tests After the review for buckets was completed (r2715), the handling of names in the bucket core was deferred to the wizards. As such, the bucket unit tests cannot expect that passing a URI with a scheme specified but no actual resource name will automatically fail. The tests have been updated to not make this check. ........ Merged revisions 397630 from http://svn.asterisk.org/svn/asterisk/branches/12 * include/asterisk/config_options.h, /, main/config_options.c, tests/test_config.c: Fix the config_options_test The config options test requires the entire configuration item to be transparent from the documentation system. So we let it do that too. As an aside, please do not use this power for evil. Documentation is your friend, and you really should document your configurations. Hiding your module's configuration information from the system attempting to enforce some sanity in the universe is something only a Bond villain would contemplate. ........ Merged revisions 397628 from http://svn.asterisk.org/svn/asterisk/branches/12 * /, res/res_pjsip/pjsip_configuration.c: Add rtpengine configuration parameter The rtpengine configuration parameter was documented in the XML documentation, but it was not actually registered with the sorcery object. This adds the parameter with a default of "asterisk", such that res_rtp_asterisk is chosen as the default RTP implementation. (closes issue ASTERISK-22380) Reported by: Rusty Newton Tested by: Rusty Newton ........ Merged revisions 397621 from http://svn.asterisk.org/svn/asterisk/branches/12 2013-08-23 22:40 +0000 [r397615] Matthew Jordan * /: Set new merge properties on 12 2013-08-23 22:20 +0000 [r397613] Joshua Colp * main/bucket.c: Fix building of trunk. Note: This is why I commit on the weekend.