]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Update for certified/13.21-cert4 certified/13.21-cert4
authorAsterisk Development Team <asteriskteam@digium.com>
Thu, 11 Jul 2019 19:26:35 +0000 (14:26 -0500)
committerAsterisk Development Team <asteriskteam@digium.com>
Thu, 11 Jul 2019 19:26:35 +0000 (14:26 -0500)
12 files changed:
.version
ChangeLog
asterisk-13.21.0-rc1-summary.html [deleted file]
asterisk-13.21.0-rc1-summary.txt [deleted file]
asterisk-certified-13.21-cert4-summary.html [new file with mode: 0644]
asterisk-certified-13.21-cert4-summary.txt [new file with mode: 0644]
contrib/realtime/mysql/mysql_cdr.sql
contrib/realtime/mysql/mysql_config.sql
contrib/realtime/mysql/mysql_voicemail.sql
contrib/realtime/postgresql/postgresql_cdr.sql
contrib/realtime/postgresql/postgresql_config.sql
contrib/realtime/postgresql/postgresql_voicemail.sql

index cef16e98c482d0eade2372df04dda9ff47989eb5..93fca90bf94c4a8982949970f05903bc3a3daefa 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-certified/13.21
+certified/13.21-cert4
\ No newline at end of file
index 71beadb95dee11b7a083f959a39dde69ec62be3f..c7a6bc98a96eef10664fb0bb4866699d9f3b81af 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,563 @@
-2018-04-19 18:28 +0000  Asterisk Development Team <asteriskteam@digium.com>
+2019-07-11 19:26 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-       * asterisk 13.21.0-rc1 Released.
+       * asterisk certified/13.21-cert4 Released.
+
+2019-06-12 13:03 +0000 [521581b762]  George Joseph <gjoseph@digium.com>
+
+       * res_pjsip_messaging:  Check for body in in-dialog message
+
+         We now check that a body exists and it has a length > 0 before
+         attempting to process it.
+
+         ASTERISK-28447
+         Reported-by: Gil Richard
+
+         Change-Id: Ic469544b22ab848734636588d4c93426cc6f4b1f
+
+2019-06-28 11:15 +0000 [07048050b0]  Francesco Castellano <francesco.castellano@messagenet.it>
+
+       * chan_sip: Handle invalid SDP answer to T.38 re-invite
+
+         The chan_sip module performs a T.38 re-invite using a single media
+         stream of udptl, and expects the SDP answer to be the same.
+
+         If an SDP answer is received instead that contains an additional
+         media stream with no joint codec a crash will occur as the code
+         assumes that at least one joint codec will exist in this
+         scenario.
+
+         This change removes this assumption.
+
+         ASTERISK-28465
+
+         Change-Id: I8b02845b53344c6babe867a3f0a5231045c7ac87
+
+2018-12-03 16:41 +0000 [e2e3def2d9]  Sean Bright <sean.bright@gmail.com>
+
+       * core: Add some documentation to the malloc_trim code
+
+         This adds documentation to handle_cli_malloc_trim() indicating how it
+         can be useful when debugging OOM conditions.
+
+         Change-Id: I1936185e78035bf123cd5e097b793a55eeebdc78
+
+2018-12-03 14:01 +0000 [7a7e3dfa5c]  Chris-Savinovich <csavinovich@digium.com>
+
+       * core: Merge malloc_trim patch
+
+         We've had multiple opportunities where Richard Mudgett's
+         malloc_trim patch has been useful. Let's get it
+         pushed up to gerrit and merged.
+
+         Since malloc_trim is only available in libc, an entry is
+         added to configure.ac to create a definition for
+         HAVE_MALLOC_TRIM.
+
+         Change-Id: Ia38308c550149d9d6eae4ca414a649957de9700c
+         (cherry picked from commit 40ab571e0d07f7e1854c0f924b0fbda2da36c5a5)
+
+2018-11-08 09:53 +0000 [79207ec9f1]  George Joseph <gjoseph@digium.com>
+
+       * backtrace:  Refactor ast_bt_get_symbols so it doesn't crash
+
+         We've been seeing crashes in libbfd when we attempt to generate
+         a stack trace from multiple threads.  It turns out that libbfd
+         is NOT thread-safe.  It can cache the bfd structure and give it to
+         multiple threads without protecting itself.  To get around this,
+         we've added a global mutex around the bfd functions and also have
+         refactored the use of those functions to be more efficient and
+         to provide more information about inlined functions.
+
+         Also added a few more tests to test_pbx.c.  One just calls
+         ast_assert() and the other calls ast_log_backtrace().  Neither are
+         run by default.
+
+         WARNING:  This change necessitated changing the return value of
+         ast_bt_get_symbols() from an array of strings to a VECTOR of
+         strings.  However, the use of this function outside Asterisk is not
+         likely.
+
+         ASTERISK-28140
+
+         Change-Id: I79d02862ddaa2423a0809caa4b3b85c128131621
+
+2018-09-20 19:04 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.21-cert3 Released.
+
+2018-08-16 10:45 +0000 [34af3753ae]  Sean Bright <sean.bright@gmail.com>
+
+       * AST-2018-009: Fix crash processing websocket HTTP Upgrade requests
+
+         The HTTP request processing in res_http_websocket allocates additional
+         space on the stack for various headers received during an Upgrade request.
+         An attacker could send a specially crafted request that causes this code
+         to overflow the stack, resulting in a crash.
+
+         * No longer allocate memory from the stack in a loop to parse the header
+         values.  NOTE: There is a slight API change when using the passed in
+         strings as is.  We now require the passed in strings to no longer have
+         leading or trailing whitespace.  This isn't a problem as the only callers
+         have already done this before passing the strings to the affected
+         function.
+
+         ASTERISK-28013 #close
+
+         Change-Id: Ia564825a8a95e085fd17e658cb777fe1afa8091a
+
+2018-07-20 06:54 +0000 [9635a64fd8]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip: Update default keepalive interval to 90 seconds.
+
+         A change recently went in which disabled the built-in PJSIP
+         keepalive. This defaulted to 90 seconds and kept TCP/TLS
+         connections alive. Disabling this functionality has resulted
+         in a behavior change of not doing keepalives by default resulting
+         in TCP/TLS connections dropping for some people.
+
+         This change makes our default keepalive interval 90 seconds
+         to match the previous behavior and preserve it.
+
+         ASTERISK-27978
+
+         Change-Id: Ibd9a45f3cbe5d9bb6d2161268696645ff781b1d6
+
+2018-07-11 11:57 +0000 [8f56ba5479]  Alexander Traud (License 6520)
+
+       * Bundled PJPROJECT: Disable internal connection oriented keep-alive.
+
+         Turn off the periodic sending of CRLNCRLN.  Default is on (90 seconds),
+         which conflicts with the global section's keep_alive_interval option in
+         pjsip.conf.
+
+         patches:
+           pjsip_keep_not_alive.patch submitted by Alexander Traud (License 6520)
+
+         ASTERISK-27347
+
+         Change-Id: I6a197f56e1830d3b7e5ec70f17025840a290b057
+
+2018-07-03 12:10 +0000 [51616b277d]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip/pjsip_transport_management.c: Fix deadlock with transport keep alive.
+
+         Using the keep_alive_interval option can result in a deadlock between the
+         pjproject transport manager group lock and the monitored transports ao2
+         container lock.  The pjproject transport manager group lock has to be
+         superior in the locking order to the monitored transports ao2 container
+         lock because of pjproject callbacks called when already holding the group
+         lock.  The lock inversion happens when Asterisk attempts to send a keep
+         alive packet over the reliable transports.
+
+         * Made keepalive_transport_thread() iterate over the monitored transports
+         container rather than use the ao2_callback() method.  This avoids holding
+         the container lock when sending the keep alive packet.
+
+         ASTERISK-26686
+
+         Change-Id: I5d5392a52e698bbe41a93f7d8e92bf0e61fe3951
+
+2018-07-13 18:26 +0000 [56a8a36c66]  Richard Mudgett <rmudgett@digium.com>
+
+       * Build: Fix modules getting their optimization setting overridden.
+
+         Asterisk modules that use PJPROJECT services have their compiler
+         optimization and possibly their symbolic debug options overridden by the
+         PJPROJECT configure script selected settings.
+
+         * We need to filter-out any -O and -g options in PJ_CFLAGS before echoing
+         out the result so the PJPROJECT_INCLUDE variable does not override the
+         Asterisk module settings when using bundled PJPROJECT.
+
+         NOTE: This patch only has an effect when using bundled PJPROJECT.
+
+         ASTERISK-27563
+
+         Change-Id: If124169735ecf572ad1535cd43bff94cb44d5b30
+
+2018-07-17 11:09 +0000 [3e6272b0f6]  George Joseph <gjoseph@digium.com>
+
+       * CI: Fix merge strategy
+
+         Change-Id: I5e3fb6adfa6cbf694c0deecf02e3879297b0c12e
+
+2018-07-17 10:41 +0000 [a8744add75]  George Joseph <gjoseph@digium.com>
+
+       * CI: Fix regex in daily and ref_debug jobs
+
+         Change-Id: Icf2e67818b2155a158d2390b138613e1f653ea92
+
+2018-07-17 10:18 +0000 [89acb71caa]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_config_ldap.c: Fix mem leak in CLI "realtime show ldap status"
+
+         Change-Id: Ib2a3622b297b0363c62d23958f7a20039bcb9b4c
+
+2018-07-17 10:15 +0000 [aa2ab27041]  George Joseph <gjoseph@digium.com>
+
+       * CI: Add pre-build merge back in as RECURSIVE
+
+         Change-Id: I0ff1730ef4a4f0ac9f18ccc9bc0dfe7a782f57a8
+
+2018-07-17 09:01 +0000 [4b69db4b66]  George Joseph <gjoseph@digium.com>
+
+       * CI: Remove pre-build merge from gates and checks
+
+         Change-Id: Ibc151f63dcec4db847915c2f3cbe5b467dd59574
+
+2018-07-17 07:13 +0000 [7bd8bbfd35]  George Joseph <gjoseph@digium.com>
+
+       * CI: Fix logic inversion in runTestsuite
+
+         Change-Id: I56399aa384468f45494c2c3650420563a0b6efe1
+
+2018-07-17 04:03 +0000 [4435cfdd4c]  George Joseph <gjoseph@digium.com>
+
+       * CI: Add teardownRealtime
+
+         Change-Id: I2fe55c38607eaec2fbf69ef23a5019e0c443a64b
+
+2018-05-07 10:49 +0000 [f4c13e8170]  Corey Farrell <git@cfware.com>
+
+       * Fix GCC 8 build issues.
+
+         This fixes build warnings found by GCC 8.  In some cases format
+         truncation is intentional so the warning is just suppressed.
+
+         ASTERISK-27824 #close
+
+         Change-Id: I724f146cbddba8b86619d4c4a9931ee877995c84
+
+2018-05-08 04:59 +0000 [44e9bdec61]  Jaco Kroon <jaco@uls.co.za>
+
+       * manager: fix digest auth for ami/http mechanism.
+
+         Due to a fixed size buffer the digest authentication could be
+         incorrectly calculated if a large URI was provided, causing
+         authentication failure. The buffer is now dynamically allocated to allow
+         any size URI within the normal limits of the HTTP request size.
+
+         ASTERISK-27841
+
+         Change-Id: I660609db13b8f9e5f9567f339dd804f4985d41b3
+
+2018-07-16 13:30 +0000 [c98c6051c6]  George Joseph <gjoseph@digium.com>
+
+       * CI:  Prevent Jenkins from triggering jobs back to itself
+
+         Change-Id: I9cae8bb3d1a2cea335d3ccd88d471832549666fd
+
+2018-07-16 11:08 +0000 [ee063a35eb]  George Joseph <gjoseph@digium.com>
+
+       * CI: runUnittests: loop a few times on waitfullybooted
+
+         Change-Id: Icebc0d013896f3b2a7214945cac60647435c1651
+
+2018-07-16 10:49 +0000 [5ec8f5b353]  George Joseph <gjoseph@digium.com>
+
+       * CI:  Add realtime checks to dailies
+
+         Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8
+
+2018-07-16 09:13 +0000 [282312eb96]  George Joseph <gjoseph@digium.com>
+
+       * CI:  Add weekly REF_DEBUG testsuite run
+
+         Change-Id: I5b581d0a0d1d1bb9b38961d40b112fb448355037
+
+2018-07-16 08:44 +0000 [62345d444f]  George Joseph <gjoseph@digium.com>
+
+       * CI: Fix bad reporting of status by the verification pub
+
+         Change-Id: I6f31a130b3ba0187149aaaa2ce94195a79e0f6a6
+
+2018-07-16 07:16 +0000 [ecc1c14a22]  George Joseph <gjoseph@digium.com>
+
+       * CI: Make build tag an acceptable docker name
+
+         Change-Id: I3a4b8a4a9c488ddabf9daf651dc1334222056f38
+
+2018-07-13 06:56 +0000 [9246fc9dd7]  George Joseph <gjoseph@digium.com>
+
+       * CI: Add daily periodics to CI
+
+         Change-Id: I26933e73928e091ae72e838c02f4f2ec7c3983d6
+
+2018-07-12 16:34 +0000 [dae51bddbd]  George Joseph <gjoseph@digium.com>
+
+       * CI: Add Asterisk Gates
+
+         Change-Id: I7e2467f9120812551238d8005deb97f965279205
+
+2018-07-11 15:55 +0000 [ac2a1db043]  George Joseph <gjoseph@digium.com>
+
+       * CI: Remove duplicate checkout
+
+         Change-Id: If5f925b4c4ed7000b153f3ed8386ce2140c886f8
+
+2018-07-11 15:09 +0000 [602ded78d4]  George Joseph <gjoseph@digium.com>
+
+       * CI: Update cleanup steps and permissions
+
+         Change-Id: I7ca92935979d94845af8e1caf4468cbd6209b7de
+
+2018-07-11 14:54 +0000 [ca168ba901]  George Joseph <gjoseph@digium.com>
+
+       * CI: Fix log artifact paths
+
+         Change-Id: I55136de8f4d9c3b56bd4d054306a187bb04a4b7d
+
+2018-07-11 14:45 +0000 [19c481a184]  George Joseph <gjoseph@digium.com>
+
+       * CI: Remove CleanBeforeCheckout option for testsuite
+
+         Change-Id: I510231c9087f7be5272b8ef3f3223eadaaffb754
+
+2018-07-11 14:00 +0000 [a05056c759]  George Joseph <gjoseph@digium.com>
+
+       * CI: Move gates into source repo
+
+         Change-Id: If028ede5f3b127fa274c63ce166bc04ad7c1e5db
+
+2018-07-11 06:14 +0000 [5dffbe11ab]  George Joseph <gjoseph@digium.com>
+
+       * CI:  Initial commit for moving CI into source repo
+
+         Create tests/CI directory and add files used by Jenkins to
+         build and test Asterisk.
+
+         With this commit, Jenkins will run the Asterisk Unit Tests using
+         the Jenkinsfile at tests/CI/unittests.jenkinsfile.  Bash scripts
+         to do the actual building and testing are also in the same directory.
+         Output is placed in tests/CI/output so that directory has been
+         added to .gitignore.
+
+         Change-Id: I9448065465e6de2b878634510ace8fd1ef378608
+
+2018-07-06 09:04 +0000 [8273b8cbf3]  George Joseph <gjoseph@digium.com>
+
+       * test.c:  Make output jUnit compatible
+
+         Separate "name" into "classname" and "name".
+         Use '.' for classname separator instead of '/'.
+         Prefix reserved words with '_'.
+         Wrap output with a top-level "testsuites" element.
+
+         Change-Id: Iec1a985eba1c478e5c1d65d5dfd95cb708442099
+
+2018-06-11 21:09 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.21-cert2 Released.
+
+2018-04-30 17:38 +0000 [3cccb60321]  Richard Mudgett <rmudgett@digium.com>
+
+       * AST-2018-008: Fix enumeration of endpoints from ACL rejected addresses.
+
+         When endpoint specific ACL rules block a SIP request they respond with a
+         403 forbidden.  However, if an endpoint is not identified then a 401
+         unauthorized response is sent.  This vulnerability just discloses which
+         requests hit a defined endpoint.  The ACL rules cannot be bypassed to gain
+         access to the disclosed endpoints.
+
+         * Made endpoint specific ACL rules now respond with a 401 unauthorized
+         which is the same as if an endpoint were not identified.  The fix is
+         accomplished by replacing the found endpoint with the artificial endpoint
+         which always fails authentication.
+
+         ASTERISK-27818
+
+         Change-Id: Icb275a54ff8e2df6c671a6d9bda37b5d732b3b32
+
+2018-06-05 12:47 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.21-cert1 Released.
+
+2018-06-04 09:50 +0000 [f5bc8aeb9a]  George Joseph <gjoseph@digium.com>
+
+       * app_sendtext:  Allow content types other than text/plain
+
+         There was no real reason to limit the conteny type to text/plain other
+         than that's what it was limited to before.  Now any text/* content
+         type will be allowed for channel drivers that don't support enhanced
+         messaging and any type will be allowed for channel drivers that do
+         support enhanced messaging.
+
+         Change-Id: I94a90cfee98b4bc8e22aa5c0b6afb7b862f979d9
+
+2018-04-10 16:09 +0000 [8f5fc3870d]  George Joseph <gjoseph@digium.com>
+
+       * app_sendtext:  Enhance SendText to support Enhanced Messaging
+
+         SendText now accepts new channel variables that can be used
+         to override the To and From display names and set the Content-Type
+         of a message.  Since you can now set Content-Type, other text/*
+         content types are now valid.
+
+         Change-Id: I648b4574478119f95de09d9f08e9595831b02830
+
+2017-09-27 11:44 +0000 [c1deeb28c2]  George Joseph <gjoseph@digium.com>
+
+       * bridge_softmix:  Forward TEXT frames
+
+         Core bridging and, more specifically, bridge_softmix have been
+         enhanced to relay received frames of type TEXT or TEXT_DATA to all
+         participants in a softmix bridge.  res_pjsip_messaging and
+         chan_pjsip have been enhanced to take advantage of this so when
+         res_pjsip_messaging receives an in-dialog MESSAGE message from a
+         user in a conference call, it's relayed to all other participants
+         in the call.
+
+         res_pjsip_messaging already queues TEXT frames to the channel when
+         it receives an in-dialog MESSAGE from an endpoint and chan_pjsip
+         will send an MESSAGE when it gets a TEXT frame.  On a normal
+         point-to-point call, the frames are forwarded between the two
+         correctly.  bridge_softmix was not though so messages weren't
+         getting forwarded to conference bridge participants.  Even if they
+         were, the bridging code had no way to tell the participants who
+         sent the message so it would look like it came from the bridge
+         itself.
+
+         * The TEXT frame type doesn't allow storage of any meta data, such
+         as sender, on the frame so a new TEXT_DATA frame type was added that
+         uses the new ast_msg_data structure as its payload.  A channel
+         driver can queue a frame of that type when it receives a message
+         from outside.  A channel driver can use it for sending messages
+         by implementing the new send_text_data channel tech callback and
+         setting the new AST_CHAN_TP_SEND_TEXT_DATA flag in its tech
+         properties.  If set, the bridging/channel core will use it instead
+         of the original send_text callback and it will get the ast_msg_data
+         structure. Channel drivers aren't required to implement this.  Even
+         if a TEXT_DATA enabled driver uses it for incoming messages, an
+         outgoing channel driver that doesn't will still have it's send_text
+         callback called with only the message text just as before.
+
+         * res_pjsip_messaging now creates a TEXT_DATA frame for incoming
+         in-dialog messages and sets the "from" to the display name in the
+         "From" header, or if that's empty, the caller id name from the
+         channel.  This allows the chat client user to set a friendly name
+         for the chat.
+
+         * bridge_softmix now forwards TEXT and TEXT_DATA frames to all
+         participants (except the sender).
+
+         * A new function "ast_sendtext_data" was added to channel which
+         takes an ast_msg_data structure and calls a channel's
+         send_text_data callback, or if that's not defined, the original
+         send_text callback.
+
+         * bridge_channel now calls ast_sendtext_data for TEXT_DATA frame
+         types and ast_sendtext for TEXT frame types.
+
+         * chan_pjsip now uses the "from" name in the ast_msg_data structure
+         (if it exists) to set the "From" header display name on outgoing text
+         messages.
+
+         Change-Id: Idacf5900bfd5f22ab8cd235aa56dfad090d18489
+         (cherry picked from commit be7d4faed5fb3684e9d68454ae2a97167e1ebb51)
+
+2017-09-27 11:44 +0000 [72fb285d9b]  George Joseph <gjoseph@digium.com>
+
+       * bridge_softmix:  Forward TEXT frames
+
+         Core bridging and, more specifically, bridge_softmix have been
+         enhanced to relay received frames of type TEXT or TEXT_DATA to all
+         participants in a softmix bridge.  res_pjsip_messaging and
+         chan_pjsip have been enhanced to take advantage of this so when
+         res_pjsip_messaging receives an in-dialog MESSAGE message from a
+         user in a conference call, it's relayed to all other participants
+         in the call.
+
+         res_pjsip_messaging already queues TEXT frames to the channel when
+         it receives an in-dialog MESSAGE from an endpoint and chan_pjsip
+         will send an MESSAGE when it gets a TEXT frame.  On a normal
+         point-to-point call, the frames are forwarded between the two
+         correctly.  bridge_softmix was not though so messages weren't
+         getting forwarded to conference bridge participants.  Even if they
+         were, the bridging code had no way to tell the participants who
+         sent the message so it would look like it came from the bridge
+         itself.
+
+         * The TEXT frame type doesn't allow storage of any meta data, such
+         as sender, on the frame so a new TEXT_DATA frame type was added that
+         uses the new ast_msg_data structure as its payload.  A channel
+         driver can queue a frame of that type when it receives a message
+         from outside.  A channel driver can use it for sending messages
+         by implementing the new send_text_data channel tech callback and
+         setting the new AST_CHAN_TP_SEND_TEXT_DATA flag in its tech
+         properties.  If set, the bridging/channel core will use it instead
+         of the original send_text callback and it will get the ast_msg_data
+         structure. Channel drivers aren't required to implement this.  Even
+         if a TEXT_DATA enabled driver uses it for incoming messages, an
+         outgoing channel driver that doesn't will still have it's send_text
+         callback called with only the message text just as before.
+
+         * res_pjsip_messaging now creates a TEXT_DATA frame for incoming
+         in-dialog messages and sets the "from" to the display name in the
+         "From" header, or if that's empty, the caller id name from the
+         channel.  This allows the chat client user to set a friendly name
+         for the chat.
+
+         * bridge_softmix now forwards TEXT and TEXT_DATA frames to all
+         participants (except the sender).
+
+         * A new function "ast_sendtext_data" was added to channel which
+         takes an ast_msg_data structure and calls a channel's
+         send_text_data callback, or if that's not defined, the original
+         send_text callback.
+
+         * bridge_channel now calls ast_sendtext_data for TEXT_DATA frame
+         types and ast_sendtext for TEXT frame types.
+
+         * chan_pjsip now uses the "from" name in the ast_msg_data structure
+         (if it exists) to set the "From" header display name on outgoing text
+         messages.
+
+         Change-Id: Idacf5900bfd5f22ab8cd235aa56dfad090d18489
+         (cherry picked from commit be7d4faed5fb3684e9d68454ae2a97167e1ebb51)
+
+2018-05-17 01:58 +0000 [5de8b00f2c]  Alexander Traud <pabstraud@compuserve.com>
+
+       * res_pjsip_endpoint_identifier_ip: Unregister the module for headers.
+
+         Asterisk uses Reference Counting to track whether a module can be unloaded.
+         Every consumer who requires a module, increases the reference count. When the
+         consumer goes, is unloaded itself, it has to decrease the reference count on
+         all its used/required modules. That way
+          core stop gracefully
+         works on the command-line interface (CLI): One module after the other is
+         unloaded. A recent change broke this for the module res_pjsip.
+
+         ASTERISK-27861
+
+         Change-Id: I261abcb411d026bbb0691cc78f28300bfd3103a3
+
+2018-05-17 00:34 +0000 [5aaf6d1605]  Alexander Traud <pabstraud@compuserve.com>
+
+       * res_pjsip: Register pjsip_transport_management not externally but internally.
+
+         The module (res_)pjsip_transport_management got moved into res_pjsip. It is no
+         longer an independent/external module with (un)load_module and therefore has to
+         register just internally with res_pjsip.
+
+         ASTERISK-27860
+
+         Change-Id: Icd0413be7d2e98b92f51e6d6c353f2570bb4be95
+
+2017-10-30 15:24 +0000 [13a85290fe]  Kevin Harwell <kharwell@digium.com>
+
+       * Initialize 13.21-cert branch
+
+         A new branch was created for what will be Asterisk certified 13.21. A couple
+         of things needed to be done to the branch in order to complete initialization:
+
+         Modified the version file to reflect the certified version.
+         Updated all extended modules to be disabled by default.
+
+         Change-Id: Ie1dd3cb146391dea92c9e3ef906dde8d7241fee2
+
+2018-04-19 13:29 +0000 [32f362c896]  Chris Savinovich <csavinovich@digium.com>
+
+       * Update for 13.21.0-rc1
 
 2018-04-17 07:09 +0000 [92f88f164a]  Alexander Traud <pabstraud@compuserve.com>
 
 
          Change-Id: Iacda724e7cb24d7520e49b2fd7e504aa398d7238
 
+2018-02-22 11:11 +0000 [ffb15b2bc7]  Kevin Harwell <kharwell@digium.com>
+
+       * AMI: Bumping AMI non-breaking number for Asterisk 13.20.0 release
+
+         A few changes were made to AMI:
+
+          * Fixed "(null):" header in AMI AsyncAGIEnd event
+          * A mute header was added to the ConfbridgeJoin AMI event
+          * ConfbridgeList action's ConfbridgeList events now output all
+            the standard channel snapshot headers
+
+         Change-Id: I94a82a44b02c91becae08d254e9a56abba5697cf
+
 2018-02-17 03:28 +0000 [05fc37bbc2]  Alexander Traud <pabstraud@compuserve.com>
 
        * install_prereq: Update FreeBSD libraries.
 
          Change-Id: I09090f70224866aead6b3207fa784cfefea7d539
 
-2018-02-20 10:33 +0000 [4da0e19b89]  Joshua Colp <jcolp@digium.com>
-
-       * chan_sip: Emit a second ringing event to ensure channel is found.
-
-         When constructing a dialog-info+xml NOTIFY message a ringing channel
-         is found if the state is ringing and further information is placed into
-         the message. Due to the migration to the Stasis message bus this did
-         not always work as expected.
-
-         This change raises a second ringing event in such a way to guarantee
-         that the event is received by chan_sip and another lookup is done to
-         find the ringing channel.
-
-         ASTERISK-24488
-
-         Change-Id: I547a458fc59721c918cb48be060cbfc3c88bcf9c
-
-2018-02-19 04:21 +0000 [9325de11f8]  Thomas Guebels <tgu@escaux.com>
-
-       * res_rtp_asterisk: Fix ICE candidate nomination
-
-         If the ICE role is not set right away, we might have a role conflict
-         that stays undetected and ICE finishing with successful tests and no
-         candidate nominated. This was introduced by ASTERISK-27088.
-
-         To avoid this, we set the role as soon as before but only if the ICE
-         state permits it: still checking and not yet nominating candidates or
-         completed.
-
-         ASTERISK-27646
-
-         Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c
-
-2017-12-04 05:27 +0000 [64942276d1]  Alexander Traud <pabstraud@compuserve.com>
-
-       * chan_sip: Peers with distinct source ports don't match, regardless of transport.
-
-         Previously, peers connected via TCP (or TLS) were matched by ignoring their
-         source port. One cannot say anything when protocol:IP:port match, yes (see
-         <http://stackoverflow.com/q/3329641>). However, when the ports do not match, the
-         peers do not match as well.
-
-         This change allows two peers connected to an Asterisk server via TCP (or TLS)
-         behind a NAT (= same source IP address) to be differentiated via their port as
-         well.
-
-         ASTERISK-27457
-         Reported by: Stephane Chazelas
-
-         Change-Id: Id190428bf1d931f2dbfd4b293f53ff8f20d98efa
-
-2018-02-22 23:15 +0000  Asterisk Development Team <asteriskteam@digium.com>
-
-       * asterisk 13.20.0-rc1 Released.
-
-2018-02-22 11:11 +0000 [ffb15b2bc7]  Kevin Harwell <kharwell@digium.com>
-
-       * AMI: Bumping AMI non-breaking number for Asterisk 13.20.0 release
-
-         A few changes were made to AMI:
-
-          * Fixed "(null):" header in AMI AsyncAGIEnd event
-          * A mute header was added to the ConfbridgeJoin AMI event
-          * ConfbridgeList action's ConfbridgeList events now output all
-            the standard channel snapshot headers
-
-         Change-Id: I94a82a44b02c91becae08d254e9a56abba5697cf
-
 2018-01-31 13:37 +0000 [05af43b240]  Kevin Harwell <kharwell@digium.com>
 
        * AST-2018-003: Crash with an invalid SDP fmtp attribute
 
          Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301
 
+2018-02-20 10:33 +0000 [4da0e19b89]  Joshua Colp <jcolp@digium.com>
+
+       * chan_sip: Emit a second ringing event to ensure channel is found.
+
+         When constructing a dialog-info+xml NOTIFY message a ringing channel
+         is found if the state is ringing and further information is placed into
+         the message. Due to the migration to the Stasis message bus this did
+         not always work as expected.
+
+         This change raises a second ringing event in such a way to guarantee
+         that the event is received by chan_sip and another lookup is done to
+         find the ringing channel.
+
+         ASTERISK-24488
+
+         Change-Id: I547a458fc59721c918cb48be060cbfc3c88bcf9c
+
 2018-02-20 04:31 +0000 [cacb72f5ae]  Corey Farrell <git@cfware.com>
 
        * doc/lang/language-criteria.txt: Link to wiki.
 
          Change-Id: Ic449ea832bc81a1671c0e910c5fbe8c683e3da89
 
+2018-02-19 04:21 +0000 [9325de11f8]  Thomas Guebels <tgu@escaux.com>
+
+       * res_rtp_asterisk: Fix ICE candidate nomination
+
+         If the ICE role is not set right away, we might have a role conflict
+         that stays undetected and ICE finishing with successful tests and no
+         candidate nominated. This was introduced by ASTERISK-27088.
+
+         To avoid this, we set the role as soon as before but only if the ICE
+         state permits it: still checking and not yet nominating candidates or
+         completed.
+
+         ASTERISK-27646
+
+         Change-Id: I5dbc69ad63cacbb067922850fbb113d479bd729c
+
 2018-02-19 03:57 +0000 [e532b982b3]  Corey Farrell <git@cfware.com>
 
        * core: Rename sounds_index.c to sounds.c.
 
          Change-Id: I3809a9c113b92fd9d0d9f9bac98e9c66dc8b2d31
 
+2017-12-20 11:30 +0000 [4f45748f52]  Richard Mudgett <rmudgett@digium.com>
+
+       * manager.h: Bump AMI version
+
+         Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf
+
 2017-12-20 00:53 +0000 [6b3188fb8c]  Corey Farrell <git@cfware.com>
 
        * app_festival: Fix fd leak on connection failure.
 
          Change-Id: I8ec5b1897b786cc1abaf62264aa75039eea05510
 
-2017-10-16 07:36 +0000 [e7f8302d30]  Torrey Searle <torrey@voxbone.com>
-
-       * contrib/script/sip_to_pjsip: add support for realtime
-
-         Add a new script that can read from legacy realtime peers & generate
-         an sql file for populating pjsip endpoints, identify, and aor records.
-
-         ASTERISK-27348 #close
-
-         Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65
-
-2017-12-20 19:05 +0000  Asterisk Development Team <asteriskteam@digium.com>
-
-       * asterisk 13.19.0-rc1 Released.
-
-2017-12-20 11:30 +0000 [4f45748f52]  Richard Mudgett <rmudgett@digium.com>
-
-       * manager.h: Bump AMI version
-
-         Change-Id: I62e6ddeb261ef012687e1fb6734c554e2499b6bf
-
 2017-12-18 20:12 +0000 [9adffca9c7]  Corey Farrell <git@cfware.com>
 
        * CLI: Address multiple issues.
 
          Change-Id: I227e2d10c0035bbfa1c6e46ae2318fd1122d8420
 
-2017-12-12 15:19 +0000 [ce2c89ce68]  Sean Bright <sean.bright@gmail.com>
+2017-12-12 15:19 +0000 [ce2c89ce68]  Dwayne Hubbard
 
        * chan_sip: Don't crash in Dial on invalid destination
 
 
          Change-Id: I2a2e0a900455d0767a99ea576e30adc6d7608a36
 
+2017-12-04 05:27 +0000 [64942276d1]  Alexander Traud <pabstraud@compuserve.com>
+
+       * chan_sip: Peers with distinct source ports don't match, regardless of transport.
+
+         Previously, peers connected via TCP (or TLS) were matched by ignoring their
+         source port. One cannot say anything when protocol:IP:port match, yes (see
+         <http://stackoverflow.com/q/3329641>). However, when the ports do not match, the
+         peers do not match as well.
+
+         This change allows two peers connected to an Asterisk server via TCP (or TLS)
+         behind a NAT (= same source IP address) to be differentiated via their port as
+         well.
+
+         ASTERISK-27457
+         Reported by: Stephane Chazelas
+
+         Change-Id: Id190428bf1d931f2dbfd4b293f53ff8f20d98efa
+
 2017-12-03 18:49 +0000 [41c14fd807]  Joshua Colp <jcolp@digium.com>
 
        * pjproject: Clean up disabling of WebRTC support.
 
          Change-Id: I66b2553319df61caea5b313d084f51978f730b4c
 
+2017-10-16 07:36 +0000 [e7f8302d30]  Torrey Searle <torrey@voxbone.com>
+
+       * contrib/script/sip_to_pjsip: add support for realtime
+
+         Add a new script that can read from legacy realtime peers & generate
+         an sql file for populating pjsip endpoints, identify, and aor records.
+
+         ASTERISK-27348 #close
+
+         Change-Id: Idd3d7968a3c9c3ee7936d21acbdaf001b429bf65
+
 2017-11-13 07:14 +0000 [c2dddb001a]  Joshua Colp <jcolp@digium.com>
 
        * pjsip / hep: Provide correct local address for Websockets.
 
          Change-Id: I99219478fb98f08751d769daaee0b7795118a5a6
 
-2017-10-13 17:46 +0000  Asterisk Development Team <asteriskteam@digium.com>
-
-       * asterisk 13.18.0-rc1 Released.
+2018-02-21 19:00 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2017-10-13 12:09 +0000 [4bc2aca9b7]  Kevin Harwell <kharwell@digium.com>
+       * asterisk certified/13.18-cert3 Released.
 
-       * AMI: Increase version number
+2018-01-31 13:37 +0000 [b8f704a1c5]  Kevin Harwell <kharwell@digium.com>
 
-         Bump the AMI patch number since the following new addition was made:
+       * AST-2018-003: Crash with an invalid SDP fmtp attribute
 
-         * Added a new CancelAtxfer action that cancels an attended transfer.
+         pjproject's fmtp retrieval function failed to catch invalid fmtp attributes.
+         Because of this Asterisk would crash if given an SDP with an invalid fmtp
+         attribute.
 
-         Change-Id: I9bac528791bd62ef0e99243903b6bc7a6c7ab182
+         When retrieving the format this patch now makes sure the fmtp attribute is
+         available. If not available it now returns an error status.
 
-2017-08-25 08:19 +0000 [6d3ee9fb93]  Thomas Sevestre <thomassevestre@free.fr>
+         ASTERISK-27583 #close
 
-       * features, manager : Add CancelAtxfer AMI action
+         Change-Id: I5cebe000ce2d846cae3af33b6d72c416e51caf2f
 
-         Add action to cancel feature attended transfer with AMI interface
+2018-01-31 13:33 +0000 [ad93b6a031]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-27215 #close
+       * AST-2018-002: Crash with an invalid SDP media format description
 
-         Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42
+         pjproject's media format parsing algorithm failed to catch invalid values.
+         Because of this Asterisk would crash if given an SDP with a invalid media
+         format description.
 
-2017-10-06 04:55 +0000 [21d502818f]  Daniel Tryba <daniel@tryba.nl>
+         When parsing the media format description this patch now properly parses the
+         value and returns an error status if it can't successfully parse/convert the
+         value.
 
-       * res_pjsip_session: Prevent user=phone being added to anonimized URIs.
+         ASTERISK-27582 #close
 
-         Move ast_sip_add_usereqphone to be called after anonymization of URIs,
-         to prevent the user_eq_phone adding "user=phone" to URIs containing a
-         username that is not a phonenumber (RFC3261 19.1.1). An extra call to
-         ast_sip_add_usereqphone on the saved version before anonymization is
-         added to add user=phone" to the PAI.
+         Change-Id: I883b3a4ef85b6972397f7b56bf46c5779c55fdd6
 
-         ASTERISK-27047 #close
+2018-02-06 12:07 +0000 [06acb4405e]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: Ie5644bc66341b86dc08b1f7442210de2e6acdec6
+       * AST-2018-005: res_pjsip_transport_management:  Move to core
 
-2017-10-06 05:14 +0000 [af09996178]  Daniel Tryba <daniel@tryba.nl>
+         Since res_pjsip_transport_management provides several attack
+         mitigation features, its functionality moved to res_pjsip and
+         this module has been removed.  This way the features will always
+         be available if res_pjsip is loaded.
 
-       * res_pjsip: Prevent "user=phone" being added multiple times to header
+         ASTERISK-27618
+         Reported By: Sandro Gauci
 
-         ast_sip_add_usereqphone adds "user=phone" to the header every time is is
-         called without checking whether the param already exists. Preventing
-         this by searching to string representation of header for "user=phone".
+         Change-Id: I21a2d33d9dda001452ea040d350d7a075f9acf0d
 
-         ASTERISK-26988 #close
+2018-02-06 11:28 +0000 [bfa7b20040]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: Ib84383b07254de357dc6a98d91fc1d2c2c3719e6
+       * AST-2018-005: Fix tdata leaks when calling pjsip_endpt_send_response(2)
 
-2017-10-10 09:49 +0000 [8e05796e81]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         pjsip_distributor:
+            authenticate() creates a tdata and uses it to send a challenge or
+            failure response.  When pjsip_endpt_send_response2() succeeds, it
+            automatically decrements the tdata ref count but when it fails, it
+            doesn't.  Since we weren't checking for a return status, we weren't
+            decrementing the count ourselves on error and were therefore leaking
+            tdatas.
 
-       * cdr_mysql: avoid releasing a config string
+         res_pjsip_session:
+            session_reinvite_on_rx_request wasn't decrementing the ref count
+            if an error happened while sending a 491 response.
+            pre_session_setup wasn't decrementing the ref count if
+            while sending an error after a pjsip_inv_verify_request failure.
 
-         Fixes a memory corruption issue after a reload of cdr_mysql.
+         res_pjsip:
+            ast_sip_send_response wasn't decrementing the ref count on error.
 
-         Issue was accidentally included in 747beb1ed159f89a3b58742e4257740b3d6d6bba .
+         ASTERISK-27618
+         Reported By: Sandro Gauci
 
-         ASTERISK-27270 #close
+         Change-Id: Iab33a6c7b6fba96148ed465b690ba8534ac961bf
 
-         Change-Id: I90b6a9d18710c0f9009466370bd5f4bac5d5d12e
+2018-02-07 08:09 +0000 [6267846fab]  Joshua Colp <jcolp@digium.com>
 
-2017-10-05 18:12 +0000 [5f6bad6733]  Richard Mudgett <rmudgett@digium.com>
+       * AST-2018-004: Restrict the number of Accept headers in a SUBSCRIBE.
 
-       * cdr.c: Defer misc checks.
+         When receiving a SUBSCRIBE request the Accept headers from it are
+         stored locally. This operation has a fixed limit of 32 Accept headers
+         but this limit was not enforced. As a result it was possible for
+         memory outside of the allocated space to get written to resulting
+         in a crash.
 
-         Try to defer some checks until needed in case there is an early exit.
+         This change enforces the limit so only 32 Accept headers are
+         processed.
 
-         Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064
+         ASTERISK-27640
+         Reported By: Sandro Gauci
 
-2017-10-11 07:03 +0000 [f3f141781c]  George Joseph <gjoseph@digium.com>
+         Change-Id: I99a814b10b554b13a6021ccf41111e5bc95e7301
 
-       * chan_vpb:  Fix a gcc 7 out-of-bounds complaint
+2018-01-31 17:48 +0000 [8e170f5f18]  Richard Mudgett <rmudgett@digium.com>
 
-         chan_vpb was trying to use sizeof(*p->play_dtmf), where
-         p->play_dtmf is defined as char[16], to get the length of the array
-         but since p->play_dtmf is an actual array, sizeof(*p->play_dtmf)
-         returns the size of the first array element, which is 1.  gcc7
-         validly complains because the context in which it's used could
-         cause an out-of-bounds condition.
+       * app_confbridge: ConfbridgeList event has standard channel shapshot headers.
 
-         Change-Id: If9c4bfdb6b02fa72d39e0c09bf88900663c000ba
+         * Made the AMI ConfbridgeList action's ConfbridgeList events output all
+         the standard channel snapshot headers instead of a few hand-coded channel
+         snapshot headers.  The benefit is that the CallerIDName gets disruptive
+         characters like CR, LF, Tab, and a few others escaped.  However, an empty
+         CallerIDName is now output as "<unknown>" instead of "<no name>".
 
-2017-10-06 02:39 +0000 [416e35589e]  Nathan Bruning <nathan@iperity.com>
+         ASTERISK-27651
 
-       * app_queue.c: clear moh field in init_queue
+         Change-Id: Iaf7d54a9d40194c2db060bc9b4979fab6720d977
 
-         ASTERISK-27301 #close
+2018-01-31 15:45 +0000 [37445bc69e]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ic31361f34e2de3b6470e68fc37205a7711082eba
+       * app_confbridge: Add the Muted header to ConfbridgeJoin AMI event.
 
-2017-10-10 12:01 +0000 [e71a65a358]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-27651
 
-       * app_originate: Set ORIGINATE_STATUS correctly on failure
+         Change-Id: Idef2ca54d242d1b894efd3fc7b360bc6fd5bdc34
 
-         We were ignoring the return value from ast_pbx_outgoing_exten() and
-         ast_pbx_outgoing_app() which could fail before setting the reason code.
-         This resulted in failures being reported as success.
+2018-01-30 19:22 +0000 [4560752184]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25266 #close
-         Reported by: Allen Ford
+       * bridge_softmix.c: Report not talking immediately when muted.
 
-         Change-Id: Idf16237b7e41b527d2c69c865829128686beeb3b
+         Currently in app_confbridge if someone mutes a channel while that channel
+         is talking, the talk detection code is suspended while the channel is
+         muted.  As far an an external observer is concerned, the muted channel's
+         talk status is still "talking" even though the channel is not contributing
+         audio to the conference bridge.  When the channel is later unmuted, it
+         takes the usual 'dsp_silence_threshold' option time to clear the talking
+         status even though the channel may have stopped talking while the channel
+         was muted.
 
-2017-10-02 16:46 +0000 [42fdfffefc]  Richard Mudgett <rmudgett@digium.com>
+         * In bridge_softmix.c, clear the talking status and report talking stopped
+         if the channel was talking when the channel is muted.  When the channel is
+         unmuted and the channel is still talking then report the channel as
+         talking since it is contributing audio to the bridge again.
 
-       * cdr.c: Eliminated simple RAII_VAR usages.
+         ASTERISK-27647
 
-         Change-Id: I150505db307249a962987e7b941bdd369bb91f35
+         Change-Id: Ie4fdbc05a0bc7343c2972bab012e2567917b3d4e
 
-2017-10-09 22:51 +0000 [48971e4d43]  Corey Farrell <git@cfware.com>
+2017-12-22 08:14 +0000 [6f65ebe76c]  Sean Bright <sean.bright@gmail.com>
 
-       * res_pjproject: Fix cleanup of buildopts vector.
+       * Remove as much trailing whitespace as possible.
 
-         ASTERISK-27306
+         Change-Id: I873c1c6d00f447269bd841494459efccdd2c19c0
 
-         Change-Id: I3bed0edf3f55b1d4adcbabb25ec14f11dc766c72
+2017-12-22 22:30 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2017-10-03 16:09 +0000 [128f7ffaa2]  Richard Mudgett <rmudgett@digium.com>
+       * asterisk certified/13.18-cert2 Released.
 
-       * cdr.c: Replace redundant check with an ast_assert()
+2017-12-20 16:17 +0000 [e99d0fe16b]  Kevin Harwell <kharwell@digium.com>
 
-         The only caller of cdr_object_fn_table.process_party_b() explicitly does
-         the check before calling.
+       * AST-2017-014: res_pjsip - Missing contact header can cause crash
 
-         Change-Id: Ib0c53cdf5048227842846e0df9d2c19117c45618
+         Those SIP messages that create dialogs require a contact header to be present.
+         If the contact header was missing from the message it could cause Asterisk to
+         crash.
 
-2017-10-02 17:41 +0000 [3525081a7c]  Richard Mudgett <rmudgett@digium.com>
+         This patch checks to make sure SIP messages that create a dialog contain the
+         contact header. If the message does not and it is required Asterisk now returns
+         a "400 Missing Contact header" response. Also added NULL checks when retrieving
+         the contact header that were missing as a "just in case".
 
-       * cdr.c: Replace inlined code with ao2_t_replace()
+         ASTERISK-27480 #close
 
-         Change-Id: I9f424f5282ca7d833592f958d95f1b2bafb549b0
+         Change-Id: I1810db87683fc637a9e3e1384a746037fec20afe
 
-2017-09-29 12:07 +0000 [7366657a9a]  Richard Mudgett <rmudgett@digium.com>
+2017-12-21 18:38 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-       * cdr.c: Use current ao2 flag names
+       * asterisk certified/13.18-cert1 Released.
 
-         Change-Id: Ib59d7d2f2a4a822754628f2c48a308d6791a6e6e
+2017-12-13 14:26 +0000 [9571a75842]  George Joseph <gjoseph@digium.com>
 
-2017-09-29 12:31 +0000 [34d55352a5]  Richard Mudgett <rmudgett@digium.com>
+       * README: Remove outdated references to tex docs
 
-       * cdr.h: Fix doxygen comments.
+         Added links to the wiki to replace references to outdated
+         tex docs.
 
-         * Also some misc formatting in cdr.c.
+         ASTERISK-27430
+         Reported by: Corey Farrell
 
-         Change-Id: Ied89a28802a662c37c43326a1aafdce596e0df4a
+         Change-Id: I5007e732b30bc7b63d124c530ae8857c89991209
 
-2017-09-20 18:36 +0000 [d388c18abf]  Richard Mudgett <rmudgett@digium.com>
+2017-12-01 16:18 +0000 [ffc2b0eb91]  Corey Farrell <git@cfware.com>
 
-       * res_pjsip_registrar.c: Update remove_existing AOR contact handling.
+       * README-SERIOUSLY.bestpractices.txt: Convert to markdown
 
-         When "rewrite_contact" is enabled, the "max_contacts" count option can
-         block re-registrations because the source port from the endpoint can be
-         random.  When the re-registration is blocked, the endpoint may give up
-         re-registering and require manual intervention.
+         Follow-up to conversion of README.md.
 
-         * The "remove_existing" option now allows a registration to succeed by
-         displacing any existing contacts that now exceed the "max_contacts" count.
-         Any removed contacts are the next to expire.  The behaviour change is
-         beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
-         than one.  The removed contact is likely the old contact created by
-         "rewrite_contact" that the device is refreshing.
+         Change-Id: I17ee7cf25bc027ece844efa2c1dfe613aff1e35b
 
-         ASTERISK-27192
+2017-11-21 09:16 +0000 [3948e9d616]  Corey Farrell <git@cfware.com>
 
-         Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b
+       * README: Convert to README.md.
 
-2017-10-04 10:46 +0000 [82592c3673]  Corey Farrell <git@cfware.com>
+         Convert the README file to markdown format, remove the old README.  This
+         causes websites like github to display the README in a much nicer
+         format with live links.  The raw file is still very readable from
+         plain text editors and terminals.
 
-       * res_pjsip: Fix issues that prevented shutdown of modules.
+         Change-Id: I7d13131764a9a9026e5f8a6ddb245a01bbd788e7
 
-         res_pjsip and res_pjsip_session had circular references, preventing both
-         modules from shutting down.
-         * Move session supplement registration to res_pjsip.
-         * Use create internal functions for use by pjsip_message_filter.c.
+2017-11-17 19:36 +0000 [5a204aac04]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-27306
+       * README: Send people to secure websites where available.
 
-         Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b
+         We should be sending people to secure web URL's where available.
+         Update README's and docs.
 
-2017-10-09 08:15 +0000 [6b16fa12c8]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Id5b1e049b0b18b49a784f1254605aefa244ce19a
 
-       * res_config_sqlite: Don't enable SQLite CDRs when running 'make samples'
+2017-12-13 13:23 +0000 [673d7d081e]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I65a5190b2732b2246d67472db70dd37db64ddad4
+       * Update for certified/13.18-cert1-rc3
 
-2017-10-08 14:05 +0000 [39b68a41f7]  David Hajek <david.hajek@daktela.com>
+2017-11-30 10:12 +0000 [10b3d4cea8]  Joshua Colp <jcolp@digium.com>
 
-       * res/res_ari.c Fix: Memory leaks in ARI when using Content-Type: application/json
+       * AST-2017-012: Place single RTCP report block at beginning of report.
 
-         ASTERISK-27305
-         Reported by: David Hajek
-         Tested by: David Hajek
+         When the RTCP code was transitioned over to Stasis a code change
+         was made to keep track of how many reports are present. This count
+         controlled where report blocks were placed in the RTCP report.
 
-         Change-Id: Ife3e289062e6cf7d0e7d342dbf79ed96feff441e
+         If a compound RTCP packet was received this logic would incorrectly
+         place a report block in the wrong location resulting in a write
+         to an invalid location.
 
-2017-10-08 09:11 +0000 [209916981a]  Alexander Traud <pabstraud@compuserve.com>
+         This change removes this counting logic and always places the report
+         block at the first position. If in the future multiple reports are
+         supported the logic can be extended but for now keeping a count
+         serves no purpose.
 
-       * tcptls: Do not re-bind to wildcard on client creation.
+         ASTERISK-27382
+         ASTERISK-27429
 
-         Since ASTERISK-26922, this issue affected only those chan_sip which were
-         * enabled for dual-stack (bindaddr=::), and
-         * enabled for TCP (tcpenable=yes) and/or TLS (tlsenable=yes), and
-         * tried to register and/or invite a IPv4-only service,
-         * via TCP and/or TLS.
-         Now, ast_tcptls_client_create does not re-bind to [::] anymore.
+         Change-Id: Iad6c8a9985c4b608ef493e19c421211615485116
 
-         ASTERISK-27324 #close
+2017-12-07 17:51 +0000 [f493631fc6]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I4b242837bdeb1ec7130dc82505c6180a946fd9b5
+       * chan_pjsip/res_pjsip: Add CHANNEL(pjsip,request_uri)
 
-2017-10-05 16:26 +0000 [f1163c0f6f]  Corey Farrell <git@cfware.com>
+         This patch does three things associated with the initial incoming INVITE
+         request URI.
 
-       * res_pjsip: Fix leak of persistent endpoint references.
+         1) Add access to the full initial incoming INVITE request URI.
 
-         Do not manually call sip_endpoint_apply_handler from load_all_endpoints.
-         This is not necessary and causes memory leaks.
+         2) We were not setting DNID on incoming PJSIP channels.  The DNID is the
+         user portion of the initial incoming INVITE Request-URI.  The value is
+         accessed by reading CALLERID(dnid).
 
-         Additionally reinitialize persistent->aors when we reuse a persistent
-         object with a new endpoint.
+         3) Fix CHANNEL(pjsip,target_uri) documentation.
 
-         ASTERISK-27306
+         * The initial incoming INVITE request URI is now available using
+         CHANNEL(pjsip,request_uri).
 
-         Change-Id: I59bbfc8da8a14d5f4af8c5bb1e71f8592ae823eb
+         * Set the DNID on PJSIP channel creation so CALLERID(dnid) can return the
+         initial incoming INVITE request URI user portion.
 
-2017-10-05 17:59 +0000 [8bf4be1048]  Corey Farrell <git@cfware.com>
+         * CHANNEL(pjsip,target_uri) now correctly documents that the target URI is
+         the contact URI.
 
-       * vector: multiple evaluation of elem in AST_VECTOR_ADD_SORTED.
+         * Refactored print_escaped_uri() out of channel_read_pjsip() to handle
+         pjsip_uri_print() error condition when the buffer is too small.
 
-         Use temporary variable to prevent multiple evaluations of elem argument.
-         This resolves a memory leak in res_pjproject startup.
+         ASTERISK-27478
 
-         ASTERISK-27317 #close
+         Change-Id: I512e60d1f162395c946451becb37af3333337b33
 
-         Change-Id: Ib960d7f5576f9e1a3c478ecb48995582a574e06d
+2017-12-07 18:22 +0000 [733231905f]  Kevin Harwell <kharwell@digium.com>
 
-2017-10-05 15:54 +0000 [5110600f1e]  Corey Farrell <git@cfware.com>
+       * pjsip_options: contacts sometimes not being updated on reload
 
-       * res_pjsip: Fix leak of fake_auth references.
+         For both dynamic and static contacts it was possible that potential AOR
+         changes were not being applied to all contacts. This was because the qualify
+         and schedule code was only retrieving AOR's, and contacts with frequencies
+         greater than zero.
 
-         pjsip_distributor leaks references to fake_auth when the default realm
-         has not changed.
+         For instance the following could happen: and AOR/contact has a frequency of 5,
+         it then gets set to 0, and then a reload occurs. All scheduled OPTIONS are
+         stopped, a list of AOR's is retrieved with frequency > 0, but none are
+         selected since in this scenario all are 0. The contact for the one previously
+         set to 5 though does not get updated, so it's status remains "AVAILABLE".
 
-         ASTERISK-27306
+         This patch makes it so all contacts (static and dynamic) are selected, and
+         appropriately updated if need be.
 
-         Change-Id: I3fcf103b3680ad2d1d4610dcd6738eeaebf4d202
+         ASTERISK-27467 #close
 
-2017-10-05 20:23 +0000 [462dd7c2de]  Corey Farrell <git@cfware.com>
+         Change-Id: I7a920170f89c683af9505d4723a44fc6841decdb
 
-       * main/strings: Fix uninitialized value.
+2017-12-07 18:18 +0000 [3585b56792]  Kevin Harwell <kharwell@digium.com>
 
-         ast_strings_match uses sscanf and checks for non-zero return to verify a
-         token was parsed. This is incorrect as sscanf returns EOF (-1) for errors.
+       * pjsip_options: dynamic contact's fields not updated on reload
 
-         ASTERISK-27318 #close
+         Dynamic contacts were not being properly updated on reload. As a matter of
+         fact any changes to the AOR that a dynamic contact was associated with were
+         not being applied.
 
-         Change-Id: Ifcece92605f58116eff24c5a0a3b0ee08b3c87b1
+         On reload, this patch makes it so for each dynamic contact, the associated
+         AOR is now retrieved and the AOR's fields are applied to the contact.
 
-2017-09-28 02:56 +0000 [29c442b587]  Benoît Dereck-Tricot <benoit.dereck-tricot@eyepea.eu>
+         ASTERISK-27467
 
-       * res_calendar_icalendar: Filter out occurrences superceded by another VEVENT
+         Change-Id: I8e3165dc6a745218c1c9db837f77fafa0516985d
 
-         When we are loading the calendars, we call libical's
-         icalcomponent_foreach_recurrence method for each VEVENT component that
-         we have in our calendar.
+2017-12-05 18:04 +0000 [8640e5d819]  Richard Mudgett <rmudgett@digium.com>
 
-         That method has no knowledge concerning the existence of the other
-         VEVENT components and will feed our callback with all ocurrences
-         matching the requested time span.
+       * CDR: Fix deadlock setting some CDR values.
 
-         The occurrences generated by icalcomponent_foreach_recurrence while
-         expanding a recurring VEVENT's RRULE and RDATE properties can be
-         superceded by an other VEVENT sharing the same UID.
+         Setting channel variables with the AMI Originate action caused a deadlock
+         when you set CDR(amaflags) or CDR(accountcode).  This path has the channel
+         locked when the CDR function is called.  The CDR function then
+         synchronously passes the job to a stasis thread.  The stasis handling
+         function then attempts to lock the channel.  Deadlock results.
 
-         I use an external iterator (in libical terminology) to avoid messing
-         with the internal ones from the calling function, and search for
-         VEVENTS which could supersede the current occurrence.
+         * Avoid deadlock by making the CDR function handle setting amaflags and
+         accountcode directly on the channel rather than passing it off to the CDR
+         processing code under a stasis thread to do it.
 
-         The event which can invalidate this occurence needs to have:
+         * Made the CHANNEL function and the CDR function process amaflags the same
+         way.
 
-         - the same UID as our recurrent component (comp)
-         - a RECURRENCE-ID property, which represents the start time of this
-           occurrence
+         * Fixed referencing the wrong message type in cdr_prop_write().
 
-         If one component is found, just clean and return.
+         ASTERISK-27460
 
-         ASTERISK-27296 #close
-         Reported by: Benoît Dereck-Tricot
+         Change-Id: I5eacb47586bc0b8f8ff76a19bd92d1dc38b75e8f
 
-         Change-Id: I8587ae3eaa765af7cb21eda3b6bf84e8a1c87af8
+2017-11-16 02:47 +0000 [aa967e1eda]  Pirmin Walthert <infos@nappsoft.ch>
 
-2017-10-03 15:16 +0000 [6c30f4a2d1]  Torrey Searle <torrey@voxbone.com>
+       * res_rtp_asterisk.c: Fix rtp source address learning for broken clients
 
-       * contrib/thirdparty/sip_to_pjsip: add additional flag mappings
+         Some clients do not send rtp packets every ptime ms. This can lead to
+         situations in which the rtp source learning algorithm will never learn
+         the address of the client. This has been discovered on a Mac mini with
+         a pjsip based softphone after updating to Sierra: as soon as USB
+         headsets are involved, the softphone will send the second packet 30ms
+         after the first, the third 30ms after the second and the fourth 1ms
+         after the third. So in the old implmentation the rtp source learning
+         algorithm was repeatedly reset on the fourth packet.
 
-         add mappings for udptl redundancy, rtptimeout, and debug flags
+         The patch changes the algorithm in a way that doesn't take the arrival
+         time between two consecutive packets into account but the time between
+         the first and the last packet of a learning sequence.
 
-         Change-Id: Ie73cf5c83c05dee01eb9624ede76c1a30225d73a
+         The patch also fixes a second problem: when a user was using a wrong
+         value for the probation setting there was a LOG_WARNING output stating
+         that the value had been set to the default value instead. However
+         the code for setting the value back to defaults was missing.
 
-2017-10-02 07:48 +0000 [6dfe5b29b6]  Daniel Tryba <daniel@pocos.nl>
+         ASTERISK-27421 #close
 
-       * res_pjsip_caller_id chan_sip: Comply to RFC 3323 values for privacy
+         Change-Id: If778fe07678a6fd2041eaca7cd78267d0ef4fc6c
 
-         Currently privacy requests are only granted if the Privacy header
-         value is exactly "id" (defined in RFC 3325). It ignores any other
-         possible value (or a combination there of). This patch reverses the
-         logic from testing for "id" to grant privacy, to testing for "none" and
-         granting privacy for any other value. "none" must not be used in
-         combination with any other value (RFC 3323 section 4.2).
+2017-11-30 12:50 +0000 [23fae9b147]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-27284 #close
+       * res_rtp_asterisk.c: Increase strictrtp learning timeout time.
 
-         Change-Id: If438a21f31a962da32d7a33ff33bdeb1e776fe56
+         More complicated direct media reinvite negotiations can result in longer
+         delays before direct media flows.  The strictrtp learning timeout time
+         was too short.  One log showed that the first RTP packet came in just
+         after three seconds.
 
-2017-09-28 17:37 +0000 [0945f10d3b]  Richard Mudgett <rmudgett@digium.com>
+         * Increase the strictrtp learning timeout time from 1.5 to 5 seconds.
 
-       * app_queue.c: Fix announcements when announce-to-first-user not enabled.
+         ASTERISK-27453
 
-         The previous patch for ASTERISK-27216 made it so you wouldn't get any
-         position or periodic announcements unless you had announce-to-first-user
-         enabled.  The announce-to-first-user feature was added by ASTERISK_21782
-         as a result of the patch which introduced the redundant announcements that
-         ASTERISK-27216 removes.
+         Change-Id: Ic5e711164cbb91b4d1c1e40c83697755640f138c
 
-         * By noting that the makeannouncement variable is used to suppresses the
-         first user announcement, we set its initial value to the
-         announce-to-first-user enable setting.
+2017-11-30 14:38 +0000 [b205f05585]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-27216
+       * AST-2017-013: chan_skinny: Call pthread_detach when sess threads end
 
-         Change-Id: Ieaeb7dbea8ae7073086b775fbafe0625b000b10a
+         chan_skinny creates a new thread for each new session.  In trying
+         to be a good cleanup citizen, the threads are joinable and the
+         unload_module function does a pthread_cancel() and a pthread_join()
+         on any sessions that are active at that time.  This has an
+         unintended side effect though. Since you can call pthread_join on a
+         thread that's already terminated, pthreads keeps the thread's
+         storage around until you explicitly call pthread_join (or
+         pthread_detach()).   Since only the module_unload function was
+         calling pthread_join, and even then only on the ones active at the
+         tme, the storage for every thread/session ever created sticks
+         around until asterisk exits.
 
-2017-09-21 14:43 +0000 [a433bb38b5]  Richard Mudgett <rmudgett@digium.com>
+         * A thread can detach itself so the session_destroy() function
+           now calls pthread_detach() just before it frees the session
+           memory allocation.  The module_unload function still takes care
+           of the ones that are still active should the module be unloaded.
 
-       * heap.c: No need to calloc heap pointer array.
+         ASTERISK-27452
+         Reported by: Juan Sacco
 
-         Change-Id: I5ae2f316229f336eb90d99c7af7ed07a33097e68
+         Change-Id: I9af7268eba14bf76960566f891320f97b974e6dd
 
-2017-09-27 13:45 +0000 [47620ea862]  George Joseph <gjoseph@digium.com>
+2017-12-01 06:07 +0000 [4d4c76c189]  Joshua Colp <jcolp@digium.com>
 
-       * logger:  Bring back ability to  turn debug on by source file
+       * res_http_post: Not all versions of gmime have GMIME_MAJOR_VERSION.
 
-         Somewhere along the way we lost the ability to debug individual
-         source files.  For modules, this wasn't a big deal but all the
-         source files in ./main are in the one "core" module so debugging
-         individual core capabilities was almost impossible.
-
-         * Added a test to DEBUG_ATLEAST that also checks __FILE__ instead
-         of just module name.  Any source file will work even if it's in
-         a module subdirectory.
+         This change makes the presence of the GMIME_MAJOR_VERSION
+         definition optional, as not all versions of gmime actually
+         define it.
 
-         Change-Id: Icc0af41837f3b1679dec7af21fa32cd1f7469f6e
+         ASTERISK-27454
 
-2017-09-26 11:01 +0000 [d70d7b2f5d]  George Joseph <gjoseph@digium.com>
+         Change-Id: I01d99590045971ed6787899147170a5954077238
 
-       * pjsip_message_filter: Fix regression causing bad contact address
+2017-11-18 21:13 +0000 [86e12d7f37]  Corey Farrell <git@cfware.com>
 
-         The "res_pjsip:  Filter out non SIP(S) requests" commit moved the
-         filtering of messages to pjproject's PJSIP_MOD_PRIORITY_TRANSPORT_LAYER
-         in order to filter out incoming bad uri schemes as early as possible.
-         Since the change affected outgoing messages as well and the TRANSPORT
-         layer is the last to be run on outgoing messages, we were overwriting
-         the setting of external_signaling_address (which is set earlier by
-         res_pjsip_nat) with an internal address.
+       * tests: Fix warnings found on Mac.
 
-         * pjsip_message_filter now registers itself as a pjproject module
-         twice.  Once in the TSX layer for the outgoing messages (as it was
-         originally), then a second time in the TRANSPORT layer for the
-         incoming messages to catch the invalid uri schemes.
+         test_pbx used raise without explicitly including signal.h.  On Mac for
+         some reason nothing else includes it.
 
-         ASTERISK-27295
-         Reported by: Sean Bright
+         test_logger checked if an unsigned int was negative.  Switch the
+         variable to 'int' so that error check can be effective.
 
-         Change-Id: I2c90190c43370f8a9d1c4693a19fd65840689c8c
+         Change-Id: Ie1db5dd1818ac25cc2ae41b644f848b5865b1362
+         (cherry picked from commit 5fe2e7bfdcd06935594823faba67c71ead7ebcf5)
 
-2017-09-13 21:31 +0000 [221d8a5c24]  Richard Mudgett <rmudgett@digium.com>
+2017-11-15 11:02 +0000 [b64d924e1c]  George Joseph <gjoseph@digium.com>
 
-       * res_rtp_asterisk.c: Fix bridge_p2p_rtp_write() reentrancy potential.
+       * Update for certified/13.18-cert1-rc2
 
-         The bridge_p2p_rtp_write() has potential reentrancy problems.
+2017-11-13 14:35 +0000 [705dbd0468]  Ben Ford <bford@digium.com>
 
-         * Accessing the bridged RTP members must be done with the instance1 lock
-         held.  The DTMF and asymmetric codec checks must be split to be done with
-         the correct RTP instance struct locked.  i.e., They must be done when
-         working on the appropriate side of the point to point bridge.
+       * bundled_pjproject: Update to 2.7.1
 
-         * Forcing the RTP mark bit was referencing the wrong side of the point to
-         point bridge.  The set mark bit is used everywhere else to set the mark
-         bit when sending not receiving.
+         Update from 2.7 to 2.7.1 for bundled pjproject. Changed version
+         and removed patch files included in the update.
 
-         The patches for ASTERISK_26745 and ASTERISK_27158 did not take into
-         account that not everything carried by RTP uses a codec.  The telephony
-         DTMF events are not exchanged with a codec.  As a result when
-         RFC2833/RFC4733 sent digits you would crash if "core set debug 1" is
-         enabled, the DTMF digits would always get passed to the core even though
-         the local native RTP bridge is active, and the DTMF digits would go out
-         using the wrong SSRC id.
+         Change-Id: I55cea8e734b318c2df9daf86aa0802c559ec8357
+         (cherry picked from commit e6ada55430c3df603f12cb20a56149dac61ce450)
 
-         * Add protection for non-format payload types like DTMF when updating the
-         lastrxformat and lasttxformat.  Also protect against non-format payload
-         types when checking for asymmetric codecs.
+2017-11-10 10:37 +0000 [0a62d69937]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-27292
+       * bundled_pjproject: sip_parser:  Fix return code in pjsip_find_msg
 
-         Change-Id: I6344ab7de21e26f84503c4d1fca1a41579364186
+         The default return code for pjsip_find_msg was PJ_SUCCESS so if
+         a Content-Length header wasn't found at all, pjsip_find_msg was
+         returning PJ_SUCCESS instead of PJSIP_EMISSINGHDR.
 
-2017-09-25 13:09 +0000 [f3b1b64d21]  Sean Bright <sean.bright@gmail.com>
+         Also added the volatile keyword to a few variables that are used
+         both inside and outside the PJ_TRY/PJ_CATCH block.
 
-       * pjproject: Patch to correct STUN FINGERPRINT usage
+         Partial fix for ASTERISK_27408
 
-         Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6
+         Change-Id: If82ba9de921e3d57df9c68cf96ee45ccc1491f7a
+         (cherry picked from commit b5f2779a23aa6042893c2bdf6bebfcc5150b5300)
 
-2017-09-25 10:59 +0000 [8d2c3effc2]  Richard Mudgett <rmudgett@digium.com>
+2017-11-10 07:06 +0000 [7e535a294e]  Joshua Colp <jcolp@digium.com>
 
-       * channel.c: Fix invalid reference in conditionaled out code.
+       * pjsip: Add patch to allow all transports to be destroyed.
 
-         ASTERISK-27289
+         If a transport is created with the same transport type, source
+         IP address, and source port as one that already exists the old
+         transport is moved into a linked list called "tp_list".
 
-         Change-Id: I7a415948116493050614d9f4fa91ffbe0c21ec4c
+         If this old transport is later shutdown it will not be destroyed
+         as the process checks whether the transport is valid or not. This
+         check does not look at the "tp_list" when making the determination
+         causing the transport to not be destroyed.
 
-2017-09-25 07:25 +0000 [690f7f7c76]  George Joseph <gjoseph@digium.com>
+         This change updates the logic to query not just the main storage
+         method for transports but also the "tp_list".
 
-       * build:  A few gcc 7 error fixes
+         Upstream issue https://trac.pjsip.org/repos/ticket/2061
 
-         Change-Id: I7b5300fbf1af7d88d47129db13ad6dbdc9b553ec
+         ASTERISK-27411
 
-2017-09-22 10:02 +0000 [f39af4d36d]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429
 
-       * res_pjsip: Use ast_sip_is_content_type() where appropriate
+2017-11-08 15:18 +0000 [3984942b13]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: If3ab0d73d79ac4623308bd48508af2bfd554937d
+       * Update for certified/13.18-cert1-rc1
 
-2017-09-19 05:22 +0000 [c98e980fff]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+2017-10-19 13:35 +0000 [13508b8a16]  Kevin Harwell <kharwell@digium.com>
 
-       * res_config_pgsql: Fix removed support to previous for versions PostgreSQL 9.1
+       * AST-2017-011 - res_pjsip_session: session leak when a call is rejected
 
-         In PostgreSQL 9.1 the backslash are string literals and not the escape
-         of characters.
+         A previous commit made it so when an invite session transitioned into a
+         disconnected state destruction of the Asterisk pjsip session object was
+         postponed until either a transport error occurred or the event timer
+         expired. However, if a call was rejected (for instance a 488) before the
+         session was fully established the event timer may not have been initiated,
+         or it was canceled without triggering either of the session finalizing states
+         mentioned above.
 
-         In previous issue ASTERISK_26057 was fixed the use of escape LIKE but the
-         support for old version of Postgresql than 9.1 was dropped. The sentence
-         before make was "ESCAPE '\'" but in version before than 9.1  need it to be
-         as follow "ESCAPE '\\'".
+         Really the only time destruction of the session should be delayed is when a
+         BYE is being transacted. This is because it's possible in some cases for the
+         session to be disconnected, but the BYE is still transacting.
 
-         ASTERISK-27283
+         This patch makes it so the session object always gets released (no more
+         memory leak) when the pjsip session is in a disconnected state. Except when
+         the method is a BYE. Then it waits until a transport error occurs or an event
+         timeout.
 
-         Change-Id: I96d9ee1ed7693ab17503cb36a9cd72847165f949
+         ASTERISK-27345 #close
 
-2017-09-15 02:59 +0000 [0adf6f3bd9]  Stefan Engström <stefanen@kth.se>
+         Reported by: Corey Farrell
 
-       * app_queue: Only do announcement logic between ringing cycles
+         Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed
 
-         This patch reverts the change by patch 2263 from old reviewboard.
-         Note that reverting that 2263-patch still preserves the behaviour that
-         the commit log of the 2263-patch claimed to add. The reason for this is:
+2017-10-03 16:19 +0000 [be9ec689cf]  Richard Mudgett <rmudgett@digium.com>
 
-         The function wait_for_answer is only called from try_calling which
-         in turn is only called from the main for loop in queue_exec, and
-         earlier in that loop we already check the things that's removed by
-         this patch. There's no need to check those things twice each loop
-         iteration, and I think the proper place to check it is before each
-         ringing cycle. By checking it in wait_for_answer, you allow the issue
-         explained in the jira - that the head caller hears announcements while
-         the agents' sip phones are actively ringing.
+       * AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun
 
-         Reported-by: Stefan Engström
-         Tested-by: Stefan Engström
-         ASTERISK-27216 #close
+         cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if
+         the supplied string is too long.  The long string could be supplied by
+         external means using the CDR(userfield) function.
 
-         Change-Id: Ic4290dc75256f9743900c6762ee1bb915f672db0
+         This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is.  The
+         earlier patch fixed the buffer overrun for Party A's userfield while this
+         patch fixes the same thing for Party B's userfield.
 
-2017-09-07 04:41 +0000 [da40976987]  Jean Aunis <jean.aunis@prescom.fr>
+         ASTERISK-27337
 
-       * bridge : Fix one-way direct-media when early bridging with native_rtp
+         Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652
 
-         When two channels were early bridged in a native_rtp bridge, the RTP description
-         on one side was not updated when the other side answered.
-         This patch forbids non-answered channels to enter a native_rtp bridge, and
-         triggers a bridge reconfiguration when an ANSWER frame is received.
+2017-10-19 13:53 +0000 [0e1a4d8c84]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-27257
+       * AST-2017-009: pjproject: Add validation of numeric header values
 
-         Change-Id: If1aaee1b4ed9658a1aa91ab715ee0a6413b878df
+         Parsing the numeric header fields like cseq, ttl, port, etc. all
+         had the potential to overflow, either causing unintended values to
+         be captured or, if the values were subsequently converted back to
+         strings, a buffer overrun.  To address this, new "strto" functions
+         have been created that do range checking and those functions are
+         used wherever possible in the parser.
 
-2017-09-19 10:38 +0000 [828a0611bc]  George Joseph <gjoseph@digium.com>
+          * Created pjlib/include/limits.h and pjlib/include/compat/limits.h
+            to either include the system limits.h or define common numeric
+            limits if there is no system limits.h.
 
-       * res_pjsip_pubsub:  Check for Content-Type header in rx_notify_request
+          * Created strto*_validate functions in sip_parser that take bounds
+            and on failure call the on_str_parse_error function which prints
+            an error message and calls PJ_THROW.
 
-         pubsub_on_rx_notify_request wasn't checking for a null
-         Content-Type header before checking that it was
-         application/simple-message-summary.
+          * Updated sip_parser to validate the numeric fields.
 
-         ASTERISK-27279
-         Reported by: Ross Beer
+          * Fixed an issue in sip_transport that prevented error messages
+            from being properly displayed.
 
-         Change-Id: Iec2a6c4d2e74af37ff779ecc9fd35644c5c4ea52
+          * Added "volatile" to some variables referenced in PJ_CATCH blocks
+            as the optimizer was sometimes optimizing them away.
 
-2017-09-19 09:34 +0000 [94f616e5e2]  David J. Pryke <david+extra.asterisk@pryke.us>
+          * Fixed length calculation in sip_transaction/create_tsx_key_2543
+            to account for signed ints being 11 characters, not 9.
 
-       * chan_sip: Expose read-only access to the full SIP INVITE Request-URI
+         ASTERISK-27319
+         Reported by: Youngsung Kim at LINE Corporation
 
-         Provide a way to get the contents of the the Request URI from the initial SIP
-         INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}")
+         Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff
 
-         ASTERISK-27278
-         Reported by: David J. Pryke
-         Tested by: David J. Pryke
+2017-11-06 16:37 +0000 [7b4b17c843]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e
+       * res_pjsip_registrar.c: Fix named AOR and pjproject group deadlock.
 
-2017-09-18 10:27 +0000 [cfc0ca1fb5]  Alexander Traud <pabstraud@compuserve.com>
+         One of the patches for ASTERISK_27147 introduced a deadlock regression.
+         When the connection oriented transport shut down, the code attempted to
+         remove the associated contact.  However, that same transport had just
+         requested a registration that we hadn't responded to yet.  Depending
+         upon timing we could deadlock.
 
-       * tcptls: Fixed a white space error.
+         * Made send the REGISTER response after we completed processing the
+         request contacts and released the named AOR lock to avoid the deadlock.
 
-         ASTERISK-26606
+         ASTERISK-27391
 
-         Change-Id: I81a7268ef7ba012d4d80d44c70b6276d48e397fa
+         Change-Id: I89a90f87cb7a02facbafb44c75d8845f93417364
 
-2017-09-18 10:00 +0000 [99a08eb7ab]  Alexander Traud <pabstraud@compuserve.com>
+2017-11-01 11:12 +0000 [18b0be292d]  Ben Ford <bford@digium.com>
 
-       * res_srtp: lower log level of auth failures
+       * res_pjsip: Add to list of valid characters for from_user.
 
-         Previously, sRTP authentication failures were reported on log level WARNING.
-         When such failures happen, each RT(C)P packet is affected, spamming the log.
-         Now, those failures are reported at log level VERBOSE 2. Furthermore, the
-         amount is further reduced (previously all two seconds, now all three seconds).
-         Additionally, the new log entry informs whether media (RTP) or statistics (RTCP)
-         are affected.
+         Fixes a regression where some characters were unable to be used in
+         the from_user field of an endpoint. Additionally, the backtick was
+         removed from the list of valid characters, since it is not valid,
+         and it was replaced with a single quote, which is a valid character.
 
-         ASTERISK-16898 #close
+         ASTERISK-27387
 
-         Change-Id: I6c98d46b711f56e08655abeb01c951ab8e8d7fa0
+         Change-Id: Id80c10a644508365c87b3182e99ea49da11b0281
+         (cherry picked from commit ffcb7e2a2540181ea41062ca0e1bc3e4fed9b3a5)
 
-2017-09-13 03:46 +0000 [f1eb36ea51]  alex <alexandr.revin@gmail.com>
+2017-10-17 10:53 +0000 [d4b80e35a9]  Richard Mudgett <rmudgett@digium.com>
 
-       * cdr_mysql.c: Apply cdrzone to start and answer
+       * res_pjproject.c: Upgrade bundled PJPROJECT to 2.7
 
-         Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0
+         Update patches included in bundled PJPROJECT for the new version.
 
-2017-08-25 17:01 +0000 [6d4b801c83]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-27355
 
-       * AST-2017-008: Improve RTP and RTCP packet processing.
+         Change-Id: I9ac5dbbffaadca25ad24fac8b9ab615e5ace6083
 
-         Validate RTCP packets before processing them.
+2017-10-30 15:24 +0000 [d797270f4e]  Kevin Harwell <kharwell@digium.com>
 
-         * Validate that the received packet is of a minimum length and apply the
-         RFC3550 RTCP packet validation checks.
+       * Initialize 13.18-cert branch
 
-         * Fixed potentially reading garbage beyond the received RTCP record data.
+         A new branch was created for what will be Asterisk certified 13.18. A couple
+         of things needed to be done to the branch in order to complete initialization:
 
-         * Fixed rtp->themssrc only being set once when the remote could change
-         the SSRC.  We would effectively stop handling the RTCP statistic records.
+         Modified the version file to reflect the certified version.
+         Updated all extended modules to be disabled by default.
 
-         * Fixed rtp->themssrc to not treat a zero value as special by adding
-         rtp->themssrc_valid to indicate if rtp->themssrc is available.
+         Change-Id: Ie1dd3cb146391dea92c9e3ef906dde8d7241fee2
 
-         ASTERISK-27274
+2017-10-30 10:33 +0000 [719ac573a6]  Kevin Harwell <kharwell@digium.com>
 
-         Make strict RTP learning more flexible.
+       * Update for 13.18.0
 
-         Direct media can cause strict RTP to attempt to learn a remote address
-         again before it has had a chance to learn the remote address the first
-         time.  Because of the rapid relearn requests, strict RTP could latch onto
-         the first remote address and fail to latch onto the direct media remote
-         address.  As a result, you have one way audio until the call is placed on
-         and off hold.
+2017-10-25 15:01 +0000 [82cedfbcb3]  Kevin Harwell <kharwell@digium.com>
 
-         The new algorithm learns remote addresses for a set time (1.5 seconds)
-         before locking the remote address.  In addition, we must see a configured
-         number of remote packets from the same address in a row before switching.
+       * Update for 13.18.0-rc2
 
-         * Fixed strict RTP learning from always accepting the first new address
-         packet as the new stream.
+2017-10-22 17:32 +0000 [db233704f4]  Joshua Colp <jcolp@digium.com>
 
-         * Fixed strict RTP to initialize the expected sequence number with the
-         last received sequence number instead of the last transmitted sequence
-         number.
+       * res_xmpp: Ensure the connection filter is available.
 
-         * Fixed the predicted next sequence number calculation in
-         rtp_learning_rtp_seq_update() to handle overflow.
+         Users of the API that res_xmpp provides expect that a
+         filter be available on the client at all times. When
+         OAuth authentication support was added this requirement
+         was not maintained.
 
-         ASTERISK-27252
+         This change merely moves the OAuth authentication to
+         after the filter is created, ensuring users of res_xmpp
+         can add things to the filter as needed.
 
-         Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c
+         ASTERISK-27346
 
-2017-09-13 14:14 +0000 [5075cc8eed]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I4ac474afe220e833288ff574e32e2b9a23394886
+         (cherry picked from commit 07e17fd04ffcf204400898660a4c118666596d5d)
 
-       * res_calendar: On reload, update all configuration
+2017-10-23 13:42 +0000 [72bf65f44f]  Ben Ford <bford@digium.com>
 
-         This changes the behavior of res_calendar to drop all existing calendars
-         and re-create them whenever a reload is done. The Calendar API provides
-         no way for configuration information to be pushed down to calendar
-         'techs' so updated settings would not take affect until a module
-         unload/load was done or Asterisk was restarted.
+       * http.c: Fix http header send content.
 
-         Asterisk 15+ already has a configuration option 'fetch_again_at_reload'
-         that performs a similar function.
+         Currently ast_http_send barricades a portion of the content that
+         needs to be sent in order to establish a connection for things
+         like the ARI client. The conditional and contents have been changed
+         to ensure that everything that needs to be sent, will be sent.
 
-         Also fix a tiny memory leak in res_calendar_caldav while we're at it.
+         ASTERISK-27372
 
-         ASTERISK-25524 #close
-         Reported by: Jesper
+         Change-Id: I8816d2d8f80f4fefc6dcae4b5fdfc97f1e46496d
 
-         Change-Id: Ib0f8057642e9d471960f1a79fd42e5a3ce587d3b
+2017-10-13 12:46 +0000 [d5d1e98fa4]  Kevin Harwell <kharwell@digium.com>
 
-2017-09-13 16:23 +0000 [63900374fa]  George Joseph <gjoseph@digium.com>
+       * Update for 13.18.0-rc1
 
-       * res_pjsip:  Filter out non SIP(S) requests
+2017-10-13 12:09 +0000 [4bc2aca9b7]  Kevin Harwell <kharwell@digium.com>
 
-         Incoming requests with non sip(s) URIs in the Request, To, From
-         or Contact URIs are now rejected with
-         PJSIP_SC_UNSUPPORTED_URI_SCHEME (416).  This is performed in
-         pjsip_message_filter (formerly pjsip_message_ip_updater) and is
-         done at pjproject's "TRANSPORT" layer before a request can even
-         reach the distributor.
+       * AMI: Increase version number
 
-         URIs read by res_pjsip_outbound_publish from pjsip.conf are now
-         also checked for both length and sip(s) scheme.  Those URIs read
-         by outbound registration and aor were already being checked for
-         scheme but their error messages needed to be updated to include
-         scheme failure as well as length failure.
+         Bump the AMI patch number since the following new addition was made:
 
-         Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460
+         * Added a new CancelAtxfer action that cancels an attended transfer.
 
-2017-09-13 14:08 +0000 [db785ddb92]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I9bac528791bd62ef0e99243903b6bc7a6c7ab182
 
-       * res_calendar: Various fixes
+2017-08-25 08:19 +0000 [6d3ee9fb93]  Thomas Sevestre <thomassevestre@free.fr>
 
-         * The way that we were looking at XML elements for CalDAV was extremely
-           fragile, so use SAX2 for increased robustness.
+       * features, manager : Add CancelAtxfer AMI action
 
-         * Don't complain about a 'channel' not be specified if autoreminder is
-           not set. Assume that if 'channel' is not set, we don't want to be
-           notified.
+         Add action to cancel feature attended transfer with AMI interface
 
-         * Fix some truncated CLI output in 'calendar show calendar' and make the
-           'Autoreminder' description a bit more clear
+         ASTERISK-27215 #close
 
-         ASTERISK-24588 #close
-         Reported by: Stefan Gofferje
+         Change-Id: Iab8a81362b5a1757e2608f70b014ef863200cb42
 
-         ASTERISK-25523 #close
-         Reported by: Jesper
+2017-10-06 04:55 +0000 [21d502818f]  Daniel Tryba <daniel@tryba.nl>
 
-         Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c
+       * res_pjsip_session: Prevent user=phone being added to anonimized URIs.
 
-2017-09-13 09:38 +0000 [0688f61a01]  Sean Bright <sean.bright@gmail.com>
+         Move ast_sip_add_usereqphone to be called after anonymization of URIs,
+         to prevent the user_eq_phone adding "user=phone" to URIs containing a
+         username that is not a phonenumber (RFC3261 19.1.1). An extra call to
+         ast_sip_add_usereqphone on the saved version before anonymization is
+         added to add user=phone" to the PAI.
 
-       * chan_rtp: Use μ-law by default instead of signed linear
+         ASTERISK-27047 #close
 
-         Multicast/Unicast RTP do not use SDP so we need to use a format that
-         cleanly maps to one of the static RTP payload types. Without this
-         change, an Originate to a Multicast or Unicast channel without a format
-         specified would produce no audio on the receiving device.
+         Change-Id: Ie5644bc66341b86dc08b1f7442210de2e6acdec6
 
-         ASTERISK-21399 #close
-         Reported by: Tzafrir Cohen
+2017-10-06 05:14 +0000 [af09996178]  Daniel Tryba <daniel@tryba.nl>
 
-         Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3
+       * res_pjsip: Prevent "user=phone" being added multiple times to header
 
-2017-09-11 05:46 +0000 [ed2a4ee81e]  George Joseph <gjoseph@digium.com>
+         ast_sip_add_usereqphone adds "user=phone" to the header every time is is
+         called without checking whether the param already exists. Preventing
+         this by searching to string representation of header for "user=phone".
 
-       * res_pjsip:  Add handling for incoming unsolicited MWI NOTIFY
+         ASTERISK-26988 #close
 
-         A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to
-         receive unsolicited MWI NOTIFY requests and make them available to
-         other modules via the stasis message bus.
+         Change-Id: Ib84383b07254de357dc6a98d91fc1d2c2c3719e6
 
-         res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request"
-         that parses a simple-message-summary body and, if
-         endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state
-         with the voice-message counts from the message.
+2017-10-10 09:49 +0000 [8e05796e81]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c
+       * cdr_mysql: avoid releasing a config string
 
-2017-09-08 21:41 +0000 [044674c0cd]  Richard Mudgett <rmudgett@digium.com>
+         Fixes a memory corruption issue after a reload of cdr_mysql.
 
-       * res_rtp_asterisk.c: Add doxygen to RTCP payload types.
+         Issue was accidentally included in 747beb1ed159f89a3b58742e4257740b3d6d6bba .
 
-         Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998
+         ASTERISK-27270 #close
 
-2017-09-11 05:52 +0000 [5ff2d06aa6]  George Joseph <gjoseph@digium.com>
+         Change-Id: I90b6a9d18710c0f9009466370bd5f4bac5d5d12e
 
-       * alembic:  Fix typo in add_auto_info_to_endpoint_dtmf_mode
+2017-10-05 18:12 +0000 [5f6bad6733]  Richard Mudgett <rmudgett@digium.com>
 
-         The downgrade function was missing "_v2" at the end of the
-         alter column type.
+       * cdr.c: Defer misc checks.
 
-         Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e
+         Try to defer some checks until needed in case there is an early exit.
 
-2017-09-10 06:17 +0000 [babb617f20]  Walter Doekes <walter+asterisk@wjd.nu>
+         Change-Id: Ibc6b34c38a4f60ad4f9b67984b7d070a07257064
 
-       * res/res_pjsip: Fix localnet checks in pjsip, part 2.
+2017-10-11 07:03 +0000 [f3f141781c]  George Joseph <gjoseph@digium.com>
 
-         In 45744fc53, I mistakenly broke SDP media address rewriting by
-         misinterpreting which address was checked in the localnet comparison.
+       * chan_vpb:  Fix a gcc 7 out-of-bounds complaint
 
-         Instead of checking the remote peer address to decide whether we need
-         media address rewriting, we check our local media address: if it's
-         local, then we rewrite. This feels awkward, but works and even made
-         directmedia work properly if you set local_net. (For the record: for
-         local peers, the SDP media rewrite code is not called, so the
-         comparison does no harm there.)
+         chan_vpb was trying to use sizeof(*p->play_dtmf), where
+         p->play_dtmf is defined as char[16], to get the length of the array
+         but since p->play_dtmf is an actual array, sizeof(*p->play_dtmf)
+         returns the size of the first array element, which is 1.  gcc7
+         validly complains because the context in which it's used could
+         cause an out-of-bounds condition.
 
-         ASTERISK-27248 #close
+         Change-Id: If9c4bfdb6b02fa72d39e0c09bf88900663c000ba
 
-         Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f
+2017-10-06 02:39 +0000 [416e35589e]  Nathan Bruning <nathan@iperity.com>
 
-2017-09-05 11:13 +0000 [ad606844be]  Florian Floimair <f.floimair@commend.com>
+       * app_queue.c: clear moh field in init_queue
 
-       * alembic: Add support for MS-SQL
+         ASTERISK-27301 #close
 
-         MS-SQL has no native Enum-type support and therefore
-         needs to work with constraints.
-         Since these constraints need unique names the suggested approach
-         referenced in the following alembic documentation has been applied:
-         http://bit.ly/2x9r8pb
+         Change-Id: Ic31361f34e2de3b6470e68fc37205a7711082eba
 
-         ASTERISK-27255 #close
+2017-10-10 12:01 +0000 [e71a65a358]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I4a399ba3eed41a33ce8cb294968ad340221580ee
+       * app_originate: Set ORIGINATE_STATUS correctly on failure
 
-2017-09-05 07:31 +0000 [2aefc6e5fe]  Jacek Konieczny <j.konieczny@eggsoft.pl>
+         We were ignoring the return value from ast_pbx_outgoing_exten() and
+         ast_pbx_outgoing_app() which could fail before setting the reason code.
+         This resulted in failures being reported as success.
 
-       * func_cdr: honour 'u' flag on dummy channel
+         ASTERISK-25266 #close
+         Reported by: Allen Ford
 
-         Fixes ${CDR(...,u)} when used in cdr_custom.conf
+         Change-Id: Idf16237b7e41b527d2c69c865829128686beeb3b
 
-         ASTERISK-27165 #close
+2017-10-02 16:46 +0000 [42fdfffefc]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83
+       * cdr.c: Eliminated simple RAII_VAR usages.
 
-2017-09-06 16:05 +0000 [c0d4f1880e]  Scott Griepentrog <scott@griepentrog.com>
+         Change-Id: I150505db307249a962987e7b941bdd369bb91f35
 
-       * chan_sip: when getting sip pvt return failure if not found
+2017-10-09 22:51 +0000 [48971e4d43]  Corey Farrell <git@cfware.com>
 
-         In handle_request_invite, when processing a pickup, a call
-         is made to get_sip_pvt_from_replaces to locate the pvt for
-         the subscription. The pvt is assumed to be valid when zero
-         is returned indicating no error, and is dereferenced which
-         can cause a crash if it was not found.
+       * res_pjproject: Fix cleanup of buildopts vector.
 
-         This change checks the not found case and returns -1 which
-         allows the calling code to fail appropriately.
+         ASTERISK-27306
 
-         ASTERISK-27217 #close
-         Reported-by: Bryan Walters
+         Change-Id: I3bed0edf3f55b1d4adcbabb25ec14f11dc766c72
 
-         Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612
+2017-10-03 16:09 +0000 [128f7ffaa2]  Richard Mudgett <rmudgett@digium.com>
 
-2017-09-06 10:50 +0000 [e4797b2cbd]  Sean Bright <sean.bright@gmail.com>
+       * cdr.c: Replace redundant check with an ast_assert()
 
-       * app_waitforsilence: Cleanup & don't treat missing frames as 'noise'
+         The only caller of cdr_object_fn_table.process_party_b() explicitly does
+         the check before calling.
 
-         * WaitForSilence completes successfully if it receives no media in the
-           specified timeout, but when acting as WaitForNoise that logic needs
-           to be reversed.
+         Change-Id: Ib0c53cdf5048227842846e0df9d2c19117c45618
 
-         * Use standard argument parsing macros and add some error checking for
-           invalid values.
+2017-10-02 17:41 +0000 [3525081a7c]  Richard Mudgett <rmudgett@digium.com>
 
-         * The documentation indicated that the first argument to both
-           WaitForSilence and WaitForNoise was required when it was not. Update
-           the documentation to reflect that.
+       * cdr.c: Replace inlined code with ao2_t_replace()
 
-         * Wrap up some behavior in structs to avoid boolean checks all over the
-           place.
+         Change-Id: I9f424f5282ca7d833592f958d95f1b2bafb549b0
 
-         ASTERISK-24066 #close
-         Reported by: M vd S
+2017-09-29 12:07 +0000 [7366657a9a]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9
+       * cdr.c: Use current ao2 flag names
 
-2017-09-01 05:17 +0000 [186ef1a657]  George Joseph <gjoseph@digium.com>
+         Change-Id: Ib59d7d2f2a4a822754628f2c48a308d6791a6e6e
 
-       * stasis/control:  Fix possible deadlock with swap channel
+2017-09-29 12:31 +0000 [34d55352a5]  Richard Mudgett <rmudgett@digium.com>
 
-         If an error occurs during a bridge impart it's possible that
-         the "bridge_after" callback might try to run before
-         control_swap_channel_in_bridge has been signalled to continue.
-         Since control_swap_channel_in_bridge is holding the control lock
-         and the callback needs it, a deadlock will occur.
+       * cdr.h: Fix doxygen comments.
 
-         * control_swap_channel_in_bridge now only holds the control
-           lock while it's actually modifying the control structure and
-           releases it while the bridge impart is running.
-         * bridge_after_cb is now tolerant of impart failures.
+         * Also some misc formatting in cdr.c.
 
-         Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3
+         Change-Id: Ied89a28802a662c37c43326a1aafdce596e0df4a
 
-2017-09-06 05:23 +0000 [597d1f8951]  Vitezslav Novy <a1@vnovy.net>
+2017-09-20 18:36 +0000 [d388c18abf]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE
+       * res_pjsip_registrar.c: Update remove_existing AOR contact handling.
 
-         If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE
-         to both parties to set up media path directly between the endpoints.
-         In this reINVITE msg SDP origin line (o=) contains IP address of endpoint
-         instead of IP of asterisk. This behavior violates RFC3264, sec 8:
-         "When issuing an offer that modifies the session,
-         the "o=" line of the new SDP MUST be identical to that in the
-         previous SDP, except that the version in the origin field MUST
-         increment by one from the previous SDP."
-         This patch assures IP address of Asterisk is always sent in
-         SDP origin line.
+         When "rewrite_contact" is enabled, the "max_contacts" count option can
+         block re-registrations because the source port from the endpoint can be
+         random.  When the re-registration is blocked, the endpoint may give up
+         re-registering and require manual intervention.
 
-         ASTERISK-17540
-         Reported by:  saghul
+         * The "remove_existing" option now allows a registration to succeed by
+         displacing any existing contacts that now exceed the "max_contacts" count.
+         Any removed contacts are the next to expire.  The behaviour change is
+         beneficial when "rewrite_contact" is enabled and "max_contacts" is greater
+         than one.  The removed contact is likely the old contact created by
+         "rewrite_contact" that the device is refreshing.
 
-         Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
+         ASTERISK-27192
 
-2017-09-06 07:54 +0000 [15ddc9acb3]  George Joseph <gjoseph@digium.com>
+         Change-Id: I64c107a10b70db1697d17136051ae6bf22b5314b
 
-       * alembic: Fix enum creation for dtls_fingerprint
+2017-10-04 10:46 +0000 [82592c3673]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db
+       * res_pjsip: Fix issues that prevented shutdown of modules.
 
-2017-09-05 11:08 +0000 [2370469645]  Florian Floimair <f.floimair@commend.com>
+         res_pjsip and res_pjsip_session had circular references, preventing both
+         modules from shutting down.
+         * Move session supplement registration to res_pjsip.
+         * Use create internal functions for use by pjsip_message_filter.c.
 
-       * alembic: fix erroneous commit for add_prune_on_boot
+         ASTERISK-27306
 
-         Added include for postgresql ENUM type and
-         redefined values in the same way as in the
-         other migration scripts.
+         Change-Id: Ifbd5c19ec848010111afeab2436f9699da06ba6b
 
-         ASTERISK-27254 #close
+2017-10-09 08:15 +0000 [6b16fa12c8]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa
+       * res_config_sqlite: Don't enable SQLite CDRs when running 'make samples'
 
-2017-09-06 03:15 +0000 [13aa1241c3]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I65a5190b2732b2246d67472db70dd37db64ddad4
 
-       * res_srtp: Add support for libsrtp2.1.
+2017-10-08 14:05 +0000 [39b68a41f7]  David Hajek <david.hajek@daktela.com>
 
-         Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro
-         SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with
-         previous versions of libSRTP, this change allows libSRTP 2.1.x as well.
+       * res/res_ari.c Fix: Memory leaks in ARI when using Content-Type: application/json
 
-         ASTERISK-27253 #close
+         ASTERISK-27305
+         Reported by: David Hajek
+         Tested by: David Hajek
 
-         Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315
+         Change-Id: Ife3e289062e6cf7d0e7d342dbf79ed96feff441e
 
-2017-09-05 09:35 +0000 [598a18ffee]  Ben Ford <bford@digium.com>
+2017-10-08 09:11 +0000 [209916981a]  Alexander Traud <pabstraud@compuserve.com>
 
-       * chan_pjsip: Suppress frame warnings.
+       * tcptls: Do not re-bind to wildcard on client creation.
 
-         When rtp_keepalive is on for a PJSIP endpoint dialing to another
-         Asterisk instance also using PJSIP, Asterisk will continue to print
-         warning messages about not being able to send frames of a certain
-         type. This suppresses that warning message.
+         Since ASTERISK-26922, this issue affected only those chan_sip which were
+         * enabled for dual-stack (bindaddr=::), and
+         * enabled for TCP (tcpenable=yes) and/or TLS (tlsenable=yes), and
+         * tried to register and/or invite a IPv4-only service,
+         * via TCP and/or TLS.
+         Now, ast_tcptls_client_create does not re-bind to [::] anymore.
 
-         Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67
+         ASTERISK-27324 #close
 
-2017-08-25 17:05 +0000 [6c922b3157]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I4b242837bdeb1ec7130dc82505c6180a946fd9b5
 
-       * res_rtp_asterisk.c: Check RTP packet version earlier.
+2017-10-05 16:26 +0000 [f1163c0f6f]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Ic6493a7d79683f3e5845dff1cee49445fd5a0adf
+       * res_pjsip: Fix leak of persistent endpoint references.
 
-2017-09-05 10:05 +0000 [3f7d0b63fc]  Sean Bright <sean.bright@gmail.com>
+         Do not manually call sip_endpoint_apply_handler from load_all_endpoints.
+         This is not necessary and causes memory leaks.
 
-       * formats: Restore previous fread() behavior
+         Additionally reinitialize persistent->aors when we reuse a persistent
+         object with a new endpoint.
 
-         Some formats are able to handle short reads while others are not, so
-         restore the previous behavior for the format modules so that we don't
-         have spurious errors when playing back files.
+         ASTERISK-27306
 
-         ASTERISK-27232 #close
-         Reported by: Jens T.
+         Change-Id: I59bbfc8da8a14d5f4af8c5bb1e71f8592ae823eb
 
-         Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300
+2017-10-05 17:59 +0000 [8bf4be1048]  Corey Farrell <git@cfware.com>
 
-2017-09-05 09:16 +0000 [45744fc53d]  Walter Doekes <walter+asterisk@wjd.nu>
+       * vector: multiple evaluation of elem in AST_VECTOR_ADD_SORTED.
 
-       * res/res_pjsip: Standardize/fix localnet checks across pjsip.
+         Use temporary variable to prevent multiple evaluations of elem argument.
+         This resolves a memory leak in res_pjproject startup.
 
-         In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was
-         confusion about whether the transport_state->localnet ACL has ALLOW or
-         DENY semantics.
+         ASTERISK-27317 #close
 
-         For the record: the localnet has DENY semantics, meaning that "not in
-         the list" means ALLOW, and the local nets are in the list.
+         Change-Id: Ib960d7f5576f9e1a3c478ecb48995582a574e06d
 
-         Therefore, checks like this look wrong, but are right:
+2017-10-05 15:54 +0000 [5110600f1e]  Corey Farrell <git@cfware.com>
 
-             /* See if where we are sending this request is local or not, and if
-                not that we can get a Contact URI to modify */
-             if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) {
-                 ast_debug(5, "Request is being sent to local address, "
-                              "skipping NAT manipulation\n");
+       * res_pjsip: Fix leak of fake_auth references.
 
-         (In the list == localnet == DENY == skip NAT manipulation.)
+         pjsip_distributor leaks references to fake_auth when the default realm
+         has not changed.
 
-         And conversely, other checks that looked right, were wrong.
+         ASTERISK-27306
 
-         This change adds two macro's to reduce the confusion and uses those
-         instead:
+         Change-Id: I3fcf103b3680ad2d1d4610dcd6738eeaebf4d202
 
-             ast_sip_transport_is_nonlocal(transport_state, addr)
-             ast_sip_transport_is_local(transport_state, addr)
+2017-10-05 20:23 +0000 [462dd7c2de]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-27248 #close
+       * main/strings: Fix uninitialized value.
 
-         Change-Id: Ie7767519eb5a822c4848e531a53c0fd054fae934
+         ast_strings_match uses sscanf and checks for non-zero return to verify a
+         token was parsed. This is incorrect as sscanf returns EOF (-1) for errors.
 
-2017-09-05 05:23 +0000 [786c4791f9]  George Joseph <gjoseph@digium.com>
+         ASTERISK-27318 #close
 
-       * res_pjsip_t38:  Make t38_reinvite_response_cb tolerant of NULL channel
+         Change-Id: Ifcece92605f58116eff24c5a0a3b0ee08b3c87b1
 
-         t38_reinvite_response_cb can get called by res_pjsip_session's
-         session_inv_on_tsx_state_changed in situations where session->channel
-         is NULL.  If it is, the ast_log warning segfaults because it tries
-         to get the channel name from a NULL channel.
+2017-09-28 02:56 +0000 [29c442b587]  Benoît Dereck-Tricot <benoit.dereck-tricot@eyepea.eu>
 
-         * Check session->channel and print "unknown channel" when it's NULL.
+       * res_calendar_icalendar: Filter out occurrences superceded by another VEVENT
 
-         ASTERISK-27236
-         Reported by: Ross Beer
+         When we are loading the calendars, we call libical's
+         icalcomponent_foreach_recurrence method for each VEVENT component that
+         we have in our calendar.
 
-         Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7
+         That method has no knowledge concerning the existence of the other
+         VEVENT components and will feed our callback with all ocurrences
+         matching the requested time span.
 
-2017-09-01 16:17 +0000 [55f30c29fd]  Sean Bright <sean.bright@gmail.com>
+         The occurrences generated by icalcomponent_foreach_recurrence while
+         expanding a recurring VEVENT's RRULE and RDATE properties can be
+         superceded by an other VEVENT sharing the same UID.
 
-       * rtp_engine: Prevent possible double free with DTLS config
+         I use an external iterator (in libical terminology) to avoid messing
+         with the internal ones from the calling function, and search for
+         VEVENTS which could supersede the current occurrence.
 
-         ASTERISK-27225 #close
-         Reported by: Richard Kenner
+         The event which can invalidate this occurence needs to have:
 
-         Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
+         - the same UID as our recurrent component (comp)
+         - a RECURRENCE-ID property, which represents the start time of this
+           occurrence
 
-2017-09-01 13:15 +0000 [f36db2dbdc]  Sean Bright <sean.bright@gmail.com>
+         If one component is found, just clean and return.
 
-       * chan_ooh323: Fix confusing indentation warning
+         ASTERISK-27296 #close
+         Reported by: Benoît Dereck-Tricot
 
-         ASTERISK-27177 #close
-         Reported by: Tzafrir Cohen
+         Change-Id: I8587ae3eaa765af7cb21eda3b6bf84e8a1c87af8
 
-         Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97
+2017-10-03 15:16 +0000 [6c30f4a2d1]  Torrey Searle <torrey@voxbone.com>
 
-2017-09-01 09:51 +0000 [5f4863d4f9]  Sean Bright <sean.bright@gmail.com>
+       * contrib/thirdparty/sip_to_pjsip: add additional flag mappings
 
-       * app_directory: Handle a NULL mailbox without crashing
+         add mappings for udptl redundancy, rtptimeout, and debug flags
 
-         ASTERISK-27241 #close
-         Reported by: David Moore
+         Change-Id: Ie73cf5c83c05dee01eb9624ede76c1a30225d73a
 
-         Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6
+2017-10-02 07:48 +0000 [6dfe5b29b6]  Daniel Tryba <daniel@pocos.nl>
 
-2017-07-24 10:48 +0000 [990b017668]  George Joseph <gjoseph@digium.com>
+       * res_pjsip_caller_id chan_sip: Comply to RFC 3323 values for privacy
 
-       * pjsip_message_ip_updater:  Fix issue handling "tel" URIs
+         Currently privacy requests are only granted if the Privacy header
+         value is exactly "id" (defined in RFC 3325). It ignores any other
+         possible value (or a combination there of). This patch reverses the
+         logic from testing for "id" to grant privacy, to testing for "none" and
+         granting privacy for any other value. "none" must not be used in
+         combination with any other value (RFC 3323 section 4.2).
 
-         sanitize_tdata was assuming all URIs were SIP URIs so when a non
-         SIP uri was in the From, To or Contact headers, the unconditional
-         cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused
-         a segfault when trying to access uri->other_param.
+         ASTERISK-27284 #close
 
-         * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri)
-           checks before attempting to cast or use the returned uri.
+         Change-Id: If438a21f31a962da32d7a33ff33bdeb1e776fe56
 
-         ASTERISK-27152
-         Reported-by: Ross Beer
+2017-09-28 17:37 +0000 [0945f10d3b]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f
+       * app_queue.c: Fix announcements when announce-to-first-user not enabled.
 
-2017-07-01 19:24 +0000 [04ee3eb774]  Corey Farrell <git@cfware.com>
+         The previous patch for ASTERISK-27216 made it so you wouldn't get any
+         position or periodic announcements unless you had announce-to-first-user
+         enabled.  The announce-to-first-user feature was added by ASTERISK_21782
+         as a result of the patch which introduced the redundant announcements that
+         ASTERISK-27216 removes.
 
-       * AST-2017-006: Fix app_minivm application MinivmNotify command injection
+         * By noting that the makeannouncement variable is used to suppresses the
+         first user announcement, we set its initial value to the
+         announce-to-first-user enable setting.
 
-         An admin can configure app_minivm with an externnotify program to be run
-         when a voicemail is received.  The app_minivm application MinivmNotify
-         uses ast_safe_system() for this purpose which is vulnerable to command
-         injection since the Caller-ID name and number values given to externnotify
-         can come from an external untrusted source.
+         ASTERISK-27216
 
-         * Add ast_safe_execvp() function.  This gives modules the ability to run
-         external commands with greater safety compared to ast_safe_system().
-         Specifically when some parameters are filled by untrusted sources the new
-         function does not allow malicious input to break argument encoding.  This
-         may be of particular concern where CALLERID(name) or CALLERID(num) may be
-         used as a parameter to a script run by ast_safe_system() which could
-         potentially allow arbitrary command execution.
+         Change-Id: Ieaeb7dbea8ae7073086b775fbafe0625b000b10a
 
-         * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp()
-         instead of ast_safe_system() to avoid command injection.
+2017-09-21 14:43 +0000 [a433bb38b5]  Richard Mudgett <rmudgett@digium.com>
 
-         * Document code injection potential from untrusted data sources for other
-         shell commands that are under user control.
+       * heap.c: No need to calloc heap pointer array.
 
-         ASTERISK-27103
+         Change-Id: I5ae2f316229f336eb90d99c7af7ed07a33097e68
 
-         Change-Id: I7552472247a84cde24e1358aaf64af160107aef1
+2017-09-27 13:45 +0000 [47620ea862]  George Joseph <gjoseph@digium.com>
 
-2017-05-22 10:36 +0000 [1a022285dd]  Joshua Colp <jcolp@digium.com>
+       * logger:  Bring back ability to  turn debug on by source file
 
-       * res_rtp_asterisk: Only learn a new source in learn state.
+         Somewhere along the way we lost the ability to debug individual
+         source files.  For modules, this wasn't a big deal but all the
+         source files in ./main are in the one "core" module so debugging
+         individual core capabilities was almost impossible.
 
-         This change moves the logic which learns a new source address
-         for RTP so it only occurs in the learning state. The learning
-         state is entered on initial allocation of RTP or if we are
-         told that the remote address for the media has changed. While
-         in the learning state if we continue to receive media from
-         the original source we restart the learning process. It is
-         only once we receive a sufficient number of RTP packets from
-         the new source that we will switch to it. Once this is done
-         the closed state is entered where all packets that do not
-         originate from the expected source are dropped.
+         * Added a test to DEBUG_ATLEAST that also checks __FILE__ instead
+         of just module name.  Any source file will work even if it's in
+         a module subdirectory.
 
-         The learning process has also been improved to take into
-         account the time between received packets so a flood of them
-         while in the learning state does not cause media to be switched.
+         Change-Id: Icc0af41837f3b1679dec7af21fa32cd1f7469f6e
 
-         Finally RTCP now drops packets which are not for the learned
-         SSRC if strict RTP is enabled.
+2017-09-26 11:01 +0000 [d70d7b2f5d]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-27013
+       * pjsip_message_filter: Fix regression causing bad contact address
 
-         Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c
+         The "res_pjsip:  Filter out non SIP(S) requests" commit moved the
+         filtering of messages to pjproject's PJSIP_MOD_PRIORITY_TRANSPORT_LAYER
+         in order to filter out incoming bad uri schemes as early as possible.
+         Since the change affected outgoing messages as well and the TRANSPORT
+         layer is the last to be run on outgoing messages, we were overwriting
+         the setting of external_signaling_address (which is set earlier by
+         res_pjsip_nat) with an internal address.
 
-2017-08-29 14:22 +0000 [4aaccb7795]  Richard Mudgett <rmudgett@digium.com>
+         * pjsip_message_filter now registers itself as a pjproject module
+         twice.  Once in the TSX layer for the outgoing messages (as it was
+         originally), then a second time in the TRANSPORT layer for the
+         incoming messages to catch the invalid uri schemes.
 
-       * bridge_native_rtp.c: Fixup native_rtp_framehook()
+         ASTERISK-27295
+         Reported by: Sean Bright
 
-         * Fix framehook to test frame type for control frame.
-         * Made framehook exit early if frame type is not a control frame.
-         * Eliminated RAII_VAR in framehook.
-         * Use switch instead of else-if ladder for control frame handling.
+         Change-Id: I2c90190c43370f8a9d1c4693a19fd65840689c8c
 
-         Change-Id: Ia555fc3600bd85470e3c0141147dbe3ad07c1d18
+2017-09-13 21:31 +0000 [221d8a5c24]  Richard Mudgett <rmudgett@digium.com>
 
-2017-08-29 09:26 +0000 [d2ace23248]  Sean Bright <sean.bright@gmail.com>
+       * res_rtp_asterisk.c: Fix bridge_p2p_rtp_write() reentrancy potential.
 
-       * confbridge: Handle user hangup during name recording
+         The bridge_p2p_rtp_write() has potential reentrancy problems.
 
-         This prevents orphaned CBAnn channels from getting stuck in the bridge.
+         * Accessing the bridged RTP members must be done with the instance1 lock
+         held.  The DTMF and asymmetric codec checks must be split to be done with
+         the correct RTP instance struct locked.  i.e., They must be done when
+         working on the appropriate side of the point to point bridge.
 
-         ASTERISK-26994 #close
-         Reported by: James Terhune
+         * Forcing the RTP mark bit was referencing the wrong side of the point to
+         point bridge.  The set mark bit is used everywhere else to set the mark
+         bit when sending not receiving.
 
-         Change-Id: I5e43e832a9507ec3f2c59752cd900b41dab80457
+         The patches for ASTERISK_26745 and ASTERISK_27158 did not take into
+         account that not everything carried by RTP uses a codec.  The telephony
+         DTMF events are not exchanged with a codec.  As a result when
+         RFC2833/RFC4733 sent digits you would crash if "core set debug 1" is
+         enabled, the DTMF digits would always get passed to the core even though
+         the local native RTP bridge is active, and the DTMF digits would go out
+         using the wrong SSRC id.
 
-2017-08-25 21:06 +0000 [a45af32983]  Andre Nazario <samoied@users.sourceforge.net>
+         * Add protection for non-format payload types like DTMF when updating the
+         lastrxformat and lasttxformat.  Also protect against non-format payload
+         types when checking for asymmetric codecs.
 
-       * chan_pjsip: Add tag info in CHANNEL function
+         ASTERISK-27292
 
-         Create local_tag and remote_tag in CHANNEL info to get tag from From and
-         To headers of a SIP dialog.
+         Change-Id: I6344ab7de21e26f84503c4d1fca1a41579364186
 
-         ASTERISK-27220
+2017-09-25 13:09 +0000 [f3b1b64d21]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524
+       * pjproject: Patch to correct STUN FINGERPRINT usage
 
-2017-08-25 13:44 +0000 [9e6efcace5]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I0e453253dff1388b0186b36c754457c1d0d12db6
 
-       * voicemail: Fix various abuses of mkstemp
+2017-09-25 10:59 +0000 [8d2c3effc2]  Richard Mudgett <rmudgett@digium.com>
 
-         mkstemp() returns a unique filename, but appending an extension to that
-         filename does not guarantee uniqueness. Instead, use mkdtemp() and we
-         can put whatever extension we want on the files that we create inside
-         the directory.
+       * channel.c: Fix invalid reference in conditionaled out code.
 
-         In the case of app_minivm, we also now properly clean up any temporary
-         files that we create.
+         ASTERISK-27289
 
-         ASTERISK-20858 #close
-         Reported by: Walter Doekes
+         Change-Id: I7a415948116493050614d9f4fa91ffbe0c21ec4c
 
-         Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43
+2017-09-25 07:25 +0000 [690f7f7c76]  George Joseph <gjoseph@digium.com>
 
-2017-08-25 12:20 +0000 [01b5913ce0]  Sean Bright <sean.bright@gmail.com>
+       * build:  A few gcc 7 error fixes
 
-       * app_record: Resolve some absolute vs. relative filename bugs
+         Change-Id: I7b5300fbf1af7d88d47129db13ad6dbdc9b553ec
 
-         If the Record() application is called with a relative filename that
-         includes directories, we were not properly creating the intermediate
-         directories and Record() would fail.
+2017-09-22 10:02 +0000 [f39af4d36d]  Sean Bright <sean.bright@gmail.com>
 
-         Secondarily, updated the documentation for RECORDED_FILE to mention
-         that it does not include a filename extension.
+       * res_pjsip: Use ast_sip_is_content_type() where appropriate
 
-         Finally, rewrote the '%d' functionality to be a bit more straight
-         forward and less noisy.
+         Change-Id: If3ab0d73d79ac4623308bd48508af2bfd554937d
 
-         ASTERISK-16777 #close
-         Reported by: klaus3000
+2017-09-19 05:22 +0000 [c98e980fff]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
 
-         Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2
+       * res_config_pgsql: Fix removed support to previous for versions PostgreSQL 9.1
 
-2017-08-23 10:01 +0000 [bf178a0f4f]  Florian Floimair <f.floimair@commend.com>
+         In PostgreSQL 9.1 the backslash are string literals and not the escape
+         of characters.
 
-       * alembic: Add dtls_fingerprint column in ps_endpoints table
+         In previous issue ASTERISK_26057 was fixed the use of escape LIKE but the
+         support for old version of Postgresql than 9.1 was dropped. The sentence
+         before make was "ESCAPE '\'" but in version before than 9.1  need it to be
+         as follow "ESCAPE '\\'".
 
-         The ps_endpoints table was missing the dtls_fingerprint column
-         introduced with commit adba2a8d7fd.
+         ASTERISK-27283
 
-         ASTERISK-27168 #close
+         Change-Id: I96d9ee1ed7693ab17503cb36a9cd72847165f949
 
-         Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd
+2017-09-15 02:59 +0000 [0adf6f3bd9]  Stefan Engström <stefanen@kth.se>
 
-2016-02-28 19:05 +0000 [fff2f68616]  Matt Jordan <mjordan@digium.com>
+       * app_queue: Only do announcement logic between ringing cycles
 
-       * main/app: Only look to end of file if ':end' is specified, and not just ':'
+         This patch reverts the change by patch 2263 from old reviewboard.
+         Note that reverting that 2263-patch still preserves the behaviour that
+         the commit log of the 2263-patch claimed to add. The reason for this is:
 
-         There is a little known feature in app_controlplayback that will cause the
-         specified offset to be used relative to the end of a file if a ':end' is
-         detected within the filename.
+         The function wait_for_answer is only called from try_calling which
+         in turn is only called from the main for loop in queue_exec, and
+         earlier in that loop we already check the things that's removed by
+         this patch. There's no need to check those things twice each loop
+         iteration, and I think the proper place to check it is before each
+         ringing cycle. By checking it in wait_for_answer, you allow the issue
+         explained in the jira - that the head caller hears announcements while
+         the agents' sip phones are actively ringing.
 
-         This feature is pretty bad, but okay.
+         Reported-by: Stefan Engström
+         Tested-by: Stefan Engström
+         ASTERISK-27216 #close
 
-         However, a bug exists in this code where a ':' detected in the filename
-         will cause the end pointer to be non-NULL, even if the full ':end' isn't
-         specified. This causes us to treat an unspecified offset (0) as being
-         "start playing from the end of the file", resulting in no file playback
-         occurring.
+         Change-Id: Ic4290dc75256f9743900c6762ee1bb915f672db0
 
-         This patch fixes this bug by resetting the end pointer if ':end' is not
-         found in the filename.
+2017-09-07 04:41 +0000 [da40976987]  Jean Aunis <jean.aunis@prescom.fr>
 
-         ASTERISK-23608 #close
-         Reported by: Jonathan White
+       * bridge : Fix one-way direct-media when early bridging with native_rtp
 
-         Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35
-         (cherry picked from commit 13efea24f7ce6ccc01d1a5a0603be2636d83a408)
+         When two channels were early bridged in a native_rtp bridge, the RTP description
+         on one side was not updated when the other side answered.
+         This patch forbids non-answered channels to enter a native_rtp bridge, and
+         triggers a bridge reconfiguration when an ANSWER frame is received.
 
-2017-08-24 09:42 +0000 [579d4593ac]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-27257
 
-       * app_queue: Evaluate realtime queues when running dialplan functions
+         Change-Id: If1aaee1b4ed9658a1aa91ab715ee0a6413b878df
 
-         ASTERISK-19103 #close
-         Reported by: Jim Van Meggelen
+2017-09-19 10:38 +0000 [828a0611bc]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b
+       * res_pjsip_pubsub:  Check for Content-Type header in rx_notify_request
 
-2017-08-23 09:19 +0000 [0af145de2d]  Sean Bright <sean.bright@gmail.com>
+         pubsub_on_rx_notify_request wasn't checking for a null
+         Content-Type header before checking that it was
+         application/simple-message-summary.
 
-       * app_voicemail: Honor escape digits in "greeting only" mode
+         ASTERISK-27279
+         Reported by: Ross Beer
 
-         ASTERISK-21241 #close
-         Reported by: Eelco Brolman
-         Patches:
-               Patch uploaded by Eelco Brolman (License 6442)
+         Change-Id: Iec2a6c4d2e74af37ff779ecc9fd35644c5c4ea52
 
-         Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe
+2017-09-19 09:34 +0000 [94f616e5e2]  David J. Pryke <david+extra.asterisk@pryke.us>
 
-2017-08-24 08:35 +0000 [d251a961ac]  Sean Bright <sean.bright@gmail.com>
+       * chan_sip: Expose read-only access to the full SIP INVITE Request-URI
 
-       * res_smdi: Clean up memory leak
+         Provide a way to get the contents of the the Request URI from the initial SIP
+         INVITE in dial plan function call. (In this case "${CHANNEL(ruri)}")
 
-         Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8
+         ASTERISK-27278
+         Reported by: David J. Pryke
+         Tested by: David J. Pryke
 
-2017-08-11 11:40 +0000 [3f22b53349]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I1dd4d6988eed1b6c98a9701e0e833a15ef0dac3e
 
-       * bridge_softmix.c: Remove always true test.
+2017-09-18 10:27 +0000 [cfc0ca1fb5]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727
+       * tcptls: Fixed a white space error.
 
-2017-08-17 16:46 +0000 [b88c3a4209]  Sungtae Kim <pchero21@gmail.com>
+         ASTERISK-26606
 
-       * app_queue: Fix initial hold time queue statistic
+         Change-Id: I81a7268ef7ba012d4d80d44c70b6276d48e397fa
 
-         Fixed to use correct initial value and fixed to use the
-         correct queue info to check the first value.
+2017-09-18 10:00 +0000 [99a08eb7ab]  Alexander Traud <pabstraud@compuserve.com>
 
-         ASTERISK-27204
+       * res_srtp: lower log level of auth failures
 
-         Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73
+         Previously, sRTP authentication failures were reported on log level WARNING.
+         When such failures happen, each RT(C)P packet is affected, spamming the log.
+         Now, those failures are reported at log level VERBOSE 2. Furthermore, the
+         amount is further reduced (previously all two seconds, now all three seconds).
+         Additionally, the new log entry informs whether media (RTP) or statistics (RTCP)
+         are affected.
 
-2017-08-21 04:28 +0000 [8e99969000]  Torrey Searle <torrey@voxbone.com>
+         ASTERISK-16898 #close
 
-       * res/res_pjsip_session: allow SDP answer to be regenerated
+         Change-Id: I6c98d46b711f56e08655abeb01c951ab8e8d7fa0
 
-         If an SDP answer hasn't been sent yet, it's legal to change it.
-         This is required for PJSIP_DTMF_MODE to work correctly, and can
-         also have use in the future for updating codecs too.
+2017-09-13 03:46 +0000 [f1eb36ea51]  alex <alexandr.revin@gmail.com>
 
-         ASTERISK-27209 #close
+       * cdr_mysql.c: Apply cdrzone to start and answer
 
-         Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1
+         Change-Id: I7de0a5adc89824a5f2b696fc22c80fc22dff36b0
 
-2017-08-20 08:15 +0000 [4faf77feec]  Michael Kuron <m.kuron@gmx.de>
+2017-08-25 17:01 +0000 [6d4b801c83]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_xmpp: fix inverted return code check in OAuth
+       * AST-2017-008: Improve RTP and RTCP packet processing.
 
-         fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon
-         success and -1 if the function is not available.
-         This commit inverts the return code check so that an error is printed if the
-         module is not loaded and not if it is loaded.
+         Validate RTCP packets before processing them.
 
-         ASTERISK-27207 #close
+         * Validate that the received packet is of a minimum length and apply the
+         RFC3550 RTCP packet validation checks.
 
-         Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb
+         * Fixed potentially reading garbage beyond the received RTCP record data.
 
-2017-08-17 12:00 +0000 [a6251ec373]  Sean Bright <sean.bright@gmail.com>
+         * Fixed rtp->themssrc only being set once when the remote could change
+         the SSRC.  We would effectively stop handling the RTCP statistic records.
 
-       * res_calendar_icalendar: Properly handle recurring events
+         * Fixed rtp->themssrc to not treat a zero value as special by adding
+         rtp->themssrc_valid to indicate if rtp->themssrc is available.
 
-         When looking for recurring events, use the correct end time based on the
-         configured 'timeframe.'
+         ASTERISK-27274
 
-         ASTERISK-27174 #close
-         Reported by: Mark Thompson
+         Make strict RTP learning more flexible.
 
-         Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef
+         Direct media can cause strict RTP to attempt to learn a remote address
+         again before it has had a chance to learn the remote address the first
+         time.  Because of the rapid relearn requests, strict RTP could latch onto
+         the first remote address and fail to latch onto the direct media remote
+         address.  As a result, you have one way audio until the call is placed on
+         and off hold.
 
-2017-08-16 15:43 +0000 [572b5307e0]  George Joseph <gjoseph@digium.com>
+         The new algorithm learns remote addresses for a set time (1.5 seconds)
+         before locking the remote address.  In addition, we must see a configured
+         number of remote packets from the same address in a row before switching.
 
-       * Fix downloader not working with curl
+         * Fixed strict RTP learning from always accepting the first new address
+         packet as the new stream.
 
-         The codec/dpma downloader wasn't handling curl correctly.  The logic
-         that transforms makeopts into a bash-sourceable file wasn't
-         handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was
-         looking for an 'or' command.
+         * Fixed strict RTP to initialize the expected sequence number with the
+         last received sequence number instead of the last transmitted sequence
+         number.
 
-         That logic has been eliminated.  Instead of trying to transform
-         and source makeopts, the downloader now calls a make scriptlet
-         to print the value of a specific variable.  This way, make handles
-         the ors (or any other make construct that happens to creep into
-         that file).
+         * Fixed the predicted next sequence number calculation in
+         rtp_learning_rtp_seq_update() to handle overflow.
 
-         ASTERISK-27202
-         Reported by: Sean McCord
+         ASTERISK-27252
 
-         Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99
+         Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c
 
-2017-08-15 15:15 +0000 [8594f73a81]  Richard Mudgett <rmudgett@digium.com>
+2017-09-13 14:14 +0000 [5075cc8eed]  Sean Bright <sean.bright@gmail.com>
 
-       * configure: Check cache for valid pjproject tarball before downloading.
+       * res_calendar: On reload, update all configuration
 
-         On a fresh Asterisk source directory, the bundled pjproject tarball is
-         unconditionally downloaded even if the tarball is already in a specified
-         cache directory.
+         This changes the behavior of res_calendar to drop all existing calendars
+         and re-create them whenever a reload is done. The Calendar API provides
+         no way for configuration information to be pushed down to calendar
+         'techs' so updated settings would not take affect until a module
+         unload/load was done or Asterisk was restarted.
 
-         * Made check if the pjproject tarball is valid in the cache directory
-         before downloading the tarball on a fresh source directory.
+         Asterisk 15+ already has a configuration option 'fetch_again_at_reload'
+         that performs a similar function.
 
-         Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5
+         Also fix a tiny memory leak in res_calendar_caldav while we're at it.
 
-2017-08-15 11:14 +0000 [d08342b0cb]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-25524 #close
+         Reported by: Jesper
 
-       * res_pjsip: Fix prune_on_boot to remove only contacts for the host.
+         Change-Id: Ib0f8057642e9d471960f1a79fd42e5a3ce587d3b
 
-         * Check that the contact's reg_server matches the host's name before
-         deleting any prune_on_boot contacts.  We don't want to delete reliable
-         transport contacts made with other servers if the ps_contacts database
-         table is shared with other servers.
+2017-09-13 16:23 +0000 [63900374fa]  George Joseph <gjoseph@digium.com>
 
-         Thanks to Ross Beer for pointing out that the original prune logic would
-         delete reliable transport contacts from other servers.
+       * res_pjsip:  Filter out non SIP(S) requests
 
-         ASTERISK-27147
+         Incoming requests with non sip(s) URIs in the Request, To, From
+         or Contact URIs are now rejected with
+         PJSIP_SC_UNSUPPORTED_URI_SCHEME (416).  This is performed in
+         pjsip_message_filter (formerly pjsip_message_ip_updater) and is
+         done at pjproject's "TRANSPORT" layer before a request can even
+         reach the distributor.
 
-         Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0
+         URIs read by res_pjsip_outbound_publish from pjsip.conf are now
+         also checked for both length and sip(s) scheme.  Those URIs read
+         by outbound registration and aor were already being checked for
+         scheme but their error messages needed to be updated to include
+         scheme failure as well as length failure.
 
-2017-08-04 09:25 +0000 [54e3ac402f]  Andrey Egorov <andr06@gmail.com>
+         Change-Id: Ibb2f9f1d2dc7549da562af4cbd9156c44ffdd460
 
-       * res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif
+2017-09-13 14:08 +0000 [db785ddb92]  Sean Bright <sean.bright@gmail.com>
 
-         Add ability to use tokens instead of passwords according to Google OAuth 2.0
-         protocol.
+       * res_calendar: Various fixes
 
-         ASTERISK-27169
-         Reported by: Andrey Egorov
-         Tested by: Andrey Egorov
+         * The way that we were looking at XML elements for CalDAV was extremely
+           fragile, so use SAX2 for increased robustness.
 
-         Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db
+         * Don't complain about a 'channel' not be specified if autoreminder is
+           not set. Assume that if 'channel' is not set, we don't want to be
+           notified.
 
-2017-08-10 14:18 +0000 [bac3e8c08b]  Richard Mudgett <rmudgett@digium.com>
+         * Fix some truncated CLI output in 'calendar show calendar' and make the
+           'Autoreminder' description a bit more clear
 
-       * STUN/netsock2: Fix some valgrind uninitialized memory findings.
+         ASTERISK-24588 #close
+         Reported by: Stefan Gofferje
 
-         * netsock2.c: Test the addr->len member first as it may be the only member
-         initialized in the struct.
+         ASTERISK-25523 #close
+         Reported by: Jesper
 
-         * stun.c:ast_stun_handle_packet(): The combinded[] local array could get
-         used uninitialized by ast_stun_request().  The uninitialized string gets
-         copied to another location and could overflow the destination memory
-         buffer.
+         Change-Id: I200d11afca6a47e7d97888f286977e2e69874b2c
 
-         These valgrind findings were found for ASTERISK_27150 but are not
-         necessarily a fix for the issue.
+2017-09-13 09:38 +0000 [0688f61a01]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57
+       * chan_rtp: Use μ-law by default instead of signed linear
 
-2017-08-02 18:44 +0000 [1cf2c79f37]  Richard Mudgett <rmudgett@digium.com>
+         Multicast/Unicast RTP do not use SDP so we need to use a format that
+         cleanly maps to one of the static RTP payload types. Without this
+         change, an Originate to a Multicast or Unicast channel without a format
+         specified would produce no audio on the receiving device.
 
-       * res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown.
+         ASTERISK-21399 #close
+         Reported by: Tzafrir Cohen
 
-         The fix for the issue is broken up into three parts.
+         Change-Id: I97e332b566e85da04b0004b9b0daae746cfca0e3
 
-         This is part three which handles the client side of REGISTER requests.
-         The registered contact may no longer be valid on the server when the
-         transport used is reliable and the connection is broken.
+2017-09-11 05:46 +0000 [ed2a4ee81e]  George Joseph <gjoseph@digium.com>
 
-         * Re-REGISTER our contact if the reliable transport is broken after
-         registration completes.  We attempt to re-REGISTER immediately to minimize
-         the time we are unreachable.  Time may have already passed between the
-         connection being broken and the loss being detected.
+       * res_pjsip:  Add handling for incoming unsolicited MWI NOTIFY
 
-         * Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's
-         are still correct if an allocation failure happens.
+         A new endpoint parameter "incoming_mwi_mailbox" allows Asterisk to
+         receive unsolicited MWI NOTIFY requests and make them available to
+         other modules via the stasis message bus.
 
-         ASTERISK-27147
+         res_pjsip_pubsub has a new handler "pubsub_on_rx_mwi_notify_request"
+         that parses a simple-message-summary body and, if
+         endpoint->incoming_mwi_account is set, calls ast_publish_mwi_state
+         with the voice-message counts from the message.
 
-         Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83
+         Change-Id: I08bae3d16e77af48fcccc2c936acce8fc0ef0f3c
 
-2017-07-31 14:21 +0000 [07d026b4cd]  Richard Mudgett <rmudgett@digium.com>
+2017-09-08 21:41 +0000 [044674c0cd]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip: Remove ephemeral registered contacts on transport shutdown.
+       * res_rtp_asterisk.c: Add doxygen to RTCP payload types.
 
-         The fix for the issue is broken up into three parts.
+         Change-Id: I3f20ce428777cc4ce9c13b2f808d29ff8c873998
 
-         This is part two which handles the server side of REGISTER requests when
-         rewrite_contact is enabled.  Any registered reliable transport contact
-         becomes invalid when the transport connection becomes disconnected.
+2017-09-11 05:52 +0000 [5ff2d06aa6]  George Joseph <gjoseph@digium.com>
 
-         * Monitor the rewrite_contact's reliable transport REGISTER contact for
-         shutdown.  If it is shutdown then the contact must be removed because it
-         is no longer valid.  Otherwise, when the client attempts to re-REGISTER it
-         may be blocked because the invalid contact is there.  Also if we try to
-         send a call to the endpoint using the invalid contact then the endpoint is
-         not likely to see the request.  The endpoint either won't be listening on
-         that port for new connections or a NAT/firewall will block it.
+       * alembic:  Fix typo in add_auto_info_to_endpoint_dtmf_mode
 
-         * Prune any rewrite_contact's registered reliable transport contacts on
-         boot.  The reliable transport no longer exists so the contact is invalid.
+         The downgrade function was missing "_v2" at the end of the
+         alter column type.
 
-         * Websockets always rewrite the REGISTER contact address and the transport
-         needs to be monitored for shutdown.
+         Change-Id: Iaa9bcef48d6f3590ce07a61342d8e66f00263d8e
 
-         * Made the websocket transport set a unique name since that is what we use
-         as the ao2 container key.  Otherwise, we would not know which transport we
-         find when one of them shuts down.  The names are also used for PJPROJECT
-         debug logging.
+2017-09-10 06:17 +0000 [babb617f20]  Walter Doekes <walter+asterisk@wjd.nu>
 
-         * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state
-         event.  Now the global keep_alive_interval option, initially idle shutdown
-         timer, and the server REGISTER contact monitor can work on wetsocket
-         transports.
+       * res/res_pjsip: Fix localnet checks in pjsip, part 2.
 
-         * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction.
-         Now initially idle websockets will automatically shutdown.
+         In 45744fc53, I mistakenly broke SDP media address rewriting by
+         misinterpreting which address was checked in the localnet comparison.
 
-         ASTERISK-27147
+         Instead of checking the remote peer address to decide whether we need
+         media address rewriting, we check our local media address: if it's
+         local, then we rewrite. This feels awkward, but works and even made
+         directmedia work properly if you set local_net. (For the record: for
+         local peers, the SDP media rewrite code is not called, so the
+         comparison does no harm there.)
 
-         Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4
+         ASTERISK-27248 #close
 
-2017-07-28 18:26 +0000 [ca261d4b70]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I566be1c33f4d0a689567d451ed46bab9c3861d4f
 
-       * res_pjsip: PJSIP Transport state monitor refactor.
+2017-09-05 11:13 +0000 [ad606844be]  Florian Floimair <f.floimair@commend.com>
 
-         The fix for the issue is broken up into three parts.
+       * alembic: Add support for MS-SQL
 
-         This is part one which refactors the transport state monitor code to allow
-         more modules to be able to monitor transports.
+         MS-SQL has no native Enum-type support and therefore
+         needs to work with constraints.
+         Since these constraints need unique names the suggested approach
+         referenced in the following alembic documentation has been applied:
+         http://bit.ly/2x9r8pb
 
-         * Pull the management of PJPROJECT's transport state callback code from
-         res_pjsip_transport_management.c into res_pjsip.  Now other modules can
-         dynamically add and remove themselves from transport monitoring without
-         worrying about breaking PJPROJECT's callback chain.
+         ASTERISK-27255 #close
 
-         * Add the ability for other modules to get a callback whenever a specific
-         transport is shutdown.
+         Change-Id: I4a399ba3eed41a33ce8cb294968ad340221580ee
 
-         ASTERISK-27147
+2017-09-05 07:31 +0000 [2aefc6e5fe]  Jacek Konieczny <j.konieczny@eggsoft.pl>
 
-         Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912
+       * func_cdr: honour 'u' flag on dummy channel
 
-2017-07-27 15:36 +0000 [162f6ab845]  Richard Mudgett <rmudgett@digium.com>
+         Fixes ${CDR(...,u)} when used in cdr_custom.conf
 
-       * res_pjsip_transport_management.c: Rename some variables.
+         ASTERISK-27165 #close
 
-         * Use monitored instead of the misleading keepalive name.
+         Change-Id: Ia4e0b6ba93e03d27886354c279737790e2cd6a83
 
-         Change-Id: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6
+2017-09-06 16:05 +0000 [c0d4f1880e]  Scott Griepentrog <scott@griepentrog.com>
 
-2017-08-10 09:09 +0000 [22575b6342]  Scott Griepentrog <scott@griepentrog.com>
+       * chan_sip: when getting sip pvt return failure if not found
 
-       * res_pjsip_messaging: IPv6 receive address needs brackets
+         In handle_request_invite, when processing a pickup, a call
+         is made to get_sip_pvt_from_replaces to locate the pvt for
+         the subscription. The pvt is assumed to be valid when zero
+         is returned indicating no error, and is dereferenced which
+         can cause a crash if it was not found.
 
-         When handling an incoming SIP MESSAGE, PJSIP
-         attaches the IP address that the message was
-         received from to the message in the variable
-         PJSIP_RECVADDR.  When the IP address is IPv6
-         the :PORT appended results in an unparseable
-         mess. By using an additional bit flag on the
-         pj_sockaddr_print call, the conventional use
-         of brackets around the address is achieved.
+         This change checks the not found case and returns -1 which
+         allows the calling code to fail appropriately.
 
-         ASTERISK-27193 #close
+         ASTERISK-27217 #close
+         Reported-by: Bryan Walters
 
-         Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9
+         Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612
 
-2017-08-09 08:01 +0000 [363d61ef58]  George Joseph <gjoseph@digium.com>
+2017-09-06 10:50 +0000 [e4797b2cbd]  Sean Bright <sean.bright@gmail.com>
 
-       * configure:  Add --with-download-cache option
+       * app_waitforsilence: Cleanup & don't treat missing frames as 'noise'
 
-         To make building without an internet connection easier, a new
-         ./configure option '--with-download-cache' was added that sets
-         the cache for externals (like pjproject, the codecs and the DPMA),
-         AND the sounds files.  It can also be specified as an environment
-         variable named "AST_DOWNLOAD_CACHE".  The existing
-         '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and
-         '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable
-         remain and if specified, will override '--with-downloads-cache'.
+         * WaitForSilence completes successfully if it receives no media in the
+           specified timeout, but when acting as WaitForNoise that logic needs
+           to be reversed.
 
-         Change-Id: I5c3cf15ee61e8fe191b52732303e969854f8d861
+         * Use standard argument parsing macros and add some error checking for
+           invalid values.
 
-2017-07-26 09:17 +0000 [3608f96ea3]  Torrey Searle <torrey@voxbone.com>
+         * The documentation indicated that the first argument to both
+           WaitForSilence and WaitForNoise was required when it was not. Update
+           the documentation to reflect that.
 
-       * res_rtp_asterisk: enable rtcp & QOS stats on native bridge
+         * Wrap up some behavior in structs to avoid boolean checks all over the
+           place.
 
-         Asterisk wasn't generating or forwarding RTCP packets when native
-         bridge was activated.  Also the stats weren't available via
-         CHANNEL(qos). Now the RTCP stats are always calculated.
+         ASTERISK-24066 #close
+         Reported by: M vd S
 
-         ASTERISK-27158 #close
+         Change-Id: I01d40adc5b63342bb5018a1bea2081a0aa191ef9
 
-         Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b
+2017-09-01 05:17 +0000 [186ef1a657]  George Joseph <gjoseph@digium.com>
 
-2017-07-26 11:39 +0000 [0de7312fac]  Joshua Colp <jcolp@digium.com>
+       * stasis/control:  Fix possible deadlock with swap channel
 
-       * res_pjsip_session: Release media resources on session end quicker.
+         If an error occurs during a bridge impart it's possible that
+         the "bridge_after" callback might try to run before
+         control_swap_channel_in_bridge has been signalled to continue.
+         Since control_swap_channel_in_bridge is holding the control lock
+         and the callback needs it, a deadlock will occur.
 
-         A change was made long ago where the session was kept around
-         until the underlying INVITE session had been destroyed. This
-         had the side effect of also keeping the underlying media resources
-         around for this time as well.
+         * control_swap_channel_in_bridge now only holds the control
+           lock while it's actually modifying the control structure and
+           releases it while the bridge impart is running.
+         * bridge_after_cb is now tolerant of impart failures.
 
-         This change ensures that when we know the session is ending we
-         release the media resources immediately.
+         Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3
 
-         ASTERISK-27110
+2017-09-06 05:23 +0000 [597d1f8951]  Vitezslav Novy <a1@vnovy.net>
 
-         Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82
+       * chan_sip: Do not change IP address in SDP origin line (o=) in SIP reINVITE
 
-2017-08-02 16:08 +0000 [905c4ca3dc]  Corey Farrell <git@cfware.com>
+         If directmedia=yes is configured, when call is answered, Asterisk sends reINVITE
+         to both parties to set up media path directly between the endpoints.
+         In this reINVITE msg SDP origin line (o=) contains IP address of endpoint
+         instead of IP of asterisk. This behavior violates RFC3264, sec 8:
+         "When issuing an offer that modifies the session,
+         the "o=" line of the new SDP MUST be identical to that in the
+         previous SDP, except that the version in the origin field MUST
+         increment by one from the previous SDP."
+         This patch assures IP address of Asterisk is always sent in
+         SDP origin line.
 
-       * app_privacy: remove unused header asterisk/image.h
+         ASTERISK-17540
+         Reported by:  saghul
 
-         Change-Id: I56ed530633a642633b18383821069e806c92ae82
+         Change-Id: I533a047490c43dcff32eeca8378b2ba02345b64e
 
-2017-08-03 13:13 +0000 [38dbc708e7]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+2017-09-06 07:54 +0000 [15ddc9acb3]  George Joseph <gjoseph@digium.com>
 
-       * Support GMIME 3.0
+       * alembic: Fix enum creation for dtls_fingerprint
 
-         Support building the Asterisk httpd with version 3.0 of gmime as
-         well as earlier versions of that library.
+         Change-Id: Ic061c5066a146616a68376881c7e4cf6d6e7e7db
 
-         ASTERISK-27173
+2017-09-05 11:08 +0000 [2370469645]  Florian Floimair <f.floimair@commend.com>
 
-         Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f
+       * alembic: fix erroneous commit for add_prune_on_boot
 
-2017-07-28 07:53 +0000 [c4f201cd73]  Torrey Searle <torrey@voxbone.com>
+         Added include for postgresql ENUM type and
+         redefined values in the same way as in the
+         other migration scripts.
 
-       * res_rtp_asterisk:  Make P2P bridge Asymmetric codec aware
+         ASTERISK-27254 #close
 
-         Introduce a new property to rtp-engine to make it aware of
-         the desire for assymetric codecs or not.  If asymmetric codecs
-         is not allowed, the bridge will compare read/write formats
-         and shut down the p2p bridge if needed
+         Change-Id: Id667304cdf3891b1c2f7d35fab3e2a84026159fa
 
-         ASTERISK-26745 #close
+2017-09-06 03:15 +0000 [13aa1241c3]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I0d9c83e5356df81661e58d40a8db565833501a6f
+       * res_srtp: Add support for libsrtp2.1.
 
-2017-08-03 21:30 +0000 [84b6a5efd7]  Corey Farrell <git@cfware.com>
+         Asterisk is able to use libSRTP 2.0.x. However since libSRTP 2.1.x, the macro
+         SRTP_AES_ICM got renamed to SRTP_AES_ICM_128. Beside to still compile with
+         previous versions of libSRTP, this change allows libSRTP 2.1.x as well.
 
-       * Correct some leaks in unit tests.
+         ASTERISK-27253 #close
 
-         * chan_sip: channel in test_sip_rtpqos_1.
-         * test_config: config hook, config info and global config holder.
-         * test_core_format: format in format_attribute_set_without_interface.
-         * test_stream: unneeded frame duplication.
-         * test_taskprocessor: task_data.
+         Change-Id: I2e6eb3c3bc844fee8a624060a2eb6f182dc70315
 
-         Change-Id: I94d364d195cf3b3b5de2bf3ad565343275c7ad31
+2017-09-05 09:35 +0000 [598a18ffee]  Ben Ford <bford@digium.com>
 
-2017-07-26 17:49 +0000 [f9a823e9dc]  Richard Mudgett <rmudgett@digium.com>
+       * chan_pjsip: Suppress frame warnings.
 
-       * res_pjsip_transport_websocket.c: Fix serializer ref leak.
+         When rtp_keepalive is on for a PJSIP endpoint dialing to another
+         Asterisk instance also using PJSIP, Asterisk will continue to print
+         warning messages about not being able to send frames of a certain
+         type. This suppresses that warning message.
 
-         Change-Id: Ib5a19bfd597f63d9021baeb645fc11153b3afa57
+         Change-Id: I0332a05519d7bda9cacfa26d433909ff1909be67
 
-2017-08-02 18:41 +0000 [631180a0c3]  Richard Mudgett <rmudgett@digium.com>
+2017-08-25 17:05 +0000 [6c922b3157]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_outbound_registration.c: Misc fixes.
+       * res_rtp_asterisk.c: Check RTP packet version earlier.
 
-         * Remove unnecessary CMP_STOP.
+         Change-Id: Ic6493a7d79683f3e5845dff1cee49445fd5a0adf
 
-         * In handle_client_registration() use DEBUG_ATLEAST() to only do work
-         needed for the debug log message when the debug log message is needed.
+2017-09-05 10:05 +0000 [3f7d0b63fc]  Sean Bright <sean.bright@gmail.com>
 
-         * In sip_outbound_registration_state_destroy() check state->registration
-         for NULL.
+       * formats: Restore previous fread() behavior
 
-         Change-Id: I656d0fa11dda0b00048103efb1558e67a426fd80
+         Some formats are able to handle short reads while others are not, so
+         restore the previous behavior for the format modules so that we don't
+         have spurious errors when playing back files.
 
-2017-07-31 20:20 +0000 [7b84c6693e]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-27232 #close
+         Reported by: Jens T.
 
-       * res_pjsip_nat.c: Remove unnecessary CMP_STOP.
+         Change-Id: Iab7f52b25a394f277566c8a2a4b15a692280a300
 
-         Change-Id: I6279b0d723bc3b75b8d65e81e02da9ea9bc0c3da
+2017-09-05 09:16 +0000 [45744fc53d]  Walter Doekes <walter+asterisk@wjd.nu>
 
-2017-07-31 14:20 +0000 [a32614a2a8]  Richard Mudgett <rmudgett@digium.com>
+       * res/res_pjsip: Standardize/fix localnet checks across pjsip.
 
-       * res_pjsip_registrar.c: Remove unnecessary CMP_STOP.
+         In 2dee95cc (ASTERISK-27024) and 776ffd77 (ASTERISK-26879) there was
+         confusion about whether the transport_state->localnet ACL has ALLOW or
+         DENY semantics.
 
-         Most uses of CMP_STOP are superfluous and are only respected when
-         OBJ_MULTIPLE is used to search the container.
+         For the record: the localnet has DENY semantics, meaning that "not in
+         the list" means ALLOW, and the local nets are in the list.
 
-         Change-Id: I20571a202ec0aa1098bb2749eeba18de7ca110b8
+         Therefore, checks like this look wrong, but are right:
 
-2017-08-03 11:30 +0000 [d066758a4c]  Corey Farrell <git@cfware.com>
+             /* See if where we are sending this request is local or not, and if
+                not that we can get a Contact URI to modify */
+             if (ast_apply_ha(transport_state->localnet, &addr) != AST_SENSE_ALLOW) {
+                 ast_debug(5, "Request is being sent to local address, "
+                              "skipping NAT manipulation\n");
 
-       * Fix compile error for old versions of GCC.
+         (In the list == localnet == DENY == skip NAT manipulation.)
 
-         Use -Wno-format-truncation only if supported by compiler.
+         And conversely, other checks that looked right, were wrong.
 
-         ASTERISK-27171 #close
+         This change adds two macro's to reduce the confusion and uses those
+         instead:
 
-         Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6
+             ast_sip_transport_is_nonlocal(transport_state, addr)
+             ast_sip_transport_is_local(transport_state, addr)
 
-2017-08-01 15:57 +0000 [ed1bce956e]  George Joseph <gjoseph@digium.com>
+         ASTERISK-27248 #close
 
-       * Revert "res_pjsip_session: Release media resources on session end quicker."
+         Change-Id: Ie7767519eb5a822c4848e531a53c0fd054fae934
 
-         This reverts commit 98709642d640b490f327d220fdcdea6d45fd65d7.
+2017-09-05 05:23 +0000 [786c4791f9]  George Joseph <gjoseph@digium.com>
 
-         See the 15 branch review.
+       * res_pjsip_t38:  Make t38_reinvite_response_cb tolerant of NULL channel
 
-         Change-Id: I8476b3cdacaad5157fa36b6247d0e4cdf1e8d5c6
+         t38_reinvite_response_cb can get called by res_pjsip_session's
+         session_inv_on_tsx_state_changed in situations where session->channel
+         is NULL.  If it is, the ast_log warning segfaults because it tries
+         to get the channel name from a NULL channel.
 
-2017-06-29 03:47 +0000 [9a09f7dd5d]  Niklas Larsson <niklas@tese.se>
+         * Check session->channel and print "unknown channel" when it's NULL.
 
-       * app_queue: Add priority to AMI QueueStatus
+         ASTERISK-27236
+         Reported by: Ross Beer
 
-         Add priority to callers in AMI QueueStatus response
+         Change-Id: I4326e288d36327f6c79ab52226d54905cdc87dc7
 
-         ASTERISK-27092 #close
+2017-09-01 16:17 +0000 [55f30c29fd]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199
+       * rtp_engine: Prevent possible double free with DTLS config
 
-2017-07-26 11:39 +0000 [3418d8d145]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-27225 #close
+         Reported by: Richard Kenner
 
-       * res_pjsip_session: Release media resources on session end quicker.
+         Change-Id: I097b81734ef730f8603c0b972909d212a3a5cf89
 
-         A change was made long ago where the session was kept around
-         until the underlying INVITE session had been destroyed. This
-         had the side effect of also keeping the underlying media resources
-         around for this time as well.
+2017-09-01 13:15 +0000 [f36db2dbdc]  Sean Bright <sean.bright@gmail.com>
 
-         This change ensures that when we know the session is ending we
-         release the media resources immediately.
+       * chan_ooh323: Fix confusing indentation warning
 
-         ASTERISK-27110
+         ASTERISK-27177 #close
+         Reported by: Tzafrir Cohen
 
-         Change-Id: I3c6a82fe7d2c50b9dc9197cb12ef22f20d337501
+         Change-Id: I40311c404edb2302a7543ad5ca7a06b2a38f2d97
 
-2017-07-26 08:48 +0000 [4d318cac68]  Sean Bright <sean.bright@gmail.com>
+2017-09-01 09:51 +0000 [5f4863d4f9]  Sean Bright <sean.bright@gmail.com>
 
-       * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation
+       * app_directory: Handle a NULL mailbox without crashing
 
-         This change fixes PIDF content generation when the underlying device
-         state is considered in use. Previously it was incorrectly marked
-         as closed meaning they were offline/unavailable. The code now
-         correctly marks them as open.
+         ASTERISK-27241 #close
+         Reported by: David Moore
 
-         Additionally:
+         Change-Id: Ibbbca85517b04c315406ebfe3b6f7e0763daedc6
 
-           * Generate an XML element for our activity instead of a using a text
-             node.
+2017-07-24 10:48 +0000 [990b017668]  George Joseph <gjoseph@digium.com>
 
-           * Consider every extension state other than "unavailable" to be 'open'
-             status.
+       * pjsip_message_ip_updater:  Fix issue handling "tel" URIs
 
-           * Update the XML namespaces and structure to reflect those
-             documented in RFC 4480
+         sanitize_tdata was assuming all URIs were SIP URIs so when a non
+         SIP uri was in the From, To or Contact headers, the unconditional
+         cast of a non-pjsip_sip_uri structure to pjsip_sip_uri caused
+         a segfault when trying to access uri->other_param.
 
-           * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the
-             "in use" activity. This change results in eyeBeam using the
-             appropriate icon for the watched user.
+         * Added PJSIP_URI_SCHEME_IS_SIP(uri) || PJSIP_URI_SCHEME_IS_SIPS(uri)
+           checks before attempting to cast or use the returned uri.
 
-         This was tested on eyeBeam 1.5.20.2 build 59030 on Windows.
+         ASTERISK-27152
+         Reported-by: Ross Beer
 
-         ASTERISK-26659 #close
-         Reported by: Abraham Liebsch
-         patches:
-           ASTERISK-26659.diff submitted by snuffy (license 5024)
+         Change-Id: Id380df790e6622c8058a96035f8b8f4aa0b8551f
 
-         Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810
+2017-07-01 19:24 +0000 [04ee3eb774]  Corey Farrell <git@cfware.com>
 
-2017-07-23 18:34 +0000 [114602f434]  Joshua Colp <jcolp@digium.com>
+       * AST-2017-006: Fix app_minivm application MinivmNotify command injection
 
-       * res_pjsip: Add support for dnsmgr to external_media_address.
+         An admin can configure app_minivm with an externnotify program to be run
+         when a voicemail is received.  The app_minivm application MinivmNotify
+         uses ast_safe_system() for this purpose which is vulnerable to command
+         injection since the Caller-ID name and number values given to externnotify
+         can come from an external untrusted source.
 
-         The "external_media_address" option on transports is now
-         resolved using dnsmgr. This allows it to be automatically
-         refreshed regularly if refreshes are enabled in dnsmgr.
-         If the system is using a dynamic IP address a dynamic DNS
-         hostname can be provided to keep the IP address up to
-         date.
+         * Add ast_safe_execvp() function.  This gives modules the ability to run
+         external commands with greater safety compared to ast_safe_system().
+         Specifically when some parameters are filled by untrusted sources the new
+         function does not allow malicious input to break argument encoding.  This
+         may be of particular concern where CALLERID(name) or CALLERID(num) may be
+         used as a parameter to a script run by ast_safe_system() which could
+         potentially allow arbitrary command execution.
 
-         Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2
+         * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp()
+         instead of ast_safe_system() to avoid command injection.
 
-2017-07-27 20:58 +0000 [0f49e6ee2e]  Corey Farrell <git@cfware.com>
+         * Document code injection potential from untrusted data sources for other
+         shell commands that are under user control.
 
-       * Fix compiler warnings on Fedora 26 / GCC 7.
+         ASTERISK-27103
 
-         GCC 7 has added capability to produce warnings, this fixes most of those
-         warnings.  The specific warnings are disabled in a few places:
+         Change-Id: I7552472247a84cde24e1358aaf64af160107aef1
 
-         * app_voicemail.c: truncation of paths more than 4096 chars in many places.
-         * chan_mgcp.c: callid truncated to 80 chars.
-         * cdr.c: two userfields are combined to cdr copy, fix would break ABI.
-         * tcptls.c: ignore use of deprecated method SSLv3_client_method().
+2017-05-22 10:36 +0000 [1a022285dd]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-27156 #close
+       * res_rtp_asterisk: Only learn a new source in learn state.
 
-         Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
+         This change moves the logic which learns a new source address
+         for RTP so it only occurs in the learning state. The learning
+         state is entered on initial allocation of RTP or if we are
+         told that the remote address for the media has changed. While
+         in the learning state if we continue to receive media from
+         the original source we restart the learning process. It is
+         only once we receive a sufficient number of RTP packets from
+         the new source that we will switch to it. Once this is done
+         the closed state is entered where all packets that do not
+         originate from the expected source are dropped.
 
-2017-07-27 06:35 +0000 [0d58fefa30]  George Joseph <gjoseph@digium.com>
+         The learning process has also been improved to take into
+         account the time between received packets so a flood of them
+         while in the learning state does not cause media to be switched.
 
-       * bundled_pjproject:  Improve SSL/TLS error handling
+         Finally RTCP now drops packets which are not for the learned
+         SSRC if strict RTP is enabled.
 
-         OpenSSL has 2 levels or error processing.  It's possible for the
-         top layer to return SSL_ERROR_SYSCALL but the lower layer return
-         no error, in which case processing should continue.  Only the top
-         layer was being examined though so connections were being torn
-         down when they didn't need to be.  This patch adds the examination
-         of the lower level codes, and if they return no errors, allows
-         processing to continue.
+         ASTERISK-27013
 
-         ASTERISK-27001
-         Reported-by: Ian Gilmour
-         patches:
-               pjproject-2.6.patch submitted by Ian Gilmour (license 6889)
+         Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c
 
-         Updated-by: George Joseph and Sauw Ming (Teluu)
+2017-08-29 14:22 +0000 [4aaccb7795]  Richard Mudgett <rmudgett@digium.com>
 
-         Merged to upstream pjproject on 7/27/2017 (commit 5631)
+       * bridge_native_rtp.c: Fixup native_rtp_framehook()
 
-         Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2
+         * Fix framehook to test frame type for control frame.
+         * Made framehook exit early if frame type is not a control frame.
+         * Eliminated RAII_VAR in framehook.
+         * Use switch instead of else-if ladder for control frame handling.
 
-2017-06-26 07:52 +0000 [423d01cf16]  Torrey Searle <torrey@voxbone.com>
+         Change-Id: Ia555fc3600bd85470e3c0141147dbe3ad07c1d18
 
-       * chan_pjsip: add a new function PJSIP_DTMF_MODE
+2017-08-29 09:26 +0000 [d2ace23248]  Sean Bright <sean.bright@gmail.com>
 
-         This function is a replica of SIPDtmfMode, allowing the DTMF mode of a
-         PJSIP call to be modified on a per-call basis
+       * confbridge: Handle user hangup during name recording
 
-         ASTERISK-27085 #close
+         This prevents orphaned CBAnn channels from getting stuck in the bridge.
 
-         Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612
+         ASTERISK-26994 #close
+         Reported by: James Terhune
 
-2017-07-25 15:17 +0000 [c16000f201]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I5e43e832a9507ec3f2c59752cd900b41dab80457
 
-       * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours
+2017-08-25 21:06 +0000 [a45af32983]  Andre Nazario <samoied@users.sourceforge.net>
 
-         Change-Id: Ia578ede1a55b21014581793992a429441903278b
+       * chan_pjsip: Add tag info in CHANNEL function
 
-2017-07-20 08:08 +0000 [708cdc0b8e]  Sergej Kasumovic <sergej@bicomsystems.com>
+         Create local_tag and remote_tag in CHANNEL info to get tag from From and
+         To headers of a SIP dialog.
 
-       * res_stasis_device_state: Unsubscribe should remove old subscriptions
+         ASTERISK-27220
 
-         Case scenario with Applications ARI:
+         Change-Id: I59b16c4b928896fcbde02ad88f0e98922b15d524
 
-         * Once you subscribe to deviceState with Applications REST API, it will be
-         added into subscription pool.
+2017-08-25 13:44 +0000 [9e6efcace5]  Sean Bright <sean.bright@gmail.com>
 
-         * When you unsubscribe it will remove from the device_state_subscription
-         hash table but not from the subscription pool.
+       * voicemail: Fix various abuses of mkstemp
 
-         * When you subscribe again, it will add it to pool again.
+         mkstemp() returns a unique filename, but appending an extension to that
+         filename does not guarantee uniqueness. Instead, use mkdtemp() and we
+         can put whatever extension we want on the files that we create inside
+         the directory.
 
-         * Now you will have two subscriptions and you will receive same event
-         twice.
+         In the case of app_minivm, we also now properly clean up any temporary
+         files that we create.
 
-         This fix should now remove deviceState subscription from pool and it
-         should fix unsubscribe on deviceState.
+         ASTERISK-20858 #close
+         Reported by: Walter Doekes
 
-         ASTERISK-27130 #close
+         Change-Id: I30ad04f0e115f0b11693ff678ba5184d8b938e43
 
-         Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4
+2017-08-25 12:20 +0000 [01b5913ce0]  Sean Bright <sean.bright@gmail.com>
 
-2017-07-24 13:30 +0000 [24bb5a8908]  Joshua Colp <jcolp@digium.com>
+       * app_record: Resolve some absolute vs. relative filename bugs
 
-       * core: Add VP9 passthrough support.
+         If the Record() application is called with a relative filename that
+         includes directories, we were not properly creating the intermediate
+         directories and Record() would fail.
 
-         This change adds VP9 as a known codec and creates a cached
-         "vp9" media format for use.
+         Secondarily, updated the documentation for RECORDED_FILE to mention
+         that it does not include a filename extension.
 
-         Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc
+         Finally, rewrote the '%d' functionality to be a bit more straight
+         forward and less noisy.
 
-2017-07-21 15:57 +0000 [07f8e45a90]  Matthew Fredrickson <creslin@digium.com>
+         ASTERISK-16777 #close
+         Reported by: klaus3000
 
-       * format.h: Fix a few minor errors in comments.
+         Change-Id: Ibc2640cba3a8c7f17d97b02f76b7608b1e7ffde2
 
-         A few minor problems were found in comments in format.h.  This patch fixes them.
+2017-08-23 10:01 +0000 [bf178a0f4f]  Florian Floimair <f.floimair@commend.com>
 
-         Change-Id: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94
+       * alembic: Add dtls_fingerprint column in ps_endpoints table
 
-2017-07-21 17:04 +0000 [7e9aa74daa]  Rusty Newton <rnewton@digium.com>
+         The ps_endpoints table was missing the dtls_fingerprint column
+         introduced with commit adba2a8d7fd.
 
-       * say.c: Fix file locations for second, seconds, minute, minutes files
+         ASTERISK-27168 #close
 
-         The seconds and minutes files have always existed in the base language
-         directory of the Core package. So say.c has always been calling the wrong
-         location (under digits/) for those two files and in the case of second and
-         minute they didn't exist in the Core packages at all.
+         Change-Id: I9cb5006f7f50718b5239919562773adabb334cfd
 
-         The 1.6 sounds release moves the second and minute files into Core from
-         Extra for the languages that already had them. A future release will include
-         the second and minute files for languages that didn't already have them.
+2016-02-28 19:05 +0000 [fff2f68616]  Matt Jordan <mjordan@digium.com>
 
-         This patch just changes all the target locations for second, seconds,
-         minute, and minutes that were under the digits subdir to be under the root of
-         sounds instead. Which is where the sounds will be for some languages after 1.6
-         sounds and for all languages after a future release.
+       * main/app: Only look to end of file if ':end' is specified, and not just ':'
 
-         ASTERISK-25810 #close
+         There is a little known feature in app_controlplayback that will cause the
+         specified offset to be used relative to the end of a file if a ':end' is
+         detected within the filename.
 
-         Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702
-         Reported-by: Nicolas Riendeau
+         This feature is pretty bad, but okay.
 
-2017-07-19 18:11 +0000 [7ff9d8785d]  Richard Mudgett <rmudgett@digium.com>
+         However, a bug exists in this code where a ':' detected in the filename
+         will cause the end pointer to be non-NULL, even if the full ':end' isn't
+         specified. This causes us to treat an unspecified offset (0) as being
+         "start playing from the end of the file", resulting in no file playback
+         occurring.
 
-       * app_voicemail.c: Allow mailbox entry on authentication retry prompt.
+         This patch fixes this bug by resetting the end pointer if ':end' is not
+         found in the filename.
 
-         The following testsuite voicemail tests were failing to re-enter the
-         mailbox after the first login attempt.
+         ASTERISK-23608 #close
+         Reported by: Jonathan White
 
-         tests/apps/voicemail/authenticate_invalid_mailbox
-         tests/apps/voicemail/authenticate_invalid_password
+         Change-Id: Ib4c7b1b45283e4effd622a970055c51146892f35
+         (cherry picked from commit 13efea24f7ce6ccc01d1a5a0603be2636d83a408)
 
-         The tests were noting the start of the vm-incorrect-mailbox prompt and
-         immediately sending the mailbox for the next login attempt.  Since the
-         invalid message playback had to complete before the digits were
-         recognized, the test passed for the wrong reason and added approximately
-         20 seconds to the test times.
+2017-08-24 09:42 +0000 [579d4593ac]  Sean Bright <sean.bright@gmail.com>
 
-         * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox
-         digits like the initial vm-login prompt so the tests are able to enter the
-         intended mailbox.
+       * app_queue: Evaluate realtime queues when running dialplan functions
 
-         Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8
+         ASTERISK-19103 #close
+         Reported by: Jim Van Meggelen
 
-2017-07-21 14:20 +0000 [4f93f75e7e]  Rusty Newton <rnewton@digium.com>
+         Change-Id: I4bd32a9d1fcebb8ac56bff0e084d4f53e31b692b
 
-       * Sounds: Update Makefile for Extra sounds 1.5.1 release
+2017-08-23 09:19 +0000 [0af145de2d]  Sean Bright <sean.bright@gmail.com>
 
-         Incrementing version for the Extra sounds release. 1.5.1 Extra sounds
-         removes two prompts that were moved into the Core packages in the 1.6 Core
-         sounds release.
+       * app_voicemail: Honor escape digits in "greeting only" mode
 
-         ASTERISK-27142 #close
+         ASTERISK-21241 #close
+         Reported by: Eelco Brolman
+         Patches:
+               Patch uploaded by Eelco Brolman (License 6442)
 
-         Change-Id: I82f017812b0ea9599e19dd4635afd55611f13ee7
+         Change-Id: Icbe39b5c82a49b46cf1d168dc17766f3d84f54fe
 
-2017-07-20 09:57 +0000 [cea4ce246d]  Sean Bright <sean.bright@gmail.com>
+2017-08-24 08:35 +0000 [d251a961ac]  Sean Bright <sean.bright@gmail.com>
 
-       * corosync: Fix corosync library name in configure.ac
+       * res_smdi: Clean up memory leak
 
-         Also add new corosync packages to install_prereq.
+         Change-Id: I1e33290929e1aa7c5b9cb513f8254f2884974de8
 
-         Reported by Travis Ryan in #asterisk-dev
+2017-08-11 11:40 +0000 [3f22b53349]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db
+       * bridge_softmix.c: Remove always true test.
 
-2017-07-18 15:04 +0000 [9a47dd7113]  Benjamin Keith Ford <bford@digium.com>
+         Change-Id: I26238df2ff0d0f6dfe95c3aa35da588f1ee71727
 
-       * pjsip: Increase maximum packet size.
+2017-08-17 16:46 +0000 [b88c3a4209]  Sungtae Kim <pchero21@gmail.com>
 
-         The maximum packet size for PJSIP has been increased to handle the
-         multiple streams being added for WebRTC.
+       * app_queue: Fix initial hold time queue statistic
 
-         Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3
+         Fixed to use correct initial value and fixed to use the
+         correct queue info to check the first value.
 
-2017-07-11 04:48 +0000 [1c3e7df26e]  Holger Hans Peter Freyther <holger@moiji-mobile.com>
+         ASTERISK-27204
 
-       * app_playback.c: Use the timezonename parameter
+         Change-Id: Ia9e36c828e566e1cc25c66f73307566e4acb8e73
 
-         In say_date_generic the timezonename parameter is passed but never
-         used. Fix it by passing it to the ast_localtime function.
+2017-08-21 04:28 +0000 [8e99969000]  Torrey Searle <torrey@voxbone.com>
 
-         ASTERISK-27124
+       * res/res_pjsip_session: allow SDP answer to be regenerated
 
-         Change-Id: I6afa98f9163190043244b9f3ba91eb1874d1b586
+         If an SDP answer hasn't been sent yet, it's legal to change it.
+         This is required for PJSIP_DTMF_MODE to work correctly, and can
+         also have use in the future for updating codecs too.
 
-2017-07-16 12:18 +0000 [51761b759d]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-27209 #close
 
-       * res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use.
+         Change-Id: Idbbfb7cb3f72fbd96c94d10d93540f69bd51e7a1
 
-         This change makes it so that if an RTCP packet is being sent
-         the RTP ICE component is used for sending if RTCP-MUX is in use.
+2017-08-20 08:15 +0000 [4faf77feec]  Michael Kuron <m.kuron@gmx.de>
 
-         ASTERISK-27133
+       * res_xmpp: fix inverted return code check in OAuth
 
-         Change-Id: I6200f611ede709602ee9b89501720c29545ed68b
+         fetch_access_token calls func_curl via ast_func_read. The latter returns 0 upon
+         success and -1 if the function is not available.
+         This commit inverts the return code check so that an error is printed if the
+         module is not loaded and not if it is loaded.
 
-2017-07-11 09:55 +0000 [a4c85309f0]  Torrey Searle <torrey@voxbone.com>
+         ASTERISK-27207 #close
 
-       * res/res_stasis_snoop: generate silence when audiohook returns null
+         Change-Id: I9ef903f80702d1218e8701f65a4e5e918e6548fb
 
-         Currently when rtp is paused, no packets are written to the
-         recorded audio file, causing the silence to be skipped and recording
-         not properly time aligned.  The read handler as been adapted to
-         return a silence frame of the correct size.
+2017-08-17 12:00 +0000 [a6251ec373]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-27128 #close
+       * res_calendar_icalendar: Properly handle recurring events
 
-         Change-Id: I2d7f60650457860b9c70907b14426756b058a844
+         When looking for recurring events, use the correct end time based on the
+         configured 'timeframe.'
 
-2017-07-14 01:25 +0000 [3858d99b73]  Sergej Kasumovic <sergej@bicomsystems.com>
+         ASTERISK-27174 #close
+         Reported by: Mark Thompson
 
-       * app_confbridge: Make sure name recordings are always removed from the filesystem
+         Change-Id: Id90c3cfc79d561a5521d79be176683e225f2edef
 
-         This commit fixes two possible scenarios:
+2017-08-16 15:43 +0000 [572b5307e0]  George Joseph <gjoseph@digium.com>
 
-         * When recording name and if during recording you hangup, file is never
-         removed. This is due to the fact file location is nulled.
-         * When recording name and if you hangup during thank-you prompt, file
-         is never removed.
+       * Fix downloader not working with curl
 
-         ASTERISK-27123 #close
+         The codec/dpma downloader wasn't handling curl correctly.  The logic
+         that transforms makeopts into a bash-sourceable file wasn't
+         handling the make 'or' command in DOWNLOAD_TIMEOUT so bash was
+         looking for an 'or' command.
 
-         Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625
+         That logic has been eliminated.  Instead of trying to transform
+         and source makeopts, the downloader now calls a make scriptlet
+         to print the value of a specific variable.  This way, make handles
+         the ors (or any other make construct that happens to creep into
+         that file).
 
-2017-07-14 01:11 +0000 [cdd6ca488a]  Sergej Kasumovic <sergej@bicomsystems.com>
+         ASTERISK-27202
+         Reported by: Sean McCord
 
-       * chan_iax2: On reload make sure to check for existing MWI subscription
+         Change-Id: Iadfb6693528e4d4da7b8bb201fa66da2c71c7f99
 
-         On every reload of chan_iax2 module, MWI subscription was added, which
-         results in additional taskprocessors being accumulated over time.
+2017-08-15 15:15 +0000 [8594f73a81]  Richard Mudgett <rmudgett@digium.com>
 
-         This commit fixes it by making sure we check for existing subscription
-         first.
+       * configure: Check cache for valid pjproject tarball before downloading.
 
-         This was verified with 'core show taskprocessors' CLI command.
+         On a fresh Asterisk source directory, the bundled pjproject tarball is
+         unconditionally downloaded even if the tarball is already in a specified
+         cache directory.
 
-         ASTERISK-27122 #close
+         * Made check if the pjproject tarball is valid in the cache directory
+         before downloading the tarball on a fresh source directory.
 
-         Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9
+         Change-Id: Ic7ec842d3c97ecd8dafbad6f056b7fdbce41cae5
 
-2017-07-13 15:43 +0000 [9f66fb7901]  Rusty Newton <rnewton@digium.com>
+2017-08-15 11:14 +0000 [d08342b0cb]  Richard Mudgett <rmudgett@digium.com>
 
-       * Sounds: Update for core sounds 1.6 release
+       * res_pjsip: Fix prune_on_boot to remove only contacts for the host.
 
-         Added necessary lines to make the en_NZ language set selectable and to get
-         core sounds 1.6 pulled down.
+         * Check that the contact's reg_server matches the host's name before
+         deleting any prune_on_boot contacts.  We don't want to delete reliable
+         transport contacts made with other servers if the ps_contacts database
+         table is shared with other servers.
 
-         ASTERISK-26807 #close
-         ASTERISK-25816 #close
-         ASTERISK-26274 #close
+         Thanks to Ross Beer for pointing out that the original prune logic would
+         delete reliable transport contacts from other servers.
 
-         Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4
+         ASTERISK-27147
 
-2017-07-10 14:04 +0000 [df49ad2528]  Corey Farrell <git@cfware.com>
+         Change-Id: I8e439d0d1c266ffdfd7b73d1e5e466180a689bd0
 
-       * core: Add PARSE_TIMELEN support to ast_parse_arg and ACO.
+2017-08-04 09:25 +0000 [54e3ac402f]  Andrey Egorov <andr06@gmail.com>
 
-         This adds support for parsing timelen values from config files.  This
-         includes support for all flags which apply to PARSE_INT32.  Support for
-         this parser is added to ACO via the OPT_TIMELEN_T option type.
+       * res_xmpp: Google OAuth 2.0 protocol support for XMPP / Motif
 
-         Fixes an issue where extra characters provided to ast_app_parse_timelen
-         were ignored, they now cause an error.
+         Add ability to use tokens instead of passwords according to Google OAuth 2.0
+         protocol.
 
-         Testing is included.
+         ASTERISK-27169
+         Reported by: Andrey Egorov
+         Tested by: Andrey Egorov
 
-         ASTERISK-27117 #close
+         Change-Id: I07f7052a502457ab55010a4d3686653b60f4c8db
 
-         Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554
+2017-08-10 14:18 +0000 [bac3e8c08b]  Richard Mudgett <rmudgett@digium.com>
 
-2017-07-12 15:07 +0000 [6d0ff310c6]  Sean Bright <sean.bright@gmail.com>
+       * STUN/netsock2: Fix some valgrind uninitialized memory findings.
 
-       * basic-pbx: Remove res_pjsip_multihomed from sample config
+         * netsock2.c: Test the addr->len member first as it may be the only member
+         initialized in the struct.
 
-         ASTERISK-27127 #close
-         Reported by: HZMI8gkCvPpom0tM
+         * stun.c:ast_stun_handle_packet(): The combinded[] local array could get
+         used uninitialized by ast_stun_request().  The uninitialized string gets
+         copied to another location and could overflow the destination memory
+         buffer.
 
-         Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789
+         These valgrind findings were found for ASTERISK_27150 but are not
+         necessarily a fix for the issue.
 
-2017-07-11 07:26 +0000 [4e555437dc]  George Joseph <gjoseph@digium.com>
+         Change-Id: I55f8687ba4ffc0f69578fd850af006a56cbc9a57
 
-       * res_musiconhold:  Add kill_escalation_delay, kill_method to class
+2017-08-02 18:44 +0000 [1cf2c79f37]  Richard Mudgett <rmudgett@digium.com>
 
-         By default, when res_musiconhold reloads or unloads, it sends a HUP
-         signal to custom applications (and all descendants), waits 100ms,
-         then sends a TERM signal, waits 100ms, then finally sends a KILL
-         signal.  An application which is interacting with an external
-         device and/or spawns children of its own may not be able to exit
-         cleanly in the default times, expecially if sent a KILL signal, or
-         if it's children are getting signals directly from
-         res_musiconhoild.
+       * res_pjsip_outbound_registration.c: Re-REGISTER on transport shutdown.
 
-         * To allow extra time, the 'kill_escalation_delay'
-           class option can be used to set the number of milliseconds
-           res_musiconhold waits before escalating kill signals, with the
-           default being the current 100ms.
+         The fix for the issue is broken up into three parts.
 
-         * To control to whom the signals are sent, the "kill_method" class
-           option can be set to "process_group" (the default, existing
-           behavior), which sends signals to the application and its
-           descendants directly, or "process" which sends signals only to the
-           application itself.
+         This is part three which handles the client side of REGISTER requests.
+         The registered contact may no longer be valid on the server when the
+         transport used is reliable and the connection is broken.
 
-         Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b
+         * Re-REGISTER our contact if the reliable transport is broken after
+         registration completes.  We attempt to re-REGISTER immediately to minimize
+         the time we are unreachable.  Time may have already passed between the
+         connection being broken and the loss being detected.
 
-2017-07-03 07:30 +0000 [4f2f3bfebf]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         * Reorder sip_outbound_registration_state_alloc() so the STATSD_GUAGE's
+         are still correct if an allocation failure happens.
 
-       * Avoid setting maxfiles for a remote asterisk
+         ASTERISK-27147
 
-         Setting maxfiles (maximum number of open files) has no practical
-         effect on a remote asterisk (rasterisk, rasterisk -x).
+         Change-Id: I3668405b1ee75dfefb07c0d637826176f741ce83
 
-         It has an ill effect of printing an extra message, which
-         may be annoying in case of -x.
+2017-07-31 14:21 +0000 [07d026b4cd]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-27105 #close
+       * res_pjsip: Remove ephemeral registered contacts on transport shutdown.
 
-         Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2
+         The fix for the issue is broken up into three parts.
 
-2017-07-05 15:31 +0000 [32b98ad956]  George Joseph <gjoseph@digium.com>
+         This is part two which handles the server side of REGISTER requests when
+         rewrite_contact is enabled.  Any registered reliable transport contact
+         becomes invalid when the transport connection becomes disconnected.
 
-       * http.c:  Reduce log spam
+         * Monitor the rewrite_contact's reliable transport REGISTER contact for
+         shutdown.  If it is shutdown then the contact must be removed because it
+         is no longer valid.  Otherwise, when the client attempts to re-REGISTER it
+         may be blocked because the invalid contact is there.  Also if we try to
+         send a call to the endpoint using the invalid contact then the endpoint is
+         not likely to see the request.  The endpoint either won't be listening on
+         that port for new connections or a NAT/firewall will block it.
 
-         Messages like "fwrite() failed: Connection reset by peer" are no
-         help whatsoever, especially since they can be caused simply by a
-         client disconnecting.
+         * Prune any rewrite_contact's registered reliable transport contacts on
+         boot.  The reliable transport no longer exists so the contact is invalid.
 
-         * Make those WARNINGs DEBUGs.
-         * Check the return of the headers fprintf.
+         * Websockets always rewrite the REGISTER contact address and the transport
+         needs to be monitored for shutdown.
 
-         Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b
+         * Made the websocket transport set a unique name since that is what we use
+         as the ao2 container key.  Otherwise, we would not know which transport we
+         find when one of them shuts down.  The names are also used for PJPROJECT
+         debug logging.
 
-2017-07-07 11:19 +0000 [25e18bf514]  Benjamin Keith Ford <bford@digium.com>
+         * Made the websocket transport post the PJSIP_TP_STATE_CONNECTED state
+         event.  Now the global keep_alive_interval option, initially idle shutdown
+         timer, and the server REGISTER contact monitor can work on wetsocket
+         transports.
 
-       * res_pjsip: Fix crash with from_user containing invalid characters.
+         * Made the websocket transport set the PJSIP_TP_DIR_INCOMING direction.
+         Now initially idle websockets will automatically shutdown.
 
-         If the from_user field contains certain characters (like @, {, ^, etc.),
-         PJSIP will return a null value for the URI when attempting to parse it.
-         This causes a crash when trying to dial out through a trunk that contains
-         these invalid characters in its from_user field.
+         ASTERISK-27147
 
-         This change checks the configuration and ensures that an endpoint will
-         not be created if the from_user contains an invalid character. It also
-         adds a null check to the PJSIP URI parsing as a backup.
+         Change-Id: I397a5e7d18476830f7ffe1726adf9ee6c15964f4
 
-         ASTERISK-27036 #close
-         Reported by: Maxim Vasilev
+2017-07-28 18:26 +0000 [ca261d4b70]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0
+       * res_pjsip: PJSIP Transport state monitor refactor.
 
-2017-06-27 19:27 +0000 [8a803f75a0]  Richard Mudgett <rmudgett@digium.com>
+         The fix for the issue is broken up into three parts.
 
-       * json.c: Add backtrace log to find 'Invalid UTF-8 string' errors
+         This is part one which refactors the transport state monitor code to allow
+         more modules to be able to monitor transports.
 
-         Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929
+         * Pull the management of PJPROJECT's transport state callback code from
+         res_pjsip_transport_management.c into res_pjsip.  Now other modules can
+         dynamically add and remove themselves from transport monitoring without
+         worrying about breaking PJPROJECT's callback chain.
 
-2017-07-05 13:39 +0000 [aa514f420b]  Richard Mudgett <rmudgett@digium.com>
+         * Add the ability for other modules to get a callback whenever a specific
+         transport is shutdown.
 
-       * res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock.
+         ASTERISK-27147
 
-         When a message is received on the TURN socket, the code processing the
-         message needs to call into the ICE/STUN session for further processing.
-         This code path locks the TURN group lock then the ICE/STUN group lock.  In
-         another thread an ICE/STUN timer can fire off to send a keep alive message
-         over the TURN socket.  In this code path, the ICE/STUN group lock is
-         obtained then the TURN group lock is obtained to send the packet.  A
-         classic deadlock case if the group locks are not the same.
+         Change-Id: I7d9a31371eb1487c9b7050cf82a9af5180a57912
 
-         * Made TURN get created using the ICE/STUN session's group lock.
+2017-07-27 15:36 +0000 [162f6ab845]  Richard Mudgett <rmudgett@digium.com>
 
-         NOTE: I was originally concerned that the ICE/STUN session can get
-         recreated by ice_reset_session() for an event like RTCP multiplexing
-         causing a change during SDP negotiation.  In this case the TURN group lock
-         would become different.  However, TURN is also recreated as part of the
-         ICE/STUN recreation in ice_create() when all known ICE candidates are
-         added to the new ICE session.  While the ICE/STUN and TURN sessions are
-         being recreated there is a period where the group locks could be
-         different.
+       * res_pjsip_transport_management.c: Rename some variables.
 
-         ASTERISK-27023 #close
-         Patches:
-             res_rtp_asterisk-turn-deadlock-fix.patch (license #6502)
-                 patch uploaded by Michael Walton (modified)
+         * Use monitored instead of the misleading keepalive name.
 
-         Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9
+         Change-Id: I9e5bcbb4ab2b82d49bcd0f06dfe85d15e0b552b6
 
-2017-06-23 11:17 +0000 [22c4c1a0ba]  Richard Mudgett <rmudgett@digium.com>
+2017-08-10 09:09 +0000 [22575b6342]  Scott Griepentrog <scott@griepentrog.com>
 
-       * bridge_native_rtp.c: Fix direct media video RTP instance ACL check.
+       * res_pjsip_messaging: IPv6 receive address needs brackets
 
-         The video stream was using the audio stream RTP instance addresses to
-         check if the video RTP gets directed to an allowed direct media Access
-         Control List (ACL) address.  There is no guarantee that the video RTP
-         instance uses the same addresses as the audio RTP instance.
+         When handling an incoming SIP MESSAGE, PJSIP
+         attaches the IP address that the message was
+         received from to the message in the variable
+         PJSIP_RECVADDR.  When the IP address is IPv6
+         the :PORT appended results in an unparseable
+         mess. By using an additional bit flag on the
+         pj_sockaddr_print call, the conventional use
+         of brackets around the address is achieved.
 
-         This looks like it has been a bug since v11 when direct media ACL was
-         first added to chan_sip and then faithfully reproduced through a couple
-         code refactorings into the new bridging architecture.
+         ASTERISK-27193 #close
 
-         Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a
+         Change-Id: I12342521f2ce87a5b6e4883d480a3fd957aa9fd9
 
-2017-06-29 13:58 +0000 [194625c1de]  Sean Bright <sean.bright@gmail.com>
+2017-08-09 08:01 +0000 [363d61ef58]  George Joseph <gjoseph@digium.com>
 
-       * app_voicemail: Cleanup ODBC connection handling
+       * configure:  Add --with-download-cache option
 
-         The primary focus of this patch is adding a missing call to
-         ast_odbc_release_obj(), but is also a general cleanup of the ODBC
-         related code in app_voicemail.
+         To make building without an internet connection easier, a new
+         ./configure option '--with-download-cache' was added that sets
+         the cache for externals (like pjproject, the codecs and the DPMA),
+         AND the sounds files.  It can also be specified as an environment
+         variable named "AST_DOWNLOAD_CACHE".  The existing
+         '--with-sounds-cache' option / SOUNDS_CACHE_DIR env variable and
+         '--with-externals-cache' option / EXTERNALS_CACHE_DIR env variable
+         remain and if specified, will override '--with-downloads-cache'.
 
-         ASTERISK-27093 #close
+         Change-Id: I5c3cf15ee61e8fe191b52732303e969854f8d861
 
-         Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b
+2017-07-26 09:17 +0000 [3608f96ea3]  Torrey Searle <torrey@voxbone.com>
 
-2017-06-22 07:47 +0000 [154d2914fa]  Torrey Searle <torrey@voxbone.com>
+       * res_rtp_asterisk: enable rtcp & QOS stats on native bridge
 
-       * res/res_pjsip_t38  ensure t38 requests get rejected quickly
+         Asterisk wasn't generating or forwarding RTCP packets when native
+         bridge was activated.  Also the stats weren't available via
+         CHANNEL(qos). Now the RTCP stats are always calculated.
 
-         arm the t38 webhook always, so we can correctly reject a
-         T38 negotiation request when t38 is disabled on a channel
+         ASTERISK-27158 #close
 
-         Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d
+         Change-Id: I46fb8f61c95e836b9d2dda6054b0cf205c16037b
 
-2017-07-06 11:52 +0000  Asterisk Development Team <asteriskteam@digium.com>
+2017-07-26 11:39 +0000 [0de7312fac]  Joshua Colp <jcolp@digium.com>
 
-       * asterisk 13.17.0-rc1 Released.
+       * res_pjsip_session: Release media resources on session end quicker.
 
-2017-07-06 05:55 +0000 [379fe65831]  George Joseph <gjoseph@digium.com>
+         A change was made long ago where the session was kept around
+         until the underlying INVITE session had been destroyed. This
+         had the side effect of also keeping the underlying media resources
+         around for this time as well.
 
-       * Fix alembic branches
+         This change ensures that when we know the session is ending we
+         release the media resources immediately.
 
-         Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187
+         ASTERISK-27110
 
-2017-07-05 07:42 +0000 [6258de458b]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I643e431d5c3bf05cda220c1d39e824a505a29b82
 
-       * core: Fix segfault when invoking 'data get' CLI command
+2017-08-02 16:08 +0000 [905c4ca3dc]  Corey Farrell <git@cfware.com>
 
-         Invoking 'data get /asterisk/core/channeltypes' caused a crash because
-         of an assumption of a tech's capabilities to be non-NULL. The
-         'Surrogate' tech, however, does have a NULL capabilities member,
-         resulting in a crash.
+       * app_privacy: remove unused header asterisk/image.h
 
-         ASTERISK-27108 #close
+         Change-Id: I56ed530633a642633b18383821069e806c92ae82
 
-         Change-Id: I2fbe7715681f43d5565d1e1599269468c26b0e0a
+2017-08-03 13:13 +0000 [38dbc708e7]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-2017-07-03 10:59 +0000 [39d2ebbf56]  Alexander Traud <pabstraud@compuserve.com>
+       * Support GMIME 3.0
 
-       * chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support).
+         Support building the Asterisk httpd with version 3.0 of gmime as
+         well as earlier versions of that library.
 
-         When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was
-         added in any case, because of a local Boolean-negation error of the return value
-         of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was
-         still always added with tlsenable=yes, because the domains were not compared
-         just on the address but also on the port – and TLS is always on a different port
-         than UDP/TCP.
+         ASTERISK-27173
 
-         ASTERISK-27106
+         Change-Id: I7e13dd05a3083ccb0df2dabf83110223f6a9fa8f
 
-         Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c
+2017-07-28 07:53 +0000 [c4f201cd73]  Torrey Searle <torrey@voxbone.com>
 
-2017-07-03 10:38 +0000 [9f4b3b966e]  Alexander Traud <pabstraud@compuserve.com>
+       * res_rtp_asterisk:  Make P2P bridge Asymmetric codec aware
 
-       * chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support).
+         Introduce a new property to rtp-engine to make it aware of
+         the desire for assymetric codecs or not.  If asymmetric codecs
+         is not allowed, the bridge will compare read/write formats
+         and shut down the p2p bridge if needed
 
-         Because of a copy-and-paste error when the struct ast_sockaddr changed,
-         tlsbindaddr was not added, when sip.conf contained autodomain=yes; see
-         "show sip domains" on the command-line interface (CLI) of Asterisk.
+         ASTERISK-26745 #close
 
-         ASTERISK-27106
+         Change-Id: I0d9c83e5356df81661e58d40a8db565833501a6f
 
-         Change-Id: I3d0957150017c223136968ef1266f275d0d6695e
+2017-08-03 21:30 +0000 [84b6a5efd7]  Corey Farrell <git@cfware.com>
 
-2017-06-30 23:57 +0000 [73520e9f58]  Corey Farrell <git@cfware.com>
+       * Correct some leaks in unit tests.
 
-       * channel: Clear channel flag in error branch.
+         * chan_sip: channel in test_sip_rtpqos_1.
+         * test_config: config hook, config info and global config holder.
+         * test_core_format: format in format_attribute_set_without_interface.
+         * test_stream: unneeded frame duplication.
+         * test_taskprocessor: task_data.
 
-         Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when
-         ast_read returns NULL.
+         Change-Id: I94d364d195cf3b3b5de2bf3ad565343275c7ad31
 
-         ASTERISK-27100 #close
+2017-07-26 17:49 +0000 [f9a823e9dc]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d
+       * res_pjsip_transport_websocket.c: Fix serializer ref leak.
 
-2017-06-29 18:27 +0000 [0d64cbde57]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ib5a19bfd597f63d9021baeb645fc11153b3afa57
 
-       * pjsip_distributor.c: Fix deadlock with TCP type transports.
+2017-08-02 18:41 +0000 [631180a0c3]  Richard Mudgett <rmudgett@digium.com>
 
-         When a SIP message comes in on a transport, pjproject obtains the lock on
-         the transport and pulls the data out of the socket.  Unlike UDP, the TCP
-         transport does not allow concurrent access.  Without concurrency the
-         transport lock is not released when the transport's message complete
-         callback is called.  The processing continues and eventually Asterisk
-         starts processing the SIP message.  The first thing Asterisk tries to do
-         is determine the associated dialog of the message to determine the
-         associated serializer.  To get the associated serializer safely requires
-         us to get the dialog lock.
+       * res_pjsip_outbound_registration.c: Misc fixes.
 
-         To send a request or response message for a dialog, pjproject obtains the
-         dialog lock and then obtains the transport lock.  Deadlock can result
-         because of the opposite order the locks are obtained.
+         * Remove unnecessary CMP_STOP.
 
-         * Fix the deadlock by obtaining the serializer associated with the dialog
-         another way that doesn't involve obtaining the dialog lock.  In this case,
-         we use an ao2 container to hold the associated endpoint and serializer.
-         The new locks are held a brief time and won't overlap other existing lock
-         times.
+         * In handle_client_registration() use DEBUG_ATLEAST() to only do work
+         needed for the debug log message when the debug log message is needed.
 
-         ASTERISK-27090 #close
+         * In sip_outbound_registration_state_destroy() check state->registration
+         for NULL.
 
-         Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd
+         Change-Id: I656d0fa11dda0b00048103efb1558e67a426fd80
 
-2017-06-29 18:22 +0000 [905d18e8bf]  Richard Mudgett <rmudgett@digium.com>
+2017-07-31 20:20 +0000 [7b84c6693e]  Richard Mudgett <rmudgett@digium.com>
 
-       * pjsip_distributor.c: Fix unidentified_requests hash functions.
+       * res_pjsip_nat.c: Remove unnecessary CMP_STOP.
 
-         The OBJ_SEARCH_xxx defines should not be used as if they were individual
-         bits.  They represent a multi-bit enumeration value field.
+         Change-Id: I6279b0d723bc3b75b8d65e81e02da9ea9bc0c3da
 
-         Change-Id: I32abc9a475396dab02402a7014357dd94284e17b
+2017-07-31 14:20 +0000 [a32614a2a8]  Richard Mudgett <rmudgett@digium.com>
 
-2017-06-30 08:31 +0000 [bbe68f139d]  George Joseph <gjoseph@digium.com>
+       * res_pjsip_registrar.c: Remove unnecessary CMP_STOP.
 
-       * pjproject_bundled:  Allow passing configure options to bundled
+         Most uses of CMP_STOP are superfluous and are only respected when
+         OBJ_MULTIPLE is used to search the container.
 
-         There wasn't any good way to pass options like --host or --build
-         down to the pjproject configure which makes cross-compiling difficult.
+         Change-Id: I20571a202ec0aa1098bb2749eeba18de7ca110b8
 
-         * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which
-           can be used to pass arbitrary options to pjproject configure.
-         * Automatically set the pjproject configure --host and --build
-           options to match those supplied for the asterisk configure.
+2017-08-03 11:30 +0000 [d066758a4c]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-27097 #close
-         Reported-by: Kinsey Moore
+       * Fix compile error for old versions of GCC.
 
-         Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e
+         Use -Wno-format-truncation only if supported by compiler.
 
-2017-06-29 14:50 +0000 [6bd7c0f37c]  George Joseph <gjoseph@digium.com>
+         ASTERISK-27171 #close
 
-       * chan_pjsip:  Fix ability to send UPDATE on COLP
+         Change-Id: Iac0aed7a5bcaa16c21b7d62c4e4678d244c4ccb6
 
-         When connected_line_method is "invite", we're supposed to determine
-         if the client can support UPDATE and if it can, send UPDATE instead
-         of INVITE to avoid the SDP renegotiation.  Not only was pjproject
-         not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing
-         that invite_tsx wasn't NULL which isn't always the case.
+2017-08-01 15:57 +0000 [ed1bce956e]  George Joseph <gjoseph@digium.com>
 
-         * Updated chan_pjsip/update_connected_line_information to drop the
-           requirement that invite_tsx isn't NULL.
-         * Submitted patch to pjproject sip_inv.c that sets the
-           PJSIP_INV_SUPPORT_UPDATE flag correctly.
-         * Updated pjsip.conf.sample to clarify what happens when "invite"
-           is specified.
+       * Revert "res_pjsip_session: Release media resources on session end quicker."
 
-         ASTERISK-27095
+         This reverts commit 98709642d640b490f327d220fdcdea6d45fd65d7.
 
-         Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560
+         See the 15 branch review.
 
-2017-06-27 04:37 +0000 [2c43ca0ac5]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         Change-Id: I8476b3cdacaad5157fa36b6247d0e4cdf1e8d5c6
 
-       * app_queue: Fix returning to dialplan when a queue is empty
+2017-06-29 03:47 +0000 [9a09f7dd5d]  Niklas Larsson <niklas@tese.se>
 
-         The fix for ASTERISK-25665 introduced a regression.
-         The return value of queue_exec used to be 0 in case of leavewhenempty
-         but it was changed to -1 (returned from wait_our_turn and passed
-         transparently by queue_exec), thus leading to hangup instead of returning
-         back to dialplan.
+       * app_queue: Add priority to AMI QueueStatus
 
-         This commit resets the value back to 0 in this case, restoring
-         original behavior.
+         Add priority to callers in AMI QueueStatus response
 
-         ASTERISK-27065 #close
-         Reported by: Marek Cervenka
+         ASTERISK-27092 #close
 
-         Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac
+         Change-Id: I8d1f737a72c7c38f4cfe1a4ee3ecc0a4f85bd199
 
-2017-06-28 09:03 +0000 [0426b1d88a]  Joshua Colp <jcolp@digium.com>
+2017-07-26 11:39 +0000 [3418d8d145]  Joshua Colp <jcolp@digium.com>
 
-       * res_rtp_asterisk: Fix issues with ICE renegotiation.
+       * res_pjsip_session: Release media resources on session end quicker.
 
-         When re-inviting to add more streams it is possible for
-         the role of existing ICE sessions to be changed to the
-         incorrect value. This results in subsequent refreshes
-         within the sessions getting a role conflict and the ICE
-         session breaking down. This change only sets the role to
-         be the new value if an ICE renegotiation is actually
-         going to happen, otherwise the existing role is preserved.
+         A change was made long ago where the session was kept around
+         until the underlying INVITE session had been destroyed. This
+         had the side effect of also keeping the underlying media resources
+         around for this time as well.
 
-         As well if we encounter a situation where a unidirectional
-         ICE negotiation happens and the other side does not send us
-         candidates we will not store any information for sending
-         traffic, even though we know where they are reachable. This
-         change fixes this by using the source of the ICE traffic
-         itself as the target if no candidates are known and we
-         receive some ICE traffic.
+         This change ensures that when we know the session is ending we
+         release the media resources immediately.
 
-         ASTERISK-27088
+         ASTERISK-27110
 
-         Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9
+         Change-Id: I3c6a82fe7d2c50b9dc9197cb12ef22f20d337501
 
-2017-06-08 22:50 +0000 [eb48e99bd4]  George Joseph <gjoseph@digium.com>
+2017-07-26 08:48 +0000 [4d318cac68]  Sean Bright <sean.bright@gmail.com>
 
-       * bridge_native_rtp: Keep rtp instance refs on bridge_channel
+       * res_pjsip_pidf_eyebeam_body_supplement: Correct status presentation
 
-         There have been reports of deadlocks caused by an attempt to send a frame
-         to a channel's rtp instance after the channel has left the native bridge
-         and been destroyed.  This patch effectively causes the bridge channel to
-         keep a reference to the glue and both the audio and video rtp instances
-         so what gets started will get stopped.
+         This change fixes PIDF content generation when the underlying device
+         state is considered in use. Previously it was incorrectly marked
+         as closed meaning they were offline/unavailable. The code now
+         correctly marks them as open.
 
-         ASTERISK-26978 #close
-         Reported-by: Ross Beer
+         Additionally:
 
-         Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a
+           * Generate an XML element for our activity instead of a using a text
+             node.
 
-2017-06-27 10:46 +0000 [1f59d08924]  Torrey Searle <torrey@voxbone.com>
+           * Consider every extension state other than "unavailable" to be 'open'
+             status.
 
-       * res/res_pjsip_t38: fix incorrect increment of media_count
+           * Update the XML namespaces and structure to reflect those
+             documented in RFC 4480
 
-         The T38 sdp callback incorrectly has a side effect of incrementing
-         the media_count.  This can lead to core dumps.
+           * Use 'on-the-phone' (defined in RFC 4880) instead of 'busy' as the
+             "in use" activity. This change results in eyeBeam using the
+             appropriate icon for the watched user.
 
-         Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8
+         This was tested on eyeBeam 1.5.20.2 build 59030 on Windows.
 
-2017-06-15 03:12 +0000 [9fbc34d2bd]  Torrey Searle <torrey@voxbone.com>
+         ASTERISK-26659 #close
+         Reported by: Abraham Liebsch
+         patches:
+           ASTERISK-26659.diff submitted by snuffy (license 5024)
 
-       * res_pjsip:  Add DTMF INFO Failback mode
+         Change-Id: I6e5ad450f91106029fb30517b8c0ea0c2058c810
 
-         The existing auto dtmf mode reverts to inband if 4733 fails to be
-         negotiated.  This patch adds a new mode auto_info which will
-         switch to INFO instead of inband if 4733 is not available.
+2017-07-23 18:34 +0000 [114602f434]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-27066 #close
+       * res_pjsip: Add support for dnsmgr to external_media_address.
 
-         Change-Id: Id185b11e84afd9191a2f269e8443019047765e91
+         The "external_media_address" option on transports is now
+         resolved using dnsmgr. This allows it to be automatically
+         refreshed regularly if refreshes are enabled in dnsmgr.
+         If the system is using a dynamic IP address a dynamic DNS
+         hostname can be provided to keep the IP address up to
+         date.
 
-2017-06-21 17:57 +0000 [764d04fa87]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ia54771720dff0105bde55d5bbb81a3ba437e05b2
 
-       * res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer
+2017-07-27 20:58 +0000 [0f49e6ee2e]  Corey Farrell <git@cfware.com>
 
-         Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3
+       * Fix compiler warnings on Fedora 26 / GCC 7.
 
-2017-06-16 18:08 +0000 [0f6a9617eb]  Alexei Gradinari <alex2grad@gmail.com>
+         GCC 7 has added capability to produce warnings, this fixes most of those
+         warnings.  The specific warnings are disabled in a few places:
 
-       * res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact
+         * app_voicemail.c: truncation of paths more than 4096 chars in many places.
+         * chan_mgcp.c: callid truncated to 80 chars.
+         * cdr.c: two userfields are combined to cdr copy, fix would break ABI.
+         * tcptls.c: ignore use of deprecated method SSLv3_client_method().
 
-         Do not need to unsubscribe/subscribe on creating the ednpoint's contact.
-         The modified function create_mwi_subscriptions_for_endpoint adds
-         the subscription only if it does not exist.
+         ASTERISK-27156 #close
 
-         The subscriptions aren't added for active contacts
-         which are retrieved on startup from realtime
-         if mwi_disable_initial_unsolicited=yes.
-         Because the mwi_contact_added is not called.
-         So the subscriptions also should be created on updating contact.
+         Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
 
-         ASTERISK-26230 #close
+2017-07-27 06:35 +0000 [0d58fefa30]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4
+       * bundled_pjproject:  Improve SSL/TLS error handling
 
-2017-06-20 15:41 +0000 [1f9913f272]  Kevin Harwell <kharwell@digium.com>
+         OpenSSL has 2 levels or error processing.  It's possible for the
+         top layer to return SSL_ERROR_SYSCALL but the lower layer return
+         no error, in which case processing should continue.  Only the top
+         layer was being examined though so connections were being torn
+         down when they didn't need to be.  This patch adds the examination
+         of the lower level codes, and if they return no errors, allows
+         processing to continue.
 
-       * core_local: local channel data not being properly unref'ed and unlocked
+         ASTERISK-27001
+         Reported-by: Ian Gilmour
+         patches:
+               pjproject-2.6.patch submitted by Ian Gilmour (license 6889)
 
-         In an earlier version of Asterisk a local channel [un]lock all functions were
-         added in order to keep a crash from occurring when a channel hung up too early
-         during an attended transfer. Unfortunately, when a transfer failure occurs and
-         depending on the timing, the local channels sometime do not get properly
-         unlocked and deref'ed after being locked and ref'ed. This happens because the
-         underlying local channel structure gets NULLed out before unlocking.
+         Updated-by: George Joseph and Sauw Ming (Teluu)
 
-         This patch reworks those [un]lock functions and makes sure the values that get
-         locked and ref'ed later get unlocked and deref'ed.
+         Merged to upstream pjproject on 7/27/2017 (commit 5631)
 
-         ASTERISK-27074 #close
+         Change-Id: I23844ca0c68ef1ee550f14d46f6dae57d33b7bd2
 
-         Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09
+2017-06-26 07:52 +0000 [423d01cf16]  Torrey Searle <torrey@voxbone.com>
 
-2017-06-20 16:01 +0000 [67664fbf95]  Kevin Harwell <kharwell@digium.com>
+       * chan_pjsip: add a new function PJSIP_DTMF_MODE
 
-       * bridge: stuck channel(s) after failed attended transfer
+         This function is a replica of SIPDtmfMode, allowing the DTMF mode of a
+         PJSIP call to be modified on a per-call basis
 
-         If an attended transfer failed it was possible for some of the channels
-         involved to get "stuck" because Asterisk was not hanging up the transfer target.
+         ASTERISK-27085 #close
 
-         This patch ensures Asterisk hangs up the transfer target when an attended
-         transfer failure occurs.
+         Change-Id: I20eef5da3e5d1d3e58b304416bc79683f87e7612
 
-         ASTERISK-27075 #close
+2017-07-25 15:17 +0000 [c16000f201]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9
+       * res_rtp_asterisk: Fix mapping of pjsip's ICE roles to ours
 
-2017-06-19 11:28 +0000 [cecf6540dc]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+         Change-Id: Ia578ede1a55b21014581793992a429441903278b
 
-       * cdr: fix mistake spelling of a word for Unanswered.
+2017-07-20 08:08 +0000 [708cdc0b8e]  Sergej Kasumovic <sergej@bicomsystems.com>
 
-         Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df
+       * res_stasis_device_state: Unsubscribe should remove old subscriptions
 
-2017-06-19 17:21 +0000 [8f356192d1]  Alexei Gradinari <alex2grad@gmail.com>
+         Case scenario with Applications ARI:
 
-       * app_voicemail: IMAP connection control
+         * Once you subscribe to deviceState with Applications REST API, it will be
+         added into subscription pool.
 
-         A new global option "imap_poll_logout" was added to specify whether need to
-         disconnect from the IMAP server after polling of mailboxes.
+         * When you unsubscribe it will remove from the device_state_subscription
+         hash table but not from the subscription pool.
 
-         ASTERISK-27068 #close
+         * When you subscribe again, it will add it to pool again.
 
-         Closing IMAP connection after loading mailbox from voicemail.conf
+         * Now you will have two subscriptions and you will receive same event
+         twice.
 
-         ASTERISK-24052 #close
+         This fix should now remove deviceState subscription from pool and it
+         should fix unsubscribe on deviceState.
 
-         Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a
+         ASTERISK-27130 #close
 
-2017-06-12 16:17 +0000 [8e749c8f51]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I718b70d770a086e39b4ddba4f69a3c616d4476c4
 
-       * res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact
+2017-07-24 13:30 +0000 [24bb5a8908]  Joshua Colp <jcolp@digium.com>
 
-         If the endpoint's last contact is deleted unsolicited MWI has to be
-         unsubscribed.
+       * core: Add VP9 passthrough support.
 
-         ASTERISK-27051 #close
+         This change adds VP9 as a known codec and creates a cached
+         "vp9" media format for use.
 
-         Change-Id: I33e174e0b9dba0998927d16d6d100fda5c7254e0
+         Change-Id: I025a93ed05cf96153d66f36db1839109cc24c5cc
 
-2017-06-16 09:31 +0000 [edfdb4dff5]  George Joseph <gjoseph@digium.com>
+2017-07-21 15:57 +0000 [07f8e45a90]  Matthew Fredrickson <creslin@digium.com>
 
-       * res_stasis:  Plug reference leak on stolen channels
+       * format.h: Fix a few minor errors in comments.
 
-         When a stasis channel is stolen by another app, the control
-         structure is unreffed but never unlinked from the app_controls
-         container.  This causes the channel reference to leak.
+         A few minor problems were found in comments in format.h.  This patch fixes them.
 
-         Added OBJ_UNLINK to the callback in channel_stolen_cb.
+         Change-Id: I07f0bdb47b93359b361c4c3d8ecc87cd3199dd94
 
-         Also added some additional channel lifecycle debug messages to
-         channel.c.
+2017-07-21 17:04 +0000 [7e9aa74daa]  Rusty Newton <rnewton@digium.com>
 
-         ASTERISK-27059 #close
-         Repoorted-by: George Joseph
+       * say.c: Fix file locations for second, seconds, minute, minutes files
 
-         Change-Id: Ib820936cd49453f20156971785e7f4f182c56e14
+         The seconds and minutes files have always existed in the base language
+         directory of the Core package. So say.c has always been calling the wrong
+         location (under digits/) for those two files and in the case of second and
+         minute they didn't exist in the Core packages at all.
 
-2017-06-16 14:56 +0000 [0a40073750]  Matthew Fredrickson <creslin@digium.com>
+         The 1.6 sounds release moves the second and minute files into Core from
+         Extra for the languages that already had them. A future release will include
+         the second and minute files for languages that didn't already have them.
 
-       * formats/format_g729: Fix typo in comment
+         This patch just changes all the target locations for second, seconds,
+         minute, and minutes that were under the digits subdir to be under the root of
+         sounds instead. Which is where the sounds will be for some languages after 1.6
+         sounds and for all languages after a future release.
 
-         There was a typo in a comment.  This commit is to fix the typo.
+         ASTERISK-25810 #close
 
-         ASTERISK-27060 #close
+         Change-Id: I05d9d4bee6a7237030530a46e7eb3df15f13f702
+         Reported-by: Nicolas Riendeau
 
-         Change-Id: Ic2699f8dbeaacd58ccb6ec3203e853e1babe3235
+2017-07-19 18:11 +0000 [7ff9d8785d]  Richard Mudgett <rmudgett@digium.com>
 
-2017-06-12 09:23 +0000 [a6e4899612]  Alexei Gradinari <alex2grad@gmail.com>
+       * app_voicemail.c: Allow mailbox entry on authentication retry prompt.
 
-       * res_pjsip: New endpoint option "notify_early_inuse_ringing"
+         The following testsuite voicemail tests were failing to re-enter the
+         mailbox after the first login attempt.
 
-         This option was added to control whether to notify dialog-info state
-         'early' or 'confirmed' on Ringing when already INUSE.
-         The value "yes" is useful for some SIP phones (Cisco SPA)
-         to be able to indicate and pick up ringing devices.
+         tests/apps/voicemail/authenticate_invalid_mailbox
+         tests/apps/voicemail/authenticate_invalid_password
 
-         ASTERISK-26919 #close
+         The tests were noting the start of the vm-incorrect-mailbox prompt and
+         immediately sending the mailbox for the next login attempt.  Since the
+         invalid message playback had to complete before the digits were
+         recognized, the test passed for the wrong reason and added approximately
+         20 seconds to the test times.
 
-         Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711
+         * Allow the vm-incorrect-mailbox prompt to get interrupted by the mailbox
+         digits like the initial vm-login prompt so the tests are able to enter the
+         intended mailbox.
 
-2017-03-30 09:33 +0000 [005a4afa6b]  Jan Friesse <jfriesse@redhat.com>
+         Change-Id: I1dc53fe917bfe03a4587b2c4cd24c94696a69df8
 
-       * res_corosync: Change thread stack size
+2017-07-21 14:20 +0000 [4f93f75e7e]  Rusty Newton <rnewton@digium.com>
 
-         In Corosync 2.x libraries were changed to use LibQB IPC.
-         Sadly LibQB IPC doesn't support copy-free access to received buffer, so
-         Corosync libraries were rewritten to use stack as buffer. Mostly the
-         needed stack size is quite small, but for all *_dispatch functions, 1MiB
-         is needed.
+       * Sounds: Update Makefile for Extra sounds 1.5.1 release
 
-         Asterisk function ast_pthread_create_background set stack size for new
-         thread to much smaller AST_BACKGROUND_STACKSIZE (~500KiB).
+         Incrementing version for the Extra sounds release. 1.5.1 Extra sounds
+         removes two prompts that were moved into the Core packages in the 1.6 Core
+         sounds release.
 
-         This results in Asterisk crash when running with Corosync 2.x.
+         ASTERISK-27142 #close
 
-         Patch solves this issue by creating it's own version of
-         ast_pthread_create_background which sets stack size to much higher value
-         (actually it's AST_BACKGROUND_STACKSIZE + 3MiB).
+         Change-Id: I82f017812b0ea9599e19dd4635afd55611f13ee7
 
-         Another problem may appear when "corosync show members" netconsole
-         command is executed. It is also executed in thread and also has only
-         500KiB stack size. Sadly it calls corosync_cfg_get_node_addrs which
-         again needs at least 1MiB stack.
+2017-07-20 09:57 +0000 [cea4ce246d]  Sean Bright <sean.bright@gmail.com>
 
-         Solution is to use HAVE_COROSYNC_CFG_STATE_TRACK as a discriminator
-         between Corosync 1.x and 2.x. If 1.x is found, nothing changes. If 2.x
-         is found, NodeID is displayed instead of IP address.
+       * corosync: Fix corosync library name in configure.ac
 
-         ASTERISK-25370 #close
-         Reported by: mdu113
+         Also add new corosync packages to install_prereq.
 
-         Change-Id: Id95b0d21ab6e708e7d74ad8786c587211676fa08
+         Reported by Travis Ryan in #asterisk-dev
 
-2017-06-13 11:33 +0000 [7901b9853e]  George Joseph <gjoseph@digium.com>
+         Change-Id: Ib861c95ba630fed62dc54e56784ad8446ed9d2db
 
-       * res_ari:  Add "module loaded" check to ari stubs
+2017-07-18 15:04 +0000 [9a47dd7113]  Benjamin Keith Ford <bford@digium.com>
 
-         The recent change to make the use of LOAD_DECLINE more consistent
-         caused res_ari to unload itself before declining if the ari.conf
-         file wasn't found.  The ari stubs though still tried to use the
-         configuration resulting in segfaults.
+       * pjsip: Increase maximum packet size.
 
-         This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests
-         to see if res_ari is actually loaded and causes the stubs to also
-         decline if it isn't.  The macro was then added to the mustache
-         template's "load_module" function.
+         The maximum packet size for PJSIP has been increased to handle the
+         multiple streams being added for WebRTC.
 
-         ASTERISK-27026 #close
-         Reported-by: Ronald Raikes
+         Change-Id: I9ea1e8d02668c544acadcb1c6200e1cc1bd588b3
 
-         Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d
+2017-07-11 04:48 +0000 [1c3e7df26e]  Holger Hans Peter Freyther <holger@moiji-mobile.com>
 
-2017-06-15 13:48 +0000 [3b6c327c51]  Alexei Gradinari <alex2grad@gmail.com>
+       * app_playback.c: Use the timezonename parameter
 
-       * app_voicemail: IMAP logout on reload/unload
+         In say_date_generic the timezonename parameter is passed but never
+         used. Fix it by passing it to the ast_localtime function.
 
-         Closing IMAP connection on module reload or unload.
+         ASTERISK-27124
 
-         ASTERISK-24052 #close
+         Change-Id: I6afa98f9163190043244b9f3ba91eb1874d1b586
 
-         Change-Id: I2a40182aa9ef249fa6865d33570430e9ada68525
+2017-07-16 12:18 +0000 [51761b759d]  Joshua Colp <jcolp@digium.com>
 
-2017-06-15 12:33 +0000 [b9a4ab8c8c]  Richard Mudgett <rmudgett@digium.com>
+       * res_rtp_asterisk: Use RTP component for ICE if RTCP-MUX is in use.
 
-       * chan_pjsip: Fix PJSIP_MEDIA_OFFER dialplan function read.
+         This change makes it so that if an RTCP packet is being sent
+         the RTP ICE component is used for sending if RTCP-MUX is in use.
 
-         The construction of the returned string assumed incorrectly that the
-         supplied buffer would always be initialized as an empty string.  If it is
-         not an empty string we could overrun the supplied buffer by the length of
-         the non-empty buffer string plus one.  It is also theoreticaly possible
-         for the supplied buffer to be overrun by a string terminator during a read
-         operation even if the supplied buffer is an empty string.
+         ASTERISK-27133
 
-         * Fix the assumption that the supplied buffer would already be an empty
-         string.  The buffer is not guaranteed to contain an empty string by all
-         possible callers.
+         Change-Id: I6200f611ede709602ee9b89501720c29545ed68b
 
-         * Fix string terminator buffer overrun potential.
+2017-07-11 09:55 +0000 [a4c85309f0]  Torrey Searle <torrey@voxbone.com>
 
-         Change-Id: If6a0806806527678c8554b1dcb34fd7808aa95c9
+       * res/res_stasis_snoop: generate silence when audiohook returns null
 
-2017-06-15 07:32 +0000 [4910a3bf40]  Joshua Colp <jcolp@digium.com>
+         Currently when rtp is paused, no packets are written to the
+         recorded audio file, causing the silence to be skipped and recording
+         not properly time aligned.  The read handler as been adapted to
+         return a silence frame of the correct size.
 
-       * channel: Fix reference counting in ast_channel_suppress.
+         ASTERISK-27128 #close
 
-         The ast_channel_suppress function wrongly decremented the
-         reference count of the underlying structure used to keep
-         track of what should be suppressed on a channel if the
-         function was called multiple times on the same channel.
+         Change-Id: I2d7f60650457860b9c70907b14426756b058a844
 
-         This change cleans up the reference counting a bit so
-         this no longer occurs.
+2017-07-14 01:25 +0000 [3858d99b73]  Sergej Kasumovic <sergej@bicomsystems.com>
 
-         ASTERISK-27016
+       * app_confbridge: Make sure name recordings are always removed from the filesystem
 
-         Change-Id: I2eed4077cb4916e6626f9f120b63b963acc5c136
+         This commit fixes two possible scenarios:
 
-2017-06-14 12:34 +0000 [f1a209d5ac]  Richard Mudgett <rmudgett@digium.com>
+         * When recording name and if during recording you hangup, file is never
+         removed. This is due to the fact file location is nulled.
+         * When recording name and if you hangup during thank-you prompt, file
+         is never removed.
 
-       * app_voicemail.c: Fix compile error when IMAP enabled.
+         ASTERISK-27123 #close
 
-         Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1
+         Change-Id: I39b7271408b4b54ce880c5111a886aa8f28c2625
 
-2017-06-08 12:28 +0000 [dc307af7f2]  Frederic LE FOLL <frederic.lefoll@c-s.fr>
+2017-07-14 01:11 +0000 [cdd6ca488a]  Sergej Kasumovic <sergej@bicomsystems.com>
 
-       * Core/PBX: Deadlock between dialplan execution and application unregistration.
+       * chan_iax2: On reload make sure to check for existing MWI subscription
 
-         Not easy to reproduce, but we have noticed deadlocks when unloading a module
-         while dialplan is handling a request.
+         On every reload of chan_iax2 module, MWI subscription was added, which
+         results in additional taskprocessors being accumulated over time.
 
-         The deadlock is between :
-         1) Dialplan execution: pbx_extension_helper() first taking conlock,
-         then pbx_findapp() [when called] asking for lock on apps list.
-         2) Application unregistration: ast_unregister_application() first taking lock
-         on apps list, then unreference_cached_app() [when called] asking for conlock.
+         This commit fixes it by making sure we check for existing subscription
+         first.
 
-         As a protection, I suggest to modify ast_unregister_application(), so that it
-         anticipates the need of conlock, before taking the lock on apps list.
-         The side effect is a longer unavailability of conlock when unregistering an
-         application.
+         This was verified with 'core show taskprocessors' CLI command.
 
-         ASTERISK-27041
+         ASTERISK-27122 #close
 
-         Change-Id: I0db0f1eb320da6a5758cce3a47d765be1face8e2
+         Change-Id: Ie2ef528fd5ca01b933eeb88188cc10967899cfb9
 
-2017-06-14 11:12 +0000 [c2eea791e4]  George Joseph <gjoseph@digium.com>
+2017-07-13 15:43 +0000 [9f66fb7901]  Rusty Newton <rnewton@digium.com>
 
-       * res_pjsip_pubsub:  Fix reference to released endpoint
+       * Sounds: Update for core sounds 1.6 release
 
-         destroy_subscription was attempting to get the id of the
-         subscription tree's endpoint after we'd already called ao2_cleanup
-         on it causing a segfault.
+         Added necessary lines to make the en_NZ language set selectable and to get
+         core sounds 1.6 pulled down.
 
-         Moved the cleanup until after the debug statement and since
-         endpoint could also be NULL at this point, check for that as well.
+         ASTERISK-26807 #close
+         ASTERISK-25816 #close
+         ASTERISK-26274 #close
 
-         ASTERISK-27057 #close
-         Reported-by: Ryan Smith
+         Change-Id: I84e4dd4696568cc1ba318d12ac4b075461d6eed4
 
-         Change-Id: Ice0a7727f560cf204d870a774c6df71e159b1678
+2017-07-10 14:04 +0000 [df49ad2528]  Corey Farrell <git@cfware.com>
 
-2017-06-14 08:29 +0000 [2dee95cc7a]  Florian Floimair (license 6892)
+       * core: Add PARSE_TIMELEN support to ast_parse_arg and ACO.
 
-       * res_pjsip_session:  Correct inverted test in session_outgoing_nat_hook
+         This adds support for parsing timelen values from config files.  This
+         includes support for all flags which apply to PARSE_INT32.  Support for
+         this parser is added to ACO via the OPT_TIMELEN_T option type.
 
-         There was a typo introduced in commit 776ffd77 which was preventing
-         the transport's external media address from being used.
+         Fixes an issue where extra characters provided to ast_app_parse_timelen
+         were ignored, they now cause an error.
 
-         ASTERISK-27024 #close
-         Reported-by: Christopher van de Sande
-         patches:
-               patch.diff submitted by Florian Floimair (license 6892)
+         Testing is included.
 
-         Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27
+         ASTERISK-27117 #close
 
-2017-06-08 17:31 +0000 [e16a669c70]  Jørgen H <asterisk.org@hovland.cx>
+         Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554
 
-       * res_pjsip_transport_websocket: Add NULL check in get_write_timeout
+2017-07-12 15:07 +0000 [6d0ff310c6]  Sean Bright <sean.bright@gmail.com>
 
-         Added check for NULL return value when calling
-         ast_sorcery_retrieve_by_id in function get_write_timeout
+       * basic-pbx: Remove res_pjsip_multihomed from sample config
 
-         ASTERISK-27046
+         ASTERISK-27127 #close
+         Reported by: HZMI8gkCvPpom0tM
 
-         Change-Id: I9357717278da631c3a1cb502c412693929b0cb41
+         Change-Id: I2b0c54570d58156e37166ac536728af3b6c01789
 
-2017-06-14 08:54 +0000 [7dafe82751]  George Joseph <gjoseph@digium.com>
+2017-07-11 07:26 +0000 [4e555437dc]  George Joseph <gjoseph@digium.com>
 
-       * res_rtp_asterisk:  Fix ssrc change for rtcp srtp
+       * res_musiconhold:  Add kill_escalation_delay, kill_method to class
 
-         It looks like there was a copy/paste error in ast_rtp_change_source
-         where if there was a rtcp srtp instance, instead of updating its
-         ssrc we were updating the srtp instance ssrc twice.
+         By default, when res_musiconhold reloads or unloads, it sends a HUP
+         signal to custom applications (and all descendants), waits 100ms,
+         then sends a TERM signal, waits 100ms, then finally sends a KILL
+         signal.  An application which is interacting with an external
+         device and/or spawns children of its own may not be able to exit
+         cleanly in the default times, expecially if sent a KILL signal, or
+         if it's children are getting signals directly from
+         res_musiconhoild.
 
-         ASTERISK-27022 #close
-         Reported-by: Michael Walton
+         * To allow extra time, the 'kill_escalation_delay'
+           class option can be used to set the number of milliseconds
+           res_musiconhold waits before escalating kill signals, with the
+           default being the current 100ms.
 
-         Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095
+         * To control to whom the signals are sent, the "kill_method" class
+           option can be set to "process_group" (the default, existing
+           behavior), which sends signals to the application and its
+           descendants directly, or "process" which sends signals only to the
+           application itself.
 
-2017-06-08 14:38 +0000 [e414833f6e]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b
 
-       * bridge: Add a deferred queue.
+2017-07-03 07:30 +0000 [4f2f3bfebf]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         This change adds a deferred queue to bridging. If a bridge
-         technology determines that a frame can not be written and
-         should be deferred it can indicate back to bridging to do so.
-         Bridging will then requeue any deferred frames upon a new
-         channel joining the bridge.
+       * Avoid setting maxfiles for a remote asterisk
 
-         This change has been leveraged for T.38 request negotiate
-         control frames. Without the deferred queue there is a race
-         condition between the bridge receiving the T.38 request
-         negotiate and the second channel joining and being in the
-         bridge. If the channel is not yet in the bridge then the T.38
-         negotiation fails.
+         Setting maxfiles (maximum number of open files) has no practical
+         effect on a remote asterisk (rasterisk, rasterisk -x).
 
-         A unit test has also been added that confirms that a T.38
-         request negotiate control frame is deferred when no other
-         channel is in the bridge and that it is requeued when a new
-         channel joins the bridge.
+         It has an ill effect of printing an extra message, which
+         may be annoying in case of -x.
 
-         ASTERISK-26923
+         ASTERISK-27105 #close
 
-         Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415
+         Change-Id: Iaf9eb344e4b4b517df91b736b27ec55f6a6921a2
 
-2017-06-13 14:17 +0000 [6cdf3191d3]  Kevin Harwell <kharwell@digium.com>
+2017-07-05 15:31 +0000 [32b98ad956]  George Joseph <gjoseph@digium.com>
 
-       * res_pjsip_refer/session: Calls dropped during transfer
+       * http.c:  Reduce log spam
 
-         When doing an attended transfer it's possible for the transferer, after
-         receiving an accepted response from Asterisk, to send a BYE to Asterisk,
-         which can then be processed before Asterisk has time to start and/or
-         complete the transfer process. This of course causes the transfer to not
-         complete successfully, thus dropping the call.
+         Messages like "fwrite() failed: Connection reset by peer" are no
+         help whatsoever, especially since they can be caused simply by a
+         client disconnecting.
 
-         This patch makes it so any BYEs received from the transferer, after the REFER,
-         that initiate a session end are deferred until the transfer is complete. This
-         allows the channel that would have otherwise been hung up by Asterisk to
-         remain available throughout the transfer process.
+         * Make those WARNINGs DEBUGs.
+         * Check the return of the headers fprintf.
 
-         ASTERISK-27053 #close
+         Change-Id: I17bd5f3621514152a7b2b263c801324c5e96568b
 
-         Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a
+2017-07-07 11:19 +0000 [25e18bf514]  Benjamin Keith Ford <bford@digium.com>
 
-2017-06-13 10:47 +0000 [0bde568669]  George Joseph <gjoseph@digium.com>
+       * res_pjsip: Fix crash with from_user containing invalid characters.
 
-       * pjproject_bundled:  Use the asterisk github mirror for download
+         If the from_user field contains certain characters (like @, {, ^, etc.),
+         PJSIP will return a null value for the URI when attempting to parse it.
+         This causes a crash when trying to dial out through a trunk that contains
+         these invalid characters in its from_user field.
 
-         We now mirror the pjproject tarball and md5 at
-         https://github.com/asterisk/third-party/tree/master/pjproject
+         This change checks the configuration and ensures that an endpoint will
+         not be created if the from_user contains an invalid character. It also
+         adds a null check to the PJSIP URI parsing as a backup.
 
-         To improve download reliability, we now get the tarball from
-         our mirror instead of from pjsip.org.
+         ASTERISK-27036 #close
+         Reported by: Maxim Vasilev
 
-         ASTERISK-27052 #close
-         Reported-by: 'alex'
+         Change-Id: I0396fdb5080604e0bdf1277464d5c8a85db913d0
 
-         Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a
+2017-06-27 19:27 +0000 [8a803f75a0]  Richard Mudgett <rmudgett@digium.com>
 
-2017-06-12 17:55 +0000 [08be5e01e8]  Alexei Gradinari <alex2grad@gmail.com>
+       * json.c: Add backtrace log to find 'Invalid UTF-8 string' errors
 
-       * app_voicemail: IMAP logout on MWI unsubscribe
+         Change-Id: I9020ff9f2b3749904317c0c173f47a1bbed6f929
 
-         Closing IMAP connection on MWI unsubscribe.
+2017-07-05 13:39 +0000 [aa514f420b]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-24052 #close
+       * res_rtp_asterisk.c: Fix TURN deadlock by using ICE session group lock.
 
-         Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd
+         When a message is received on the TURN socket, the code processing the
+         message needs to call into the ICE/STUN session for further processing.
+         This code path locks the TURN group lock then the ICE/STUN group lock.  In
+         another thread an ICE/STUN timer can fire off to send a keep alive message
+         over the TURN socket.  In this code path, the ICE/STUN group lock is
+         obtained then the TURN group lock is obtained to send the packet.  A
+         classic deadlock case if the group locks are not the same.
 
-2017-06-12 09:57 +0000 [59c9bbe696]  Alexei Gradinari <alex2grad@gmail.com>
+         * Made TURN get created using the ICE/STUN session's group lock.
 
-       * res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled
+         NOTE: I was originally concerned that the ICE/STUN session can get
+         recreated by ice_reset_session() for an event like RTCP multiplexing
+         causing a change during SDP negotiation.  In this case the TURN group lock
+         would become different.  However, TURN is also recreated as part of the
+         ICE/STUN recreation in ice_create() when all known ICE candidates are
+         added to the new ICE session.  While the ICE/STUN and TURN sessions are
+         being recreated there is a period where the group locks could be
+         different.
 
-         If sending unsolicited mwi to all endpoints on startup is disabled
-         (mwi_disable_initial_unsolicited=yes) do not need to create subscriptions.
-         If there are many (thousands) realtime endpoints configured with unsolicited mwi
-         and Vociemail Storage configured as ODBC or IMAP there will be huge number of
-         DB/IMAP requests on startup.
+         ASTERISK-27023 #close
+         Patches:
+             res_rtp_asterisk-turn-deadlock-fix.patch (license #6502)
+                 patch uploaded by Michael Walton (modified)
 
-         ASTERISK-26230 #close
+         Change-Id: Ic870edb99ce4988a8c8eb6e678ca7f19da1432b9
 
-         Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5
+2017-07-06 05:55 +0000 [379fe65831]  George Joseph <gjoseph@digium.com>
 
-2017-06-06 14:54 +0000 [68de35a6a0]  David M. Lee <dlee@respoke.io>
+       * Fix alembic branches
 
-       * CFLAGS for BIND8 support
+         Change-Id: I04f607f084bda9b1b7f626e8e9735c37dc751187
 
-         Some systems (like macOS) require BIND_8_COMPAT to be defined so that
-         the nameser libraries are, well, BIND8 compatible.
+2017-06-23 11:17 +0000 [22c4c1a0ba]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0
+       * bridge_native_rtp.c: Fix direct media video RTP instance ACL check.
 
-2017-06-11 12:06 +0000 [da3312457e]  Sean Bright <sean.bright@gmail.com>
+         The video stream was using the audio stream RTP instance addresses to
+         check if the video RTP gets directed to an allowed direct media Access
+         Control List (ACL) address.  There is no guarantee that the video RTP
+         instance uses the same addresses as the audio RTP instance.
 
-       * codecs.conf.sample: Fix max_bandwidth speling error
+         This looks like it has been a bug since v11 when direct media ACL was
+         first added to chan_sip and then faithfully reproduced through a couple
+         code refactorings into the new bridging architecture.
 
-         Reported by Sylvain Boily via asterisk-dev mailing list.
+         Change-Id: I8ddd56320e0eea769f3ceed3fa5b6bdfb51d681a
 
-         Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d
+2017-07-05 07:42 +0000 [6258de458b]  Sean Bright <sean.bright@gmail.com>
 
-2017-06-08 10:54 +0000 [6a64f65fe6]  Guido Falsi <madpilot@freebsd.org>
+       * core: Fix segfault when invoking 'data get' CLI command
 
-       * BuildSystem: Add patches to allow building with recent LibreSSL
+         Invoking 'data get /asterisk/core/channeltypes' caused a crash because
+         of an assumption of a tech's capabilities to be non-NULL. The
+         'Surrogate' tech, however, does have a NULL capabilities member,
+         resulting in a crash.
 
-         Add some #if defined checks which allow building against LibreSSL.
-         These patchess come from OpenBSD ports:
-         https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/telephony/asterisk/patches/
+         ASTERISK-27108 #close
 
-         ASTERISK-27043 #close
-         Reported by: OpenBSD ports
+         Change-Id: I2fbe7715681f43d5565d1e1599269468c26b0e0a
 
-         Change-Id: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572
+2017-07-03 10:59 +0000 [39d2ebbf56]  Alexander Traud <pabstraud@compuserve.com>
 
-2017-06-08 10:36 +0000 [44cee2f4a1]  Guido Falsi <madpilot@freebsd.org>
+       * chan_sip: Only when different, add TCP|TLS in autodomain (SIP Domain Support).
 
-       * BuildSystem: Fix build on FreeBSD due to missing crypt.h
+         When sip.conf contained tcpenable=yes and autodomain=yes, the TCP domain was
+         added in any case, because of a local Boolean-negation error of the return value
+         of ast_sockaddr_cmp. After fixing this error for TCP and TLS, the TLS domain was
+         still always added with tlsenable=yes, because the domains were not compared
+         just on the address but also on the port – and TLS is always on a different port
+         than UDP/TCP.
 
-         FreeBSD does not include a crypt.h include file. Definitions for
-         crypt() and crypt_r() are in unistd.h
+         ASTERISK-27106
 
-         ASTERISK-27042 #close
+         Change-Id: I14fe9e319e238320b094016980445ef3a5b3337c
 
-         Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e
+2017-07-03 10:38 +0000 [9f4b3b966e]  Alexander Traud <pabstraud@compuserve.com>
 
-2017-06-07 15:19 +0000 [1f10c6b3b0]  Joshua Colp <jcolp@digium.com>
+       * chan_sip: Fix a typo for tlsbindaddr in autodomain (SIP Domain Support).
 
-       * chan_pjsip: Update device state when in early media.
+         Because of a copy-and-paste error when the struct ast_sockaddr changed,
+         tlsbindaddr was not added, when sip.conf contained autodomain=yes; see
+         "show sip domains" on the command-line interface (CLI) of Asterisk.
 
-         The chan_pjsip module uses a calculation approach for
-         determining device state. This means that in situations
-         where we would expect device state to change we need to
-         tell the core to query. A scenario that was missed is
-         when early media was signaled.
+         ASTERISK-27106
 
-         This change adds the notification for the core to
-         query device state when we are told that early media
-         is being provided.
+         Change-Id: I3d0957150017c223136968ef1266f275d0d6695e
 
-         ASTERISK-27039
+2017-06-29 13:58 +0000 [194625c1de]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f
+       * app_voicemail: Cleanup ODBC connection handling
 
-2017-06-07 14:32 +0000 [590ffcaf0b]  Sean Bright <sean.bright@gmail.com>
+         The primary focus of this patch is adding a missing call to
+         ast_odbc_release_obj(), but is also a general cleanup of the ODBC
+         related code in app_voicemail.
 
-       * eventfd: Disable during cross compilation
+         ASTERISK-27093 #close
 
-         Reported by Lonnie Abelbeck <lonnie@abelbeck.com> via private e-mail.
+         Change-Id: I8e285142eaeb3146b4287a928276b70db76c902b
 
-         Change-Id: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b
+2017-06-30 23:57 +0000 [73520e9f58]  Corey Farrell <git@cfware.com>
 
-2017-06-07 11:21 +0000 [5520b6c201]  Alexei Gradinari <alex2grad@gmail.com>
+       * channel: Clear channel flag in error branch.
 
-       * CHANGES: correct version for a new option 'refer_blind_progress'
+         Clear channel flag AST_FLAG_END_DTMF_ONLY in ast_waitfordigit_full when
+         ast_read returns NULL.
 
-         Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97
+         ASTERISK-27100 #close
 
-2017-06-06 07:04 +0000 [996a4791ff]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Id3039e9a4e74e0cb359f636c9fd0c9740ebf7d9d
 
-       * pjsip: Extend 'asymmetric_rtp_codec' option to include us changing.
+2017-06-29 18:27 +0000 [0d64cbde57]  Richard Mudgett <rmudgett@digium.com>
 
-         PJSIP support in Asterisk differs from chan_sip in that it
-         allows media to be sent as-is without transcoding provided
-         the codecs were negotiated in the SDP. This is allowed
-         according to the RFC. Support for this differs quite a lot
-         though and some endpoints do not handle it well.
+       * pjsip_distributor.c: Fix deadlock with TCP type transports.
 
-         This change extends the 'asymmetric_rtp_codec' option to
-         also cover this case. When set to no (the default) the code
-         behaves as chan_sip does - the best codec is selected and
-         we will only ever send that, unless we change what we are
-         sending if the remote side changes. When set to yes we
-         will send media as-is without transcoding if the codec
-         has been negotiated in the SDP.
+         When a SIP message comes in on a transport, pjproject obtains the lock on
+         the transport and pulls the data out of the socket.  Unlike UDP, the TCP
+         transport does not allow concurrent access.  Without concurrency the
+         transport lock is not released when the transport's message complete
+         callback is called.  The processing continues and eventually Asterisk
+         starts processing the SIP message.  The first thing Asterisk tries to do
+         is determine the associated dialog of the message to determine the
+         associated serializer.  To get the associated serializer safely requires
+         us to get the dialog lock.
 
-         ASTERISK-26996
+         To send a request or response message for a dialog, pjproject obtains the
+         dialog lock and then obtains the transport lock.  Deadlock can result
+         because of the opposite order the locks are obtained.
 
-         Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51
+         * Fix the deadlock by obtaining the serializer associated with the dialog
+         another way that doesn't involve obtaining the dialog lock.  In this case,
+         we use an ao2 container to hold the associated endpoint and serializer.
+         The new locks are held a brief time and won't overlap other existing lock
+         times.
 
-2017-06-06 10:04 +0000 [c093bf8072]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-27090 #close
 
-       * res_rtp_multicast: Use consistent timestamps when possible
+         Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd
 
-         When a frame destined for a MulticastRTP channel does not have timing
-         information (such as when an 'originate' is done), we generate the RTP
-         timestamps ourselves without regard to the number of samples we are
-         about to send.
+2017-06-29 18:22 +0000 [905d18e8bf]  Richard Mudgett <rmudgett@digium.com>
 
-         Instead, use the same method as res_rtp_asterisk and 'predict' a
-         timestamp given the number of samples. If the difference between the
-         timestamp that we generate and the one we predict is within a specific
-         threshold, use the predicted timestamp so that we end up with timestamps
-         that are consistent with the number of samples we are actually sending.
+       * pjsip_distributor.c: Fix unidentified_requests hash functions.
 
-         Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f
+         The OBJ_SEARCH_xxx defines should not be used as if they were individual
+         bits.  They represent a multi-bit enumeration value field.
 
-2017-05-31 10:41 +0000 [746c2c5745]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I32abc9a475396dab02402a7014357dd94284e17b
 
-       * res_pjsip: Add support for returning only reachable contacts and use it.
+2017-06-30 08:31 +0000 [bbe68f139d]  George Joseph <gjoseph@digium.com>
 
-         This introduces the ability for PJSIP code to specify filtering flags
-         when retrieving PJSIP contacts. The first flag for use causes the
-         query code to only retrieve contacts that are not unreachable. This
-         change has been leveraged by both the Dial() process and the
-         PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt
-         calls to contacts which are not unreachable.
+       * pjproject_bundled:  Allow passing configure options to bundled
 
-         ASTERISK-26281
+         There wasn't any good way to pass options like --host or --build
+         down to the pjproject configure which makes cross-compiling difficult.
 
-         Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c
+         * Added a new PJPROJECT_CONFIGURE_OPTS environment variable which
+           can be used to pass arbitrary options to pjproject configure.
+         * Automatically set the pjproject configure --host and --build
+           options to match those supplied for the asterisk configure.
 
-2017-06-05 10:45 +0000 [adfb28882b]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-27097 #close
+         Reported-by: Kinsey Moore
 
-       * channel: ast_write frame wrongly freed after call to audiohooks
+         Change-Id: I5fa776e110262851173002a26ffe1172e4c35b2e
 
-         ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in
-         ast_write. It would free the frame given to ast_write if the frame returned
-         by ast_audiohook_write_list was different than the given one. The frame
-         give to ast_write should never be freed within that function. It is the
-         caller's resposibility to free the frame after writing (or when it its done
-         with it). By freeing it within ast_write this of course led to some memory
-         corruption problems.
+2017-06-29 14:50 +0000 [6bd7c0f37c]  George Joseph <gjoseph@digium.com>
 
-         This patch makes it so the frame given to ast_write is no longer freed within
-         the function. The frame returned by ast_audiohook_write_list is now subsequently
-         used in ast_write and is freed later. It is freed either after translate if the
-         frame returned by translate is different, or near the end of ast_write prior
-         to function exit.
+       * chan_pjsip:  Fix ability to send UPDATE on COLP
 
-         ASTERISK-26973 #close
+         When connected_line_method is "invite", we're supposed to determine
+         if the client can support UPDATE and if it can, send UPDATE instead
+         of INVITE to avoid the SDP renegotiation.  Not only was pjproject
+         not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing
+         that invite_tsx wasn't NULL which isn't always the case.
 
-         Change-Id: I463d4ac3b736ced95de986ee74a489c7c7ab103b
+         * Updated chan_pjsip/update_connected_line_information to drop the
+           requirement that invite_tsx isn't NULL.
+         * Submitted patch to pjproject sip_inv.c that sets the
+           PJSIP_INV_SUPPORT_UPDATE flag correctly.
+         * Updated pjsip.conf.sample to clarify what happens when "invite"
+           is specified.
 
-2017-05-31 11:45 +0000 [283cc59af7]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-27095
 
-       * pbx_builtin: Properly handle hangup during Background
+         Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560
 
-         Before this patch, when a user hung up during a Background, we would
-         stuff 0xff into a char and attempt a dialplan lookup of it. This caused
-         problems for some realtime engines which interpreted the value as the
-         beginning of an invalid UTF-8 sequence.
+2017-06-27 04:37 +0000 [2c43ca0ac5]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         ASTERISK-19291 #close
-         Reported by: Andrew Nowrot
+       * app_queue: Fix returning to dialplan when a queue is empty
 
-         Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358
+         The fix for ASTERISK-25665 introduced a regression.
+         The return value of queue_exec used to be 0 in case of leavewhenempty
+         but it was changed to -1 (returned from wait_our_turn and passed
+         transparently by queue_exec), thus leading to hangup instead of returning
+         back to dialplan.
 
-2017-05-31 04:25 +0000 [dc05183f4b]  Joshua Colp <jcolp@digium.com>
+         This commit resets the value back to 0 in this case, restoring
+         original behavior.
 
-       * channel / app_meetme: Fix parentheses.
+         ASTERISK-27065 #close
+         Reported by: Marek Cervenka
 
-         ASTERISK-27025
+         Change-Id: Id9c83b75aeda463250155e88c5004be52bbca5ac
 
-         Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed
+2017-06-28 09:03 +0000 [0426b1d88a]  Joshua Colp <jcolp@digium.com>
 
-2017-05-30 16:07 +0000 [cf6cf59646]  Sean Bright <sean.bright@gmail.com>
+       * res_rtp_asterisk: Fix issues with ICE renegotiation.
 
-       * stasis_recording: Correct ast_asprintf error checking
+         When re-inviting to add more streams it is possible for
+         the role of existing ICE sessions to be changed to the
+         incorrect value. This results in subsequent refreshes
+         within the sessions getting a role conflict and the ICE
+         session breaking down. This change only sets the role to
+         be the new value if an ICE renegotiation is actually
+         going to happen, otherwise the existing role is preserved.
 
-         ASTERISK-27021 #close
-         Reported by: Tim Morgan
+         As well if we encounter a situation where a unidirectional
+         ICE negotiation happens and the other side does not send us
+         candidates we will not store any information for sending
+         traffic, even though we know where they are reachable. This
+         change fixes this by using the source of the ICE traffic
+         itself as the target if no candidates are known and we
+         receive some ICE traffic.
 
-         Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75
+         ASTERISK-27088
 
-2017-05-28 15:43 +0000 [70e5887906]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I71228181e358917fcefc3100fad21b2fc02a59a9
 
-       * format: Reintroduce smoother flags
+2017-06-08 22:50 +0000 [eb48e99bd4]  George Joseph <gjoseph@digium.com>
 
-         In review 4843 (ASTERISK-24858), we added a hack that forced a smoother
-         creation when sending signed linear so that the byte order was adjusted
-         during transmission. This was needed because smoother flags were lost
-         during the new format work that was done in Asterisk 13.
+       * bridge_native_rtp: Keep rtp instance refs on bridge_channel
 
-         Rather than rolling that same hack into res_rtp_multicast, re-introduce
-         smoother flags so that formats can dictate their own options.
+         There have been reports of deadlocks caused by an attempt to send a frame
+         to a channel's rtp instance after the channel has left the native bridge
+         and been destroyed.  This patch effectively causes the bridge channel to
+         keep a reference to the glue and both the audio and video rtp instances
+         so what gets started will get stopped.
 
-         Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16
+         ASTERISK-26978 #close
+         Reported-by: Ross Beer
 
-2017-05-30 09:34 +0000 [97b003f5e2]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: I9e1ac49fa4af68d64826ccccd152593cf8cdb21a
 
-       * format_mp3: Re-work menuselect/build issues
+2017-06-27 10:46 +0000 [1f59d08924]  Torrey Searle <torrey@voxbone.com>
 
-         Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3
-         to not show up in menuselect), use .PHONY targets when the necessary
-         source files are not present.
+       * res/res_pjsip_t38: fix incorrect increment of media_count
 
-         ASTERISK-23951
-         Reported by: Tzafrir Cohen
+         The T38 sdp callback incorrectly has a side effect of incrementing
+         the media_count.  This can lead to core dumps.
 
-         Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8
+         Change-Id: I7bb2f4987de4046ec52cfc34e5ea0662dae32af8
 
-2017-05-30 09:43 +0000 [c10341646d]  George Joseph <gjoseph@digium.com>
+2017-06-15 03:12 +0000 [9fbc34d2bd]  Torrey Searle <torrey@voxbone.com>
 
-       * test_json:  Fix test names with reserved words
+       * res_pjsip:  Add DTMF INFO Failback mode
 
-         Some of the test names were actually reserved words (true, false,
-         int, null, string, bool).  When the jenkins test results analyzer
-         does its thing it tries to create a map using the test names as
-         keys and fails because they're reserved words.
+         The existing auto dtmf mode reverts to inband if 4733 fails to be
+         negotiated.  This patch adds a new mode auto_info which will
+         switch to INFO instead of inband if 4733 is not available.
 
-         Added "type_" to those test names.
+         ASTERISK-27066 #close
 
-         Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b
+         Change-Id: Id185b11e84afd9191a2f269e8443019047765e91
 
-2017-05-26 11:41 +0000 [b07b216235]  Joshua Colp <jcolp@digium.com>
+2017-06-22 07:47 +0000 [154d2914fa]  Torrey Searle <torrey@voxbone.com>
 
-       * manager: Clear the flag on the other channel.
+       * res/res_pjsip_t38  ensure t38 requests get rejected quickly
 
-         During the channel flag audit an incorrect change was
-         done. The flag should be cleared on the second channel.
+         arm the t38 webhook always, so we can correctly reject a
+         T38 negotiation request when t38 is disabled on a channel
 
-         ASTERISK-26469
+         Change-Id: Ib1ffe35aee145d4e0fe61dd012580be11aae079d
 
-         Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8
+2017-06-21 17:57 +0000 [764d04fa87]  Richard Mudgett <rmudgett@digium.com>
 
-2017-05-26 11:06 +0000 [5e9cd1f20d]  Sean Bright <sean.bright@gmail.com>
+       * res_pjsip_mwi.c: Eliminate RAII_VAR in contact delete observer
 
-       * res_srtp: Add support for libsrtp2
+         Change-Id: I0bc97c6608de1d1a4228826b3b3be43f162f05f3
 
-         ASTERISK-25294 #close
-         Reported by: Tzafrir Cohen
+2017-06-16 18:08 +0000 [0f6a9617eb]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-26976 #close
-         Reported by: Alex
+       * res_pjsip_mwi: update unsolicited MWI subscriptions on updating contact
 
-         Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40
+         Do not need to unsubscribe/subscribe on creating the ednpoint's contact.
+         The modified function create_mwi_subscriptions_for_endpoint adds
+         the subscription only if it does not exist.
 
-2017-05-25 11:10 +0000 [72213c98e3]  Sean Bright <sean.bright@gmail.com>
+         The subscriptions aren't added for active contacts
+         which are retrieved on startup from realtime
+         if mwi_disable_initial_unsolicited=yes.
+         Because the mwi_contact_added is not called.
+         So the subscriptions also should be created on updating contact.
 
-       * format_mp3: Don't try to build format_mp3 if we don't have sources
+         ASTERISK-26230 #close
 
-         ASTERISK-23951 #close
-         Reported by: Tzafrir Cohen
+         Change-Id: I47e265af9296ca09aa42a316fdacac104148cee4
 
-         Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30
+2017-06-20 15:41 +0000 [1f9913f272]  Kevin Harwell <kharwell@digium.com>
 
-2017-05-24 15:50 +0000 [65898c3af8]  George Joseph <gjoseph@digium.com>
+       * core_local: local channel data not being properly unref'ed and unlocked
 
-       * unittests:  Add a unit test that causes a SEGV and...
+         In an earlier version of Asterisk a local channel [un]lock all functions were
+         added in order to keep a crash from occurring when a channel hung up too early
+         during an attended transfer. Unfortunately, when a transfer failure occurs and
+         depending on the timing, the local channels sometime do not get properly
+         unlocked and deref'ed after being locked and ref'ed. This happens because the
+         underlying local channel structure gets NULLed out before unlocking.
 
-         ...that can only be run by explicitly calling it with
-         'test execute category /DO_NOT_RUN/ name RAISE_SEGV'
+         This patch reworks those [un]lock functions and makes sure the values that get
+         locked and ref'ed later get unlocked and deref'ed.
 
-         This allows us to more easily test CI and debugging tools that
-         should do certain things when asterisk coredumps.
+         ASTERISK-27074 #close
 
-         To allow this a new member was added to the ast_test_info
-         structure named 'explicit_only'.  If set by a test, the test
-         will be skipped during a 'test execute all' or
-         'test execute category ...'.
+         Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09
 
-         Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed
+2017-06-20 16:01 +0000 [67664fbf95]  Kevin Harwell <kharwell@digium.com>
 
-2017-05-23 15:42 +0000 [90237dca11]  Sean Bright <sean.bright@gmail.com>
+       * bridge: stuck channel(s) after failed attended transfer
 
-       * res_agi: Allow configuration of audio format of EAGI pipe
+         If an attended transfer failed it was possible for some of the channels
+         involved to get "stuck" because Asterisk was not hanging up the transfer target.
 
-         This change allows the format of the EAGI audio pipe to be changed by
-         setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of
-         the loaded formats.
+         This patch ensures Asterisk hangs up the transfer target when an attended
+         transfer failure occurs.
 
-         ASTERISK-26124 #close
+         ASTERISK-27075 #close
 
-         Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd
+         Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9
 
-2017-05-23 13:33 +0000 [3eb7fbba72]  Sean Bright <sean.bright@gmail.com>
+2017-06-19 11:28 +0000 [cecf6540dc]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
 
-       * res_agi: Clarify 'RECORD FILE' documentation
+       * cdr: fix mistake spelling of a word for Unanswered.
 
-         Documented the 'beep' option in both the parameters list and the command
-         description.
+         Change-Id: I7a610bef369924523a445c7e849ee88cc45dc5df
 
-         ASTERISK-23839 #close
+2017-06-19 17:21 +0000 [8f356192d1]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea
+       * app_voicemail: IMAP connection control
 
-2017-05-23 13:06 +0000 [f306e451f6]  Sean Bright <sean.bright@gmail.com>
+         A new global option "imap_poll_logout" was added to specify whether need to
+         disconnect from the IMAP server after polling of mailboxes.
 
-       * res_agi: Prevent crash when SET VARIABLE called without arguments
+         ASTERISK-27068 #close
 
-         Explicitly check that the appropriate number of arguments were passed to
-         SET VARIABLE before attempting to reference them. Also initialize the
-         arguments array to zeroes before populating it.
+         Closing IMAP connection after loading mailbox from voicemail.conf
 
-         ASTERISK-22432 #close
+         ASTERISK-24052 #close
 
-         Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97
+         Change-Id: Ib7558ba04516240a32b65f42e9be64372a0ae12a
 
-2017-05-23 12:35 +0000 [a007e438c3]  Sean Bright <sean.bright@gmail.com>
+2017-06-12 16:17 +0000 [8e749c8f51]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * res_agi: Fix malformed AGI usage response
+       * res_pjsip_mwi: unsubscribe unsolicited MWI on deleting endpoint last contact
 
-         If the generated XML documentation for a command does not end with a \n,
-         the postamble of the usage message does not appear on its own line.
+         If the endpoint's last contact is deleted unsolicited MWI has to be
+         unsubscribed.
 
-         ASTERISK-25662 #close
+         ASTERISK-27051 #close
 
-         Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020
+         Change-Id: I33e174e0b9dba0998927d16d6d100fda5c7254e0
 
-2017-05-23 12:00 +0000 [971a401ce9]  Sean Bright <sean.bright@gmail.com>
+2017-06-16 09:31 +0000 [edfdb4dff5]  George Joseph <gjoseph@digium.com>
 
-       * sip.conf.sample: Clarify where DTLS settings are permitted
+       * res_stasis:  Plug reference leak on stolen channels
 
-         ASTERISK-25101 #close
+         When a stasis channel is stolen by another app, the control
+         structure is unreffed but never unlinked from the app_controls
+         container.  This causes the channel reference to leak.
 
-         Change-Id: I09a97793e5577b4422d0ae883fadb3f0d86725cc
+         Added OBJ_UNLINK to the callback in channel_stolen_cb.
 
-2017-05-23 10:06 +0000 [700ef6861a]  Sean Bright <sean.bright@gmail.com>
+         Also added some additional channel lifecycle debug messages to
+         channel.c.
 
-       * res_format_attr_h26x: Trim blanks in fmtp attributes
+         ASTERISK-27059 #close
+         Repoorted-by: George Joseph
 
-         Some devices separate format attributes with a semicolon followed by a
-         space, so trim blanks before trying to match them.
+         Change-Id: Ib820936cd49453f20156971785e7f4f182c56e14
 
-         ASTERISK-27008 #close
+2017-06-16 14:56 +0000 [0a40073750]  Matthew Fredrickson <creslin@digium.com>
 
-         Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc
+       * formats/format_g729: Fix typo in comment
 
-2017-05-15 15:03 +0000 [6bfcb1acc7]  Joshua Colp <jcolp@digium.com>
+         There was a typo in a comment.  This commit is to fix the typo.
 
-       * app_queue: Fix members showing as being in call when not.
+         ASTERISK-27060 #close
 
-         A change was done which added an 'in_call' flag to queue
-         members that was set to true while talking to an agent.
-         Unfortunately in practice this does not accurately reflect
-         whether they are talking to an agent or not. If a Local
-         channel is involved and a transfer is performed then the
-         app_queue application would incorrectly think the agent
-         was still in a call with the caller. This was done to
-         fix a race condition between an agent becoming available
-         by device state and the checking of the last call information
-         for the wrapup time. There was a small window where the
-         last call information would be the previous value instead
-         of the new one.
+         Change-Id: Ic2699f8dbeaacd58ccb6ec3203e853e1babe3235
 
-         This change goes about fixing the original issue in a
-         different way by considering the call completed if device
-         state is received which would make the agent available
-         and if they are currently in a call. If this occurs the
-         last call information is updated before the agent becomes
-         available ensuring that old information is not present
-         when checking if the member should be called. This also
-         improves the transfer situation by actually updating
-         and enforcing the wrapup time.
+2017-06-12 09:23 +0000 [a6e4899612]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-26399
-         ASTERISK-26400
-         ASTERISK-26715
-         ASTERISK-26975
+       * res_pjsip: New endpoint option "notify_early_inuse_ringing"
 
-         Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea
+         This option was added to control whether to notify dialog-info state
+         'early' or 'confirmed' on Ringing when already INUSE.
+         The value "yes" is useful for some SIP phones (Cisco SPA)
+         to be able to indicate and pick up ringing devices.
 
-2017-05-23 05:45 +0000 [f1b32de2c5]  Robert Mordec <r.mordec@slican.pl>
+         ASTERISK-26919 #close
 
-       * app_confbridge: Race between removing and playing name recording while leaving
+         Change-Id: Ie050bc30023543c7dfb4365c5be3ce58c738c711
 
-         When user leaves a conference, its channel calls async_play_sound_file()
-         in order to play the name announcement and then unlinks the sound file.
-         The async_play_sound_file() function adds a task to conference playback queue,
-         which then runs playback_common() function in a different thread.
+2017-03-30 09:33 +0000 [005a4afa6b]  Jan Friesse <jfriesse@redhat.com>
 
-         It leads to a race condition when, in some cases, channel thread may unlink
-         the sound file before playback_common() had a chance to open it.
+       * res_corosync: Change thread stack size
 
-         This patch creates a file deletion task, that is queued after playback.
+         In Corosync 2.x libraries were changed to use LibQB IPC.
+         Sadly LibQB IPC doesn't support copy-free access to received buffer, so
+         Corosync libraries were rewritten to use stack as buffer. Mostly the
+         needed stack size is quite small, but for all *_dispatch functions, 1MiB
+         is needed.
 
-         ASTERISK-27012 #close
+         Asterisk function ast_pthread_create_background set stack size for new
+         thread to much smaller AST_BACKGROUND_STACKSIZE (~500KiB).
 
-         Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3
+         This results in Asterisk crash when running with Corosync 2.x.
 
-2017-05-22 13:51 +0000 [e91efef2bb]  Kevin Harwell <kharwell@digium.com>
+         Patch solves this issue by creating it's own version of
+         ast_pthread_create_background which sets stack size to much higher value
+         (actually it's AST_BACKGROUND_STACKSIZE + 3MiB).
 
-       * res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm
+         Another problem may appear when "corosync show members" netconsole
+         command is executed. It is also executed in thread and also has only
+         500KiB stack size. Sadly it calls corosync_cfg_get_node_addrs which
+         again needs at least 1MiB stack.
 
-         When using rtcp mux if an rtcp payload came in it would still use the srtp
-         unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp
-         data was being passed to the rtp unprotect method this would result in an
-         error.
+         Solution is to use HAVE_COROSYNC_CFG_STATE_TRACK as a discriminator
+         between Corosync 1.x and 2.x. If 1.x is found, nothing changes. If 2.x
+         is found, NodeID is displayed instead of IP address.
 
-         This patch ensures that the correct unprotect method is chosen by making
-         sure the passed in rtcp flag is appropriately set when rtcp mux is enabled
-         and an rtcp payload is received.
+         ASTERISK-25370 #close
+         Reported by: mdu113
 
-         ASTERISK-26979 #close
+         Change-Id: Id95b0d21ab6e708e7d74ad8786c587211676fa08
 
-         Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241
+2017-06-13 11:33 +0000 [7901b9853e]  George Joseph <gjoseph@digium.com>
 
-2017-05-19 10:05 +0000 [4479038073]  Sean Bright <sean.bright@gmail.com>
+       * res_ari:  Add "module loaded" check to ari stubs
 
-       * chan_sip: Better ICE handling for RTCP-MUX
+         The recent change to make the use of LOAD_DECLINE more consistent
+         caused res_ari to unload itself before declining if the ari.conf
+         file wasn't found.  The ari stubs though still tried to use the
+         configuration resulting in segfaults.
 
-         If we are offered or are offering RTCP-MUX, don't consider RTCP ICE
-         candidates. This confuses certain browsers (current Firefox for
-         example) and causes intial audio setup delays.
+         This patch creates a new CHECK_ARI_MODULE_LOADED macro which tests
+         to see if res_ari is actually loaded and causes the stubs to also
+         decline if it isn't.  The macro was then added to the mustache
+         template's "load_module" function.
 
-         ASTERISK-26982 #close
+         ASTERISK-27026 #close
+         Reported-by: Ronald Raikes
 
-         Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91
+         Change-Id: I263d56efa628ee3c411bdcd16d49af6260c6c91d
 
-2017-04-26 09:22 +0000 [36628cc9c4]  Yasin CANER <yasin.caner@netgsm.com.tr>
+2017-06-15 13:48 +0000 [3b6c327c51]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * res_pjsip_session : fixed wrong From Header number On Re-invite
+       * app_voicemail: IMAP logout on reload/unload
 
-         ASTERISK-26964 #close
+         Closing IMAP connection on module reload or unload.
 
-         Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302
+         ASTERISK-24052 #close
 
-2017-05-13 11:40 +0000 [1618203964]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I2a40182aa9ef249fa6865d33570430e9ada68525
 
-       * asterisk: Audit locking of channel when manipulating flags.
+2017-06-15 12:33 +0000 [b9a4ab8c8c]  Richard Mudgett <rmudgett@digium.com>
 
-         When manipulating flags on a channel the channel has to be
-         locked to guarantee that nothing else is also manipulating
-         the flags. This change introduces locking where necessary to
-         guarantee this. It also adds helper functions that manipulate
-         channel flags and lock to reduce repeated code.
+       * chan_pjsip: Fix PJSIP_MEDIA_OFFER dialplan function read.
 
-         ASTERISK-26789
+         The construction of the returned string assumed incorrectly that the
+         supplied buffer would always be initialized as an empty string.  If it is
+         not an empty string we could overrun the supplied buffer by the length of
+         the non-empty buffer string plus one.  It is also theoreticaly possible
+         for the supplied buffer to be overrun by a string terminator during a read
+         operation even if the supplied buffer is an empty string.
 
-         Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10
+         * Fix the assumption that the supplied buffer would already be an empty
+         string.  The buffer is not guaranteed to contain an empty string by all
+         possible callers.
 
-2017-05-08 15:56 +0000 [6af2dd34af]  Alexei Gradinari <alex2grad@gmail.com>
+         * Fix string terminator buffer overrun potential.
 
-       * res_pjsip: New endpoint option "refer_blind_progress"
+         Change-Id: If6a0806806527678c8554b1dcb34fd7808aa95c9
 
-         This option was added to turn off notifying the progress details
-         on Blind Transfer. If this option is not set then the chan_pjsip
-         will send NOTIFY "200 OK" immediately after "202 Accepted".
+2017-06-15 07:32 +0000 [4910a3bf40]  Joshua Colp <jcolp@digium.com>
 
-         Some SIP phones like Mitel/Aastra or Snom keep the line busy until
-         receive "200 OK".
+       * channel: Fix reference counting in ast_channel_suppress.
 
-         ASTERISK-26333 #close
+         The ast_channel_suppress function wrongly decremented the
+         reference count of the underlying structure used to keep
+         track of what should be suppressed on a channel if the
+         function was called multiple times on the same channel.
 
-         Change-Id: Id606fbff2e02e967c02138457badc399144720f2
+         This change cleans up the reference counting a bit so
+         this no longer occurs.
 
-2017-05-22 20:20 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         ASTERISK-27016
 
-       * asterisk 13.16.0-rc1 Released.
+         Change-Id: I2eed4077cb4916e6626f9f120b63b963acc5c136
 
-2017-04-13 17:16 +0000 [919ccdb9ac]  Mark Michelson <mmichelson@digium.com>
+2017-06-14 12:34 +0000 [f1a209d5ac]  Richard Mudgett <rmudgett@digium.com>
 
-       * AST-2017-002: Ensure transaction key buffer is large enough.
+       * app_voicemail.c: Fix compile error when IMAP enabled.
 
-         ASTERISK-26938 #close
+         Change-Id: I2703f15b4099b4210c68eccf293105d1975c1fc1
 
-         Change-Id: I266490792fd8896a23be7cb92f316b7e69356413
+2017-06-08 12:28 +0000 [dc307af7f2]  Frederic LE FOLL <frederic.lefoll@c-s.fr>
 
-2017-04-13 17:17 +0000 [49c032abef]  Mark Michelson <mmichelson@digium.com>
+       * Core/PBX: Deadlock between dialplan execution and application unregistration.
 
-       * AST-2017-003: Handle zero-length body parts correctly.
+         Not easy to reproduce, but we have noticed deadlocks when unloading a module
+         while dialplan is handling a request.
 
-         ASTERISK-26939 #close
+         The deadlock is between :
+         1) Dialplan execution: pbx_extension_helper() first taking conlock,
+         then pbx_findapp() [when called] asking for lock on apps list.
+         2) Application unregistration: ast_unregister_application() first taking lock
+         on apps list, then unreference_cached_app() [when called] asking for conlock.
 
-         Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd
+         As a protection, I suggest to modify ast_unregister_application(), so that it
+         anticipates the need of conlock, before taking the lock on apps list.
+         The side effect is a longer unavailability of conlock when unregistering an
+         application.
 
-2017-04-13 11:14 +0000 [1cc18d4025]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-27041
 
-       * AST-2017-004: chan_skinny:  Add EOF check in skinny_session
+         Change-Id: I0db0f1eb320da6a5758cce3a47d765be1face8e2
 
-         The while(1) loop in skinny_session wasn't checking for EOF so
-         a packet that was longer than a header but still truncated
-         would spin the while loop infinitely.  Not only does this
-         permanently tie up a thread and drive a core to 100% utilization,
-         the call of ast_log() in such a tight loop eats all available
-         process memory.
+2017-06-14 11:12 +0000 [c2eea791e4]  George Joseph <gjoseph@digium.com>
 
-         Added poll with timeout to top of read loop
+       * res_pjsip_pubsub:  Fix reference to released endpoint
 
-         ASTERISK-26940 #close
-         Reported-by: Sandro Gauci
+         destroy_subscription was attempting to get the id of the
+         subscription tree's endpoint after we'd already called ao2_cleanup
+         on it causing a segfault.
 
-         Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898
+         Moved the cleanup until after the debug statement and since
+         endpoint could also be NULL at this point, check for that as well.
 
-2017-05-18 16:35 +0000 [c107ab4c04]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-27057 #close
+         Reported-by: Ryan Smith
 
-       * res_hep_rtcp: Add support level to module info
+         Change-Id: Ice0a7727f560cf204d870a774c6df71e159b1678
 
-         Change-Id: I5661478f9cf12d431f730e42be79323b62831e92
+2017-06-14 08:29 +0000 [2dee95cc7a]  George Joseph <gjoseph@digium.com>
 
-2017-05-11 00:25 +0000 [cfeae52c0f]  Ivan Poddubny <ivan.poddubny@gmail.com>
+       * res_pjsip_session:  Correct inverted test in session_outgoing_nat_hook
 
-       * app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON
+         There was a typo introduced in commit 776ffd77 which was preventing
+         the transport's external media address from being used.
 
-         There are 2 places in app_queue.c that log EXITEMPTY event: one in
-         wait_our_turn, and another one in queue_exec in the loop trying to
-         call an agent after wait_our_turn.
+         ASTERISK-27024 #close
+         Reported-by: Christopher van de Sande
+         patches:
+               patch.diff submitted by Florian Floimair (license 6892)
 
-         In most cases it leads to logging EXITEMPTY twice.
+         Change-Id: I7ec617171eaa2d86d2680b00cf37d5088adafc27
 
-         ABANDON is also logged on two places, and in the rare case when an agent
-         and caller hang up simultaneously it's also possible to get duplicates
-         in queue_log.
+2017-06-08 17:31 +0000 [e16a669c70]  Jørgen H <asterisk.org@hovland.cx>
 
-         This commit changes wait_our_turn to return -1 ("the caller should exit
-         the queue") instead of 0 ("the caller's turn has arrived") in case of
-         leaving when empty, so queue_exec skips the agent calling loop.
+       * res_pjsip_transport_websocket: Add NULL check in get_write_timeout
 
-         Also, leave_queue is now executed only once in this case, because 2nd
-         time is just a noop when the queue entry has already been removed.
+         Added check for NULL return value when calling
+         ast_sorcery_retrieve_by_id in function get_write_timeout
 
-         Also, it sets qe->handled to -1 to indicate that the call was not
-         answered by an agent, but the necessary handling has already been done
-         in order to avoid logging an extra ABANDON entry.
+         ASTERISK-27046
 
-         ASTERISK-25665 #close
-         Reported by: Ove Aursand
+         Change-Id: I9357717278da631c3a1cb502c412693929b0cb41
 
-         Change-Id: I4578dd383bf2ac41589cf167865e8aaebcd4c11e
+2017-06-14 08:54 +0000 [7dafe82751]  George Joseph <gjoseph@digium.com>
 
-2017-05-14 00:37 +0000 [5da91c65be]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+       * res_rtp_asterisk:  Fix ssrc change for rtcp srtp
 
-       * Fix spelling queues.conf.sample file
+         It looks like there was a copy/paste error in ast_rtp_change_source
+         where if there was a rtcp srtp instance, instead of updating its
+         ssrc we were updating the srtp instance ssrc twice.
 
-         Change-Id: Ie1c2d83af66f27a449da09a68d987e0992627fee
+         ASTERISK-27022 #close
+         Reported-by: Michael Walton
 
-2017-05-12 21:04 +0000 [b67363006f]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ic88f3aee7227b401c58745ac265ff92c19620095
 
-       * res_pjsip_session.c: Process initial INVITE sooner. (key exists)
+2017-06-08 14:38 +0000 [e414833f6e]  Joshua Colp <jcolp@digium.com>
 
-         Retransmissions of an initial INVITE could be queued in the serializer
-         before we have processed the first INVITE message.  If the first INVITE
-         message doesn't get completely processed before the retransmissions are
-         seen then we could try to setup the same call from the retransmissions.  A
-         symptom of this is seeing a (key exists) message associated with an
-         INVITE.  An earlier change attempted to address this kind of problem by
-         calculating a distributor serializer to use for unassociated messages.
-         Part of that change also made incoming calls keep using that distributor
-         serializer.  (ASTERISK-26088) However, some leftover code was still
-         deferring the INVITE processing to the session's serializer even though we
-         were already in that serializer.  This not only is unnecessary but would
-         cause the same call resetup problem.
+       * bridge: Add a deferred queue.
 
-         * Removed the code to defer processing the initial INVITE to the session's
-         serializer because we are already running in that serializer.
+         This change adds a deferred queue to bridging. If a bridge
+         technology determines that a frame can not be written and
+         should be deferred it can indicate back to bridging to do so.
+         Bridging will then requeue any deferred frames upon a new
+         channel joining the bridge.
 
-         ASTERISK-26998 #close
+         This change has been leveraged for T.38 request negotiate
+         control frames. Without the deferred queue there is a race
+         condition between the bridge receiving the T.38 request
+         negotiate and the second channel joining and being in the
+         bridge. If the channel is not yet in the bridge then the T.38
+         negotiation fails.
 
-         Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6
+         A unit test has also been added that confirms that a T.38
+         request negotiate control frame is deferred when no other
+         channel is in the bridge and that it is requeued when a new
+         channel joins the bridge.
 
-2017-05-08 13:40 +0000 [1bcce442d0]  Vitezslav Novy <a1@vnovy.net>
+         ASTERISK-26923
 
-       * chan_sip: Change sip_get_codec() to return correct codec list
+         Change-Id: Ie05b08523f399eae579130f4a5f562a344d2e415
 
-         Return cahnnel nativeformats to fix bridge technology selection process.
-         Same approach as in pjsip module.
+2017-06-13 14:17 +0000 [6cdf3191d3]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-26143
-         Reported-by: Henning Holtschneider
+       * res_pjsip_refer/session: Calls dropped during transfer
 
-         Change-Id: I64e863753954d6ad67a9e722df2ebc328705ad48
+         When doing an attended transfer it's possible for the transferer, after
+         receiving an accepted response from Asterisk, to send a BYE to Asterisk,
+         which can then be processed before Asterisk has time to start and/or
+         complete the transfer process. This of course causes the transfer to not
+         complete successfully, thus dropping the call.
 
-2017-05-09 10:34 +0000 [6fba0a41f0]  Joshua Colp <jcolp@digium.com>
+         This patch makes it so any BYEs received from the transferer, after the REFER,
+         that initiate a session end are deferred until the transfer is complete. This
+         allows the channel that would have otherwise been hung up by Asterisk to
+         remain available throughout the transfer process.
 
-       * tcptls: Improve error messages for TLS connections.
+         ASTERISK-27053 #close
 
-         This change uses the functions provided by OpenSSL to query
-         and better construct error messages for situations where
-         the connection encounters a problem.
+         Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a
 
-         ASTERISK-26606
+2017-06-13 10:47 +0000 [0bde568669]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I7ae40ce88c0dc4e185c4df1ceb3a6ccc198f075b
+       * pjproject_bundled:  Use the asterisk github mirror for download
 
-2017-05-04 17:28 +0000 [8ec6e19c86]  Joshua Elson <joshelson@gmail.com>
+         We now mirror the pjproject tarball and md5 at
+         https://github.com/asterisk/third-party/tree/master/pjproject
 
-       * Prevent Undefined Capath Crash
+         To improve download reliability, we now get the tarball from
+         our mirror instead of from pjsip.org.
 
-         It is possible to initialize a valid config without a capath
-         or cafile definition. This will cause a crash on a reload.
+         ASTERISK-27052 #close
+         Reported-by: 'alex'
 
-         This fix ensures capath is always allocated.
+         Change-Id: I60236587a8935bfa71fcc391f4e2ecb31918c08a
 
-         ASTERISK-26983 #close
+2017-06-12 17:55 +0000 [08be5e01e8]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Change-Id: I63ff715d9d9023427543a5b8a4ba7b0d82533c12
+       * app_voicemail: IMAP logout on MWI unsubscribe
 
-2017-05-05 11:33 +0000 [d6325373ac]  gtjoseph <gjoseph@digium.com>
+         Closing IMAP connection on MWI unsubscribe.
 
-       * cel_odbc:  Fix timestamp processing for microseconds
+         ASTERISK-24052 #close
 
-         When a column is of type timestamp, the fraction part of the event
-         field's seconds was frequently parsed incorrectly especially if
-         there were leading zeros.  For instance "2017-05-23 23:55:03.023"
-         would be parsed into an int as "23" then when the timestamp was
-         formatted again to be inserted into the database column it'd be
-         "2017-05-23 23:55:03.23" which is now 230 milliseconds instead of
-         23 milliseconds.  "03.000001" would be transformed to "03.1", etc.
+         Change-Id: I4ff964026002b2817b48c20fb4239f0a880228fd
 
-         * If the event field is 'eventtime' and the db column is timestamp,
-           then existing processing has already correctly formatted the
-           timestamp so now we simply use it rather than parsing it and
-           re-printing it. This is the most common use case anyway.
+2017-06-12 09:57 +0000 [59c9bbe696]  Alexei Gradinari <alex2grad@gmail.com>
 
-         * If the event field is other than 'eventtime' and the db column
-           is timestamp, we now parse the seconds, including the fractional
-           part into a double rather than 2 ints.  This preserves the
-           magnitude and precision of the fractional part.  When we print
-           it, we now print it as a "%09.6lf" which correctly represents the
-           input.
-
-         To be honest, why we parse the string timestamp into components,
-         test the components, then print the components back into a string
-         timestamp is beyond me.  We should use parse it, test it, then if
-         it passes, use the original string representation in the database
-         call.  Maybe someone thought that some implementations wouldn't
-         take a partial timestamp string like "2017-05-06" and decided to
-         always produce a full timestamp string even if an abbreviated one
-         was supplied.  Anyway, I'm leaving it as it is.
-
-         ASTERISK-25032 #close
-         Reported-by: Etienne Lessard
-
-         Change-Id: Id407e6221f79a5c1120e1a70bc7e893bbcaf1938
+       * res_pjsip_mwi: don't create mwi subscriptions if initial unsolicited disabled
 
-2017-05-09 05:25 +0000 [10a49ab362]  Joshua Colp <jcolp@digium.com>
+         If sending unsolicited mwi to all endpoints on startup is disabled
+         (mwi_disable_initial_unsolicited=yes) do not need to create subscriptions.
+         If there are many (thousands) realtime endpoints configured with unsolicited mwi
+         and Vociemail Storage configured as ODBC or IMAP there will be huge number of
+         DB/IMAP requests on startup.
 
-       * res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages.
+         ASTERISK-26230 #close
 
-         This change adds the required logic to allow the SIP
-         Call-ID to be placed into the HEP RTCP traffic if the
-         chan_sip module is used. In cases where the option is
-         enabled but the channel is not either SIP or PJSIP then
-         the code will fallback to the channel name as done
-         previously.
+         Change-Id: I50ae909639e3ee298b931a54def4b2b9e0fb86c5
 
-         Based on the change on Nir's branch at:
-         team/nirs/hep-chan-sip-support
+2017-06-06 14:54 +0000 [68de35a6a0]  David M. Lee <dlee@respoke.io>
 
-         ASTERISK-26427
+       * CFLAGS for BIND8 support
 
-         Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d
+         Some systems (like macOS) require BIND_8_COMPAT to be defined so that
+         the nameser libraries are, well, BIND8 compatible.
 
-2017-05-08 16:11 +0000 [7d4a22bf2e]  gtjoseph <gjoseph@digium.com>
+         Change-Id: If79fc27a64f90de1835b5aa3aadfa9be22bd16b0
 
-       * logger:  Added logger_queue_limit to the configuration options.
+2017-06-11 12:06 +0000 [da3312457e]  Sean Bright <sean.bright@gmail.com>
 
-         All log messages go to a queue serviced by a single thread
-         which does all the IO.  This setting controls how big that
-         queue can get (and therefore how much memory is allocated)
-         before new messages are discarded. The default is 1000.
-         Should something go bezerk and log tons of messages in a tight
-         loop, this will prevent memory escalation.
+       * codecs.conf.sample: Fix max_bandwidth speling error
 
-         When the limit is reached, a WARNING is logged to that effect
-         and messages are discarded until the queue is empty again.  At
-         that time another WARNING will be logged with the count of
-         discarded messages.  There's no "low water mark" for this queue
-         because the logger thread empties the entire queue and processes it
-         in 1 batch before going back and waiting on the queue again.
-         Implementing a low water mark would mean additional locking as
-         the thread processes each message and it's not worth it.
+         Reported by Sylvain Boily via asterisk-dev mailing list.
 
-         A "test" was added to test_logger.c but since the outcome is
-         non-deterministic, it's really just a cli command, not a unit
-         test.
+         Change-Id: Idc7623f335aea3e144dd369ba383b9a757480a9d
 
-         Change-Id: Ib4520c95e1ca5325dbf584c7989ce391649836d1
+2017-06-08 10:54 +0000 [6a64f65fe6]  Guido Falsi <madpilot@freebsd.org>
 
-2017-05-04 17:32 +0000 [614eda785d]  Richard Mudgett <rmudgett@digium.com>
+       * BuildSystem: Add patches to allow building with recent LibreSSL
 
-       * netsock2.c: Made get/set addr port avoid potential uninitialized memory.
+         Add some #if defined checks which allow building against LibreSSL.
+         These patchess come from OpenBSD ports:
+         https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/telephony/asterisk/patches/
 
-         Change-Id: I532052bd7cd95a4b3565485fc01e2a1ea07ee647
+         ASTERISK-27043 #close
+         Reported by: OpenBSD ports
 
-2017-05-05 08:48 +0000 [c3ed63cb2c]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I2f6c08a5840b85ad4d2b75370b947ddde7a9a572
 
-       * func_cdr: Allow empty value for CDR dialplan function.
+2017-06-08 10:36 +0000 [44cee2f4a1]  Guido Falsi <madpilot@freebsd.org>
 
-         A regression was introduced in 12 where passing an empty value
-         to the CDR dialplan function was not longer allowed. This
-         change returns to the behavior of 11 where it is permitted.
+       * BuildSystem: Fix build on FreeBSD due to missing crypt.h
 
-         ASTERISK-26173
+         FreeBSD does not include a crypt.h include file. Definitions for
+         crypt() and crypt_r() are in unistd.h
 
-         Change-Id: I3f148203b54ec088007e29e30005a5de122e51c5
+         ASTERISK-27042 #close
 
-2017-05-04 16:04 +0000 [bed6c0d04b]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ib307ee5e384870c6af50efa89fb73722dd0c3a7e
 
-       * app_confbridge:  Fix reference to cfg in menu_template_handler
+2017-06-07 15:19 +0000 [1f10c6b3b0]  Joshua Colp <jcolp@digium.com>
 
-         menu_template_handler wasn't properly accounting for the fact that
-         it might be called both during a load/reload (which isn't really
-         valid but not prevented) and by a dialplan function.  In both cases
-         it was attempting to use the "pending" config which wasn't valid in
-         the latter case.  aco_process_config is also partly to blame because
-         it wasn't properly cleaning "pending" up when a reload was done and
-         no changes were made.  Both of these contributed to a crash if
-         CONFBRIDGE(menu,template) was called in a dialplan after a reload.
+       * chan_pjsip: Update device state when in early media.
 
-         * aco_process_config now sets info->internal->pending to NULL
-           after it unrefs it although this isn't strictly necessary in the
-           context of this fix.
-         * menu_template_handler now uses the "current" config and silently
-           ignores any attempt to be called as a result of someone uses the
-           "template" parameter in the conf file.
+         The chan_pjsip module uses a calculation approach for
+         determining device state. This means that in situations
+         where we would expect device state to change we need to
+         tell the core to query. A scenario that was missed is
+         when early media was signaled.
 
-         Luckily there's no other place in the codebase where
-         aco_pending_config is used outside of aco_process_config.
+         This change adds the notification for the core to
+         query device state when we are told that early media
+         is being provided.
 
-         ASTERISK-25506 #close
-         Reported-by: Frederic LE FOLL
+         ASTERISK-27039
 
-         Change-Id: Ib349a17d3d088f092480b19addd7122fcaac21a7
+         Change-Id: Iafebfd152894966344ff2e950a3cee9f59a3eb6f
 
-2017-04-30 16:40 +0000 [7ffd80cc04]  Joshua Colp <jcolp@digium.com>
+2017-06-07 14:32 +0000 [590ffcaf0b]  Sean Bright <sean.bright@gmail.com>
 
-       * bridge: Fix returning to dialplan when executing Bridge() from AMI.
+       * eventfd: Disable during cross compilation
 
-         When using the Bridge AMI action on the same channel multiple times
-         it was possible for the channel to return to the wrong location in
-         the dialplan if the other party hung up. This happened because the
-         priority of the channel was not preserved across each action
-         invocation and it would fail to move on to the next priority in
-         other cases.
+         Reported by Lonnie Abelbeck <lonnie@abelbeck.com> via private e-mail.
 
-         This change makes it so that the priority of a channel is preserved
-         when taking control of it from another thread and it is incremented
-         as appropriate such that the priority reflects where the channel
-         should next be executed in the dialplan, not where it may or may not
-         currently be.
+         Change-Id: Icc80f12b8d8d591e14a8e0ed9f1c02cbd193a89b
 
-         The Bridge AMI action was also changed to ensure that it too
-         starts the channels at the next location in the dialplan.
+2017-06-07 11:21 +0000 [5520b6c201]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-24529
+       * CHANGES: correct version for a new option 'refer_blind_progress'
 
-         Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a
+         Change-Id: If4817d26a8974610827624fb8a4e56d681d6bf97
 
-2017-05-01 13:04 +0000 [bbe90d6aed]  Kevin Harwell <kharwell@digium.com>
+2017-06-06 07:04 +0000 [996a4791ff]  Joshua Colp <jcolp@digium.com>
 
-       * res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures
+       * pjsip: Extend 'asymmetric_rtp_codec' option to include us changing.
 
-         When a call gets put on hold RTP is temporarily stopped and Asterisk was
-         setting the remote RTCP address to NULL. Then when RTCP data was received
-         from the remote endpoint, Asterisk would be missing this information when
-         publishing the rtcp_message stasis event. Consequently, message subscribers
-         (in this case res_hep_rtcp) trying to parse the "from" field output the
-         following error:
+         PJSIP support in Asterisk differs from chan_sip in that it
+         allows media to be sent as-is without transcoding provided
+         the codecs were negotiated in the SDP. This is allowed
+         according to the RFC. Support for this differs quite a lot
+         though and some endpoints do not handle it well.
 
-         "ast_sockaddr_split_hostport: Port missing in (null)"
+         This change extends the 'asymmetric_rtp_codec' option to
+         also cover this case. When set to no (the default) the code
+         behaves as chan_sip does - the best codec is selected and
+         we will only ever send that, unless we change what we are
+         sending if the remote side changes. When set to yes we
+         will send media as-is without transcoding if the codec
+         has been negotiated in the SDP.
 
-         This patch makes it so the remote RTCP address is no longer set to NULL when
-         stopping RTP. There was only one place that appeared to check if the remote
-         RTCP address was NULL as a way to tell if RTCP was running. This patch added
-         an additional check on the RTCP schedid for that case to make sure RTCP was
-         truly not running.
+         ASTERISK-26996
 
-         ASTERISK-26860 #close
+         Change-Id: Ib1647f6902a0843e8c435946f831c2159e8d1d51
 
-         Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b
+2017-06-06 10:04 +0000 [c093bf8072]  Sean Bright <sean.bright@gmail.com>
 
-2017-05-02 11:34 +0000 [526a0081a0]  Sean Bright <sean.bright@gmail.com>
+       * res_rtp_multicast: Use consistent timestamps when possible
 
-       * cleanup: Change severity of fread short-read warning
+         When a frame destined for a MulticastRTP channel does not have timing
+         information (such as when an 'originate' is done), we generate the RTP
+         timestamps ourselves without regard to the number of samples we are
+         about to send.
 
-         Many sound files don't have a full frame's worth of data at EOF, so the
-         warning messages were a bit too noisy. So we demote them to debug
-         messages.
+         Instead, use the same method as res_rtp_asterisk and 'predict' a
+         timestamp given the number of samples. If the difference between the
+         timestamp that we generate and the one we predict is within a specific
+         threshold, use the predicted timestamp so that we end up with timestamps
+         that are consistent with the number of samples we are actually sending.
 
-         Change-Id: I6b617467d687658adca39170a81797a11cc766f6
+         Change-Id: I2bf0db3541b1573043330421cbb114ff0f22ec1f
 
-2017-04-26 07:58 +0000 [23db04ed93]  Thierry Magnien <thierry.magnien@gmail.com>
+2017-05-31 10:41 +0000 [746c2c5745]  Joshua Colp <jcolp@digium.com>
 
-       * channels/chan_sip.c: use binding IP address for outgoing TCP SIP connections
+       * res_pjsip: Add support for returning only reachable contacts and use it.
 
-         For outgoing TCP connections, Asterisk uses the first IP address of the
-         interface instead of the IP address we asked him to bind to.
+         This introduces the ability for PJSIP code to specify filtering flags
+         when retrieving PJSIP contacts. The first flag for use causes the
+         query code to only retrieve contacts that are not unreachable. This
+         change has been leveraged by both the Dial() process and the
+         PJSIP_DIAL_CONTACTS dialplan function so they will now only attempt
+         calls to contacts which are not unreachable.
 
-         ASTERISK-26922 #close
-         Reported-by: Ksenia
+         ASTERISK-26281
 
-         Change-Id: I43c71ca89211dbf1838e5bcdb9be8d06d98e54eb
+         Change-Id: I8233b4faa21ba3db114f5a42e946e4b191446f6c
 
-2017-04-29 16:18 +0000 [02234e920c]  Richard Mudgett <rmudgett@digium.com>
+2017-06-05 10:45 +0000 [adfb28882b]  Kevin Harwell <kharwell@digium.com>
 
-       * rtp_engine.c: Fix deadlock potential copying RTP payload maps.
+       * channel: ast_write frame wrongly freed after call to audiohooks
 
-         There is a theoretical potential to deadlock in
-         ast_rtp_codecs_payloads_copy() because it locks two different
-         ast_rtp_codecs locks.  It is theoretical because the callers of the
-         function are either copying between a local ast_rtp_codecs struct and a
-         RTP instance of the ast_rtp_codecs struct.  Or they are copying between
-         the caller and callee channel RTP instances before initiating the call to
-         the callee.  Neither of these situations could actually result in a
-         deadlock because there cannot be another thread involved at the time.
+         ASTERISK-26419 introduced a bug when calling ast_audiohook_write_list in
+         ast_write. It would free the frame given to ast_write if the frame returned
+         by ast_audiohook_write_list was different than the given one. The frame
+         give to ast_write should never be freed within that function. It is the
+         caller's resposibility to free the frame after writing (or when it its done
+         with it). By freeing it within ast_write this of course led to some memory
+         corruption problems.
 
-         * Add deadlock avoidance code to ast_rtp_codecs_payloads_copy() since it
-         locks two ast_rtp_codecs locks to perform a copy.
+         This patch makes it so the frame given to ast_write is no longer freed within
+         the function. The frame returned by ast_audiohook_write_list is now subsequently
+         used in ast_write and is freed later. It is freed either after translate if the
+         frame returned by translate is different, or near the end of ast_write prior
+         to function exit.
 
-         This only affects v13 since this deadlock avoidance code is already in
-         newer branches.
+         ASTERISK-26973 #close
 
-         Change-Id: I1aa0b168f94049bd59bbd74a85bd1e78718f09e5
+         Change-Id: I463d4ac3b736ced95de986ee74a489c7c7ab103b
 
-2017-04-29 16:11 +0000 [9d5df48968]  Richard Mudgett <rmudgett@digium.com>
+2017-05-31 11:45 +0000 [283cc59af7]  Sean Bright <sean.bright@gmail.com>
 
-       * res_pjsip_t38.c: Fix deadlock in T.38 framehook.
+       * pbx_builtin: Properly handle hangup during Background
 
-         A deadlock can happen between a channel lock and a pjsip session media
-         container lock.  One thread is processing a reINVITE's SDP and walking
-         through the session's media container when it waits for the channel lock
-         to put the determined format capabilities onto the channel.  The other
-         thread is writing a frame to the channel and processing the T.38 frame
-         hook.  The T.38 frame hook then waits for the pjsip session's media
-         container lock.  The two threads are now deadlocked.
+         Before this patch, when a user hung up during a Background, we would
+         stuff 0xff into a char and attempt a dialplan lookup of it. This caused
+         problems for some realtime engines which interpreted the value as the
+         beginning of an invalid UTF-8 sequence.
 
-         * Made the T.38 frame hook release the channel lock before searching the
-         session's media container.  This fix has been done to several other
-         frame hooks to fix deadlocks.
+         ASTERISK-19291 #close
+         Reported by: Andrew Nowrot
 
-         ASTERISK-26974 #close
+         Change-Id: I8ca6da93252d61c76ebdb46a4aa65e73ca985358
 
-         Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186
+2017-05-31 04:25 +0000 [dc05183f4b]  Joshua Colp <jcolp@digium.com>
 
-2017-04-28 10:56 +0000 [623832b94e]  gtjoseph <gjoseph@digium.com>
+       * channel / app_meetme: Fix parentheses.
 
-       * res_pjsip_outbound_authenticator_digest: Add context to log messages
+         ASTERISK-27025
 
-         There was no context info in this module's log messages so it was
-         impossible to toubleshoot.
+         Change-Id: Id736b0aa4ec6b6b0f04663d64fa8d151f81fdbed
 
-         Added endpoint or host to all messages and added the realms in the
-         challenge for the "No auth credentials for any realm" message.
+2017-05-30 16:07 +0000 [cf6cf59646]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b
+       * stasis_recording: Correct ast_asprintf error checking
 
-2017-04-27 08:02 +0000 [c5b9ed20fd]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-27021 #close
+         Reported by: Tim Morgan
 
-       * res_pjsip_session:  Add cleanup to ast_sip_session_terminate
+         Change-Id: I0ac061f040093e806c3b1f4e2340864f3ce4dd75
 
-         If you use ast_request to create a PJSIP channel but then hang it
-         up without causing a transaction to be sent, the session will
-         never be destroyed.  This is due ot the fact that it's pjproject
-         that triggers the session cleanup when the transaction ends.
-         app_chanisavail was doing this to get more granular channel state
-         and it's also possible for this to happen via ARI.
+2017-05-28 15:43 +0000 [70e5887906]  Sean Bright <sean.bright@gmail.com>
 
-         * ast_sip_session_terminate was modified to explicitly call the
-           cleanup tasks and unreference session if the invite state is NULL
-           AND invite_tsx is NULL (meaning we never sent a transaction).
+       * format: Reintroduce smoother flags
 
-         * chan_pjsip/hangup was modified to bump session before it calls
-           ast_sip_session_terminate to insure that session stays valid
-           while it does its own cleanup.
+         In review 4843 (ASTERISK-24858), we added a hack that forced a smoother
+         creation when sending signed linear so that the byte order was adjusted
+         during transmission. This was needed because smoother flags were lost
+         during the new format work that was done in Asterisk 13.
 
-         * Added test events to session_destructor for a future testsuite
-           test.
+         Rather than rolling that same hack into res_rtp_multicast, re-introduce
+         smoother flags so that formats can dictate their own options.
 
-         ASTERISK-26908 #close
-         Reported-by: Richard Mudgett
+         Change-Id: I77b835fba0e539c6ce50014a984766f63cab2c16
 
-         Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9
+2017-05-30 09:34 +0000 [97b003f5e2]  Sean Bright <sean.bright@gmail.com>
 
-2017-04-26 14:20 +0000 [c853cfdc7c]  Kevin Harwell <kharwell@digium.com>
+       * format_mp3: Re-work menuselect/build issues
 
-       * res_pjsip/res_pjsip_callerid: NULL check on caller id name string
+         Rather than removing format_mp3 from ALL_C_MODS (which caused format_mp3
+         to not show up in menuselect), use .PHONY targets when the necessary
+         source files are not present.
 
-         It's possible for a name in a party id structure to be marked as valid, but the
-         name string itself be NULL (for instance this is possible to do by using the
-         dialplan CALLERID function). There were a couple of places where the name was
-         validated, but the string itself was not checked before passing it to functions
-         like 'strlen'. This of course caused a crashed.
+         ASTERISK-23951
+         Reported by: Tzafrir Cohen
 
-         This patch adds in a NULL check before attempting to pass it into a function
-         that is not NULL tolerant.
+         Change-Id: I0a7512c51acc9e86043671795020b0de725bd9e8
 
-         ASTERISK-25823 #close
+2017-05-30 09:43 +0000 [c10341646d]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a
+       * test_json:  Fix test names with reserved words
 
-2017-04-25 11:43 +0000 [4d3b4fbf22]  Kevin Harwell <kharwell@digium.com>
+         Some of the test names were actually reserved words (true, false,
+         int, null, string, bool).  When the jenkins test results analyzer
+         does its thing it tries to create a map using the test names as
+         keys and fails because they're reserved words.
 
-       * vector: defaults and indexes
+         Added "type_" to those test names.
 
-         Added an pre-defined integer vector declaration. This makes integer vectors
-         easier to declare and pass around. Also, added the ability to default a vector
-         up to a given size with a default value. Lastly, added functionality that
-         returns the "nth" index of a matching value.
+         Change-Id: I90d809f46969c78a1c605b736ff0635196a2cf1b
 
-         Also, updated a unit test to test these changes.
+2017-05-26 11:41 +0000 [b07b216235]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Iaf4b51b2540eda57cb43f67aa59cf1d96cdbcaa5
+       * manager: Clear the flag on the other channel.
 
-2017-04-20 02:13 +0000 [566ad7c35d]  Jean Aunis <jean.aunis@prescom.fr>
+         During the channel flag audit an incorrect change was
+         done. The flag should be cleared on the second channel.
 
-       * chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK
+         ASTERISK-26469
 
-         Some equipments may send a re-INVITE containing an SDP in the final ACK
-         request. If this happens in the context of direct media, the remote end
-         should be updated with a re-INVITE.
-         This patch queues an "update RTP peer" frame to trigger the re-INVITE,
-         instead of the "source change" frame wich was used previously.
+         Change-Id: I770c5a389550a2fb5a6ade942fccbb2e1d9199c8
 
-         ASTERISK-26951
+2017-05-26 11:06 +0000 [5e9cd1f20d]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I3644d2025f20e086ea9f8f62b486172c52b5b2e6
+       * res_srtp: Add support for libsrtp2
 
-2017-04-26 08:45 +0000 [001dc2ade6]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-25294 #close
+         Reported by: Tzafrir Cohen
 
-       * pjproject_bundled:  Add --disable-libwebrtc to configure
+         ASTERISK-26976 #close
+         Reported by: Alex
 
-         Without the disable, pjproject tries to build it's internal
-         webrtc implementation which requires sse2.  This fails on
-         platforms without sse2.
+         Change-Id: I789b1c3d1ed31365bbd9339fa58ef36f48833c40
 
-         ASTERISK-26930 #close
-         Reported-by: abelbeck
+2017-05-25 11:10 +0000 [72213c98e3]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410
+       * format_mp3: Don't try to build format_mp3 if we don't have sources
 
-2017-04-26 05:38 +0000 [ae696132a2]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-23951 #close
+         Reported by: Tzafrir Cohen
 
-       * frame: Better handle interpolated frames.
+         Change-Id: Iebf181d44bb735787fde4b5be863c4d7e2478a30
 
-         Interpolated frames are frames which contain a number of
-         samples but have no actual data. Audiohooks did not
-         handle this case when translating an incoming frame into
-         signed linear. It assumed that a frame would always contain
-         media when it may not. If this occurs audiohooks will now
-         immediately return and not act on the frame.
+2017-05-24 15:50 +0000 [65898c3af8]  George Joseph <gjoseph@digium.com>
 
-         As well for users of ast_trans_frameout the function has
-         been changed to be a bit more sane and ensure that the data
-         pointer on a frame is set to NULL if no data is actually
-         on the frame. This allows the various spots in Asterisk that
-         check for an interpolated frame based on the presence of a
-         data pointer to work as expected.
+       * unittests:  Add a unit test that causes a SEGV and...
 
-         ASTERISK-26926
+         ...that can only be run by explicitly calling it with
+         'test execute category /DO_NOT_RUN/ name RAISE_SEGV'
 
-         Change-Id: I7fa22f631fa28d540722ed789ce28e84c7f8662b
+         This allows us to more easily test CI and debugging tools that
+         should do certain things when asterisk coredumps.
 
-2017-04-21 12:04 +0000 [1b50df78d0]  Sean Bright <sean.bright@gmail.com>
+         To allow this a new member was added to the ast_test_info
+         structure named 'explicit_only'.  If set by a test, the test
+         will be skipped during a 'test execute all' or
+         'test execute category ...'.
 
-       * cleanup: Fix fread() and fwrite() error handling
+         Change-Id: Ia3a11856aae4887df9a02b6b081cc777b36eb6ed
 
-         Cleaned up some of the incorrect uses of fread() and fwrite(), mostly in
-         the format modules. Neither of these functions will ever return a value
-         less than 0, which we were checking for in some cases.
+2017-05-23 15:42 +0000 [90237dca11]  Sean Bright <sean.bright@gmail.com>
 
-         I've introduced a fair amount of duplication in the format modules, but
-         I plan to change how format modules work internally in a subsequent
-         patch set, so this is simply a stop-gap.
+       * res_agi: Allow configuration of audio format of EAGI pipe
 
-         Change-Id: I8ca1cd47c20b2c0b72088bd13b9046f6977aa872
+         This change allows the format of the EAGI audio pipe to be changed by
+         setting the dialplan variable 'EAGI_AUDIO_FORMAT' to the name of one of
+         the loaded formats.
 
-2017-04-25 07:52 +0000 [c09b9dba90]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26124 #close
 
-       * alembic: Add table for 'resource_list' PJSIP RLS type.
+         Change-Id: I7a10fad401ad2a21c68c2e7246fa357d5cee5bbd
 
-         This change adds an Alembic migration which adds a
-         ps_resource_list table that can contain resource_list
-         RLS configuration objects.
+2017-05-23 13:33 +0000 [3eb7fbba72]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26929
+       * res_agi: Clarify 'RECORD FILE' documentation
 
-         Change-Id: I7c888fafc67b3e87012de974f71ca7a5b8b1ec05
+         Documented the 'beep' option in both the parameters list and the command
+         description.
 
-2017-04-24 13:16 +0000 [1b88a3a4cf]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-23839 #close
 
-       * res_hep: Add additional config initialization and validation
+         Change-Id: I4970395c922dbdce3f7cf0f56d5b065ec9aa53ea
 
-         * Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor
-           does not close fd 0
+2017-05-23 13:06 +0000 [f306e451f6]  Sean Bright <sean.bright@gmail.com>
 
-         * Add logging output when the required option - capture_address - is not
-           specified.
+       * res_agi: Prevent crash when SET VARIABLE called without arguments
 
-         * Remove a no longer relevant #define and correct related documentation
+         Explicitly check that the appropriate number of arguments were passed to
+         SET VARIABLE before attempting to reference them. Also initialize the
+         arguments array to zeroes before populating it.
 
-         * Pass appropriate flags to aco_option_register so that capture_address
-           cannot be the empty string.
+         ASTERISK-22432 #close
 
-         ASTERISK-26953 #close
+         Change-Id: I5143607d80a2724f749c1674f3126b04ed32ea97
 
-         Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076
+2017-05-23 12:35 +0000 [a007e438c3]  Sean Bright <sean.bright@gmail.com>
 
-2017-04-17 19:06 +0000 [cea3742c54]  Sean Bright <sean.bright@gmail.com>
+       * res_agi: Fix malformed AGI usage response
 
-       * core: Use eventfd for alert pipes on Linux when possible
+         If the generated XML documentation for a command does not end with a \n,
+         the postamble of the usage message does not appear on its own line.
 
-         The primary win of switching to eventfd when possible is that it only
-         uses a single file descriptor while pipe() will use two. This means for
-         each bridge channel we're reducing the number of required file
-         descriptors by 1, and - if you're using timerfd - we also now have 1
-         less file descriptor per Asterisk channel.
+         ASTERISK-25662 #close
 
-         The API is not ideal (passing int arrays), but this is the cleanest
-         approach I could come up with to maintain API/ABI.
+         Change-Id: If190f1e9e37fe215fed95897d78d4a6e142b0020
 
-         I've also removed what I believe to be an erroneous code block that
-         checked the non-blocking flag on the pipe ends for each read. If the
-         file descriptor is 'losing' its non-blocking mode, it is because of a
-         bug somewhere else in our code.
+2017-05-23 12:00 +0000 [971a401ce9]  Sean Bright <sean.bright@gmail.com>
 
-         In my testing I haven't seen any measurable difference in performance.
+       * sip.conf.sample: Clarify where DTLS settings are permitted
 
-         Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d
+         ASTERISK-25101 #close
 
-2017-04-21 12:33 +0000 [1213ac1ac5]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I09a97793e5577b4422d0ae883fadb3f0d86725cc
 
-       * res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions.
+2017-05-23 10:06 +0000 [700ef6861a]  Sean Bright <sean.bright@gmail.com>
 
-         If ICE is enabled and a STUN server does not respond then we will block
-         until we give up on the STUN response.  This will take nine seconds.  In
-         the mean time the peer that sent the INVITE will send retransmissions.
+       * res_format_attr_h26x: Trim blanks in fmtp attributes
 
-         * Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out
-         earlier to prevent these retransmissions.
+         Some devices separate format attributes with a semicolon followed by a
+         space, so trim blanks before trying to match them.
 
-         ASTERISK-26890
+         ASTERISK-27008 #close
 
-         Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8
+         Change-Id: Ia44cb2e4fef5c73dc541a29da79cb0e19c22d9cc
 
-2017-04-21 12:07 +0000 [80fd7fd908]  Richard Mudgett <rmudgett@digium.com>
+2017-05-15 15:03 +0000 [6bfcb1acc7]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip_session.c: Restructure ast_sip_session_alloc()
+       * app_queue: Fix members showing as being in call when not.
 
-         * Restructure ast_sip_session_alloc() to need less cleanup on off nominal
-         error paths.
+         A change was done which added an 'in_call' flag to queue
+         members that was set to true while talking to an agent.
+         Unfortunately in practice this does not accurately reflect
+         whether they are talking to an agent or not. If a Local
+         channel is involved and a transfer is performed then the
+         app_queue application would incorrectly think the agent
+         was still in a call with the caller. This was done to
+         fix a race condition between an agent becoming available
+         by device state and the checking of the last call information
+         for the wrapup time. There was a small window where the
+         last call information would be the previous value instead
+         of the new one.
 
-         * Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid
-         unnecessary ref manipulation to return a session.  This is faster than
-         calling a function.  That function may do logging of the ref changes with
-         REF_DEBUG enabled.
+         This change goes about fixing the original issue in a
+         different way by considering the call completed if device
+         state is received which would make the agent available
+         and if they are currently in a call. If this occurs the
+         last call information is updated before the agent becomes
+         available ensuring that old information is not present
+         when checking if the member should be called. This also
+         improves the transfer situation by actually updating
+         and enforcing the wrapup time.
 
-         Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a
+         ASTERISK-26399
+         ASTERISK-26400
+         ASTERISK-26715
+         ASTERISK-26975
 
-2017-04-19 15:08 +0000 [98e38daf82]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea
 
-       * pbx: Use same thread if AST_OUTGOING_WAIT_COMPLETE specified
+2017-05-23 05:45 +0000 [f1b32de2c5]  Robert Mordec <r.mordec@slican.pl>
 
-         Both ast_pbx_outgoing_app() and ast_pbx_outgoing_exten() cause the core
-         to spawn a new thread to perform the dial. When AST_OUTGOING_WAIT_COMPLETE
-         is passed to these functions, the calling thread will be blocked until
-         the newly created channel has been hung up.
+       * app_confbridge: Race between removing and playing name recording while leaving
 
-         After this patch, we run the dial on the current thread rather than
-         spawning a new one. The only in-tree code that passes
-         AST_OUTGOING_WAIT_COMPLETE is pbx_spool, so you should see reduced
-         thread usage if you are using .call files.
+         When user leaves a conference, its channel calls async_play_sound_file()
+         in order to play the name announcement and then unlinks the sound file.
+         The async_play_sound_file() function adds a task to conference playback queue,
+         which then runs playback_common() function in a different thread.
 
-         Change-Id: I512735d243f0a9da2bcc128f7a96dece71f2d913
+         It leads to a race condition when, in some cases, channel thread may unlink
+         the sound file before playback_common() had a chance to open it.
 
-2017-04-19 13:23 +0000 [55f452884f]  Richard Mudgett <rmudgett@digium.com>
+         This patch creates a file deletion task, that is queued after playback.
 
-       * res_rtp_asterisk.c: Fix crash in RTCP DTLS operation.
+         ASTERISK-27012 #close
 
-         Occasionally a crash happens when processing the RTCP DTLS timeout
-         handler.  The RTCP DTLS timeout timer could be left running if we have not
-         completed the DTLS handshake before we place the call on hold or we
-         attempt direct media.
+         Change-Id: I412f7922d412004b80917d4e892546c15bd70dd3
 
-         * Made ast_rtp_prop_set() stop the RTCP DTLS timer when disabling RTCP.
+2017-05-22 13:51 +0000 [e91efef2bb]  Kevin Harwell <kharwell@digium.com>
 
-         * Made some sanity tweaks to ast_rtp_prop_set() when switching from
-         standard RTCP mode to RTCP multiplexed mode.
+       * res_rtp_asterisk: rtcp mux using the wrong srtp unprotecting algorithm
 
-         ASTERISK-26692 #close
+         When using rtcp mux if an rtcp payload came in it would still use the srtp
+         unprotect algorithm instead of the srtp unprotect rtcp method. Since rtcp
+         data was being passed to the rtp unprotect method this would result in an
+         error.
 
-         Change-Id: If6c64c79129961acfa4b3d63a864e8f6b664acc0
+         This patch ensures that the correct unprotect method is chosen by making
+         sure the passed in rtcp flag is appropriately set when rtcp mux is enabled
+         and an rtcp payload is received.
 
-2017-03-22 16:05 +0000 [f856cfbb51]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26979 #close
 
-       * rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes.
+         Change-Id: Ic5409f9d1a267f1d4785fc5aed867daaecca6241
 
-         The struct ast_rtp_instance has historically been indirectly protected
-         from reentrancy issues by the channel lock because early channel drivers
-         held the lock for really long times.  Holding the channel lock for such a
-         long time has caused many deadlock problems in the past.  Along comes
-         chan_pjsip/res_pjsip which doesn't necessarily hold the channel lock
-         because sometimes there may not be an associated channel created yet or
-         the channel pointer isn't available.
+2017-05-19 10:05 +0000 [4479038073]  Sean Bright <sean.bright@gmail.com>
 
-         In the case of ASTERISK-26835 a pjsip serializer thread was processing a
-         message's SDP body while another thread was reading a RTP packet from the
-         socket.  Both threads wound up changing the rtp->rtcp->local_addr_str
-         string and interfering with each other.  The classic reentrancy problem
-         resulted in a crash.
+       * chan_sip: Better ICE handling for RTCP-MUX
 
-         In the case of ASTERISK-26853 a pjsip serializer thread was processing a
-         message's SDP body while another thread was reading a RTP packet from the
-         socket.  Both threads wound up processing ICE candidates in PJPROJECT and
-         interfering with each other.  The classic reentrancy problem resulted in a
-         crash.
+         If we are offered or are offering RTCP-MUX, don't consider RTCP ICE
+         candidates. This confuses certain browsers (current Firefox for
+         example) and causes intial audio setup delays.
 
-         * rtp_engine.c: Make the ast_rtp_instance_xxx() calls lock the RTP
-         instance struct.
+         ASTERISK-26982 #close
 
-         * rtp_engine.c: Make ICE and DTLS wrapper functions to lock the RTP
-         instance struct for the API call.
+         Change-Id: Ifeaf47e83972fe8dbe58b7fb3d6d1823400cfb91
 
-         * res_rtp_asterisk.c: Lock the RTP instance to prevent a reentrancy
-         problem with rtp->rtcp->local_addr_str in the scheduler thread running
-         ast_rtcp_write().
+2017-04-26 09:22 +0000 [36628cc9c4]  Yasin CANER <yasin.caner@netgsm.com.tr>
 
-         * res_rtp_asterisk.c: Avoid deadlock when local RTP bridging in
-         bridge_p2p_rtp_write() because there are two RTP instance structs
-         involved.
+       * res_pjsip_session : fixed wrong From Header number On Re-invite
 
-         * res_rtp_asterisk.c: Avoid deadlock when trying to stop scheduler
-         callbacks.  We cannot hold the instance lock when trying to stop a
-         scheduler callback.
+         ASTERISK-26964 #close
 
-         * res_rtp_asterisk.c: Remove the lock in struct dtls_details and use the
-         struct ast_rtp_instance ao2 object lock instead.  The lock was used to
-         synchronize two threads to prevent a race condition between starting and
-         stopping a timeout timer.  The race condition is no longer present between
-         dtls_perform_handshake() and __rtp_recvfrom() because the instance lock
-         prevents these functions from overlapping each other with regards to the
-         timeout timer.
+         Change-Id: I55a9caa7dc90e6c4c219cb09b5c2ec08af84a302
 
-         * res_rtp_asterisk.c: Remove the lock in struct ast_rtp and use the struct
-         ast_rtp_instance ao2 object lock instead.  The lock was used to
-         synchronize two threads using a condition signal to know when TURN
-         negotiations complete.
+2017-04-13 17:16 +0000 [919ccdb9ac]  Mark Michelson <mmichelson@digium.com>
 
-         * res_rtp_asterisk.c: Avoid deadlock when trying to stop the TURN
-         ioqueue_worker_thread().  We cannot hold the instance lock when trying to
-         create or shut down the worker thread without a risk of deadlock.
+       * AST-2017-002: Ensure transaction key buffer is large enough.
 
-         This patch exposed a race condition between a PJSIP serializer thread
-         setting up an ICE session in ice_create() and another thread reading RTP
-         packets.
+         ASTERISK-26938 #close
 
-         * res_rtp_asterisk.c:ice_create(): Set the new rtp->ice pointer after we
-         have re-locked the RTP instance to prevent the other thread from trying to
-         process ICE packets on an incomplete ICE session setup.
+         Change-Id: I266490792fd8896a23be7cb92f316b7e69356413
 
-         A similar race condition is between a PJSIP serializer thread resetting up
-         an ICE session in ice_create() and the timer_worker_thread() processing
-         the completion of the previous ICE session.
+2017-04-13 17:17 +0000 [49c032abef]  Mark Michelson <mmichelson@digium.com>
 
-         * res_rtp_asterisk.c:ast_rtp_on_ice_complete(): Protect against an
-         uninitialized/null remote_address after calling
-         update_address_with_ice_candidate().
+       * AST-2017-003: Handle zero-length body parts correctly.
 
-         * res_rtp_asterisk.c: Eliminate the chance of ice_reset_session()
-         destroying and setting the rtp->ice pointer to NULL while other threads
-         are using it by adding an ao2 wrapper around the PJPROJECT ice pointer.
-         Now when we have to unlock the RTP instance object to call a PJPROJECT ICE
-         function we will hold a ref to the wrapper.  Also added some rtp->ice NULL
-         checks after we relock the RTP instance and have to do something with the
-         ICE structure.
+         ASTERISK-26939 #close
 
-         ASTERISK-26835 #close
-         ASTERISK-26853 #close
+         Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd
 
-         Change-Id: I780b39ec935dcefcce880d50c1a7261744f1d1b4
+2017-04-13 11:14 +0000 [1cc18d4025]  George Joseph <gjoseph@digium.com>
 
-2017-04-19 08:39 +0000 [dafcd97a77]  Sean Bright <sean.bright@gmail.com>
+       * AST-2017-004: chan_skinny:  Add EOF check in skinny_session
 
-       * build: Update config.guess and config.sub
+         The while(1) loop in skinny_session wasn't checking for EOF so
+         a packet that was longer than a header but still truncated
+         would spin the while loop infinitely.  Not only does this
+         permanently tie up a thread and drive a core to 100% utilization,
+         the call of ast_log() in such a tight loop eats all available
+         process memory.
 
-         Change-Id: Id078a1df07a771808775e1053cdfe1d99c8fb172
+         Added poll with timeout to top of read loop
 
-2017-04-14 13:52 +0000 [9bbfa6fda1]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26940 #close
+         Reported-by: Sandro Gauci
 
-       * format_wav: Read 16khz wav samples properly
+         Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898
 
-         When opening a PCM wave file for reading, we aren't tracking the
-         frequency of the opened file, so we treat 16khz files as 8khz and do
-         half reads.
+2017-05-18 16:35 +0000 [c107ab4c04]  Sean Bright <sean.bright@gmail.com>
 
-         This patch also cleans up some of the data types and an unnecessarily
-         complex `if` expression.
+       * res_hep_rtcp: Add support level to module info
 
-         ASTERISK-26613 #close
-         Reported by: Vitaly K
+         Change-Id: I5661478f9cf12d431f730e42be79323b62831e92
 
-         Change-Id: I05f8b263058dc573ea8ffe0c62e7964506e11815
+2017-05-11 00:25 +0000 [cfeae52c0f]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-2017-04-16 19:54 +0000 [4ccaffe644]  gtjoseph <gjoseph@digium.com>
+       * app_queue: Fix duplicate queue_log entries for EXITEMPTY and ABANDON
 
-       * make ari-stubs so doc periodic jobs can run
+         There are 2 places in app_queue.c that log EXITEMPTY event: one in
+         wait_our_turn, and another one in queue_exec in the loop trying to
+         call an agent after wait_our_turn.
 
-         The periodic doc job does a make ari-stubs and checks that
-         there are no changes before generating the docs.  Since I changed
-         the mustache template (and the generated code directly) recently
-         and forgot to regenerate the stubs, the doc job thinks they're out
-         of date.
+         In most cases it leads to logging EXITEMPTY twice.
 
-         Change-Id: Ibd4bc649556615ff714d44534c45b6c2f6aa449d
+         ABANDON is also logged on two places, and in the rare case when an agent
+         and caller hang up simultaneously it's also possible to get duplicates
+         in queue_log.
 
-2017-04-14 12:51 +0000 [90c630aaa1]  Sean Bright <sean.bright@gmail.com>
+         This commit changes wait_our_turn to return -1 ("the caller should exit
+         the queue") instead of 0 ("the caller's turn has arrived") in case of
+         leaving when empty, so queue_exec skips the agent calling loop.
 
-       * format_ogg_vorbis: Clear ogg/vorbis data structures on close
+         Also, leave_queue is now executed only once in this case, because 2nd
+         time is just a noop when the queue entry has already been removed.
 
-         On filestream close, we need to clear out the ogg & vorbis data
-         structures to prevent a memory leak.
+         Also, it sets qe->handled to -1 to indicate that the call was not
+         answered by an agent, but the necessary handling has already been done
+         in order to avoid logging an extra ABANDON entry.
 
-         ASTERISK-26169 #close
-         Reported by: Ivan Myalkin
+         ASTERISK-25665 #close
+         Reported by: Ove Aursand
 
-         Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274
+         Change-Id: I4578dd383bf2ac41589cf167865e8aaebcd4c11e
 
-2017-04-14 17:31 +0000 [9084c85cb1]  Richard Mudgett <rmudgett@digium.com>
+2017-05-14 00:37 +0000 [5da91c65be]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
 
-       * Revert "bridging:  Ensure successful T.38 negotation"
+       * Fix spelling queues.conf.sample file
 
-         This reverts commit 3e7c396a51b240088c475dd53e7bac9869376129.
+         Change-Id: Ie1c2d83af66f27a449da09a68d987e0992627fee
 
-         Change-Id: I61d49d563babff788bb557345729b200d116bd88
+2017-05-13 11:40 +0000 [1618203964]  Joshua Colp <jcolp@digium.com>
 
-2017-04-14 16:50 +0000 [357d1fbdcc]  Sean Bright <sean.bright@gmail.com>
+       * asterisk: Audit locking of channel when manipulating flags.
 
-       * res_stun_monitor: Don't fail to load if DNS resolution fails
+         When manipulating flags on a channel the channel has to be
+         locked to guarantee that nothing else is also manipulating
+         the flags. This change introduces locking where necessary to
+         guarantee this. It also adds helper functions that manipulate
+         channel flags and lock to reduce repeated code.
 
-         res_stun_monitor will fail to load if DNS resolution of the STUN server
-         fails. Instead, we continue without the STUN server being resolved and
-         we will re-attempt the resolution on the STUN refresh interval.
+         ASTERISK-26789
 
-         ASTERISK-21856 #close
-         Reported by: Jeremy Kister
+         Change-Id: I489280662dba0f4c50981bfc5b5a7073fef2db10
 
-         Change-Id: I6334c54a1cc798f8a836b4b47948e0bb4ef59254
+2017-05-12 21:04 +0000 [b67363006f]  Richard Mudgett <rmudgett@digium.com>
 
-2017-04-14 14:36 +0000 [ac15ebc379]  Roman S.
+       * res_pjsip_session.c: Process initial INVITE sooner. (key exists)
 
-       * format_pcm: Track actual header size of .au files
+         Retransmissions of an initial INVITE could be queued in the serializer
+         before we have processed the first INVITE message.  If the first INVITE
+         message doesn't get completely processed before the retransmissions are
+         seen then we could try to setup the same call from the retransmissions.  A
+         symptom of this is seeing a (key exists) message associated with an
+         INVITE.  An earlier change attempted to address this kind of problem by
+         calculating a distributor serializer to use for unassociated messages.
+         Part of that change also made incoming calls keep using that distributor
+         serializer.  (ASTERISK-26088) However, some leftover code was still
+         deferring the INVITE processing to the session's serializer even though we
+         were already in that serializer.  This not only is unnecessary but would
+         cause the same call resetup problem.
 
-         Sun's Au file format has a minimum data offset 24 bytes, but this
-         offset is encoded in each .au file. Instead of assuming the minimum,
-         read the actual value and store it for later use.
+         * Removed the code to defer processing the initial INVITE to the session's
+         serializer because we are already running in that serializer.
 
-         ASTERISK-20984 #close
-         Reported by: Roman S.
-         Patches:
-               asterisk-1.8.20.0-au-clicks-2.diff (license #6474) patch
-               uploaded by Roman S.
+         ASTERISK-26998 #close
 
-         Change-Id: I524022fb19ff2fd5af2cc2d669d27a780ab2057c
+         Change-Id: I1e822d82dcc650e508bc2d40d545d5de4f3421f6
 
-2017-04-11 11:07 +0000 [f882ca2572]  gtjoseph <gjoseph@digium.com>
+2017-05-08 15:56 +0000 [6af2dd34af]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * modules:  change module LOAD_FAILUREs to LOAD_DECLINES
+       * res_pjsip: New endpoint option "refer_blind_progress"
 
-         In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed
-         to AST_MODULE_LOAD_DECLINE.  This prevents asterisk from exiting
-         if a module can't be loaded.  If the user wishes to retain the
-         FAILURE behavior for a specific module, they can use the "require"
-         or "preload-require" keyword in modules.conf.
+         This option was added to turn off notifying the progress details
+         on Blind Transfer. If this option is not set then the chan_pjsip
+         will send NOTIFY "200 OK" immediately after "202 Accepted".
 
-         A new API was added to logger: ast_is_logger_initialized().  This
-         allows asterisk.c/check_init() to print to the error log once the
-         logger subsystem is ready instead of just to stdout.  If something
-         does fail before the logger is initialized, we now print to stderr
-         instead of stdout.
+         Some SIP phones like Mitel/Aastra or Snom keep the line busy until
+         receive "200 OK".
 
-         Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25
+         ASTERISK-26333 #close
 
-2017-04-07 16:14 +0000 [cd80af508e]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id606fbff2e02e967c02138457badc399144720f2
 
-       * res_rtp_asterisk.c: Add stun_blacklist option
+2017-05-09 10:34 +0000 [6fba0a41f0]  Joshua Colp <jcolp@digium.com>
 
-         Added the stun_blacklist option to rtp.conf.  Some multihomed servers have
-         IP interfaces that cannot reach the STUN server specified by stunaddr.
-         Blacklist those interface subnets from trying to send a STUN packet to
-         find the external IP address.  Attempting to send the STUN packet
-         needlessly delays processing incoming and outgoing SIP INVITEs because we
-         will wait for a response that can never come until we give up on the
-         response.  Multiple subnets may be listed.
+       * tcptls: Improve error messages for TLS connections.
 
-         ASTERISK-26890 #close
+         This change uses the functions provided by OpenSSL to query
+         and better construct error messages for situations where
+         the connection encounters a problem.
 
-         Change-Id: I3ff4f729e787f00c3e6e670fe6435acce38be342
+         ASTERISK-26606
 
-2017-04-06 17:31 +0000 [f8219a2e12]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I7ae40ce88c0dc4e185c4df1ceb3a6ccc198f075b
 
-       * stun.c: Fix ast_stun_request() erratic timeout.
+2017-05-04 17:28 +0000 [8ec6e19c86]  Joshua Elson <joshelson@gmail.com>
 
-         If ast_stun_request() receives packets other than a STUN response then we
-         could conceivably never exit if we continue to receive packets with less
-         than three seconds between them.
+       * Prevent Undefined Capath Crash
 
-         * Fix poll timeout to keep track of the time when we sent the STUN
-         request.  We will now send a STUN request every three seconds regardless
-         of how many other packets we receive while waiting for a response until we
-         have completed three STUN request transmission cycles.
+         It is possible to initialize a valid config without a capath
+         or cafile definition. This will cause a crash on a reload.
 
-         Change-Id: Ib606cb08585e06eb50877f67b8d3bd385a85c266
+         This fix ensures capath is always allocated.
 
-2017-04-06 18:30 +0000 [19b82a8644]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26983 #close
 
-       * sorcery.c: Speed up ast_sorcery_retrieve_by_id()
+         Change-Id: I63ff715d9d9023427543a5b8a4ba7b0d82533c12
 
-         Return early if ast_sorcery_retrieve_by_id() is not passed an id to find.
-         Also eliminated the RAII_VAR() usage in the function.
+2017-05-05 11:33 +0000 [d6325373ac]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I871dbe162a301b5ced8b4393cec27180c7c6b218
+       * cel_odbc:  Fix timestamp processing for microseconds
 
-2017-04-10 11:30 +0000 [aecf19e7d2]  Richard Mudgett <rmudgett@digium.com>
+         When a column is of type timestamp, the fraction part of the event
+         field's seconds was frequently parsed incorrectly especially if
+         there were leading zeros.  For instance "2017-05-23 23:55:03.023"
+         would be parsed into an int as "23" then when the timestamp was
+         formatted again to be inserted into the database column it'd be
+         "2017-05-23 23:55:03.23" which is now 230 milliseconds instead of
+         23 milliseconds.  "03.000001" would be transformed to "03.1", etc.
 
-       * res_pjsip: Fix pointer use after unref.
+         * If the event field is 'eventtime' and the db column is timestamp,
+           then existing processing has already correctly formatted the
+           timestamp so now we simply use it rather than parsing it and
+           re-printing it. This is the most common use case anyway.
 
-         Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1
+         * If the event field is other than 'eventtime' and the db column
+           is timestamp, we now parse the seconds, including the fractional
+           part into a double rather than 2 ints.  This preserves the
+           magnitude and precision of the fractional part.  When we print
+           it, we now print it as a "%09.6lf" which correctly represents the
+           input.
 
-2017-04-06 18:18 +0000 [304f652cda]  Richard Mudgett <rmudgett@digium.com>
+         To be honest, why we parse the string timestamp into components,
+         test the components, then print the components back into a string
+         timestamp is beyond me.  We should use parse it, test it, then if
+         it passes, use the original string representation in the database
+         call.  Maybe someone thought that some implementations wouldn't
+         take a partial timestamp string like "2017-05-06" and decided to
+         always produce a full timestamp string even if an abbreviated one
+         was supplied.  Anyway, I'm leaving it as it is.
 
-       * res_pjsip_sdp_rtp.c: Don't use deprecated transport struct member.
+         ASTERISK-25032 #close
+         Reported-by: Etienne Lessard
 
-         * create_rtp(): Eliminate use of deprecated transport struct member.  That
-         member and several others in the transport structure were deprecated
-         because of an infinite loop created when using realtime configuration.
-         See 2451d4e4550336197ee2e482750cc53f30afa352
+         Change-Id: Id407e6221f79a5c1120e1a70bc7e893bbcaf1938
 
-         ASTERISK-26851
+2017-05-09 05:25 +0000 [10a49ab362]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I0533aa13c9ce3c6cc394e0fd2b5bf1cd1b2ef3bc
+       * res_hep_rtcp: Provide chan_sip Call-ID for RTCP messages.
 
-2017-04-10 17:45 +0000 [bb8cd2add7]  Richard Mudgett <rmudgett@digium.com>
+         This change adds the required logic to allow the SIP
+         Call-ID to be placed into the HEP RTCP traffic if the
+         chan_sip module is used. In cases where the option is
+         enabled but the channel is not either SIP or PJSIP then
+         the code will fallback to the channel name as done
+         previously.
 
-       * tcptls.c: Cleanup TCP/TLS listener thread on abnormal exit.
+         Based on the change on Nir's branch at:
+         team/nirs/hep-chan-sip-support
 
-         Temporarily running out of file descriptors should not terminate the
-         listener thread.  Otherwise, when there becomes more file descriptors
-         available, nothing is listening.
+         ASTERISK-26427
 
-         * Added EMFILE exception to abnormal thread exit.
+         Change-Id: I09ffa5f6e2fdfd99ee999650ba4e0a7aad6dc40d
 
-         * Added an abnormal TCP/TLS listener exit error message.
+2017-05-08 16:11 +0000 [7d4a22bf2e]  George Joseph <gjoseph@digium.com>
 
-         * Closed the TCP/TLS listener socket on abnormal exit so Asterisk does not
-         appear dead if something tries to connect to the socket.
+       * logger:  Added logger_queue_limit to the configuration options.
 
-         ASTERISK-26903 #close
+         All log messages go to a queue serviced by a single thread
+         which does all the IO.  This setting controls how big that
+         queue can get (and therefore how much memory is allocated)
+         before new messages are discarded. The default is 1000.
+         Should something go bezerk and log tons of messages in a tight
+         loop, this will prevent memory escalation.
 
-         Change-Id: I10f2f784065136277f271159f0925927194581b5
+         When the limit is reached, a WARNING is logged to that effect
+         and messages are discarded until the queue is empty again.  At
+         that time another WARNING will be logged with the count of
+         discarded messages.  There's no "low water mark" for this queue
+         because the logger thread empties the entire queue and processes it
+         in 1 batch before going back and waiting on the queue again.
+         Implementing a low water mark would mean additional locking as
+         the thread processes each message and it's not worth it.
 
-2017-04-07 08:58 +0000 [d8967ff2c0]  Torrey Searle <torrey@voxbone.com>
+         A "test" was added to test_logger.c but since the outcome is
+         non-deterministic, it's really just a cli command, not a unit
+         test.
 
-       * strings.h:  Avoid overflows in the string hash functions
+         Change-Id: Ib4520c95e1ca5325dbf584c7989ce391649836d1
 
-         On 2's compliment machines abs(INT_MIN) behavior is undefined and
-         results in a negative value still being returnd.  This results in
-         negative hash codes that can result in crashes.
+2017-05-08 13:40 +0000 [1bcce442d0]  Vitezslav Novy <a1@vnovy.net>
 
-         ASTERISK-26528 #close
+       * chan_sip: Change sip_get_codec() to return correct codec list
 
-         Change-Id: Idff550145ca2133792a61a2e212b4a3e82c6517b
+         Return cahnnel nativeformats to fix bridge technology selection process.
+         Same approach as in pjsip module.
 
-2017-04-08 03:05 +0000 [bbbd262ec0]  Walter Doekes <walter+github@wjd.nu>
+         ASTERISK-26143
+         Reported-by: Henning Holtschneider
 
-       * samples: Undo removal of include from canonicalize-app-names commit.
+         Change-Id: I64e863753954d6ad67a9e722df2ebc328705ad48
 
-         This include was accidentally removed in changeset
-         Ia79aea64de89531362e993e34230c2044a70aa93. My bad.
+2017-05-04 17:32 +0000 [614eda785d]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1d716c7f9590b4e97909fb8bca1f2ed9bd0e4082
+       * netsock2.c: Made get/set addr port avoid potential uninitialized memory.
 
-2017-04-07 08:35 +0000 [b3f4a6365e]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I532052bd7cd95a4b3565485fc01e2a1ea07ee647
 
-       * pjsip: Add Alembic for PUBLISH support.
+2017-05-05 08:48 +0000 [c3ed63cb2c]  Joshua Colp <jcolp@digium.com>
 
-         This change adds database tables for the PUBLISH support so it
-         can be configured using realtime. A minor fix to the
-         res_pjsip_publish_asterisk module was done so that it read the
-         sorcery configuration from the correct section. Finally the
-         sample configuration files have been updated.
+       * func_cdr: Allow empty value for CDR dialplan function.
 
-         ASTERISK-26928
+         A regression was introduced in 12 where passing an empty value
+         to the CDR dialplan function was not longer allowed. This
+         change returns to the behavior of 11 where it is permitted.
 
-         Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952
+         ASTERISK-26173
 
-2017-04-07 08:06 +0000 [e0e5a337fd]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I3f148203b54ec088007e29e30005a5de122e51c5
 
-       * pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete().
+2017-05-04 16:04 +0000 [bed6c0d04b]  George Joseph <gjoseph@digium.com>
 
-         When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not
-         reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer
-         was read. This change avoids this crash.
+       * app_confbridge:  Fix reference to cfg in menu_template_handler
 
-         ASTERISK-26927 #close
+         menu_template_handler wasn't properly accounting for the fact that
+         it might be called both during a load/reload (which isn't really
+         valid but not prevented) and by a dialplan function.  In both cases
+         it was attempting to use the "pending" config which wasn't valid in
+         the latter case.  aco_process_config is also partly to blame because
+         it wasn't properly cleaning "pending" up when a reload was done and
+         no changes were made.  Both of these contributed to a crash if
+         CONFBRIDGE(menu,template) was called in a dialplan after a reload.
 
-         Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b
+         * aco_process_config now sets info->internal->pending to NULL
+           after it unrefs it although this isn't strictly necessary in the
+           context of this fix.
+         * menu_template_handler now uses the "current" config and silently
+           ignores any attempt to be called as a result of someone uses the
+           "template" parameter in the conf file.
 
-2017-04-05 06:41 +0000 [3e7c396a51]  Torrey Searle <torrey@voxbone.com>
+         Luckily there's no other place in the codebase where
+         aco_pending_config is used outside of aco_process_config.
 
-       * bridging:  Ensure successful T.38 negotation
+         ASTERISK-25506 #close
+         Reported-by: Frederic LE FOLL
 
-         When a T.38 happens immediatly after call establishment, the control
-         frame can be lost because the other leg is not yet in the bridge.
+         Change-Id: Ib349a17d3d088f092480b19addd7122fcaac21a7
 
-         This patch detects this case an makes sure T.38 negotation happens
-         when the 2nd leg is being made compatible with the negotating
-         first leg
+2017-04-30 16:40 +0000 [7ffd80cc04]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26923 #close
+       * bridge: Fix returning to dialplan when executing Bridge() from AMI.
 
-         Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94
+         When using the Bridge AMI action on the same channel multiple times
+         it was possible for the channel to return to the wrong location in
+         the dialplan if the other party hung up. This happened because the
+         priority of the channel was not preserved across each action
+         invocation and it would fail to move on to the next priority in
+         other cases.
 
-2017-04-04 16:20 +0000 [4e6e069491]  gtjoseph <gjoseph@digium.com>
+         This change makes it so that the priority of a channel is preserved
+         when taking control of it from another thread and it is incremented
+         as appropriate such that the priority reflects where the channel
+         should next be executed in the dialplan, not where it may or may not
+         currently be.
 
-       * pjproject_bundled: Add 3 upstream patches
+         The Bridge AMI action was also changed to ensure that it too
+         starts the channels at the next location in the dialplan.
 
-         0035-r5572-svn-backport-dialog-transaction-deadlock.patch
-         0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch
-         0037-r5576-svn-backport-session-timer-crash.patch
+         ASTERISK-24529
 
-         Also removed the progress bar from wget download to stdout.
+         Change-Id: I52406669cf64208aef7252a65b63ade31fbf7a5a
 
-         ASTERISK-26905 #close
-         Reported-by: Ross Beer
+2017-05-01 13:04 +0000 [bbe90d6aed]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256
+       * res_rtp_asterisk: Clearing the remote RTCP address causes RTCP failures
 
-2017-04-05 14:50 +0000 [d2a33cdedc]  gtjoseph <gjoseph@digium.com>
+         When a call gets put on hold RTP is temporarily stopped and Asterisk was
+         setting the remote RTCP address to NULL. Then when RTCP data was received
+         from the remote endpoint, Asterisk would be missing this information when
+         publishing the rtcp_message stasis event. Consequently, message subscribers
+         (in this case res_hep_rtcp) trying to parse the "from" field output the
+         following error:
 
-       * sample_config:  Add samples for pubsub to pjsip.conf.sample
+         "ast_sockaddr_split_hostport: Port missing in (null)"
 
-         Added:
-          * outbound-publish
-          * resource_list
-          * inbound-publication
-          * asterisk-publication
+         This patch makes it so the remote RTCP address is no longer set to NULL when
+         stopping RTP. There was only one place that appeared to check if the remote
+         RTCP address was NULL as a way to tell if RTCP was running. This patch added
+         an additional check on the RTCP schedid for that case to make sure RTCP was
+         truly not running.
 
-         Change-Id: I65043a896c35483f30a92d30b5b118359af7ba5a
+         ASTERISK-26860 #close
 
-2017-04-05 09:10 +0000 [ab9d2fc86d]  Walter Doekes <walter+github@wjd.nu>
+         Change-Id: I6be200fb20db647e48b5138ea4b81dfa7962974b
 
-       * samples: Canonicalize app names in extensions.conf.sample.
+2017-05-02 11:34 +0000 [526a0081a0]  Sean Bright <sean.bright@gmail.com>
 
-         This takes care of warnings by ossobv/asterisklint.
+       * cleanup: Change severity of fread short-read warning
 
-         Change-Id: Ia79aea64de89531362e993e34230c2044a70aa93
+         Many sound files don't have a full frame's worth of data at EOF, so the
+         warning messages were a bit too noisy. So we demote them to debug
+         messages.
 
-2017-04-03 15:38 +0000 [6906765381]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I6b617467d687658adca39170a81797a11cc766f6
 
-       * res_pjsip_sdp_rtp.c: Don't alter global addr variable.
+2017-04-26 07:58 +0000 [23db04ed93]  Thierry Magnien <thierry.magnien@gmail.com>
 
-         * create_rtp(): Fix unexpected alteration of global address_rtp if a
-         transport is bound to an address.
+       * channels/chan_sip.c: use binding IP address for outgoing TCP SIP connections
 
-         * create_rtp(): Fix use of uninitialized memory if the endpoint RTP media
-         address is invalid or the transport has an invalid address.
+         For outgoing TCP connections, Asterisk uses the first IP address of the
+         interface instead of the IP address we asked him to bind to.
 
-         ASTERISK-26851
+         ASTERISK-26922 #close
+         Reported-by: Ksenia
 
-         Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7
+         Change-Id: I43c71ca89211dbf1838e5bcdb9be8d06d98e54eb
 
-2017-03-27 09:03 +0000 [68bde0f07d]  Corey Farrell <git@cfware.com>
+2017-04-29 16:18 +0000 [02234e920c]  Richard Mudgett <rmudgett@digium.com>
 
-       * CDR: Protect from data overflow in ast_cdr_setuserfield.
+       * rtp_engine.c: Fix deadlock potential copying RTP payload maps.
 
-         ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could
-         result in a buffer overrun when called from chan_sip or func_cdr. This patch
-         adds a maximum bytes written to the field by using ast_copy_string instead.
+         There is a theoretical potential to deadlock in
+         ast_rtp_codecs_payloads_copy() because it locks two different
+         ast_rtp_codecs locks.  It is theoretical because the callers of the
+         function are either copying between a local ast_rtp_codecs struct and a
+         RTP instance of the ast_rtp_codecs struct.  Or they are copying between
+         the caller and callee channel RTP instances before initiating the call to
+         the callee.  Neither of these situations could actually result in a
+         deadlock because there cannot be another thread involved at the time.
 
-         ASTERISK-26897 #close
-         patches:
-           0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted
-             by Corey Farrell (license #5909)
+         * Add deadlock avoidance code to ast_rtp_codecs_payloads_copy() since it
+         locks two ast_rtp_codecs locks to perform a copy.
 
-         Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c
+         This only affects v13 since this deadlock avoidance code is already in
+         newer branches.
 
-2017-03-25 19:01 +0000 [70e5a2655d]  Daniel Journo <dan@keshercommunications.com>
+         Change-Id: I1aa0b168f94049bd59bbd74a85bd1e78718f09e5
 
-       * Unused realtime MOH classes not purged on 'moh reload'
+2017-04-29 16:11 +0000 [9d5df48968]  Richard Mudgett <rmudgett@digium.com>
 
-         Purge Realtime MOH classes on 'moh reload' even when musiconhold.conf
-         hasn't changed.
+       * res_pjsip_t38.c: Fix deadlock in T.38 framehook.
 
-         ASTERISK-25974 #close
+         A deadlock can happen between a channel lock and a pjsip session media
+         container lock.  One thread is processing a reINVITE's SDP and walking
+         through the session's media container when it waits for the channel lock
+         to put the determined format capabilities onto the channel.  The other
+         thread is writing a frame to the channel and processing the T.38 frame
+         hook.  The T.38 frame hook then waits for the pjsip session's media
+         container lock.  The two threads are now deadlocked.
 
-         Change-Id: I42c78ea76528473a656f204595956c9eedcf3246
+         * Made the T.38 frame hook release the channel lock before searching the
+         session's media container.  This fix has been done to several other
+         frame hooks to fix deadlocks.
 
-2017-04-03 13:56 +0000 [27b556778d]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26974 #close
 
-       * res_pjsip: Fix transport ref leak.
+         Change-Id: Ie984a76ce00bef6ec9aa239010e51e8dd74c8186
 
-         We were leaking a transport ref in multihomed_on_rx_message() which
-         resulted in the FRACK about excessive ref counts.
+2017-04-28 10:56 +0000 [623832b94e]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26916 #close
+       * res_pjsip_outbound_authenticator_digest: Add context to log messages
 
-         Change-Id: I7a96658a9614a060565bb9ad51cb1c9c11ee145f
+         There was no context info in this module's log messages so it was
+         impossible to toubleshoot.
 
-2017-04-03 02:30 +0000 [94bd529f9e]  Alexander Traud <pabstraud@compuserve.com>
+         Added endpoint or host to all messages and added the realms in the
+         challenge for the "No auth credentials for any realm" message.
 
-       * chan_sip: Session Timers required but refused wrongly.
+         Change-Id: Ifeed2786f35fbea7d141237ae15625e472acff9b
 
-         SIP user-agents indicate which protocol extensions are allowed in headers
-         like Supported and Required. Such protocol extensions are Session Timers
-         (RFC 4028) for example. Session Timers are supported since Mantis-10665.
-         Since ASTERISK-21721, not only the first but multiple Supported/Required
-         headers in a message are parsed. In that change, an existing variable was
-         re-used within a newly added do-loop. Currently, at the end of that loop,
-         that variable is an empty string always. Previously, that variable was used
-         within log output. However, the log output was not changed.
+2017-04-27 08:02 +0000 [c5b9ed20fd]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26915 #close
+       * res_pjsip_session:  Add cleanup to ast_sip_session_terminate
 
-         Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990
+         If you use ast_request to create a PJSIP channel but then hang it
+         up without causing a transaction to be sent, the session will
+         never be destroyed.  This is due ot the fact that it's pjproject
+         that triggers the session cleanup when the transaction ends.
+         app_chanisavail was doing this to get more granular channel state
+         and it's also possible for this to happen via ARI.
 
-2017-03-31 16:31 +0000 [bca9685d39]  Joshua Colp <jcolp@digium.com>
+         * ast_sip_session_terminate was modified to explicitly call the
+           cleanup tasks and unreference session if the invite state is NULL
+           AND invite_tsx is NULL (meaning we never sent a transaction).
 
-       * res_pjsip_session: Allow BYE to be sent on disconnected session.
+         * chan_pjsip/hangup was modified to bump session before it calls
+           ast_sip_session_terminate to insure that session stays valid
+           while it does its own cleanup.
 
-         It is perfectly acceptable for a BYE to be sent on a disconnected
-         session. This occurs when we respond to a challenge to the BYE
-         for authentication credentials.
+         * Added test events to session_destructor for a future testsuite
+           test.
 
-         ASTERISK-26363
+         ASTERISK-26908 #close
+         Reported-by: Richard Mudgett
 
-         Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045
+         Change-Id: I52daf6f757184e5544c261f64f6fe9602c4680a9
 
-2017-03-30 18:28 +0000 [c701550803]  Corey Farrell <git@cfware.com>
+2017-04-26 14:20 +0000 [c853cfdc7c]  Kevin Harwell <kharwell@digium.com>
 
-       * Forward declare 'struct ast_json' in asterisk.h
+       * res_pjsip/res_pjsip_callerid: NULL check on caller id name string
 
-         The ast_json structure is used in many Asterisk headers and is often the
-         only part of json.h used.  This adds a forward declaration to asterisk.h
-         and removes the include of json.h from many headers.  The declaration
-         has been left in endpoints.h and stasis.h to avoid problems with source
-         files that use ast_json functions without directly including json.h.
+         It's possible for a name in a party id structure to be marked as valid, but the
+         name string itself be NULL (for instance this is possible to do by using the
+         dialplan CALLERID function). There were a couple of places where the name was
+         validated, but the string itself was not checked before passing it to functions
+         like 'strlen'. This of course caused a crashed.
 
-         ari.h continues to include json.h as it uses enum
-         ast_json_encoding_format.
+         This patch adds in a NULL check before attempting to pass it into a function
+         that is not NULL tolerant.
 
-         Change-Id: Id766aabce6bed56626d27e8d29f559b5e687b769
+         ASTERISK-25823 #close
 
-2017-03-30 08:11 +0000 [754e99d517]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Iaa6ffe9d92f598fe9e3c8ae373fadbe3dfbf1d4a
 
-       * cdr_pgsql: Fix buffer overflow calling libpq
+2017-04-25 11:43 +0000 [4d3b4fbf22]  Kevin Harwell <kharwell@digium.com>
 
-         Implement the same buffer size checking done in cel_pgsql.
+       * vector: defaults and indexes
 
-         ASTERISK-26896 #close
-         Reported by: twisted
+         Added an pre-defined integer vector declaration. This makes integer vectors
+         easier to declare and pass around. Also, added the ability to default a vector
+         up to a given size with a default value. Lastly, added functionality that
+         returns the "nth" index of a matching value.
 
-         Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48
+         Also, updated a unit test to test these changes.
 
-2017-03-28 13:01 +0000 [7954b39a50]  Walter Doekes <walter+github@wjd.nu>
+         Change-Id: Iaf4b51b2540eda57cb43f67aa59cf1d96cdbcaa5
 
-       * build: Fix deb build issues with fakeroot
+2017-04-20 02:13 +0000 [566ad7c35d]  Jean Aunis <jean.aunis@prescom.fr>
 
-         If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to
-         create a binary archive. The ldconfig call should be delegated to the
-         archive postinst script. This fixes the case where fakeroot wraps 'make
-         install' causing $EUID to be 0 even though it doesn't have permission to
-         call ldconfig.
+       * chan_sip: Trigger reinvite if the SDP answer is included in the SIP ACK
 
-         The previous logic in configure.ac to detect and correct libdir
-         has been removed as it was not completely accurate.  CentOS 64-bit
-         users should again specifiy --libdir=/usr/lib64 when configuring
-         to prevent install to /usr/lib.
+         Some equipments may send a re-INVITE containing an SDP in the final ACK
+         request. If this happens in the context of direct media, the remote end
+         should be updated with a re-INVITE.
+         This patch queues an "update RTP peer" frame to trigger the re-INVITE,
+         instead of the "source change" frame wich was used previously.
 
-         Updated Makefile:check-old-libdir to check for orphans in
-         lib64 when installing to lib as well as orphans in lib when installing
-         to lib64.
+         ASTERISK-26951
 
-         Updated Makefile and main/Makefile uninstall targets to remove the
-         orphans using the new logic.
+         Change-Id: I3644d2025f20e086ea9f8f62b486172c52b5b2e6
 
-         ASTERISK-26705
+2017-04-26 08:45 +0000 [001dc2ade6]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51
+       * pjproject_bundled:  Add --disable-libwebrtc to configure
 
-2017-03-29 10:11 +0000 [c9648f4690]  Sean Bright <sean.bright@gmail.com>
+         Without the disable, pjproject tries to build it's internal
+         webrtc implementation which requires sse2.  This fails on
+         platforms without sse2.
 
-       * astobj2: Prevent potential deadlocks with ao2_global_obj_release
+         ASTERISK-26930 #close
+         Reported-by: abelbeck
 
-         The ao2_global_obj_release() function holds an exclusive lock on the
-         global object while it is being dereferenced. Any destructors that
-         run during this time that call ao2_global_obj_ref() will deadlock
-         because a read lock is required.
+         Change-Id: I07231f9160c35cfa42b194d3aad4e7d51fd9a410
 
-         Instead, we make the global object inaccessible inside of the write
-         lock and only dereference it once we have released the lock. This
-         allows the affected destructors to fail gracefully.
+2017-04-26 05:38 +0000 [ae696132a2]  Joshua Colp <jcolp@digium.com>
 
-         While this doesn't completely solve the referenced issue (the error
-         message about not being able to create an IQ continues to be shown)
-         it does solve the backtrace spew that accompanied it.
+       * frame: Better handle interpolated frames.
 
-         ASTERISK-21009 #close
-         Reported by: Marcello Ceschia
+         Interpolated frames are frames which contain a number of
+         samples but have no actual data. Audiohooks did not
+         handle this case when translating an incoming frame into
+         signed linear. It assumed that a frame would always contain
+         media when it may not. If this occurs audiohooks will now
+         immediately return and not act on the frame.
 
-         Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385
+         As well for users of ast_trans_frameout the function has
+         been changed to be a bit more sane and ensure that the data
+         pointer on a frame is set to NULL if no data is actually
+         on the frame. This allows the various spots in Asterisk that
+         check for an interpolated frame based on the presence of a
+         data pointer to work as expected.
 
-2017-03-30 11:57 +0000 [1d1309b1ed]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26926
 
-       * Revert "Update for 13.15.0-rc1"
+         Change-Id: I7fa22f631fa28d540722ed789ce28e84c7f8662b
 
-         This reverts commit 552cf009c0939c8b6597708135412bdc596df4bb.
+2017-04-21 12:04 +0000 [1b50df78d0]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Ie345bea481261b761c44079e9472622040fda302
+       * cleanup: Fix fread() and fwrite() error handling
 
-2017-03-30 10:18 +0000 [3c23ebdef4]  Corey Farrell <git@cfware.com>
+         Cleaned up some of the incorrect uses of fread() and fwrite(), mostly in
+         the format modules. Neither of these functions will ever return a value
+         less than 0, which we were checking for in some cases.
 
-       * CEL: Remove header declarations of non-existant functions.
+         I've introduced a fair amount of duplication in the format modules, but
+         I plan to change how format modules work internally in a subsequent
+         patch set, so this is simply a stop-gap.
 
-         ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from
-         the headers.
+         Change-Id: I8ca1cd47c20b2c0b72088bd13b9046f6977aa872
 
-         Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c
+2017-04-25 07:52 +0000 [c09b9dba90]  Joshua Colp <jcolp@digium.com>
 
-2017-03-29 08:27 +0000 [ef19db9261]  Alexander Traud <pabstraud@compuserve.com>
+       * alembic: Add table for 'resource_list' PJSIP RLS type.
 
-       * srtp: Allow zero as tag value for a sRTP Crypto Suite.
+         This change adds an Alembic migration which adds a
+         ps_resource_list table that can contain resource_list
+         RLS configuration objects.
 
-         ASTERISK-25490 #close
+         ASTERISK-26929
 
-         Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f
+         Change-Id: I7c888fafc67b3e87012de974f71ca7a5b8b1ec05
 
-2017-03-28 13:10 +0000 [a827892ff7]  gtjoseph <gjoseph@digium.com>
+2017-04-24 13:16 +0000 [1b88a3a4cf]  Sean Bright <sean.bright@gmail.com>
 
-       * res_pjsip_config_wizard: Add 2 new parameters to help with proxy config
+       * res_hep: Add additional config initialization and validation
 
-         Two new parameters have been added to the pjsip config wizard.
+         * Initialize hepv3_runtime_data.sockfd to -1 so that our ao2 destructor
+           does not close fd 0
 
-          * Setting 'sends_line_with_registrations' to true will cause the wizard
-            to skip the creation of an identify object to match incoming request
-            to the endpoint and instead add the line and endpoint parameters to
-            the outbound registration object.
+         * Add logging output when the required option - capture_address - is not
+           specified.
 
-          * Setting 'outbound_proxy' is a shortcut for adding individual
-            endpoint/outbound_proxy, aor/outbound_proxy and
-            registration/outbound_proxy parameters.
+         * Remove a no longer relevant #define and correct related documentation
 
-         Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0
+         * Pass appropriate flags to aco_option_register so that capture_address
+           cannot be the empty string.
 
-2017-03-28 09:29 +0000 [864dda07f3]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26953 #close
 
-       * alembic: Turn off execute bit on non-executable python scripts
+         Change-Id: Ief08441bc6596d6f1718fa810e54a5048124f076
 
-         Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c
+2017-04-17 19:06 +0000 [cea3742c54]  Sean Bright <sean.bright@gmail.com>
 
-2017-03-27 12:37 +0000 [a9529cbb21]  Richard Mudgett <rmudgett@digium.com>
+       * core: Use eventfd for alert pipes on Linux when possible
 
-       * Add DTLS sanity check.
+         The primary win of switching to eventfd when possible is that it only
+         uses a single file descriptor while pipe() will use two. This means for
+         each bridge channel we're reducing the number of required file
+         descriptors by 1, and - if you're using timerfd - we also now have 1
+         less file descriptor per Asterisk channel.
 
-         Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b
+         The API is not ideal (passing int arrays), but this is the cleanest
+         approach I could come up with to maintain API/ABI.
 
-2017-03-27 11:49 +0000 [bb68f57a03]  Josh Roberson <josh@asteriasgi.com>
+         I've also removed what I believe to be an erroneous code block that
+         checked the non-blocking flag on the pipe ends for each read. If the
+         file descriptor is 'losing' its non-blocking mode, it is because of a
+         bug somewhere else in our code.
 
-       * cel_pgsql.c: Fix buffer overflow calling libpq
+         In my testing I haven't seen any measurable difference in performance.
 
-         PQEscapeStringConn() expects the buffer passed in to be an
-         adequitely sized buffer to write out the escaped SQL value string
-         into.  It is possible, for large values (such as large values to
-         Dial with a lot of devices) to have more than our 512+1 byte
-         allocation and thus cause libpq to create a buffer overrun.
+         Change-Id: Iff0fb1573e7f7a187d5211ddc60aa8f3da3edb1d
 
-         glibc will nicely ABRT asterisk for you, citing a stack smash.
+2017-04-21 12:33 +0000 [1213ac1ac5]  Richard Mudgett <rmudgett@digium.com>
 
-         Let's only allocate it to be as large as needed:
-         If we have a value, then (strlen(value) * 2) + 1 (as recommended
-         by libpq), and if we have none, just one byte to hold our null
-         will do.
+       * res_pjsip_session.c: Send 100 Trying out earlier to prevent retransmissions.
 
-         ASTERISK-26896 #close
+         If ICE is enabled and a STUN server does not respond then we will block
+         until we give up on the STUN response.  This will take nine seconds.  In
+         the mean time the peer that sent the INVITE will send retransmissions.
 
-         Change-Id: If611c734292618ed68dde17816d09dd16667dea2
+         * Restructure res_pjsip_session.c:new_invite() to send a 100 Trying out
+         earlier to prevent these retransmissions.
 
-2017-03-24 07:43 +0000 [79a2c26c03]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26890
 
-       * core: Remove embedded module support
+         Change-Id: Ie3fc611e53a0eff6586ad55e4aacad81cf6319a8
 
-         This has not worked for some time and is no longer actively maintained.
+2017-04-21 12:07 +0000 [80fd7fd908]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99
+       * res_pjsip_session.c: Restructure ast_sip_session_alloc()
 
-2017-03-27 09:35 +0000 [2c28f7a922]  Sean Bright <sean.bright@gmail.com>
+         * Restructure ast_sip_session_alloc() to need less cleanup on off nominal
+         error paths.
 
-       * res_musiconhold: Document the 'format' option
+         * Made ast_sip_session_alloc() and ast_sip_session_create_outgoing() avoid
+         unnecessary ref manipulation to return a session.  This is faster than
+         calling a function.  That function may do logging of the ref changes with
+         REF_DEBUG enabled.
 
-         ASTERISK-26086 #close
-         Reported by: Jens Bürger
+         Change-Id: I2a0affc4be51013d3f0485782c96b8fee3ddb00a
 
-         Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e
+2017-04-19 15:08 +0000 [98e38daf82]  Sean Bright <sean.bright@gmail.com>
 
-2017-03-27 08:58 +0000 [61fd70c250]  Sean Bright <sean.bright@gmail.com>
+       * pbx: Use same thread if AST_OUTGOING_WAIT_COMPLETE specified
 
-       * res_musiconhold: Don't chdir() when scanning MoH files
+         Both ast_pbx_outgoing_app() and ast_pbx_outgoing_exten() cause the core
+         to spawn a new thread to perform the dial. When AST_OUTGOING_WAIT_COMPLETE
+         is passed to these functions, the calling thread will be blocked until
+         the newly created channel has been hung up.
 
-         There doesn't appear to be any reason that we are chdir'ing in
-         moh_scan_files, and in the event of an Asterisk crash, the core files
-         may not get written because we have changed into a read-only directory.
+         After this patch, we run the dial on the current thread rather than
+         spawning a new one. The only in-tree code that passes
+         AST_OUTGOING_WAIT_COMPLETE is pbx_spool, so you should see reduced
+         thread usage if you are using .call files.
 
-         ASTERISK-23996 #close
-         Reported by: Walter Doekes
+         Change-Id: I512735d243f0a9da2bcc128f7a96dece71f2d913
 
-         Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354
+2017-04-19 13:23 +0000 [55f452884f]  Richard Mudgett <rmudgett@digium.com>
 
-2017-03-23 09:48 +0000 [73bb08fd6a]  Sean Bright <sean.bright@gmail.com>
+       * res_rtp_asterisk.c: Fix crash in RTCP DTLS operation.
 
-       * res_xmpp: Use incremental backoff when a read error occurs
+         Occasionally a crash happens when processing the RTCP DTLS timeout
+         handler.  The RTCP DTLS timeout timer could be left running if we have not
+         completed the DTLS handshake before we place the call on hold or we
+         attempt direct media.
 
-         If a read error occurs, we immediately attempt a reconnect without any
-         delay. Instead, let's sleep and backoff up to 60 seconds before we try
-         again.
+         * Made ast_rtp_prop_set() stop the RTCP DTLS timer when disabling RTCP.
 
-         ASTERISK-24712 #close
-         Reported by: Matthias Urlichs
+         * Made some sanity tweaks to ast_rtp_prop_set() when switching from
+         standard RTCP mode to RTCP multiplexed mode.
 
-         Change-Id: I6fe10ef4734837727437beab715e336777f13f48
+         ASTERISK-26692 #close
 
-2017-03-23 05:19 +0000 [55693383e2]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: If6c64c79129961acfa4b3d63a864e8f6b664acc0
 
-       * res_xmpp: Fix ref counting issue
+2017-03-22 16:05 +0000 [f856cfbb51]  Richard Mudgett <rmudgett@digium.com>
 
-         The only remaining reference to the endpoint is in the endpoints
-         container, and because it is unlinked in ast_endpoint_shutdown, we don't
-         have to explicitly cleanup the endpoint ourselves.
+       * rtp_engine/res_rtp_asterisk: Fix RTP struct reentrancy crashes.
 
-         Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8
+         The struct ast_rtp_instance has historically been indirectly protected
+         from reentrancy issues by the channel lock because early channel drivers
+         held the lock for really long times.  Holding the channel lock for such a
+         long time has caused many deadlock problems in the past.  Along comes
+         chan_pjsip/res_pjsip which doesn't necessarily hold the channel lock
+         because sometimes there may not be an associated channel created yet or
+         the channel pointer isn't available.
 
-2017-03-23 09:45 +0000 [1966265562]  Sean Bright <sean.bright@gmail.com>
+         In the case of ASTERISK-26835 a pjsip serializer thread was processing a
+         message's SDP body while another thread was reading a RTP packet from the
+         socket.  Both threads wound up changing the rtp->rtcp->local_addr_str
+         string and interfering with each other.  The classic reentrancy problem
+         resulted in a crash.
 
-       * res_xmpp: Try to provide useful errors messages from OpenSSL
+         In the case of ASTERISK-26853 a pjsip serializer thread was processing a
+         message's SDP body while another thread was reading a RTP packet from the
+         socket.  Both threads wound up processing ICE candidates in PJPROJECT and
+         interfering with each other.  The classic reentrancy problem resulted in a
+         crash.
 
-         If any errors occur during the TLS connection setup, we currently dump a
-         fairly generic error message. So instead we try to pull in something
-         useful from OpenSSL to report instead.
+         * rtp_engine.c: Make the ast_rtp_instance_xxx() calls lock the RTP
+         instance struct.
 
-         ASTERISK-24712
-         Reported by: Matthias Urlichs
+         * rtp_engine.c: Make ICE and DTLS wrapper functions to lock the RTP
+         instance struct for the API call.
 
-         Change-Id: I288500991a9681f447d92913b11fedaf426087f4
+         * res_rtp_asterisk.c: Lock the RTP instance to prevent a reentrancy
+         problem with rtp->rtcp->local_addr_str in the scheduler thread running
+         ast_rtcp_write().
 
-2017-03-23 09:30 +0000 [03b99ae3d2]  Sean Bright <sean.bright@gmail.com>
+         * res_rtp_asterisk.c: Avoid deadlock when local RTP bridging in
+         bridge_p2p_rtp_write() because there are two RTP instance structs
+         involved.
 
-       * res_xmpp: Correctly check return value of SSL_connect
+         * res_rtp_asterisk.c: Avoid deadlock when trying to stop scheduler
+         callbacks.  We cannot hold the instance lock when trying to stop a
+         scheduler callback.
 
-         SSL_connect returns non-zero for both success and some error conditions
-         so simply negating is inadequate.
+         * res_rtp_asterisk.c: Remove the lock in struct dtls_details and use the
+         struct ast_rtp_instance ao2 object lock instead.  The lock was used to
+         synchronize two threads to prevent a race condition between starting and
+         stopping a timeout timer.  The race condition is no longer present between
+         dtls_perform_handshake() and __rtp_recvfrom() because the instance lock
+         prevents these functions from overlapping each other with regards to the
+         timeout timer.
 
-         Change-Id: Ifbf882896e598703b6c615407fa456d3199f95b1
+         * res_rtp_asterisk.c: Remove the lock in struct ast_rtp and use the struct
+         ast_rtp_instance ao2 object lock instead.  The lock was used to
+         synchronize two threads using a condition signal to know when TURN
+         negotiations complete.
 
-2017-03-24 11:29 +0000 [d9d2beba1c]  Sean Bright <sean.bright@gmail.com>
+         * res_rtp_asterisk.c: Avoid deadlock when trying to stop the TURN
+         ioqueue_worker_thread().  We cannot hold the instance lock when trying to
+         create or shut down the worker thread without a risk of deadlock.
 
-       * res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts
+         This patch exposed a race condition between a PJSIP serializer thread
+         setting up an ICE session in ice_create() and another thread reading RTP
+         packets.
 
-         chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL
-         (44) when a channel is hung up due to an RTP timeout. So do the same
-         when it happens with PJSIP for parity.
+         * res_rtp_asterisk.c:ice_create(): Set the new rtp->ice pointer after we
+         have re-locked the RTP instance to prevent the other thread from trying to
+         process ICE packets on an incomplete ICE session setup.
 
-         Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8
+         A similar race condition is between a PJSIP serializer thread resetting up
+         an ICE session in ice_create() and the timer_worker_thread() processing
+         the completion of the previous ICE session.
 
-2017-03-23 12:07 +0000 [e6aeeabddf]  Kevin Harwell <kharwell@digium.com>
+         * res_rtp_asterisk.c:ast_rtp_on_ice_complete(): Protect against an
+         uninitialized/null remote_address after calling
+         update_address_with_ice_candidate().
 
-       * pjproject_bundled: raise timeout value used when downloading
+         * res_rtp_asterisk.c: Eliminate the chance of ice_reset_session()
+         destroying and setting the rtp->ice pointer to NULL while other threads
+         are using it by adding an ao2 wrapper around the PJPROJECT ice pointer.
+         Now when we have to unlock the RTP instance object to call a PJPROJECT ICE
+         function we will hold a ref to the wrapper.  Also added some rtp->ice NULL
+         checks after we relock the RTP instance and have to do something with the
+         ICE structure.
 
-         After configuring Asterisk with '--with-pjproject-bundled' the configure/build
-         process attempts to download pjproject from its download site. Currently, a
-         timeout of 10 seconds is used that will stop the download process if pjproject
-         has not been fully downloaded in that time. For some systems this was not enough
-         time and the process was timing out too early.
+         ASTERISK-26835 #close
+         ASTERISK-26853 #close
 
-         This patch raises the download timeout value to '60'. Also, this patch fixes
-         another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported
-         due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to
-         DOWNLOAD_TIMEOUT.
+         Change-Id: I780b39ec935dcefcce880d50c1a7261744f1d1b4
 
-         ASTERISK-26814 #close
+2017-04-19 08:39 +0000 [dafcd97a77]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842
+       * build: Update config.guess and config.sub
 
-2017-03-22 20:33 +0000 [0939a19cff]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Id078a1df07a771808775e1053cdfe1d99c8fb172
 
-       * res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus
+2017-04-14 13:52 +0000 [9bbfa6fda1]  Sean Bright <sean.bright@gmail.com>
 
-         The documentation for JABBER_STATUS (and the deprecated JabberStatus
-         app) indicate that a return value of 7 indicates that the specified
-         buddy was not in the roster. It also indicates that you can specify a
-         "bare" JID (one without a resource). Unfortunately the actual behavior
-         does not match the documented behavior.
+       * format_wav: Read 16khz wav samples properly
 
-         Assuming that our roster includes the buddy online and available
-         "valid@example.org/Valid" and does *not* include the buddy
-         "invalid@example.org", the JABBER_STATUS() function returns the
-         following before this patch:
+         When opening a PCM wave file for reading, we aren't tracking the
+         frequency of the opened file, so we treat 16khz files as 8khz and do
+         half reads.
 
-         +------------------------------+------------+--------------------------+
-         | Buddy                        | Status     | Result                   |
-         +------------------------------+------------+--------------------------+
-         | valid@example.org            |  Online    |  7 (Not in roster)       |
-         | valid@example.org/Valid      |  Online    |  1 (Online)              |
-         | valid@example.org/Invalid    |  N/A       |  7 (Not in roster)       |
-         | invalid@example.org          |  N/A       |  Error logged, no return |
-         | invalid@example.org/Valid    |  N/A       |  Error logged, no return |
-         +------------------------------+------------+--------------------------+
+         This patch also cleans up some of the data types and an unnecessarily
+         complex `if` expression.
 
-         And after this patch:
+         ASTERISK-26613 #close
+         Reported by: Vitaly K
 
-         +------------------------------+------------+--------------------------+
-         | Buddy                        | Status     | Result                   |
-         +------------------------------+------------+--------------------------+
-         | valid@example.org            |  Online    |  1 (Online)              |
-         | valid@example.org/Valid      |  Online    |  1 (Online)              |
-         | valid@example.org/Invalid    |  N/A       |  6 (Offline)             |
-         | invalid@example.org          |  N/A       |  7 (Not in roster)       |
-         | invalid@example.org/Valid    |  N/A       |  7 (Not in roster)       |
-         +------------------------------+------------+--------------------------+
+         Change-Id: I05f8b263058dc573ea8ffe0c62e7964506e11815
 
-         This brings the behavior in line with the documentation.
+2017-04-16 19:54 +0000 [4ccaffe644]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-23510 #close
-         Reported by: Anthony Critelli
+       * make ari-stubs so doc periodic jobs can run
 
-         Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf
+         The periodic doc job does a make ari-stubs and checks that
+         there are no changes before generating the docs.  Since I changed
+         the mustache template (and the generated code directly) recently
+         and forgot to regenerate the stubs, the doc job thinks they're out
+         of date.
 
-2017-03-22 17:32 +0000 [a487f6fb97]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Ibd4bc649556615ff714d44534c45b6c2f6aa449d
 
-       * res_xmpp: Don't crash when trying to send a message without a connection
+2017-04-14 12:51 +0000 [90c630aaa1]  Sean Bright <sean.bright@gmail.com>
 
-         If we never establish a connection to our Jabber server, iksemel never sets up
-         its internal transport pointer, so attempting to send a message dereferences a
-         NULL pointer and causes a crash.
+       * format_ogg_vorbis: Clear ogg/vorbis data structures on close
 
-         ASTERISK-21855 #close
-         Reported by: Jeremy Kister
+         On filestream close, we need to clear out the ogg & vorbis data
+         structures to prevent a memory leak.
 
-         Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c
+         ASTERISK-26169 #close
+         Reported by: Ivan Myalkin
 
-2017-03-22 15:40 +0000 [90fb1fca41]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Iee94c5a5d5bdafbf8b181c5c064d15d90ace8274
 
-       * res_xmpp: Include client name in connection related error messages
+2017-04-14 17:31 +0000 [9084c85cb1]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25622 #close
-         Reported by: Sean Darcy
+       * Revert "bridging:  Ensure successful T.38 negotation"
 
-         Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9
+         This reverts commit 3e7c396a51b240088c475dd53e7bac9869376129.
 
-2017-03-21 12:32 +0000 [e196190f11]  Sebastian Gutierrez <sgutierrez@integraccs.com>
+         Change-Id: I61d49d563babff788bb557345729b200d116bd88
 
-       * cdr: Allow setting of user field from 'h' extension
+2017-04-14 16:50 +0000 [357d1fbdcc]  Sean Bright <sean.bright@gmail.com>
 
-         The CDR code previously did not allow the user field to be set
-         from the 'h' extension in the dialplan. This change removes that
-         limitation and allows it to be set.
+       * res_stun_monitor: Don't fail to load if DNS resolution fails
 
-         ASTERISK-26818
+         res_stun_monitor will fail to load if DNS resolution of the STUN server
+         fails. Instead, we continue without the STUN server being resolved and
+         we will re-attempt the resolution on the STUN refresh interval.
 
-         Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6
+         ASTERISK-21856 #close
+         Reported by: Jeremy Kister
 
-2017-03-14 23:49 +0000 [d5b480afca]  Aaron An <anjb@ti-net.com.cn>
+         Change-Id: I6334c54a1cc798f8a836b4b47948e0bb4ef59254
 
-       * audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor.
+2017-04-14 14:36 +0000 [ac15ebc379]  Sean Bright <sean.bright@gmail.com>
 
-         Fixed a bug in function "ast_audiohook_write_frame" that checked the
-         variable other_factory_samples and only flushed the factories, so they
-         would be in sync, when other_factory_samples > 0. When there is not any
-         rtp incoming the variable other_factory_samples will be 0, and although
-         the result of "our_factory_ms - other_factory_ms" may be very large,
-         this led to the record file not syncing.
+       * format_pcm: Track actual header size of .au files
 
-         ASTERISK-26875 #close
-         Reported-by: Aaron An
-         Tested-by: Aaron An
+         Sun's Au file format has a minimum data offset 24 bytes, but this
+         offset is encoded in each .au file. Instead of assuming the minimum,
+         read the actual value and store it for later use.
 
-         Change-Id: Ia4d890fb8fc1636a7188502bab35f555685aea22
+         ASTERISK-20984 #close
+         Reported by: Roman S.
+         Patches:
+               asterisk-1.8.20.0-au-clicks-2.diff (license #6474) patch
+               uploaded by Roman S.
 
-2017-03-23 20:33 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         Change-Id: I524022fb19ff2fd5af2cc2d669d27a780ab2057c
 
-       * asterisk 13.15.0-rc1 Released.
+2017-04-11 11:07 +0000 [f882ca2572]  George Joseph <gjoseph@digium.com>
 
-2017-03-23 14:03 +0000 [f1b34e6eb4]  Kevin Harwell <kharwell@digium.com>
+       * modules:  change module LOAD_FAILUREs to LOAD_DECLINES
 
-       * AMI: Updated version
+         In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed
+         to AST_MODULE_LOAD_DECLINE.  This prevents asterisk from exiting
+         if a module can't be loaded.  If the user wishes to retain the
+         FAILURE behavior for a specific module, they can use the "require"
+         or "preload-require" keyword in modules.conf.
 
-         Updated the AMI version for the following reason (see CHANGES for more details):
+         A new API was added to logger: ast_is_logger_initialized().  This
+         allows asterisk.c/check_init() to print to the error log once the
+         logger subsystem is ready instead of just to stdout.  If something
+         does fail before the logger is initialized, we now print to stderr
+         instead of stdout.
 
-         The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now
-         contains a new optional parameter, 'MatchHeader'.
+         Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25
 
-         Change-Id: I9aeac4decc89f9b464b3f026e97c7ef1acc79242
+2017-04-07 16:14 +0000 [cd80af508e]  Richard Mudgett <rmudgett@digium.com>
 
-2017-03-14 16:45 +0000 [398e5ec16c]  Richard Begg <asterisk@meric.id.au>
+       * res_rtp_asterisk.c: Add stun_blacklist option
 
-       * res_pjsip_session: Enable RFC3578 overlap dialing support.
+         Added the stun_blacklist option to rtp.conf.  Some multihomed servers have
+         IP interfaces that cannot reach the STUN server specified by stunaddr.
+         Blacklist those interface subnets from trying to send a STUN packet to
+         find the external IP address.  Attempting to send the STUN packet
+         needlessly delays processing incoming and outgoing SIP INVITEs because we
+         will wait for a response that can never come until we give up on the
+         response.  Multiple subnets may be listed.
 
-         Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched
-         destinations) as currently provided by chan_sip is missing from res_pjsip.
-         This patch adds a new endpoint attribute (allow_overlap) [defaults to yes]
-         which when set to yes enables 484 responses to partial destination
-         matches rather than the current 404.
+         ASTERISK-26890 #close
 
-         ASTERISK-26864
+         Change-Id: I3ff4f729e787f00c3e6e670fe6435acce38be342
 
-         Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6
+2017-04-06 17:31 +0000 [f8219a2e12]  Richard Mudgett <rmudgett@digium.com>
 
-2017-03-21 06:59 +0000 [218f618095]  Sean Bright <sean.bright@gmail.com>
+       * stun.c: Fix ast_stun_request() erratic timeout.
 
-       * res_hep: Capture actual transport type in use
+         If ast_stun_request() receives packets other than a STUN response then we
+         could conceivably never exit if we continue to receive packets with less
+         than three seconds between them.
 
-         Rather than hard-coding UDP, allow consumers of the HEP API to specify
-         which protocol is in use. Update the PJSIP provider to pass in the
-         current protocol type.
+         * Fix poll timeout to keep track of the time when we sent the STUN
+         request.  We will now send a STUN request every three seconds regardless
+         of how many other packets we receive while waiting for a response until we
+         have completed three STUN request transmission cycles.
 
-         ASTERISK-26850 #close
+         Change-Id: Ib606cb08585e06eb50877f67b8d3bd385a85c266
 
-         Change-Id: I54bbb0a001cfe4c6a87ad4b6f2014af233349978
+2017-04-06 18:30 +0000 [19b82a8644]  Richard Mudgett <rmudgett@digium.com>
 
-2017-03-21 09:57 +0000 [1c8b81a2a4]  Sean Bright <sean.bright@gmail.com>
+       * sorcery.c: Speed up ast_sorcery_retrieve_by_id()
 
-       * Revert "app_queue: Handle the caller being redirected out of a queue bridge"
+         Return early if ast_sorcery_retrieve_by_id() is not passed an id to find.
+         Also eliminated the RAII_VAR() usage in the function.
 
-         This reverts commit 163e9e53dc7d84dd42721e733b7706c8147bdd27.
+         Change-Id: I871dbe162a301b5ced8b4393cec27180c7c6b218
 
-         Change-Id: Ief28479c77a298879dfe2c56be7ee92dc465da4b
+2017-04-10 11:30 +0000 [aecf19e7d2]  Richard Mudgett <rmudgett@digium.com>
 
-2017-03-21 08:26 +0000 [b3cc20799b]  Sean Bright <sean.bright@gmail.com>
+       * res_pjsip: Fix pointer use after unref.
 
-       * res_pjsip_messaging: Check URI type before dereferencing
+         Change-Id: I4b6e1b0070563eeaee223cb58326f1b962ed5bc1
 
-         We aren't validating that the URI we just parsed is a SIP/SIPS one before
-         trying to access the user, host, and port members of a possibly uninitialized
-         structure.
+2017-04-06 18:18 +0000 [304f652cda]  Richard Mudgett <rmudgett@digium.com>
 
-         Also update the MessageSend documentation to indicate what 'from' formats are
-         accepted.
+       * res_pjsip_sdp_rtp.c: Don't use deprecated transport struct member.
 
-         ASTERISK-26484 #close
-         Reported by: Vinod Dharashive
+         * create_rtp(): Eliminate use of deprecated transport struct member.  That
+         member and several others in the transport structure were deprecated
+         because of an infinite loop created when using realtime configuration.
+         See 2451d4e4550336197ee2e482750cc53f30afa352
 
-         Change-Id: I476b5cc5f18a7713d0ee945374f2a1c164857d30
+         ASTERISK-26851
 
-2017-03-13 15:21 +0000 [91c97b5da5]  Joshua Elson <joshelson@gmail.com>
+         Change-Id: I0533aa13c9ce3c6cc394e0fd2b5bf1cd1b2ef3bc
 
-       * pjsip: prevent memory corruption on creation of xml bodies
+2017-04-10 17:45 +0000 [bb8cd2add7]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26776 #close
+       * tcptls.c: Cleanup TCP/TLS listener thread on abnormal exit.
 
-         Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2
+         Temporarily running out of file descriptors should not terminate the
+         listener thread.  Otherwise, when there becomes more file descriptors
+         available, nothing is listening.
 
-2017-03-20 16:27 +0000 [7f34c11b6a]  Sean Bright <sean.bright@gmail.com>
+         * Added EMFILE exception to abnormal thread exit.
 
-       * bridge_softmix: Ignore non-voice frames from translator
+         * Added an abnormal TCP/TLS listener exit error message.
 
-         Some codecs - codec_speex specifically - take voice frames and return
-         other types of frames, like CNG. If we subsequently treat those as
-         voice frames, we'll run into trouble when destroying the frame because
-         of the requirement that each voice frame have an associated format.
+         * Closed the TCP/TLS listener socket on abnormal exit so Asterisk does not
+         appear dead if something tries to connect to the socket.
 
-         ASTERISK-26880 #close
-         Reported by: Kirsty Tyerman
+         ASTERISK-26903 #close
 
-         Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c
+         Change-Id: I10f2f784065136277f271159f0925927194581b5
 
-2017-03-18 12:30 +0000 [38cebc73a3]  Sean Bright <sean.bright@gmail.com>
+2017-04-07 08:58 +0000 [d8967ff2c0]  Torrey Searle <torrey@voxbone.com>
 
-       * thread safety: Don't use getprotobyname()
+       * strings.h:  Avoid overflows in the string hash functions
 
-         POSIX does not require getprotobyname() to be thread safe and some
-         implementations use static memory which causes issues when multiple
-         threads are used.
+         On 2's compliment machines abs(INT_MIN) behavior is undefined and
+         results in a negative value still being returnd.  This results in
+         negative hash codes that can result in crashes.
 
-         Further, our usage of it today is just to ultimately get IPPROTO_TCP
-         for calls to setsockopt(). So instead we just use IPPROTO_TCP directly.
+         ASTERISK-26528 #close
 
-         Change-Id: I2e14e58674808f7ce99b2f5e900d0f90d0d8da48
+         Change-Id: Idff550145ca2133792a61a2e212b4a3e82c6517b
 
-2017-03-19 13:26 +0000 [265455bc2d]  Sean Bright <sean.bright@gmail.com>
+2017-04-08 03:05 +0000 [bbbd262ec0]  Walter Doekes <walter+github@wjd.nu>
 
-       * res_rtp_asterisk: Pass correct data length to ast_rtcp_interpret
+       * samples: Undo removal of include from canonicalize-app-names commit.
 
-         We are currently passing in the capacity of the read buffer instead of the
-         number of bytes that we actually read off the wire.
+         This include was accidentally removed in changeset
+         Ia79aea64de89531362e993e34230c2044a70aa93. My bad.
 
-         Change-Id: I60465049727d955c7f9a5e529e6f2aaff04cda36
+         Change-Id: I1d716c7f9590b4e97909fb8bca1f2ed9bd0e4082
 
-2017-03-14 09:27 +0000 [76afb9e18a]  Robert Mordec <r.mordec@slican.pl>
+2017-04-07 08:35 +0000 [b3f4a6365e]  Joshua Colp <jcolp@digium.com>
 
-       * app_queue: Member stuck as pending after forwarding previous call from queue
+       * pjsip: Add Alembic for PUBLISH support.
 
-         Queue member will get stuck in pending_members if queue calls a device
-         that is different from the one observed for state changes.
+         This change adds database tables for the PUBLISH support so it
+         can be configured using realtime. A minor fix to the
+         res_pjsip_publish_asterisk module was done so that it read the
+         sorcery configuration from the correct section. Finally the
+         sample configuration files have been updated.
 
-         This patch removes members from pending_members as a result of channel stasis
-         events such as blind or attended transfers and hangup.
+         ASTERISK-26928
 
-         ASTERISK-26862 #close
+         Change-Id: I81991ae5c75af98d247f7eacd1c0b0a763675952
 
-         Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727
+2017-04-07 08:06 +0000 [e0e5a337fd]  Alexander Traud <pabstraud@compuserve.com>
 
-2017-02-22 23:26 +0000 [60b372a883]  Richard Mudgett <rmudgett@digium.com>
+       * pjproject_bundled: Crash on pj_ssl_get_info() while ioqueue_on_read_complete().
 
-       * CHANNEL(callid): Give dialplan access to the callid.
+         When the Asterisk channel driver res_pjsip offers SIP-over-TLS, sometimes, not
+         reproducible, Asterisk crashed in pj_ssl_sock_get_info() because a NULL pointer
+         was read. This change avoids this crash.
 
-         * Added CHANNEL(callid) to retrieve the call identifier log tag associated
-         with the channel.  Dialplan now has access to the call log search key
-         associated with the channel so it can be saved in case there is a problem
-         with the call.
+         ASTERISK-26927 #close
 
-         ASTERISK-26878
+         Change-Id: I24a6011b44d1426d159742ff4421cf806a52938b
 
-         Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f
+2017-04-05 06:41 +0000 [3e7c396a51]  Torrey Searle <torrey@voxbone.com>
 
-2017-03-16 08:42 +0000 [9a57b24e17]  Sean Bright <sean.bright@gmail.com>
+       * bridging:  Ensure successful T.38 negotation
 
-       * app_queue: Fix locking behavior in stasis message handlers
+         When a T.38 happens immediatly after call establishment, the control
+         frame can be lost because the other leg is not yet in the bridge.
 
-         The queue_stasis_data structure contains various mutable fields that require
-         appropriate locking. Specifically, the 'dying,' 'member_uniqueid,' and
-         'caller_uniqueid' fields need to be locked when read from or written to.
+         This patch detects this case an makes sure T.38 negotation happens
+         when the 2nd leg is being made compatible with the negotating
+         first leg
 
-         Change-Id: I246b7dbff8447acc957a1299f6ad0ebd0fd39088
+         ASTERISK-26923 #close
 
-2017-03-07 19:28 +0000 [8721d0bf1b]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: If334125ee61ed63550d242fc9efe7987e37e1d94
 
-       * chan_sip: Add rtcp-mux support
+2017-04-04 16:20 +0000 [4e6e069491]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26846 #close
+       * pjproject_bundled: Add 3 upstream patches
 
-         Change-Id: I541a1602ff55ab73684e9f8002edb9e0e745d639
+         0035-r5572-svn-backport-dialog-transaction-deadlock.patch
+         0036-r5573-svn-backport-ua-pjsua-transaction-deadlock.patch
+         0037-r5576-svn-backport-session-timer-crash.patch
 
-2017-03-16 16:50 +0000 [792171ea9e]  Richard Mudgett <rmudgett@digium.com>
+         Also removed the progress bar from wget download to stdout.
 
-       * app_confbridge: Fix ConfbridgeTalking AMI event description.
+         ASTERISK-26905 #close
+         Reported-by: Ross Beer
 
-         Thanks to Chris Howard for pointing this out on the wiki.
+         Change-Id: I268fb3cf71a3bb24283ff0d24bd8b03239d81256
 
-         Change-Id: I18e56de09a70e736b5d04719d45ef29cf0636705
+2017-04-05 14:50 +0000 [d2a33cdedc]  George Joseph <gjoseph@digium.com>
 
-2017-03-16 16:37 +0000 [047fb7f11e]  Richard Mudgett <rmudgett@digium.com>
+       * sample_config:  Add samples for pubsub to pjsip.conf.sample
 
-       * res_pjsip_asterisk.c: Fix compile error if libsrtp is not installed.
+         Added:
+          * outbound-publish
+          * resource_list
+          * inbound-publication
+          * asterisk-publication
 
-         struct ast_rtcp does not define the dtls member if SRTP is not enabled.
+         Change-Id: I65043a896c35483f30a92d30b5b118359af7ba5a
 
-         ASTERISK-26732
+2017-04-05 09:10 +0000 [ab9d2fc86d]  Walter Doekes <walter+github@wjd.nu>
 
-         Change-Id: Id15ea212e04490e012f2cf4a56818b4dd948875e
+       * samples: Canonicalize app names in extensions.conf.sample.
 
-2017-03-16 15:45 +0000 [a75f02c089]  Richard Mudgett <rmudgett@digium.com>
+         This takes care of warnings by ossobv/asterisklint.
 
-       * res_pjsip_sdp_rtp.c: Fix cut-n-paste error
+         Change-Id: Ia79aea64de89531362e993e34230c2044a70aa93
 
-         We were inadvertenly referencing the cos_video option to determine if we
-         should set the tos_audio and cos_audio value on the RTP instance.
+2017-04-03 15:38 +0000 [6906765381]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ia7964f486801d39dc6f5dae570baff079e1595b0
+       * res_pjsip_sdp_rtp.c: Don't alter global addr variable.
 
-2017-03-16 10:39 +0000 [776ffd7724]  Matt Jordan <mjordan@digium.com>
+         * create_rtp(): Fix unexpected alteration of global address_rtp if a
+         transport is bound to an address.
 
-       * res/res_pjsip_session: Only check localnet if it is defined
+         * create_rtp(): Fix use of uninitialized memory if the endpoint RTP media
+         address is invalid or the transport has an invalid address.
 
-         If local_net is not defined on a transport, transport_state->localnet
-         will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in
-         this case, causing the external_media_address, if set, to be skipped.
+         ASTERISK-26851
 
-         This patch causes us to only check if we are sending within a network if
-         local_net is defined.
+         Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7
 
-         ASTERISK-26879 #close
+2017-03-27 09:03 +0000 [68bde0f07d]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb
+       * CDR: Protect from data overflow in ast_cdr_setuserfield.
 
-2017-03-14 16:22 +0000 [139bc3495f]  Richard Begg <asterisk@meric.id.au>
+         ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could
+         result in a buffer overrun when called from chan_sip or func_cdr. This patch
+         adds a maximum bytes written to the field by using ast_copy_string instead.
 
-       * res_pjsip_sdp_rtp: RTP instance does not use same IP as explicit transport
+         ASTERISK-26897 #close
+         patches:
+           0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted
+             by Corey Farrell (license #5909)
 
-         Currently a wildcard address is used for the local RTP socket, which
-         will not always result in the same address as used by the SIP socket
-         (e.g. if explicit transport addresses are configured).
-         Use the transport's host address when binding new local RTP sockets if
-         available.
+         Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c
 
-         ASTERISK-26851
+2017-03-25 19:01 +0000 [70e5a2655d]  Daniel Journo <dan@keshercommunications.com>
 
-         Change-Id: I098c29c9d1f79a4f970d72ba894874ac75954f1a
+       * Unused realtime MOH classes not purged on 'moh reload'
 
-2017-03-16 09:07 +0000 [7ea7797e12]  Joshua Colp <jcolp@digium.com>
+         Purge Realtime MOH classes on 'moh reload' even when musiconhold.conf
+         hasn't changed.
 
-       * res_rtp_asterisk: Fix crash when RTCP is not present when DTLS is stopped.
+         ASTERISK-25974 #close
 
-         This change removes an assumption that when DTLS is stopped
-         an RTCP session will be present on the RTP session. This is not
-         always the case.
+         Change-Id: I42c78ea76528473a656f204595956c9eedcf3246
 
-         ASTERISK-26732
+2017-04-03 13:56 +0000 [27b556778d]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ib9f7c09ce0b005efe362dbcc8795202b18f94611
+       * res_pjsip: Fix transport ref leak.
 
-2017-03-07 08:33 +0000 [9b756662a8]  gtjoseph <gjoseph@digium.com>
+         We were leaking a transport ref in multihomed_on_rx_message() which
+         resulted in the FRACK about excessive ref counts.
 
-       * res_pjsip:  Symmetric transports
+         ASTERISK-26916 #close
 
-         A new transport parameter 'symmetric_transport' has been added.
+         Change-Id: I7a96658a9614a060565bb9ad51cb1c9c11ee145f
 
-         When a request from a dynamic contact comes in on a transport with
-         this option set to 'yes', the transport name will be saved and used
-         for subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.
-         It's saved as a contact uri parameter named 'x-ast-txp' and will
-         display with the contact uri in CLI, AMI, and ARI output.  On the
-         outgoing request, if a transport wasn't explicitly set on the
-         endpoint AND the request URI is not a hostname, the saved transport
-         will be used and the 'x-ast-txp' parameter stripped from the
-         outgoing packet.
+2017-04-03 02:30 +0000 [94bd529f9e]  Alexander Traud <pabstraud@compuserve.com>
 
-         * config_transport was modified to accept and store the new parameter.
+       * chan_sip: Session Timers required but refused wrongly.
 
-         * config_transport/transport_apply was updated to store the transport
-           name in the pjsip_transport->info field using the pjsip_transport->pool
-           on UDP transports.
+         SIP user-agents indicate which protocol extensions are allowed in headers
+         like Supported and Required. Such protocol extensions are Session Timers
+         (RFC 4028) for example. Session Timers are supported since Mantis-10665.
+         Since ASTERISK-21721, not only the first but multiple Supported/Required
+         headers in a message are parsed. In that change, an existing variable was
+         re-used within a newly added do-loop. Currently, at the end of that loop,
+         that variable is an empty string always. Previously, that variable was used
+         within log output. However, the log output was not changed.
 
-         * A 'multihomed_on_rx_message' function was added to
-           pjsip_message_ip_updater that, for incoming requests, retrieves the
-           transport name from pjsip_transport->info and retrieves the transport.
-           If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter
-           containing the transport name is added to the incoming Contact header.
+         ASTERISK-26915 #close
 
-         * An 'ast_sip_get_transport_name' function was added to res_pjsip.
-           It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a
-           transport name if endpoint->transport is set or if there's an
-           'x-ast-txp' parameter on the uri and the uri host is an ipv4 or
-           ipv6 address.  Otherwise it returns NULL.
+         Change-Id: I09315f31b4d78fb214bb2a9fb6c0f5e143eae990
 
-         * An 'ast_sip_dlg_set_transport' function was added to res_pjsip
-           which takes an ast_sip_endpoint, a pjsip_dialog, and an optional
-           pjsip_tpselector.  It calls ast_sip_get_transport_name() and if
-           a non-NULL is returned, sets the selector and sets the transport
-           on the dialog.  If a selector was passed in, it's updated.
+2017-03-31 16:31 +0000 [bca9685d39]  Joshua Colp <jcolp@digium.com>
 
-         * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas
-           were modified to call ast_sip_dlg_set_transport() instead of their
-           original logic.
+       * res_pjsip_session: Allow BYE to be sent on disconnected session.
 
-         * res_pjsip/create_out_of_dialog_request was modified to call
-           ast_sip_get_transport_name() and pjsip_tx_data_set_transport()
-           instead of its original logic.
+         It is perfectly acceptable for a BYE to be sent on a disconnected
+         session. This occurs when we respond to a challenge to the BYE
+         for authentication credentials.
 
-         * Existing transport logic was removed from endpt_send_request
-           since that can only be called after a create_out_of_dialog_request.
+         ASTERISK-26363
 
-         * res_pjsip/ast_sip_create_rdata was converted to a wrapper around
-           a new 'ast_sip_create_rdata_with_contact' function which allows
-           a contact_uri to be specified in addition to the existing
-           parameters.  (See below)
+         Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045
 
-         * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated
-           since all it did was transport selection and that is now done in
-           ast_sip_create_dialog_uac and ast_sip_create_dialog_uas.
+2017-03-30 18:28 +0000 [c701550803]  Corey Farrell <git@cfware.com>
 
-         * 'contact_uri' was added to subscription_persistence.  This was
-           necessary because although the parsed rdata contact header has the
-           x-ast-txp parameter added (if appropriate),
-           subscription_persistence_update stores the raw packet which
-           doesn't have it.  subscription_persistence_recreate was then
-           updated to call ast_sip_create_rdata_with_contact with the
-           persisted contact_uri so the recreated subscription has the
-           correct transport info to send the NOTIFYs.
+       * Forward declare 'struct ast_json' in asterisk.h
 
-         * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since
-           all it did was transport selection and that is now done in
-           ast_sip_create_dialog_uac.
+         The ast_json structure is used in many Asterisk headers and is often the
+         only part of json.h used.  This adds a forward declaration to asterisk.h
+         and removes the include of json.h from many headers.  The declaration
+         has been left in endpoints.h and stasis.h to avoid problems with source
+         files that use ast_json functions without directly including json.h.
 
-         * pjsip_message_ip_updater/multihomed_on_tx_message was updated
-           to remove all traces of the x-ast-txp parameter from the
-           outgoing headers.
+         ari.h continues to include json.h as it uses enum
+         ast_json_encoding_format.
 
-         NOTE:  This change does NOT modify the behavior of permanent
-         contacts specified on an aor.  To do so would require that the
-         permanent contact's contact uri be updated with the x-ast-txp
-         parameter and the aor sorcery object updated.  If we need to
-         persue this, we need to think about cloning permanent contacts into
-         the same store as the dynamic ones on an aor load so they can be
-         updated without disturbing the originally configured value.
+         Change-Id: Id766aabce6bed56626d27e8d29f559b5e687b769
 
-         You CAN add the x-ast-txp parameter to a permanent contact's uri
-         but it would be much simpler to just set endpoint->transport.
+2017-03-30 08:11 +0000 [754e99d517]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f
+       * cdr_pgsql: Fix buffer overflow calling libpq
 
-2017-03-15 13:24 +0000 [adad6020be]  Richard Mudgett <rmudgett@digium.com>
+         Implement the same buffer size checking done in cel_pgsql.
 
-       * autochan/mixmonitor/chanspy: Fix unsafe channel locking and references.
+         ASTERISK-26896 #close
+         Reported by: twisted
 
-         Dereferencing struct ast_autochan.chan without first calling
-         ast_autochan_channel_lock() is unsafe because the pointer could change at
-         any time due to a masquerade.  Unfortunately, ast_autochan_channel_lock()
-         itself uses struct ast_autochan.chan unsafely and can result in a deadlock
-         if the original channel happens to get destroyed after a masquerade in
-         addition to the pointer getting changed.
+         Change-Id: Iaacfa1f1de7cb1e9414d121850d2d8c2888f3f48
 
-         The problem is more likely to happen with v11 and earlier because
-         masquerades are used to optimize out local channels on those versions.
-         However, it could still happen on newer versions if the channel is
-         executing a dialplan application when the channel is transferred or
-         redirected.  In this situation a masquerade still must be used.
+2017-03-28 13:01 +0000 [7954b39a50]  Walter Doekes <walter+github@wjd.nu>
 
-         * Added a lock to struct ast_autochan to safely be able to use
-         ast_autochan.chan while trying to get the channel lock in
-         ast_autochan_channel_lock().  The locking order is the channel lock then
-         the autochan lock.  Locking in the other direction requires deadlock
-         avoidance.
+       * build: Fix deb build issues with fakeroot
 
-         * Fix unsafe ast_autochan.chan usages in app_mixmonitor.c.
+         If DESTDIR is set, don't call ldconfig. Assume that DESTDIR is used to
+         create a binary archive. The ldconfig call should be delegated to the
+         archive postinst script. This fixes the case where fakeroot wraps 'make
+         install' causing $EUID to be 0 even though it doesn't have permission to
+         call ldconfig.
 
-         * Fix unsafe ast_autochan.chan usages in app_chanspy.c.
+         The previous logic in configure.ac to detect and correct libdir
+         has been removed as it was not completely accurate.  CentOS 64-bit
+         users should again specifiy --libdir=/usr/lib64 when configuring
+         to prevent install to /usr/lib.
 
-         * app_chanspy.c: Removed unused autochan parameter from next_channel().
+         Updated Makefile:check-old-libdir to check for orphans in
+         lib64 when installing to lib as well as orphans in lib when installing
+         to lib64.
 
-         ASTERISK-26867
+         Updated Makefile and main/Makefile uninstall targets to remove the
+         orphans using the new logic.
 
-         Change-Id: Id29dd22bc0f369b44e23ca423d2f3657187cc592
+         ASTERISK-26705
 
-2017-03-07 14:13 +0000 [7bc69753bc]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I51739d4a03e60bff38be719b8d2ead0007afdd51
 
-       * Add rtcp-mux support
+2017-03-29 10:11 +0000 [c9648f4690]  Sean Bright <sean.bright@gmail.com>
 
-         This commit adds support for RFC 5761: Multiplexing RTP Data and Control
-         Packets on a Single Port. Specifically, it enables the feature when
-         using chan_pjsip.
+       * astobj2: Prevent potential deadlocks with ao2_global_obj_release
 
-         A new option, "rtcp_mux" has been added to endpoint configuration in
-         pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with
-         whatever it communicates with. Asterisk follows the rules set forth in
-         RFC 5761 with regards to falling back to standard RTCP behavior if the
-         far end does not indicate support for rtcp-mux.
+         The ao2_global_obj_release() function holds an exclusive lock on the
+         global object while it is being dereferenced. Any destructors that
+         run during this time that call ao2_global_obj_ref() will deadlock
+         because a read lock is required.
 
-         The lion's share of the changes in this commit are in
-         res_rtp_asterisk.c. This is because it was pretty much hard wired to
-         have an RTP and an RTCP transport. The strategy used here is that when
-         rtcp-mux is enabled, the current RTCP transport and its trappings (such
-         as DTLS SSL session) are freed, and the RTCP session instead just
-         mooches off the RTP session. This leads to a lot of specialized if
-         statements throughout.
+         Instead, we make the global object inaccessible inside of the write
+         lock and only dereference it once we have released the lock. This
+         allows the affected destructors to fail gracefully.
 
-         ASTERISK-26732 #close
-         Reported by Dan Jenkins
+         While this doesn't completely solve the referenced issue (the error
+         message about not being able to create an IQ continues to be shown)
+         it does solve the backtrace spew that accompanied it.
 
-         Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5
+         ASTERISK-21009 #close
+         Reported by: Marcello Ceschia
 
-2017-03-09 11:05 +0000 [163e9e53dc]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Idf40ae136b5070dba22cb576ea8414fbc9939385
 
-       * app_queue: Handle the caller being redirected out of a queue bridge
+2017-03-30 11:57 +0000 [1d1309b1ed]  Joshua Colp <jcolp@digium.com>
 
-         A caller can leave the Queue() application after being bridged with a
-         member in a few ways:
+       * Revert "Update for 13.15.0-rc1"
 
-           * Caller or member hangup
-           * Caller is transferred somewhere else (blind or atx)
-           * Caller is externally redirected elsewhere
+         This reverts commit 552cf009c0939c8b6597708135412bdc596df4bb.
 
-         The first 2 scenarios are currently handled by subscribing to stasis
-         messages, but the 3rd is not explicitly covered. If a caller is
-         redirected away from the Queue() application, the member who was last
-         bridged with that caller will remain in an "In use" state until the
-         caller hangs up.
+         Change-Id: Ie345bea481261b761c44079e9472622040fda302
 
-         This patch adds handling of the caller leaving the queue via
-         redirection. We monitor the caller-member bridge, and if the caller is
-         the one that leaves, we treat it the same as we would a caller hangup.
+2017-03-30 10:18 +0000 [3c23ebdef4]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-26400 #close
-         Reported by: Etienne Lessard
+       * CEL: Remove header declarations of non-existant functions.
 
-         Change-Id: Iba160907770de5a6c9efeffc9df5a13e9ea75334
+         ast_cel_alloc and ast_cel_destroy do not exist in code, remove them from
+         the headers.
 
-2017-03-15 08:44 +0000 [7612601964]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I99ce848e2e109e7d61771559f559b9e57973e45c
 
-       * res_pjsip_endpoint_identifier_ip: Don't output error if no header_match.
+2017-03-29 08:27 +0000 [ef19db9261]  Alexander Traud <pabstraud@compuserve.com>
 
-         This change ensures that if no header_match option is set on an
-         identify an error message is not output stating the option is set
-         to an invalid value.
+       * srtp: Allow zero as tag value for a sRTP Crypto Suite.
 
-         ASTERISK-26863
+         ASTERISK-25490 #close
 
-         Change-Id: I239bc6d2319dd3da24ba96a38d4d6e9b5526d62a
+         Change-Id: I1c5fc0942c33c96d62b24203aad0f1e1a1a0131f
 
-2017-03-14 08:49 +0000 [48447313b6]  Torrey Searle <torrey@voxbone.com>
+2017-03-28 13:10 +0000 [a827892ff7]  George Joseph <gjoseph@digium.com>
 
-       * res/res_pjsip_refer: call xfer w/o extension
+       * res_pjsip_config_wizard: Add 2 new parameters to help with proxy config
 
-         When transfering to a URI without an extension, ensure that the
-         s extension of the dialplan is entered
+         Two new parameters have been added to the pjsip config wizard.
 
-         ASTERISK-26869 #close
+          * Setting 'sends_line_with_registrations' to true will cause the wizard
+            to skip the creation of an identify object to match incoming request
+            to the endpoint and instead add the line and endpoint parameters to
+            the outbound registration object.
 
-         Change-Id: I07403df66cf93f09e00a40ab5b41bfc6f72b1525
+          * Setting 'outbound_proxy' is a shortcut for adding individual
+            endpoint/outbound_proxy, aor/outbound_proxy and
+            registration/outbound_proxy parameters.
 
-2017-03-14 16:16 +0000 [9fd9b39e8b]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I678e5f80765734c056620528a6d40d82736ceeb0
 
-       * pbx.c: Fix crash from malformed exten pattern.
+2017-03-28 09:29 +0000 [864dda07f3]  Sean Bright <sean.bright@gmail.com>
 
-         Forgetting to indicate an exten is a pattern can cause a crash if the
-         "pattern" has a character set range.  e.g., "9999[3-5]" The crash is due
-         to a buffer overwrite because the '-' exten eye-candy wasn't removed as
-         expected and overran the allocated space.
+       * alembic: Turn off execute bit on non-executable python scripts
 
-         The buffer overwrite is fixed two ways in this patch.
+         Change-Id: I744c986da4a38aeff8c00837eb89de7841fbc86c
 
-         1) Fix ext_strncpy() to distinguish between pattern and non-pattern
-         extens.  Now '-' characters are removed when they are eye-candy and not
-         when they are part of a pattern character set.  Since the function is
-         private to pbx.c, the return value now returns the number of bytes written
-         to the destination buffer instead of the strlen() of the final buffer so
-         the callers that care don't need to add one.
+2017-03-27 12:37 +0000 [a9529cbb21]  Richard Mudgett <rmudgett@digium.com>
 
-         2) Fix callers to ext_strncpy() to supply the correct available buffer
-         size of the destination buffer.
+       * Add DTLS sanity check.
 
-         ASTERISK-26668
+         Change-Id: Ib32612cf6c7ce9213a11b9cba82f630f8cd3564b
 
-         Change-Id: I555d97411140e47e0522684062d174fbe32aa84a
+2017-03-27 11:49 +0000 [bb68f57a03]  Josh Roberson <josh@asteriasgi.com>
 
-2017-03-14 16:51 +0000 [5389666d6f]  Richard Begg <asterisk@meric.id.au>
+       * cel_pgsql.c: Fix buffer overflow calling libpq
 
-       * chan_iax2: Reload of iax peer results in loss of host address/port
+         PQEscapeStringConn() expects the buffer passed in to be an
+         adequitely sized buffer to write out the escaped SQL value string
+         into.  It is possible, for large values (such as large values to
+         Dial with a lot of devices) to have more than our 512+1 byte
+         allocation and thus cause libpq to create a buffer overrun.
 
-         When using a non-dynamic peer address, build_peer() invalidates the
-         peer address structure by setting the address family to unspecified.
-         However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup()
-         will not amend the peer address if the cache is still valid, resulting
-         in peer connectivity failures.
-         To fix this, we call ast_dnsmgr_refresh() instead.
+         glibc will nicely ABRT asterisk for you, citing a stack smash.
 
-         ASTERISK-26865
+         Let's only allocate it to be as large as needed:
+         If we have a value, then (strlen(value) * 2) + 1 (as recommended
+         by libpq), and if we have none, just one byte to hold our null
+         will do.
 
-         Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082
+         ASTERISK-26896 #close
 
-2017-03-14 15:12 +0000 [658d59c683]  Matt Jordan <mjordan@digium.com>
+         Change-Id: If611c734292618ed68dde17816d09dd16667dea2
 
-       * configure: Don't use the progress bar with curl when downloading to stdout
+2017-03-24 07:43 +0000 [79a2c26c03]  Sean Bright <sean.bright@gmail.com>
 
-         In some scenarios, such as when there may not be a terminal (such as
-         inside a Docker container), curl will apparently direct the progress bar
-         to stdout. This can cause extra data to be appended to a file curl'd
-         down to stdout, resulting in md5 verification failures.
+       * core: Remove embedded module support
 
-         This patch removes the progress bar, and tells curl to download the file
-         silently.
+         This has not worked for some time and is no longer actively maintained.
 
-         ASTERISK-26872 #close
+         Change-Id: I5110b0db69c152761b58fa025cb0a53b0e544d99
 
-         Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c
+2017-03-27 09:35 +0000 [2c28f7a922]  Sean Bright <sean.bright@gmail.com>
 
-2017-03-14 07:50 +0000 [b3c2c996f1]  Matt Jordan <mjordan@digium.com>
+       * res_musiconhold: Document the 'format' option
 
-       * res_pjsip_endpoint_identifier_ip: Add an option to match requests by header
+         ASTERISK-26086 #close
+         Reported by: Jens Bürger
 
-         This patch adds a new features to the endpoint identifier module,
-         'match_header'. When set, inbound requests are matched by a provided SIP
-         header: value pair. This option works in conjunction with the existing
-         'match' configuration option, such that if any 'match*' attribute
-         matches an inbound request, the request is associated with the specified
-         endpoint.
+         Change-Id: I6aab666c0bf01fd0c64d7a5bcb22fa7f5d41335e
 
-         Since this module now identifies by more than just IP address,
-         appropriate renaming of the module and/or variables can be done in a
-         non-release branch.
+2017-03-27 08:58 +0000 [61fd70c250]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26863 #close
+       * res_musiconhold: Don't chdir() when scanning MoH files
 
-         Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453
-         (cherry picked from commit 30f52d79d7fc9ab0b628bef2b61ea515413795a2)
+         There doesn't appear to be any reason that we are chdir'ing in
+         moh_scan_files, and in the event of an Asterisk crash, the core files
+         may not get written because we have changed into a read-only directory.
 
-2017-03-14 09:55 +0000 [51985565ef]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-23996 #close
+         Reported by: Walter Doekes
 
-       * configs/samples/hep.conf.sample: Clarify how the HEP stack works
+         Change-Id: Iac806dce01b3335963fbd62d4b4da9a65c614354
 
-         This patch updates the documenation in hep.conf.sample to better specify
-         how the various HEP modules interact.
+2017-03-23 09:48 +0000 [73bb08fd6a]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26717 #close
+       * res_xmpp: Use incremental backoff when a read error occurs
 
-         Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124
+         If a read error occurs, we immediately attempt a reconnect without any
+         delay. Instead, let's sleep and backoff up to 60 seconds before we try
+         again.
 
-2017-03-14 09:59 +0000 [f9b791debe]  Roman Bedros (License 6842)
+         ASTERISK-24712 #close
+         Reported by: Matthias Urlichs
 
-       * funcs/func_devstate: Remove new line in Device field of during module load
+         Change-Id: I6fe10ef4734837727437beab715e336777f13f48
 
-         During module loading of func_devstate, Asterisk emits the current
-         device state of all Custom device states currently stored in the AstDB.
-         This was erroneously including a new line character ('\n') to the end of
-         the device state, causing two new lines to be emitted in
-         DeviceStateChange AMI events.
+2017-03-23 05:19 +0000 [55693383e2]  Sean Bright <sean.bright@gmail.com>
 
-         Note that this only happened for those device state changes that
-         occurred during startup. Regular device state changes for Custom device
-         states are handled elsewhere, and did not have the newline.
+       * res_xmpp: Fix ref counting issue
 
-         ASTERISK-26643 #close
-         Reported by: Roman Bedros
-         Tested by: Matt Jordan
-         patches:
-           ami_devstate.diff uploaded by Roman Bedros (License 6842)
+         The only remaining reference to the endpoint is in the endpoints
+         container, and because it is unlinked in ast_endpoint_shutdown, we don't
+         have to explicitly cleanup the endpoint ourselves.
 
-         Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93
+         Change-Id: I912a2692e52d3e2ed445b32d8ae3f9004bc2f2e8
 
-2017-03-14 09:37 +0000 [216e28aa95]  Matt Jordan <mjordan@digium.com>
+2017-03-23 09:45 +0000 [1966265562]  Sean Bright <sean.bright@gmail.com>
 
-       * main/stasis_cache: Demote the ERROR message when removing a nonexistent item
+       * res_xmpp: Try to provide useful errors messages from OpenSSL
 
-         This patch demotes the ERROR message that is displayed when a
-         nonexistent item is removed from the Stasis cache. The genesis of this
-         demotion is due to chan_sip's realtime peers and their interaction with
-         Asterisk's core ast_endpoint code, but ostensibly it could happen from
-         other channel drivers as well.
+         If any errors occur during the TLS connection setup, we currently dump a
+         fairly generic error message. So instead we try to pull in something
+         useful from OpenSSL to report instead.
 
-         Since Mark Michelson already did an excellent job of explaining on this
-         issue, it is quoted here for posterity:
+         ASTERISK-24712
+         Reported by: Matthias Urlichs
 
-         "Internally, when a realtime peer is retrieved, Asterisk creates an
-         ast_endpoint structure. When that peer is destroyed, the ast_endpoint is
-         destroyed as well. Part of the destruction of the ast_endpoint involves
-         clearing the Stasis cache of all information about that endpoint. The
-         problem here is that the act of creating the ast_endpoint is not enough
-         to actually put any information in the Stasis cache. Instead, something
-         has to happen, such as a state change, in order for the Stasis cache to
-         have any information about that endpoint. When a device registers,
-         chan_sip creates an ast_endpoint structure, processes the REGISTER, and
-         then destroys the ast_endpoint. When the ast_endpoint is destroyed,
-         there is nothing to destroy in the Stasis cache, so an error message is
-         emitted. When you use rtcachefriends, ast_endpoint structures persist
-         for the lifetime of the module and so you do not see this error
-         message."
+         Change-Id: I288500991a9681f447d92913b11fedaf426087f4
 
-         ASTERISK-25237 #close
+2017-03-23 09:30 +0000 [03b99ae3d2]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70
+       * res_xmpp: Correctly check return value of SSL_connect
 
-2017-03-12 09:21 +0000 [c8d1b915d7]  Joshua Colp <jcolp@digium.com>
+         SSL_connect returns non-zero for both success and some error conditions
+         so simply negating is inadequate.
 
-       * chan_pjsip: Don't assume a session will have a channel.
+         Change-Id: Ifbf882896e598703b6c615407fa456d3199f95b1
 
-         When querying for PJSIP specific information using the dialplan
-         function CHANNEL() it is possible that the underlying session
-         will no longer have a channel associated with it. This is
-         most likely to occur when the RTCP HEP module attempts to get
-         the channel name. If this happens then a crash will occur.
+2017-03-24 11:29 +0000 [d9d2beba1c]  Sean Bright <sean.bright@gmail.com>
 
-         This change just adds a check that the channel exists on the
-         session before querying it.
+       * res_pjsip_sdp_rtp: Set hangup cause for RTP timeouts
 
-         ASTERISK-26857
+         chan_sip sets the hangup cause code to AST_CAUSE_REQUESTED_CHAN_UNAVAIL
+         (44) when a channel is hung up due to an RTP timeout. So do the same
+         when it happens with PJSIP for parity.
 
-         Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01
+         Change-Id: I3546ebbde6460c22a27c9da1bf321711b5961ab8
 
-2017-03-13 10:45 +0000 [6d1eb880c2]  gtjoseph <gjoseph@digium.com>
+2017-03-23 15:33 +0000 [552cf009c0]  Kevin Harwell <kharwell@digium.com>
 
-       * menuselect: Add a new 'options' support type
+       * Update for 13.15.0-rc1
 
-         The Binaural Rendering patches in the master branch required
-         menuselect to be updated with a new support type called 'option'.
-         This allows binaural rendering to be turned on or off when
-         bridge_softmix is built.  This patch backports the 'option'
-         functionality to the 13 and 14 branches.
+2017-03-23 14:03 +0000 [f1b34e6eb4]  Kevin Harwell <kharwell@digium.com>
 
-         Here's what it looks like in menuselect:
+       * AMI: Updated version
 
-           [*] bridge_simple
-           [*] bridge_softmix
-               --- Module Options ---
-           [ ] binaural_rendering_in_bridge_softmix
+         Updated the AMI version for the following reason (see CHANGES for more details):
 
-         To create an option for a module, you can create (or update) the
-         menuselect-tree xml snippet in the directory where the module
-         resides and add a member element with an 'option' support_level.
+         The 'PJSIPShowEndpoint' command's response event of 'IdentifyDetail' now
+         contains a new optional parameter, 'MatchHeader'.
 
-         Example (abbreviated) from bridges/bridges.xml:
+         Change-Id: I9aeac4decc89f9b464b3f026e97c7ef1acc79242
 
-         <member name="binaural_rendering_in_bridge_softmix"
-               displayname="Enable binaural rendering in bridge_softmix"
-               remove_on_change="bridges/bridge_softmix.o bridges/bridge_softmix.so">
-               <support_level>option</support_level>
-               <depend>bridge_softmix</depend>
-               <depend>fftw3</depend>
-               <defaultenabled>no</defaultenabled>
-         </member>
+2017-03-23 12:07 +0000 [e6aeeabddf]  Kevin Harwell <kharwell@digium.com>
 
-         The 'name' will be added or removed from the MENUSELECT_<dir>
-         make variable following the standard module "missing means yes"
-         rules.
+       * pjproject_bundled: raise timeout value used when downloading
 
-         Example (abbreviated) from bridges/Makefile:
+         After configuring Asterisk with '--with-pjproject-bundled' the configure/build
+         process attempts to download pjproject from its download site. Currently, a
+         timeout of 10 seconds is used that will stop the download process if pjproject
+         has not been fully downloaded in that time. For some systems this was not enough
+         time and the process was timing out too early.
 
-         ifeq ($(findstring binaural_rendering,$(MENUSELECT_BRIDGES)),)
-         bridge_softmix.o: _ASTCFLAGS+=-DBINAURAL_RENDERING
-         bridge_softmix.so: LIBS+=$(FFTW3_LIB)
-         endif
+         This patch raises the download timeout value to '60'. Also, this patch fixes
+         another bug where the DOWNLOAD_TIMEOUT variable was not being properly exported
+         due to a naming error. DOWNLOAD_MAX_TIMEOUT is now properly renamed to
+         DOWNLOAD_TIMEOUT.
 
-         Change-Id: I66d23755ed6e81f8d439cad410f2ffa7c30f25ad
+         ASTERISK-26814 #close
 
-2017-03-10 20:29 +0000 [523de8eb8e]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ia56e4e8a3d39db76bc8a1852b2cf07ec10b39842
 
-       * pjproject_bundled:  Reduce the need for rebuilds
+2017-03-22 20:33 +0000 [0939a19cff]  Sean Bright <sean.bright@gmail.com>
 
-         Bundled pjproject should now only rebuild if one of the menuselect
-         "Compiler Flags" options changes.
+       * res_xmpp: Correct implementation of JABBER_STATUS & JabberStatus
 
-         Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43
+         The documentation for JABBER_STATUS (and the deprecated JabberStatus
+         app) indicate that a return value of 7 indicates that the specified
+         buddy was not in the roster. It also indicates that you can specify a
+         "bare" JID (one without a resource). Unfortunately the actual behavior
+         does not match the documented behavior.
 
-2017-03-07 08:12 +0000 [d3ef833b3b]  Jean Aunis <jean.aunis@prescom.fr>
+         Assuming that our roster includes the buddy online and available
+         "valid@example.org/Valid" and does *not* include the buddy
+         "invalid@example.org", the JABBER_STATUS() function returns the
+         following before this patch:
 
-       * chan_sip: Call not cancelled after receiving a 422 response
+         +------------------------------+------------+--------------------------+
+         | Buddy                        | Status     | Result                   |
+         +------------------------------+------------+--------------------------+
+         | valid@example.org            |  Online    |  7 (Not in roster)       |
+         | valid@example.org/Valid      |  Online    |  1 (Online)              |
+         | valid@example.org/Invalid    |  N/A       |  7 (Not in roster)       |
+         | invalid@example.org          |  N/A       |  Error logged, no return |
+         | invalid@example.org/Valid    |  N/A       |  Error logged, no return |
+         +------------------------------+------------+--------------------------+
 
-         When receiving a 422 response, the invitestate variable must be reset to
-         INV_CALLING.
+         And after this patch:
 
-         ASTERISK-26841
+         +------------------------------+------------+--------------------------+
+         | Buddy                        | Status     | Result                   |
+         +------------------------------+------------+--------------------------+
+         | valid@example.org            |  Online    |  1 (Online)              |
+         | valid@example.org/Valid      |  Online    |  1 (Online)              |
+         | valid@example.org/Invalid    |  N/A       |  6 (Offline)             |
+         | invalid@example.org          |  N/A       |  7 (Not in roster)       |
+         | invalid@example.org/Valid    |  N/A       |  7 (Not in roster)       |
+         +------------------------------+------------+--------------------------+
 
-         Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099
+         This brings the behavior in line with the documentation.
 
-2017-03-05 15:26 +0000 [67c989ce78]  Daniel Journo <dan@keshercommunications.com>
+         ASTERISK-23510 #close
+         Reported by: Anthony Critelli
 
-       * pjsip/cli_commands: pjsip show channelstats shows wrong codec
+         Change-Id: I9c3241035363ef4a6bdc21fabfd8ffcd9ec657bf
 
-         * cli_commands.c Fixed CLI output
+2017-03-22 17:32 +0000 [a487f6fb97]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26822 #close
+       * res_xmpp: Don't crash when trying to send a message without a connection
 
-         Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01
+         If we never establish a connection to our Jabber server, iksemel never sets up
+         its internal transport pointer, so attempting to send a message dereferences a
+         NULL pointer and causes a crash.
 
-2017-03-07 07:37 +0000 [2a85888262]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-21855 #close
+         Reported by: Jeremy Kister
 
-       * res_pjsip_transport_websocket: Add support for IPv6.
+         Change-Id: I204a568894e4a53ab929783ecc594a000f04d79c
 
-         This change adds a PJSIP patch (which has been contributed upstream)
-         to allow the registration of IPv6 transport types.
+2017-03-22 15:40 +0000 [90fb1fca41]  Sean Bright <sean.bright@gmail.com>
 
-         Using this the res_pjsip_transport_websocket module now registers
-         an IPv6 Websocket transport and uses it for the corresponding
-         traffic.
+       * res_xmpp: Include client name in connection related error messages
 
-         ASTERISK-26685
+         ASTERISK-25622 #close
+         Reported by: Sean Darcy
 
-         Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647
+         Change-Id: I8472cb7bfb58d411a3cfbd482da98cae2d94d1e9
 
-2017-03-08 08:16 +0000 [bc6eeab822]  Daniel Journo <dan@keshercommunications.com>
+2017-03-21 12:32 +0000 [e196190f11]  Sebastian Gutierrez <sgutierrez@integraccs.com>
 
-       * app_voicemail: Cannot set fromstring on a per-mailbox basis
+       * cdr: Allow setting of user field from 'h' extension
 
-         * apps/app_voicemail.c fromstring field added to mailbox which will
-         override the global fromstring if set.
+         The CDR code previously did not allow the user field to be set
+         from the 'h' extension in the dialplan. This change removes that
+         limitation and allows it to be set.
 
-         ASTERISK-24562 #close
+         ASTERISK-26818
 
-         Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe
+         Change-Id: I0fed8a79b5e408bac4e30542b8f33a61c5ed9aa6
 
-2017-03-06 15:54 +0000 [d9972423d1]  Daniel Journo <dan@keshercommunications.com>
+2017-03-14 16:45 +0000 [398e5ec16c]  Richard Begg <asterisk@meric.id.au>
 
-       * Saynumber is trying to get "and" from "digits/" subfolder
+       * res_pjsip_session: Enable RFC3578 overlap dialing support.
 
-         * say.c Changed 'digits/and' to 'vm-and' for en_GB
+         Support for RFC3578 overlap dialling (i.e. 484 Response to partially matched
+         destinations) as currently provided by chan_sip is missing from res_pjsip.
+         This patch adds a new endpoint attribute (allow_overlap) [defaults to yes]
+         which when set to yes enables 484 responses to partial destination
+         matches rather than the current 404.
 
-         ASTERISK-26598 #close
+         ASTERISK-26864
 
-         Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe
+         Change-Id: Iea444da3ee7c7d4f1fde1d01d138a3d7b0fe40f6
 
-2017-03-06 13:15 +0000 [77901a58ca]  Sean Bright <sean.bright@gmail.com>
+2017-03-21 06:59 +0000 [218f618095]  Sean Bright <sean.bright@gmail.com>
 
-       * pbx_spool: Gracefully handle long lines in call files
+       * res_hep: Capture actual transport type in use
 
-         Per the linked issue, we aren't checking the buffer filled by fgets()
-         to determine if it contains a newline, so we will fail to correctly
-         parse the trailing portion of a long line.
+         Rather than hard-coding UDP, allow consumers of the HEP API to specify
+         which protocol is in use. Update the PJSIP provider to pass in the
+         current protocol type.
 
-         This patch increases the buffer size from 256 to 1024, and skips any
-         line that exceeds that length, logging a warning in the process.
+         ASTERISK-26850 #close
 
-         ASTERISK-17067 #close
-         Reported by: Dave Olszewski
+         Change-Id: I54bbb0a001cfe4c6a87ad4b6f2014af233349978
 
-         Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0
+2017-03-21 09:57 +0000 [1c8b81a2a4]  Sean Bright <sean.bright@gmail.com>
 
-2017-03-02 21:27 +0000 [4271c700f7]  Richard Mudgett <rmudgett@digium.com>
+       * Revert "app_queue: Handle the caller being redirected out of a queue bridge"
 
-       * core: Cleanup ast_get_hint() usage.
+         This reverts commit 163e9e53dc7d84dd42721e733b7706c8147bdd27.
 
-         * manager.c:manager_state_cb() Fix potential use of uninitialized hint[]
-         if a hint does not exist for the requested extension.  Ran into this when
-         developing a testsuite test.  The AMI event ExtensionStatus came out with
-         the hint header value containing garbage.  The AMI event PresenceStatus
-         also had the same issue.
+         Change-Id: Ief28479c77a298879dfe2c56be7ee92dc465da4b
 
-         * manager.c:action_extensionstate() no need to completely initialize the
-         hint[].  Only initialize the first element.
+2017-03-21 08:26 +0000 [b3cc20799b]  Sean Bright <sean.bright@gmail.com>
 
-         * pbx.c:ast_add_hint() Remove unnecessary assignment.
+       * res_pjsip_messaging: Check URI type before dereferencing
 
-         * chan_sip.c: Eliminate an unneeded hint[] local variable.  We only care
-         about the return value of ast_get_hint() there.
+         We aren't validating that the URI we just parsed is a SIP/SIPS one before
+         trying to access the user, host, and port members of a possibly uninitialized
+         structure.
 
-         Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b
+         Also update the MessageSend documentation to indicate what 'from' formats are
+         accepted.
 
-2017-02-16 04:22 +0000 [e510595c86]  Jørgen H <asterisk.org@hovland.cx>
+         ASTERISK-26484 #close
+         Reported by: Vinod Dharashive
 
-       * res_pjsip WebRTC/websockets: Fix usage of WS vs WSS.
+         Change-Id: I476b5cc5f18a7713d0ee945374f2a1c164857d30
 
-         According to the RFC[1] WSS should only be used in the Via header
-         for secure Websockets.
+2017-03-13 15:21 +0000 [91c97b5da5]  Joshua Elson <joshelson@gmail.com>
 
-         * Use WSS in Via for secure transport.
+       * pjsip: prevent memory corruption on creation of xml bodies
 
-         * Only register one transport with the WS name because it would be
-         ambiguous.  Outgoing requests may try to find the transport by name and
-         pjproject only finds the first one registered.  This may mess up unsecure
-         websockets but the impact should be minimal.  Firefox and Chrome do not
-         support anything other than secure websockets anymore.
+         ASTERISK-26776 #close
 
-         * Added and updated some debug messages concerning websockets.
+         Change-Id: I884b6f4e8233a355d0be687ec78d41bc0e4d3fd2
 
-         * security_events.c: Relax case restriction when determining security
-         transport type.
+2017-03-20 16:27 +0000 [7f34c11b6a]  Sean Bright <sean.bright@gmail.com>
 
-         * The res_pjsip_nat module has been updated to not touch the transport
-         on Websocket originating messages.
+       * bridge_softmix: Ignore non-voice frames from translator
 
-         [1] https://tools.ietf.org/html/rfc7118
+         Some codecs - codec_speex specifically - take voice frames and return
+         other types of frames, like CNG. If we subsequently treat those as
+         voice frames, we'll run into trouble when destroying the frame because
+         of the requirement that each voice frame have an associated format.
 
-         ASTERISK-26796 #close
+         ASTERISK-26880 #close
+         Reported by: Kirsty Tyerman
 
-         Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12
+         Change-Id: I43f8450c48fb276ad8b99db8512be82949c1ca7c
 
-2017-03-01 07:23 +0000 [76971d4c4a]  Sean Bright <sean.bright@gmail.com>
+2017-03-14 23:49 +0000 [d5b480afca]  Aaron An <anjb@ti-net.com.cn>
 
-       * res_config_pgsql: Make 'require' return consistent with other backends
+       * audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor.
 
-         res_config_pgsql should match the behavior of other realtime backend
-         drivers so that queue_log can disable adaptive logging.
+         Fixed a bug in function "ast_audiohook_write_frame" that checked the
+         variable other_factory_samples and only flushed the factories, so they
+         would be in sync, when other_factory_samples > 0. When there is not any
+         rtp incoming the variable other_factory_samples will be 0, and although
+         the result of "our_factory_ms - other_factory_ms" may be very large,
+         this led to the record file not syncing.
 
-         ASTERISK-25628 #close
-         Reported by: Dmitry Wagin
+         ASTERISK-26875 #close
+         Reported-by: Aaron An
+         Tested-by: Aaron An
 
-         Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372
+         Change-Id: Ia4d890fb8fc1636a7188502bab35f555685aea22
 
-2017-02-28 09:41 +0000 [fa8f6c2fc4]  Sean Bright <sean.bright@gmail.com>
+2017-03-18 12:30 +0000 [38cebc73a3]  Sean Bright <sean.bright@gmail.com>
 
-       * res_config_pgsql: Release table locks where appropriate
-
-         The find_table() functions NULL or a locked table pointer. We are
-         not consistently calling release_table() in failure paths.
-
-         Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544
-
-2017-02-28 05:41 +0000 [5b34b751a0]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * thread safety: Don't use getprotobyname()
 
-       * pjsip.conf.sample: user_agent: not a specific version
+         POSIX does not require getprotobyname() to be thread safe and some
+         implementations use static memory which causes issues when multiple
+         threads are used.
 
-         Use the description of useragent from sip.conf here.
+         Further, our usage of it today is just to ultimately get IPPROTO_TCP
+         for calls to setsockopt(). So instead we just use IPPROTO_TCP directly.
 
-         ASTERISK-26825 #close
+         Change-Id: I2e14e58674808f7ce99b2f5e900d0f90d0d8da48
 
-         Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755
+2017-03-19 13:26 +0000 [265455bc2d]  Sean Bright <sean.bright@gmail.com>
 
-2017-02-27 20:07 +0000 [8e6ecdade2]  gtjoseph <gjoseph@digium.com>
+       * res_rtp_asterisk: Pass correct data length to ast_rtcp_interpret
 
-       * res_pjsip_pubsub:  Remove unneeded endpoint unref
+         We are currently passing in the capacity of the read buffer instead of the
+         number of bytes that we actually read off the wire.
 
-         When a subscription was being recreated and the endpoint wasn't
-         found, we were trying to unref the endpoint.  This was causing
-         FRACKs.  Removed the unref.
+         Change-Id: I60465049727d955c7f9a5e529e6f2aaff04cda36
 
-         ASTERISK-26823 #close
+2017-03-14 09:27 +0000 [76afb9e18a]  Robert Mordec <r.mordec@slican.pl>
 
-         Change-Id: If86d2aecff8fe853c7f38a1bfde721fcef3cd164
+       * app_queue: Member stuck as pending after forwarding previous call from queue
 
-2017-02-16 04:16 +0000 [0595c31da7]  Jørgen H <asterisk.org@hovland.cx>
+         Queue member will get stuck in pending_members if queue calls a device
+         that is different from the one observed for state changes.
 
-       * res_pjsip: Fix crash when contact has no status
+         This patch removes members from pending_members as a result of channel stasis
+         events such as blind or attended transfers and hangup.
 
-         This change fixes an assumption in res_pjsip that a contact will
-         always have a status. There is a race condition where this is
-         not true and would crash. The status will now be unknown when
-         this situation occurs.
+         ASTERISK-26862 #close
 
-         ASTERISK-26623 #close
+         Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727
 
-         Change-Id: Id52d3ca4d788562d236da49990a319118f8d22b5
+2017-02-22 23:26 +0000 [60b372a883]  Richard Mudgett <rmudgett@digium.com>
 
-2017-02-21 18:06 +0000 [c07bcca87e]  gtjoseph <gjoseph@digium.com>
+       * CHANNEL(callid): Give dialplan access to the callid.
 
-       * res_pjsip_outbound_registration:  Subscribe to network change events
+         * Added CHANNEL(callid) to retrieve the call identifier log tag associated
+         with the channel.  Dialplan now has access to the call log search key
+         associated with the channel so it can be saved in case there is a problem
+         with the call.
 
-         Outbound registration now subscribes to network change events
-         published by res_stun_monitor and refreshes all registrations
-         when an event happens.
+         ASTERISK-26878
 
-         The 'pjsip send (un)register' CLI commands were updated to accept
-         '*all' as an argument to operate on all registrations.
+         Change-Id: I2c97ebd928b6f3c5bc80c5729e4d3c07f453049f
 
-         The 'PJSIP(Un)Register' AMI commands were also updated to
-         accept '*all'.
+2017-03-16 08:42 +0000 [9a57b24e17]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26808 #close
+       * app_queue: Fix locking behavior in stasis message handlers
 
-         Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25
+         The queue_stasis_data structure contains various mutable fields that require
+         appropriate locking. Specifically, the 'dying,' 'member_uniqueid,' and
+         'caller_uniqueid' fields need to be locked when read from or written to.
 
-2017-02-26 10:09 +0000 [d91f61f0b5]  Vitezslav Novy <a1@vnovy.net>
+         Change-Id: I246b7dbff8447acc957a1299f6ad0ebd0fd39088
 
-       * chan_sip: Allow DTLS to be disabled when reloading.
+2017-03-07 19:28 +0000 [8721d0bf1b]  Sean Bright <sean.bright@gmail.com>
 
-         This change fixes a problem where removing the DTLS configuration
-         options and reloading would not disable DTLS. This occurred
-         because the DTLS configuration was not reset to an unconfigured
-         state on reload.
+       * chan_sip: Add rtcp-mux support
 
-         ASTERISK-26313
+         ASTERISK-26846 #close
 
-         Change-Id: I10952709cc4a7727fb50534b042bce9d64894b39
+         Change-Id: I541a1602ff55ab73684e9f8002edb9e0e745d639
 
-2017-02-27 12:25 +0000 [3d2c119778]  gtjoseph <gjoseph@digium.com>
+2017-03-16 16:50 +0000 [792171ea9e]  Richard Mudgett <rmudgett@digium.com>
 
-       * build:  Warn if asterisk is installed in both 32 and 64 bit sys dirs
+       * app_confbridge: Fix ConfbridgeTalking AMI event description.
 
-         ... and clean them both up on uninstall.
+         Thanks to Chris Howard for pointing this out on the wiki.
 
-         We've fixed the issue where 'make install' was installing to
-         /usr/lib on 64-bit systems that use /usr/lib64.  Now we need
-         to clean up the remnants in /usr/lib.
+         Change-Id: I18e56de09a70e736b5d04719d45ef29cf0636705
 
-         * 'make install' now prints a warning if DESTDIR/ASTLIBDIR
-           contains 'lib64' and libasterisk* shared libraries or modules
-           are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed
-           to 'lib'.
+2017-03-16 16:37 +0000 [047fb7f11e]  Richard Mudgett <rmudgett@digium.com>
 
-         * 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and
-           DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'.
+       * res_pjsip_asterisk.c: Fix compile error if libsrtp is not installed.
 
-         ASTERISK-26705
+         struct ast_rtcp does not define the dtls member if SRTP is not enabled.
 
-         Change-Id: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f
+         ASTERISK-26732
 
-2017-02-27 07:02 +0000 [eac818801b]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Id15ea212e04490e012f2cf4a56818b4dd948875e
 
-       * bridge_native_rtp: Handle case where channel joins already suspended.
+2017-03-16 15:45 +0000 [a75f02c089]  Richard Mudgett <rmudgett@digium.com>
 
-         The bridge_native_rtp module did not properly handle the case where
-         a smart bridge operation occurs while a channel is suspended. In this
-         scenario the module would incorrectly set up local or remote RTP
-         bridging despite the media having to flow through Asterisk. The remote
-         endpoint would see two media streams and experience wonky audio.
+       * res_pjsip_sdp_rtp.c: Fix cut-n-paste error
 
-         The module has been changed so that it ensures both channels are
-         not suspended when performing the native RTP bridging and this
-         requirement has been documented in the bridge technology.
+         We were inadvertenly referencing the cos_video option to determine if we
+         should set the tos_audio and cos_audio value on the RTP instance.
 
-         ASTERISK-26781
+         Change-Id: Ia7964f486801d39dc6f5dae570baff079e1595b0
 
-         Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c
+2017-03-16 10:39 +0000 [776ffd7724]  Matt Jordan <mjordan@digium.com>
 
-2017-02-24 11:49 +0000 [d49af061bc]  Joshua Colp <jcolp@digium.com>
+       * res/res_pjsip_session: Only check localnet if it is defined
 
-       * config: Improve documentation and behavior of outbound_proxy option.
+         If local_net is not defined on a transport, transport_state->localnet
+         will be NULL. ast_apply_ha will, be default, return AST_SENSE_ALLOW in
+         this case, causing the external_media_address, if set, to be skipped.
 
-         This change updates the documentation for the outbound_proxy option
-         to ensure it is consistently stated that a full SIP URI must be
-         provided for the option.
+         This patch causes us to only check if we are sending within a network if
+         local_net is defined.
 
-         The res_pjsip_outbound_registration module has also been changed so
-         that the provided outbound_proxy value is checked to ensure it is a
-         URI and if not an error is output stating so.
+         ASTERISK-26879 #close
 
-         ASTERISK-26782
+         Change-Id: Ib661c31a954cabc9c99f1f25c9c9a5c5b82cbbfb
 
-         Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593
+2017-03-14 16:22 +0000 [139bc3495f]  Richard Begg <asterisk@meric.id.au>
 
-2017-02-09 18:05 +0000 [9c05ddbddd]  gtjoseph <gjoseph@digium.com>
+       * res_pjsip_sdp_rtp: RTP instance does not use same IP as explicit transport
 
-       * pjproject_bundled: Update for pjproject 2.6
+         Currently a wildcard address is used for the local RTP socket, which
+         will not always result in the same address as used by the SIP socket
+         (e.g. if explicit transport addresses are configured).
+         Use the transport's host address when binding new local RTP sockets if
+         available.
 
-          * Removed all 2.5.5 functional patches.
-          * Updated usages of pj_release_pool to be "safe".
-          * Updated configure options to disable webrtc.
-          * Updated config_site.h to disable webrtc in pjmedia.
-          * Added Richard Mudgett's recent resolver patches.
+         ASTERISK-26851
 
-         Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7
+         Change-Id: I098c29c9d1f79a4f970d72ba894874ac75954f1a
 
-2017-02-23 15:49 +0000 [bee55aaf2c]  gtjoseph <gjoseph@digium.com>
+2017-03-16 09:07 +0000 [7ea7797e12]  Joshua Colp <jcolp@digium.com>
 
-       * build: Execute ldconfig to build cache. (take two)
+       * res_rtp_asterisk: Fix crash when RTCP is not present when DTLS is stopped.
 
-         On some platforms a multiarch approach is used for libraries.
-         The build system does not take this into account and still
-         places libraries into the lib directory if no --libdir is
-         specified to configure. On initial startup this results in
-         libasteriskssl.so not being found, as it is not in the multiarch
-         lib directory.  To make matters worse, options were being passed
-         to ldconfig on both Linux and FreeBSD that actually prevented
-         the rebuild of the cache.
+         This change removes an assumption that when DTLS is stopped
+         an RTCP session will be present on the RTP session. This is not
+         always the case.
 
-          * Fedora has a /usr/share/config.site that automatically tells
-            autoconf to use /usr/lib64 but CentOS does not. This logic was
-            copied to configure.ac and modified so systems like Ubuntu,
-            which still use /usr/lib for 64-bit systems, aren't affected.
+         ASTERISK-26732
 
-         Now that we have them in the correct directory...
+         Change-Id: Ib9f7c09ce0b005efe362dbcc8795202b18f94611
 
-         In order for the system loader to find libasteriskssl and
-         libasteriskpj, one of 3 things has to happen...
+2017-03-07 08:33 +0000 [9b756662a8]  George Joseph <gjoseph@digium.com>
 
-           - The linker cache must be rebuilt including the directory
-             where the libasterisk* libraries were installed.  Only root
-             can rebuild the cache.  This was busted.
-           - We have to link the asterisk binary with an rpath pointing
-             to the directrory where the libasterisk* libraries were
-             installed.  This makes things very complicated and will happen
-             over the collective dead bodies of everyone who's had to
-             package a distribution with an rpath.
-           - Finally, you can start asterisk with LD_LIBRARY_PATH set to the
-             directrory where the libasterisk* libraries were installed.
+       * res_pjsip:  Symmetric transports
 
-         There are no other options. So...
+         A new transport parameter 'symmetric_transport' has been added.
 
-          * The invokation of ldconfig has been moved from main/Makefile
-            to ASTTOPDIR/Makefile, the options have been removed, and
-            DESTDIR/ASTLIBDIR appended.  If you aren't root, you will be
-            warned after the "Asterisk Installation Compete" banner that
-            you must re-run 'make install' as root, manually run
-            'ldconfig DESTDIR/ASTLIBDIR' as root, or run asterisk with
-            LD_LIBRARY_PATH.
+         When a request from a dynamic contact comes in on a transport with
+         this option set to 'yes', the transport name will be saved and used
+         for subsequent outgoing requests like OPTIONS, NOTIFY and INVITE.
+         It's saved as a contact uri parameter named 'x-ast-txp' and will
+         display with the contact uri in CLI, AMI, and ARI output.  On the
+         outgoing request, if a transport wasn't explicitly set on the
+         endpoint AND the request URI is not a hostname, the saved transport
+         will be used and the 'x-ast-txp' parameter stripped from the
+         outgoing packet.
 
-         ASTERISK-26705
+         * config_transport was modified to accept and store the new parameter.
 
-         Change-Id: I2a64b7c33a7d3e9bde20f47e3d3ab771977af982
+         * config_transport/transport_apply was updated to store the transport
+           name in the pjsip_transport->info field using the pjsip_transport->pool
+           on UDP transports.
 
-2017-02-23 14:48 +0000 [da0cadd100]  Sean Bright <sean.bright@gmail.com>
+         * A 'multihomed_on_rx_message' function was added to
+           pjsip_message_ip_updater that, for incoming requests, retrieves the
+           transport name from pjsip_transport->info and retrieves the transport.
+           If transport->symmetric_transport is set, an 'x-ast-txp' uri parameter
+           containing the transport name is added to the incoming Contact header.
 
-       * res_config_pgsql: Fix thread safety problems
+         * An 'ast_sip_get_transport_name' function was added to res_pjsip.
+           It takes an ast_sip_endpoint and a pjsip_sip_uri and returns a
+           transport name if endpoint->transport is set or if there's an
+           'x-ast-txp' parameter on the uri and the uri host is an ipv4 or
+           ipv6 address.  Otherwise it returns NULL.
 
-         * A missing AST_LIST_UNLOCK() in find_table()
+         * An 'ast_sip_dlg_set_transport' function was added to res_pjsip
+           which takes an ast_sip_endpoint, a pjsip_dialog, and an optional
+           pjsip_tpselector.  It calls ast_sip_get_transport_name() and if
+           a non-NULL is returned, sets the selector and sets the transport
+           on the dialog.  If a selector was passed in, it's updated.
 
-         * The ESCAPE_STRING() macro uses pgsqlConn under the hood and we were
-           not consistently locking before calling it.
+         * res_pjsip/ast_sip_create_dialog_uac and ast_sip_create_dialog_uas
+           were modified to call ast_sip_dlg_set_transport() instead of their
+           original logic.
 
-         * There were a handful of other places where pgsqlConn was accessed
-           directly without appropriate locking.
+         * res_pjsip/create_out_of_dialog_request was modified to call
+           ast_sip_get_transport_name() and pjsip_tx_data_set_transport()
+           instead of its original logic.
 
-         Change-Id: Iea63f0728f76985a01e95b9912c3c5c6065836ed
+         * Existing transport logic was removed from endpt_send_request
+           since that can only be called after a create_out_of_dialog_request.
 
-2017-02-22 08:53 +0000 [f1963c5b8d]  Sean Bright <sean.bright@gmail.com>
+         * res_pjsip/ast_sip_create_rdata was converted to a wrapper around
+           a new 'ast_sip_create_rdata_with_contact' function which allows
+           a contact_uri to be specified in addition to the existing
+           parameters.  (See below)
 
-       * res_config_ldap: Various code improvements
+         * res_pjsip_pubsub/internal_pjsip_evsub_send_request was eliminated
+           since all it did was transport selection and that is now done in
+           ast_sip_create_dialog_uac and ast_sip_create_dialog_uas.
 
-         The initial motivation for this patch was to properly handle memory
-         allocation failures - we weren't checking the return values from the
-         various LDAP library allocation functions.
+         * 'contact_uri' was added to subscription_persistence.  This was
+           necessary because although the parsed rdata contact header has the
+           x-ast-txp parameter added (if appropriate),
+           subscription_persistence_update stores the raw packet which
+           doesn't have it.  subscription_persistence_recreate was then
+           updated to call ast_sip_create_rdata_with_contact with the
+           persisted contact_uri so the recreated subscription has the
+           correct transport info to send the NOTIFYs.
 
-         In the process, because update_ldap() and update2_ldap() were
-         substantially the same code, they've been consolidated.
+         * res_pjsip_session/internal_pjsip_inv_send_msg was eliminated since
+           all it did was transport selection and that is now done in
+           ast_sip_create_dialog_uac.
 
-         Change-Id: Iebcfe404177cc6860ee5087976fe97812221b822
+         * pjsip_message_ip_updater/multihomed_on_tx_message was updated
+           to remove all traces of the x-ast-txp parameter from the
+           outgoing headers.
 
-2017-02-22 13:08 +0000 [1ec796ce18]  Michael L. Young <elgueromexicano@gmail.com>
+         NOTE:  This change does NOT modify the behavior of permanent
+         contacts specified on an aor.  To do so would require that the
+         permanent contact's contact uri be updated with the x-ast-txp
+         parameter and the aor sorcery object updated.  If we need to
+         persue this, we need to think about cloning permanent contacts into
+         the same store as the dynamic ones on an aor load so they can be
+         updated without disturbing the originally configured value.
 
-       * build_tools:  Fix download_externals to allow the use of curl or wget
+         You CAN add the x-ast-txp parameter to a permanent contact's uri
+         but it would be much simpler to just set endpoint->transport.
 
-         Not sure if this is really a bug versus an improvement. I can see it being
-         viewed as a bug though by some.
+         Change-Id: I4ee1f51473da32ca54b877cd158523efcef9655f
 
-         The current build_tools/download_externals file depends on wget in order to
-         download external modules.  The current build system is able to discover
-         which tool to use for fetching remote files - either wget or curl.
+2017-03-15 13:24 +0000 [adad6020be]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch takes advantage of this capability by modifying the two calls to
-         the wget binary to instead use what was discovered by the build system.
+       * autochan/mixmonitor/chanspy: Fix unsafe channel locking and references.
 
-         ASTERISK-26812 #close
+         Dereferencing struct ast_autochan.chan without first calling
+         ast_autochan_channel_lock() is unsafe because the pointer could change at
+         any time due to a masquerade.  Unfortunately, ast_autochan_channel_lock()
+         itself uses struct ast_autochan.chan unsafely and can result in a deadlock
+         if the original channel happens to get destroyed after a masquerade in
+         addition to the pointer getting changed.
 
-         Change-Id: If9411a2554f009274d377445613ae91192d948a1
+         The problem is more likely to happen with v11 and earlier because
+         masquerades are used to optimize out local channels on those versions.
+         However, it could still happen on newer versions if the channel is
+         executing a dialplan application when the channel is transferred or
+         redirected.  In this situation a masquerade still must be used.
 
-2017-02-22 11:13 +0000 [5c9c097d17]  Joshua Colp <jcolp@digium.com>
+         * Added a lock to struct ast_autochan to safely be able to use
+         ast_autochan.chan while trying to get the channel lock in
+         ast_autochan_channel_lock().  The locking order is the channel lock then
+         the autochan lock.  Locking in the other direction requires deadlock
+         avoidance.
 
-       * Revert "build: Execute ldconfig to build cache."
+         * Fix unsafe ast_autochan.chan usages in app_mixmonitor.c.
 
-         This reverts commit d90430953c508670a67de68de400fef44f5e9fba.
+         * Fix unsafe ast_autochan.chan usages in app_chanspy.c.
 
-         Change-Id: I758fe7ea0408f83a6df8e1774310d69f482700f6
+         * app_chanspy.c: Removed unused autochan parameter from next_channel().
 
-2017-02-21 10:47 +0000 [ca6d001144]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26867
 
-       * pbx_realtime: Prevent premature extension matching
+         Change-Id: Id29dd22bc0f369b44e23ca423d2f3657187cc592
 
-         The patterns provided by pbx_realtime were checked in the order in
-         which they were returned from the realtime backend. If there was
-         overlap between multiple patterns, the first one to correctly match was
-         chosen even though it may not have been the best match.
+2017-03-07 14:13 +0000 [7bc69753bc]  Mark Michelson <mmichelson@digium.com>
 
-         We now sort the patterns descending by their length and compare in that
-         order. There may be cases where this still results in a sub-optimal
-         match, but this patch should improve the overall behavior.
+       * Add rtcp-mux support
 
-         ASTERISK-18271 #close
-         Reported by: Charlie Smurthwaite
+         This commit adds support for RFC 5761: Multiplexing RTP Data and Control
+         Packets on a Single Port. Specifically, it enables the feature when
+         using chan_pjsip.
 
-         Change-Id: I56d9ac15810eb1775966b669c3028e32cc7bd809
+         A new option, "rtcp_mux" has been added to endpoint configuration in
+         pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with
+         whatever it communicates with. Asterisk follows the rules set forth in
+         RFC 5761 with regards to falling back to standard RTCP behavior if the
+         far end does not indicate support for rtcp-mux.
 
-2017-02-21 15:09 +0000 [0654bf637c]  Peter Racz
+         The lion's share of the changes in this commit are in
+         res_rtp_asterisk.c. This is because it was pretty much hard wired to
+         have an RTP and an RTCP transport. The strategy used here is that when
+         rtcp-mux is enabled, the current RTCP transport and its trappings (such
+         as DTLS SSL session) are freed, and the RTCP session instead just
+         mooches off the RTP session. This leads to a lot of specialized if
+         statements throughout.
 
-       * pbx_dundi: DUNDi weight parameter not processed correctly
+         ASTERISK-26732 #close
+         Reported by Dan Jenkins
 
-         The DUNDi weight field is not always converted from network byte order
-         to host byte order. This can result in incorrect weight values and
-         incorrect selection of DUNDi destinations.
+         Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5
 
-         ASTERISK-18731 #close
-         Reported by: Peter Racz
-         Patches:
-               dundi_weight.patch (license #6290) patch uploaded by Peter Racz
+2017-03-09 11:05 +0000 [163e9e53dc]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be
+       * app_queue: Handle the caller being redirected out of a queue bridge
 
-2017-02-21 10:47 +0000 [d5522de597]  Sean Bright <sean.bright@gmail.com>
+         A caller can leave the Queue() application after being bridged with a
+         member in a few ways:
 
-       * realtime: Fix ast_load_realtime_multientry handling
+           * Caller or member hangup
+           * Caller is transferred somewhere else (blind or atx)
+           * Caller is externally redirected elsewhere
 
-         ast_load_realtime_multientry() returns an ast_config structure whose
-         ast_categorys are keyed with the empty strings. Several modules were
-         giving semantic meaning to the category names causing problems at
-         runtime.
+         The first 2 scenarios are currently handled by subscribing to stasis
+         messages, but the 3rd is not explicitly covered. If a caller is
+         redirected away from the Queue() application, the member who was last
+         bridged with that caller will remain in an "In use" state until the
+         caller hangs up.
 
-         * app_directory: Treated the category name as the mailbox name, and
-           would fail to direct calls to the appropriate extension after an
-           entry was chosen.
+         This patch adds handling of the caller leaving the queue via
+         redirection. We monitor the caller-member bridge, and if the caller is
+         the one that leaves, we treat it the same as we would a caller hangup.
 
-         * app_queue: Queues, queue members, and queue rules were all affected
-           and needed to be updated.
+         ASTERISK-26400 #close
+         Reported by: Etienne Lessard
 
-         * pbx_realtime: Pattern matching would never succeed because the
-           extension entered by the user was always compared to the empty
-           string.
+         Change-Id: Iba160907770de5a6c9efeffc9df5a13e9ea75334
 
-         Change-Id: Ie7e44986344b0b76ea8f6ddb5879f5040c6ca8a7
+2017-03-15 08:44 +0000 [7612601964]  Joshua Colp <jcolp@digium.com>
 
-2017-02-21 08:56 +0000 [5eb7875243]  Sean Bright <sean.bright@gmail.com>
+       * res_pjsip_endpoint_identifier_ip: Don't output error if no header_match.
 
-       * realtime: Centralize some common realtime backend code
+         This change ensures that if no header_match option is set on an
+         identify an error message is not output stating the option is set
+         to an invalid value.
 
-         All of the realtime backends create artificial ast_categorys to pass
-         back into the core as query results. These categories have no filename
-         or line number information associated with them and the backends differ
-         slightly on how they create them. So create a couple helper macros to
-         help make things more consistent.
+         ASTERISK-26863
 
-         Also updated the call sites to remove redundant error messages about
-         memory allocation failure.
+         Change-Id: I239bc6d2319dd3da24ba96a38d4d6e9b5526d62a
 
-         Note that res_config_ldap sets the category filename to the 'table name'
-         but that is not read by anything in the core, so I've dropped it.
+2017-03-14 08:49 +0000 [48447313b6]  Torrey Searle <torrey@voxbone.com>
 
-         Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897
+       * res/res_pjsip_refer: call xfer w/o extension
 
-2017-02-16 10:30 +0000 [d90430953c]  Joshua Colp <jcolp@digium.com>
+         When transfering to a URI without an extension, ensure that the
+         s extension of the dialplan is entered
 
-       * build: Execute ldconfig to build cache.
+         ASTERISK-26869 #close
 
-         On some platforms a multiarch approach is used for libraries.
-         The build system does not take this into account and still
-         places libraries into the lib directory if no --libdir is
-         specified to configure. On initial startup this results in
-         libasteriskssl.so not being found, as it is not in the multiarch
-         lib directory.
+         Change-Id: I07403df66cf93f09e00a40ab5b41bfc6f72b1525
 
-         This change does the minimally invasive thing and executes
-         ldconfig so that the libraries in the lib directory are found
-         and their location cached. By doing so Asterisk starts up fine.
+2017-03-14 16:16 +0000 [9fd9b39e8b]  Richard Mudgett <rmudgett@digium.com>
 
-         If DESTDIR is specified, however, the old logic is executed as
-         the install process may not have permission to alter the ldconfig
-         cache.
+       * pbx.c: Fix crash from malformed exten pattern.
 
-         ASTERISK-26705
+         Forgetting to indicate an exten is a pattern can cause a crash if the
+         "pattern" has a character set range.  e.g., "9999[3-5]" The crash is due
+         to a buffer overwrite because the '-' exten eye-candy wasn't removed as
+         expected and overran the allocated space.
 
-         Change-Id: If4eca46ac510c6fea5568256280ffdb3888d7bb4
+         The buffer overwrite is fixed two ways in this patch.
 
-2017-01-08 20:32 +0000 [3b606093d3]  Richard Mudgett <rmudgett@digium.com>
+         1) Fix ext_strncpy() to distinguish between pattern and non-pattern
+         extens.  Now '-' characters are removed when they are eye-candy and not
+         when they are part of a pattern character set.  Since the function is
+         private to pbx.c, the return value now returns the number of bytes written
+         to the destination buffer instead of the strlen() of the final buffer so
+         the callers that care don't need to add one.
 
-       * res_pjsip_authenticator_digest.c: Fix sorcery's immutable contract violation.
+         2) Fix callers to ext_strncpy() to supply the correct available buffer
+         size of the destination buffer.
 
-         The inbound authentication object is supposed to be immutable when it is
-         stored in sorcery.  However, the immutable property is violated if the
-         authentication object does not have a realm set.
+         ASTERISK-26668
 
-         The immutable contract violation has a different effect depending upon
-         what sorcery back end is used.  If it is the config file back end you
-         would get the same object back until res_pjsip is reloaded.  If it is the
-         real-time or AstDB back end you would get a new object on each query.  If
-         it is cached you would get the same object back until it is refreshed from
-         the database.
+         Change-Id: I555d97411140e47e0522684062d174fbe32aa84a
 
-         Once an inbound authentication object has its realm set it may or may not
-         get updated again if the default_realm changes.
+2017-03-14 16:51 +0000 [5389666d6f]  Richard Begg <asterisk@meric.id.au>
 
-         If the same authentication object is used for inbound and outbound
-         authentication then the immutable violation can make it very hard to
-         determine why the outbound authentication now fails.  The only diagnostic
-         message is a complaint about no realms matching when it had worked
-         earlier.  It fails because of the difference in behaviour for an empty
-         realm setting between inbound and outbound authentication objects.
+       * chan_iax2: Reload of iax peer results in loss of host address/port
 
-         * Fixed the sorcery object immutable violation by creating a new object
-         and setting the default_realm on it instead.  The new object is a shallow
-         copy for speed.
+         When using a non-dynamic peer address, build_peer() invalidates the
+         peer address structure by setting the address family to unspecified.
+         However, if dnsmgr is enabled, the subsequent call to ast_dnsmgr_lookup()
+         will not amend the peer address if the cache is still valid, resulting
+         in peer connectivity failures.
+         To fix this, we call ast_dnsmgr_refresh() instead.
 
-         * The auth_store thread storage no longer holds an auth ref.  It
-         interferes with the shallow copy and never needed a ref anyway.
+         ASTERISK-26865
 
-         ASTERISK-26799 #close
+         Change-Id: Id8a89a2f771ebbaf32255a35fe596a6dcb97a082
 
-         Change-Id: I2328a52f61b78ed5fbba38180b7f183ee7e08956
+2017-03-14 15:12 +0000 [658d59c683]  Matt Jordan <mjordan@digium.com>
 
-2017-02-04 20:17 +0000 [6208962b00]  Richard Mudgett <rmudgett@digium.com>
+       * configure: Don't use the progress bar with curl when downloading to stdout
 
-       * res_pjsip: Update artificial auth whenever default_realm changes.
+         In some scenarios, such as when there may not be a terminal (such as
+         inside a Docker container), curl will apparently direct the progress bar
+         to stdout. This can cause extra data to be appended to a file curl'd
+         down to stdout, resulting in md5 verification failures.
 
-         There was code attempting to update the artificial authentication object
-         whenever the default_realm changed.  However, once the artificial
-         authentication object was created it would never get updated.  The
-         artificial authentication object would require a system restart for a
-         change to the default_realm to take effect.
+         This patch removes the progress bar, and tells curl to download the file
+         silently.
 
-         ASTERISK-26799
+         ASTERISK-26872 #close
 
-         Change-Id: Id59036e9529c2d3ed728af2ed904dc36e7094802
+         Change-Id: Ie860b020f627d4372b3e7ce9453de5faafeebe6c
 
-2017-01-01 08:02 +0000 [9f11da85a2]  Richard Mudgett <rmudgett@digium.com>
+2017-03-14 07:50 +0000 [b3c2c996f1]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip: Update authentication realm documentation.
+       * res_pjsip_endpoint_identifier_ip: Add an option to match requests by header
 
-         Using the same auth section for inbound and outbound authentication is not
-         recommended.  There is a difference in meaning for an empty realm setting
-         between inbound and outbound authentication uses.
-
-         An empty inbound auth realm represents the global section's default_realm
-         value when the authentication object is used to challenge an incoming
-         request.  An empty outgoing auth realm is treated as a don't care wildcard
-         when the authentication object is used to respond to an incoming
-         authentication challenge.
+         This patch adds a new features to the endpoint identifier module,
+         'match_header'. When set, inbound requests are matched by a provided SIP
+         header: value pair. This option works in conjunction with the existing
+         'match' configuration option, such that if any 'match*' attribute
+         matches an inbound request, the request is associated with the specified
+         endpoint.
 
-         ASTERISK-26799
+         Since this module now identifies by more than just IP address,
+         appropriate renaming of the module and/or variables can be done in a
+         non-release branch.
 
-         Change-Id: Id3952f7cfa1b6683b9954f2c5d2352d2f11059ce
+         ASTERISK-26863 #close
 
-2017-02-13 17:11 +0000 [473813311b]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Icfc14835c962f92e35e67bbdb235cf0589de5453
+         (cherry picked from commit 30f52d79d7fc9ab0b628bef2b61ea515413795a2)
 
-       * pjproject: Fixes to resolve DNS SRV crashes.
+2017-03-14 09:55 +0000 [51985565ef]  Matt Jordan <mjordan@digium.com>
 
-         * Re #1945 (misc): Don't trigger SRV complete callback when there is a
-         parse error.
+       * configs/samples/hep.conf.sample: Clarify how the HEP stack works
 
-         * srv_resolver.c: Don't try to send query if already considered resolved.
+         This patch updates the documenation in hep.conf.sample to better specify
+         how the various HEP modules interact.
 
-         ** In resolve_hostnames() don't try to resolve a query that is already
-         considered resolved.
+         ASTERISK-26717 #close
 
-         ** In resolve_hostnames() fix DNS typo in comments.
+         Change-Id: I337fb742a89e3ec5edc7fc7a7a0295218d841124
 
-         ** In build_server_entries() move a common expression assigning to cnt
-         earlier.
+2017-03-14 09:59 +0000 [f9b791debe]  Matt Jordan <mjordan@digium.com>
 
-         * sip_transport.c: Fix tdata object name to actually contain the pointer.
+       * funcs/func_devstate: Remove new line in Device field of during module load
 
-         It helps if the logs referencing a tdata object buffer actually have a
-         name that includes the correct pointer as part of the name.  Also since
-         the tdata has its own pool it helps if any logs referencing the pool have
-         the same name as the tdata object.  This change brings tdata logging in
-         line with how tsx objects are named.
+         During module loading of func_devstate, Asterisk emits the current
+         device state of all Custom device states currently stored in the AstDB.
+         This was erroneously including a new line character ('\n') to the end of
+         the device state, causing two new lines to be emitted in
+         DeviceStateChange AMI events.
 
-         ASTERISK-26669 #close
-         ASTERISK-26738 #close
+         Note that this only happened for those device state changes that
+         occurred during startup. Regular device state changes for Custom device
+         states are handled elsewhere, and did not have the newline.
 
-         Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af
+         ASTERISK-26643 #close
+         Reported by: Roman Bedros
+         Tested by: Matt Jordan
+         patches:
+           ami_devstate.diff uploaded by Roman Bedros (License 6842)
 
-2017-02-06 14:26 +0000 [d58fdae811]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I1f4c02fc79c448d43bf725f5039c83d9611d7d93
 
-       * pjsip_distributor.c: Update some debug messages to get transaction name.
+2017-03-14 09:37 +0000 [216e28aa95]  Matt Jordan <mjordan@digium.com>
 
-         * Removed overloaded unmatched response ignore.  We obviously sent the
-         request so we shouldn't ignore it because it isn't new work.
+       * main/stasis_cache: Demote the ERROR message when removing a nonexistent item
 
-         ASTERISK-26669
-         ASTERISK-26738
+         This patch demotes the ERROR message that is displayed when a
+         nonexistent item is removed from the Stasis cache. The genesis of this
+         demotion is due to chan_sip's realtime peers and their interaction with
+         Asterisk's core ast_endpoint code, but ostensibly it could happen from
+         other channel drivers as well.
 
-         Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37
+         Since Mark Michelson already did an excellent job of explaining on this
+         issue, it is quoted here for posterity:
 
-2017-02-04 16:00 +0000 [eb9ae4f7cb]  Richard Mudgett <rmudgett@digium.com>
+         "Internally, when a realtime peer is retrieved, Asterisk creates an
+         ast_endpoint structure. When that peer is destroyed, the ast_endpoint is
+         destroyed as well. Part of the destruction of the ast_endpoint involves
+         clearing the Stasis cache of all information about that endpoint. The
+         problem here is that the act of creating the ast_endpoint is not enough
+         to actually put any information in the Stasis cache. Instead, something
+         has to happen, such as a state change, in order for the Stasis cache to
+         have any information about that endpoint. When a device registers,
+         chan_sip creates an ast_endpoint structure, processes the REGISTER, and
+         then destroys the ast_endpoint. When the ast_endpoint is destroyed,
+         there is nothing to destroy in the Stasis cache, so an error message is
+         emitted. When you use rtcachefriends, ast_endpoint structures persist
+         for the lifetime of the module and so you do not see this error
+         message."
 
-       * res_pjsip: Record the serializer earlier on the tdata.
+         ASTERISK-25237 #close
 
-         When PJPROJECT needs to do a DNS resolution and there is not a cached
-         entry available, the SIP request message goes out on the PJSIP monitor
-         thread instead of the original serializer thread.  Thus when the response
-         comes back it does not get processed by the original sending serializer.
+         Change-Id: I53cebc6b4a897a1ab9564182b75c177780feff70
 
-         This patch records the serializer on tdata before passing a request
-         message to PJPROJECT where it can in Asterisk code.  There are several
-         places in PJPROJECT for outbound registration and publishing support that
-         would need to record the serializer.  Unfortunately, without replacing the
-         PJPROJECT DNS resolver as was done in v14 we cannot fix those without
-         modifying PJPROJECT.
+2017-03-12 09:21 +0000 [c8d1b915d7]  Joshua Colp <jcolp@digium.com>
 
-         Even if we backported the DNS resolver from v14, the outbound registration
-         refresh timer does not go out on a serializer thread but the PJSIP monitor
-         thread.  Fortunately, Asterisk's outbound publish support doesn't use the
-         auto refresh timer that would also not go out under the serializer thread.
+       * chan_pjsip: Don't assume a session will have a channel.
 
-         This patch is v13 only.
+         When querying for PJSIP specific information using the dialplan
+         function CHANNEL() it is possible that the underlying session
+         will no longer have a channel associated with it. This is
+         most likely to occur when the RTCP HEP module attempts to get
+         the channel name. If this happens then a crash will occur.
 
-         ASTERISK-26669
-         ASTERISK-26738
+         This change just adds a check that the channel exists on the
+         session before querying it.
 
-         Change-Id: I9997b9ed6dbcebd2c37d6a67dc6dcee9c78914a4
+         ASTERISK-26857
 
-2017-02-20 13:38 +0000 [57f19d6efb]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I113479cffff6ae64cf8ed089e9e1565223426f01
 
-       * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs.
+2017-03-13 10:45 +0000 [6d1eb880c2]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26669
-         ASTERISK-26738
+       * menuselect: Add a new 'options' support type
 
-         Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0
+         The Binaural Rendering patches in the master branch required
+         menuselect to be updated with a new support type called 'option'.
+         This allows binaural rendering to be turned on or off when
+         bridge_softmix is built.  This patch backports the 'option'
+         functionality to the 13 and 14 branches.
 
-2017-02-20 06:28 +0000 [47daca8a2b]  Sean Bright <sean.bright@gmail.com>
+         Here's what it looks like in menuselect:
 
-       * app_voicemail: vm_authenticate accesses uninitialized memory
+           [*] bridge_simple
+           [*] bridge_softmix
+               --- Module Options ---
+           [ ] binaural_rendering_in_bridge_softmix
 
-         vm_authenticate doesn't always set the passed ast_vm_user argument, so
-         we initialize to 0 before passing it in.
+         To create an option for a module, you can create (or update) the
+         menuselect-tree xml snippet in the directory where the module
+         resides and add a member element with an 'option' support_level.
 
-         ASTERISK-25893 #close
-         Reported by: Filip Jenicek
+         Example (abbreviated) from bridges/bridges.xml:
 
-         Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a
+         <member name="binaural_rendering_in_bridge_softmix"
+               displayname="Enable binaural rendering in bridge_softmix"
+               remove_on_change="bridges/bridge_softmix.o bridges/bridge_softmix.so">
+               <support_level>option</support_level>
+               <depend>bridge_softmix</depend>
+               <depend>fftw3</depend>
+               <defaultenabled>no</defaultenabled>
+         </member>
 
-2017-02-20 11:19 +0000 [06214173a9]  Joshua Colp <jcolp@digium.com>
+         The 'name' will be added or removed from the MENUSELECT_<dir>
+         make variable following the standard module "missing means yes"
+         rules.
 
-       * Revert "build: Execute ldconfig to build cache."
+         Example (abbreviated) from bridges/Makefile:
 
-         This reverts commit e910dbab90ef3d628955c49f441b2c9dda1f222c.
+         ifeq ($(findstring binaural_rendering,$(MENUSELECT_BRIDGES)),)
+         bridge_softmix.o: _ASTCFLAGS+=-DBINAURAL_RENDERING
+         bridge_softmix.so: LIBS+=$(FFTW3_LIB)
+         endif
 
-         Change-Id: I242aa0a965a79738dc898299959c6d2e020c86bd
+         Change-Id: I66d23755ed6e81f8d439cad410f2ffa7c30f25ad
 
-2017-02-20 08:04 +0000 [c9ea98f9bf]  gtjoseph <gjoseph@digium.com>
+2017-03-10 20:29 +0000 [523de8eb8e]  George Joseph <gjoseph@digium.com>
 
-       * pjproject cli:  Add object count after object lists
+       * pjproject_bundled:  Reduce the need for rebuilds
 
-         When listing a container, we now print the number of objects
-         in the container at the end of the list.
+         Bundled pjproject should now only rebuild if one of the menuselect
+         "Compiler Flags" options changes.
 
-         Change-Id: I791cbc3ee9da9a2af9adc655164b5d32953df812
+         Change-Id: If114a2e16b9e77af371a600d6a5e197bbf28fe43
 
-2017-02-20 05:53 +0000 [d8972f50f4]  Sean Bright <sean.bright@gmail.com>
+2017-03-07 08:12 +0000 [d3ef833b3b]  Jean Aunis <jean.aunis@prescom.fr>
 
-       * res_config_ldap: Don't try to delete non-existent attributes
+       * chan_sip: Call not cancelled after receiving a 422 response
 
-         OpenLDAP will raise an error when we try to delete an LDAP attribute
-         that doesn't exist. We need to filter out LDAP_MOD_DELETE requests
-         based on which attributes the current LDAP entry actually has. There
-         is of course a small window of opportunity for this to still fail,
-         but it is much less likely now.
+         When receiving a 422 response, the invitestate variable must be reset to
+         INV_CALLING.
 
-         Change-Id: I3fe1b04472733e43151563aaf9f8b49980273e6b
+         ASTERISK-26841
 
-2017-02-20 05:49 +0000 [b980cae1f7]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Ia0502d6b02192664cefa4e75bafdd2645ce56099
 
-       * res_config_ldap: Remove extraneous line numbers from log messages
+2017-03-05 15:26 +0000 [67c989ce78]  Daniel Journo <dan@keshercommunications.com>
 
-         Extraneous line numbers were being output in many log messages. These
-         have been removed.
+       * pjsip/cli_commands: pjsip show channelstats shows wrong codec
 
-         Change-Id: Ice9efa3d252ee87f37fa8f5ea852fda482675431
+         * cli_commands.c Fixed CLI output
 
-2017-02-20 05:45 +0000 [011b7be62a]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26822 #close
 
-       * res_config_ldap: Make memory allocation more consistent
+         Change-Id: I3889ef6a8f6738fc312fab42db5efacd6e452b01
 
-         The code in update_ldap() and update2_ldap() was using both Asterisk's
-         memory allocation routines as well as OpenLDAP's. I've changed it so
-         that everything that is passed to OpenLDAP's functions are allocated
-         with their routines.
+2017-03-07 07:37 +0000 [2a85888262]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Iafec9c1fd8ea49ccc496d6316769a6a426daa804
+       * res_pjsip_transport_websocket: Add support for IPv6.
 
-2017-02-20 05:30 +0000 [b2836dde7e]  Sean Bright <sean.bright@gmail.com>
+         This change adds a PJSIP patch (which has been contributed upstream)
+         to allow the registration of IPv6 transport types.
 
-       * res_config_ldap: Fix configuration inheritance from _general
+         Using this the res_pjsip_transport_websocket module now registers
+         an IPv6 Websocket transport and uses it for the corresponding
+         traffic.
 
-         The "_general" configuration section allows administrators to provide
-         both general configuration options (host, port, url, etc.) as well as a
-         global realtime-to-LDAP-attribute mapping that is a fallback if one of
-         the later sections do not override it. This neglected to exclude the
-         general configuration options from the mapping. As an example, during
-         my testing, chan_sip requested 'port' from realtime, and because I did
-         not have it defined, it pulled in the 'port' configuration option from
-         "_general." We now filter those out explicitly.
+         ASTERISK-26685
 
-         Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778
+         Change-Id: Id1f9126f995b31dc38db8fdb58afd289b4ad1647
 
-2017-02-20 05:27 +0000 [6d5e9993b2]  Sean Bright <sean.bright@gmail.com>
+2017-03-08 08:16 +0000 [bc6eeab822]  Daniel Journo <dan@keshercommunications.com>
 
-       * res_config_ldap: Fix erroneous LDAP_MOD_REPLACE in LDAP modify
+       * app_voicemail: Cannot set fromstring on a per-mailbox basis
 
-         We always treat the first change of our modification batch as a
-         replacement when it sometimes is actually a delete. So we have to pass
-         the correct arguments to the OpenLDAP library.
+         * apps/app_voicemail.c fromstring field added to mailbox which will
+         override the global fromstring if set.
 
-         ASTERISK-26580 #close
-         Reported by: Nicholas John Koch
-         Patches:
-               res_config_ldap.c-11.24.1.patch (license #6833) patch uploaded
-               by Nicholas John Koch
+         ASTERISK-24562 #close
 
-         Change-Id: I0741d25de07c9539f1edc6eff3696165dfb64fbe
+         Change-Id: I5e90e3a1ec2b2d5340b49a0db825e4bbb158b2fe
 
-2017-02-15 11:55 +0000 [5b7c6678ae]  Sean Bright <sean.bright@gmail.com>
+2017-03-06 15:54 +0000 [d9972423d1]  Daniel Journo <dan@keshercommunications.com>
 
-       * res_config_sqlite3: Fix crash when loading with invalid config
+       * Saynumber is trying to get "and" from "digits/" subfolder
 
-         When ast_config_load() fails with CONFIG_STATUS_FILEINVALID, it has
-         already destroyed the ast_config struct for us. Trying to do it again
-         results in a crash.
+         * say.c Changed 'digits/and' to 'vm-and' for en_GB
 
-         Change-Id: If6a5c0ca718ad428e01a1fb25beb209a9ac18bc6
+         ASTERISK-26598 #close
 
-2017-02-17 16:57 +0000 [096496e13e]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: If1b713e5daea6f952b339f139178d292a6c4fcfe
 
-       * tcptls.c: Add some missing allocation failure checks.
+2017-03-06 13:15 +0000 [77901a58ca]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb
+       * pbx_spool: Gracefully handle long lines in call files
 
-2017-02-17 17:06 +0000 [047a1e7dcc]  Sean Bright <sean.bright@gmail.com>
+         Per the linked issue, we aren't checking the buffer filled by fgets()
+         to determine if it contains a newline, so we will fail to correctly
+         parse the trailing portion of a long line.
 
-       * pjproject-bundled: Fix checksum verification when using cURL
+         This patch increases the buffer size from 256 to 1024, and skips any
+         line that exceeds that length, logging a warning in the process.
 
-         ASTERISK-26802 #close
-         Reported by: Michael L. Young
+         ASTERISK-17067 #close
+         Reported by: Dave Olszewski
 
-         Change-Id: Iad293080f55d4d69ab615717a15211d916eed613
+         Change-Id: I51bcf270c1b4347ba05b43f18dc2094c76f5d7b0
 
-2017-02-16 08:38 +0000 [2cd75fe311]  Sean Bright <sean.bright@gmail.com>
+2017-03-02 21:27 +0000 [4271c700f7]  Richard Mudgett <rmudgett@digium.com>
 
-       * realtime: Fix LIKE escaping in SQL backends
+       * core: Cleanup ast_get_hint() usage.
 
-         The realtime framework allows for components to look up values using a
-         LIKE clause with similar syntax to SQL's. pbx_realtime uses this
-         functionality to search for pattern matching extensions that start with
-         an underscore (_).
+         * manager.c:manager_state_cb() Fix potential use of uninitialized hint[]
+         if a hint does not exist for the requested extension.  Ran into this when
+         developing a testsuite test.  The AMI event ExtensionStatus came out with
+         the hint header value containing garbage.  The AMI event PresenceStatus
+         also had the same issue.
 
-         When passing an underscore to SQL's LIKE clause, it will be interpreted
-         as a wildcard matching a single character and therefore needs to be
-         escaped. It is (for better or for worse) the responsibility of the
-         component that is querying realtime to escape it with a backslash before
-         passing it in. Some RDBMs support escape characters by default, but the
-         SQL92 standard explicitly says that there are no escape characters
-         unless they are specified with an ESCAPE clause, e.g.
+         * manager.c:action_extensionstate() no need to completely initialize the
+         hint[].  Only initialize the first element.
 
-               SELECT * FROM table WHERE column LIKE '\_%' ESCAPE '\'
+         * pbx.c:ast_add_hint() Remove unnecessary assignment.
 
-         This patch instructs 3 backends - res_config_mysql, res_config_pgsql,
-         and res_config_sqlite3 - to use the ESCAPE clause where appropriate.
+         * chan_sip.c: Eliminate an unneeded hint[] local variable.  We only care
+         about the return value of ast_get_hint() there.
 
-         Looking through documentation and source tarballs, I was able to
-         determine that the ESCAPE clause is supported in:
+         Change-Id: Ia9a8786f01f93f1f917200f0a50bead0319af97b
 
-         MySQL 5.0.15   (released 2005-10-22 - earliest version available from
-                         archives)
-         PostgreSQL 7.1 (released 2001-04-13)
-         SQLite 3.1.0   (released 2005-01-21)
+2017-02-16 04:22 +0000 [e510595c86]  Jørgen H <asterisk.org@hovland.cx>
 
-         The versions of the relevant libraries that we depend on to access MySQL
-         and PostgreSQL will not work on versions that old, and I've added an
-         explicit check in res_config_sqlite3 to only use the ESCAPE clause when
-         we have a sufficiently new version of SQLite3.
+       * res_pjsip WebRTC/websockets: Fix usage of WS vs WSS.
 
-         res_config_odbc already handles the escape characters appropriately, so
-         no changes were required there.
+         According to the RFC[1] WSS should only be used in the Via header
+         for secure Websockets.
 
-         ASTERISK-15858 #close
-         Reported by: Humberto Figuera
+         * Use WSS in Via for secure transport.
 
-         ASTERISK-26057 #close
-         Reported by: Stepan
+         * Only register one transport with the WS name because it would be
+         ambiguous.  Outgoing requests may try to find the transport by name and
+         pjproject only finds the first one registered.  This may mess up unsecure
+         websockets but the impact should be minimal.  Firefox and Chrome do not
+         support anything other than secure websockets anymore.
 
-         Change-Id: I93117fbb874189ae819f4a31222df7c82cd20efa
+         * Added and updated some debug messages concerning websockets.
 
-2017-02-16 10:30 +0000 [e910dbab90]  Joshua Colp <jcolp@digium.com>
+         * security_events.c: Relax case restriction when determining security
+         transport type.
 
-       * build: Execute ldconfig to build cache.
+         * The res_pjsip_nat module has been updated to not touch the transport
+         on Websocket originating messages.
 
-         On some platforms a multiarch approach is used for libraries.
-         The build system does not take this into account and still
-         places libraries into the lib directory if no --libdir is
-         specified to configure. On initial startup this results in
-         libasteriskssl.so not being found, as it is not in the multiarch
-         lib directory.
+         [1] https://tools.ietf.org/html/rfc7118
 
-         This change does the minimally invasive thing and executes
-         ldconfig so that the libraries in the lib directory are found
-         and their location cached. By doing so Asterisk starts up fine.
+         ASTERISK-26796 #close
 
-         ASTERISK-26705
+         Change-Id: Ie3a0fb1a41101a4c1e49d875a8aa87b189e7ab12
 
-         Change-Id: I6d30b6427e9d5e69470e11327c7ff203fa7da519
+2017-03-01 07:23 +0000 [76971d4c4a]  Sean Bright <sean.bright@gmail.com>
 
-2017-02-16 05:46 +0000 [9b02bbfa88]  Sean Bright <sean.bright@gmail.com>
+       * res_config_pgsql: Make 'require' return consistent with other backends
 
-       * res_config_sqlite3: Properly create missing columns when necessary
+         res_config_pgsql should match the behavior of other realtime backend
+         drivers so that queue_log can disable adaptive logging.
 
-         There were two specific issues resolved here:
+         ASTERISK-25628 #close
+         Reported by: Dmitry Wagin
 
-         1) The code that iterated over the required fields
-            (via ast_realtime_require) was broken for the RQ_INTEGER1 field
-            type. Iteration would stop when the first RQ_INTEGER1 (0) field
-            was encountered.
+         Change-Id: Ic1fb1600c7ce10fdfb1bcdc43c5576b7e0014372
 
-         2) sqlite3_changes() was used to try and count the number of rows
-            returned by a SELECT statement. sqlite3_changes() only counts
-            affected rows, so this was always returning the value from the
-            most recent data modification statement. We now separate read-only
-            queries from data modification queries and count rows appropriately
-            in both cases.
+2017-02-28 09:41 +0000 [fa8f6c2fc4]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-23457 #close
-         Reported by: Scott Griepentrog
+       * res_config_pgsql: Release table locks where appropriate
 
-         Change-Id: I91ed20494efc3fcfbc2a96ac7646999a49814884
+         The find_table() functions NULL or a locked table pointer. We are
+         not consistently calling release_table() in failure paths.
 
-2017-02-15 14:44 +0000 [0fc27fa364]  Joshua Elson <joshelson@gmail.com>
+         Change-Id: I6f665b455799c84b036e5b34904b82b05eab9544
 
-       * http: Ensure capath is defined on all http creations
+2017-02-28 05:41 +0000 [5b34b751a0]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         ASTERISK-26794 #close
+       * pjsip.conf.sample: user_agent: not a specific version
 
-         Change-Id: I9cbc3b6b6a8aab590f5ccde9c262a98e4d5253a1
+         Use the description of useragent from sip.conf here.
 
-2017-02-15 23:09 +0000 [7aa731c1c7]  Igor Goncharovsky <igor.goncharovsky@gmail.com>
+         ASTERISK-26825 #close
 
-       * chan_unistim: fix char type to have consistent behavior on ARM
+         Change-Id: I5b33a4aaa0ae1d793289d05e3bc09521affbf755
 
-         There is difference exists in behaviour of char type on x86 and ARM.
-         On x86 by default char variable type means signed char, but in ARM
-         unsigned char used. This make binary calculations and negative values
-         works wrong on ARM.
+2017-02-27 20:07 +0000 [8e6ecdade2]  George Joseph <gjoseph@digium.com>
 
-         This patch change type of char variables used for store negative
-         values and binary calculations to signed char.
+       * res_pjsip_pubsub:  Remove unneeded endpoint unref
 
-         ASTERISK-26714
+         When a subscription was being recreated and the endpoint wasn't
+         found, we were trying to unref the endpoint.  This was causing
+         FRACKs.  Removed the unref.
 
-         Change-Id: Id78716dee9568a58419d4ef63c038affc3dfc7ab
+         ASTERISK-26823 #close
 
-2017-02-07 13:17 +0000 [be77b845d9]  gtjoseph <gjoseph@digium.com>
+         Change-Id: If86d2aecff8fe853c7f38a1bfde721fcef3cd164
 
-       * res_pjsip_pubsub:  Correctly implement persisted subscriptions
+2017-02-16 04:16 +0000 [0595c31da7]  Jørgen H <asterisk.org@hovland.cx>
 
-         This patch fixes 2 original issues and more that those 2 exposed.
+       * res_pjsip: Fix crash when contact has no status
 
-         * When we send a NOTIFY, and the client either doesn't respond or
-           responds with a non OK, pjproject only calls our
-           pubsub_on_evsub_state callback, no others.  Since
-           pubsub_on_evsub_state (which does the sub_tree cleanup) does not
-           expect to be called back without the other callbacks being called
-           first, it just returns leaving the sub_tree orphaned.  Now
-           pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE
-           which is what pjproject will set to tell us that it was the
-           transaction that timed out or failed and not the subscription
-           itself timing our or being terminated by the client. If is
-           TSX_STATE, pubsub_on_evsub_state now does the proper cleanup
-           regardless of the state of the subscription.
+         This change fixes an assumption in res_pjsip that a contact will
+         always have a status. There is a race condition where this is
+         not true and would crash. The status will now be unknown when
+         this situation occurs.
 
-         * When a client renews a subscription, we don't update the
-           persisted subscription with the new expires timestamp.  This causes
-           subscription_persistence_recreate to prune the subscription if/when
-           asterisk restarts.  Now, pubsub_on_rx_refresh calls
-           subscription_persistence_update to apply the new expires timestamp.
-           This exposed other issues however...
+         ASTERISK-26623 #close
 
-         * When creating a dialog from rdata (which sub_persistence_recreate
-           does from the packet buffer) there must NOT be a tag on the To
-           header (which there will be when a client refreshes a
-           subscription).  If there is one, pjsip_dlg_create_uas will fail.
-           To address this, subscription_persistence_update now accepts a flag
-           that indicates that the original packet buffer must not be updated.
-           New subscribes don't set the flag and renews do.  This makes sure
-           that when the rdata is recreated on asterisk startup, it's done
-           from the original subscribe packet which won't have the tag on To.
+         Change-Id: Id52d3ca4d788562d236da49990a319118f8d22b5
 
-         * When creating a dialog from rdata, we were setting the dialog's
-           remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq.
-           When the client tried to resubscribe after a restart with the
-           correct cseq, we'd reject the request with an Invalid CSeq error.
+2017-02-21 18:06 +0000 [c07bcca87e]  George Joseph <gjoseph@digium.com>
 
-         * The acts of creating a dialog and evsub by themselves when
-           recreating a subscription does NOT restart pjproject's subscription
-           timer.  The result was that even if we did correctly recreate the
-           subscription, we never removed it if the client happened to go away
-           or send a non-OK response to a NOTIFY.  However, there is no
-           pjproject function exposed to just set the timer on an evsub that
-           wasn't created by an incoming subscribe request.  To address this,
-           we create our own timer using ast_sip_schedule_task.  This timer is
-           used only for re-establishing subscriptions after a restart.
+       * res_pjsip_outbound_registration:  Subscribe to network change events
 
-           An earlier approach was to add support for setting pjproject's
-           timer (via a pjproject patch) and while that patch is still included
-           here, we don't use that call at the moment.
+         Outbound registration now subscribes to network change events
+         published by res_stun_monitor and refreshes all registrations
+         when an event happens.
 
-         While addressing these issues, additional debugging was added and
-         some existing messages made more useful.  A few formatting changes
-         were also made to 'pjsip show scheduled tasks' to make displaying
-         the subscription timers a little more friendly.
+         The 'pjsip send (un)register' CLI commands were updated to accept
+         '*all' as an argument to operate on all registrations.
 
-         ASTERISK-26696
-         ASTERISK-26756
+         The 'PJSIP(Un)Register' AMI commands were also updated to
+         accept '*all'.
 
-         Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e
+         ASTERISK-26808 #close
 
-2017-02-15 11:03 +0000 [73133d5354]  Sean Bright <sean.bright@gmail.com>
+         Change-Id: Iad58a9e0aa5d340477fca200bf293187a6ca5a25
 
-       * res_rtp_asterisk: Use PJ_ICE_MAX_CAND instead of hard-coding 16
+2017-02-26 10:09 +0000 [d91f61f0b5]  Vitezslav Novy <a1@vnovy.net>
 
-         pjsip limits the total number of ICE candidates to PJ_ICE_MAX_CAND,
-         which is a compile-time constant. Instead of hard-coding 16 when we
-         enumerate local interfaces, use PJ_ICE_MAX_CAND so that we can
-         potentially collect more interfaces if the compile time options are
-         changed.
+       * chan_sip: Allow DTLS to be disabled when reloading.
 
-         Tangentially related to ASTERISK~24464
+         This change fixes a problem where removing the DTLS configuration
+         options and reloading would not disable DTLS. This occurred
+         because the DTLS configuration was not reset to an unconfigured
+         state on reload.
 
-         Change-Id: I1b85509e39e33b1fed63c86261fc229ba14bbabd
+         ASTERISK-26313
 
-2017-02-03 02:25 +0000 [99b40e72ae]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: I10952709cc4a7727fb50534b042bce9d64894b39
 
-       * libasteriskssl: do nothing with OpenSSL >= 1.1
+2017-02-27 12:25 +0000 [3d2c119778]  George Joseph <gjoseph@digium.com>
 
-         OpenSSL 1.1 requires no explicit initialization. The hacks in the
-         library are not needed. They also happen to fail running Asterisk.
+       * build:  Warn if asterisk is installed in both 32 and 64 bit sys dirs
 
-         ASTERISK-26109 #close
+         ... and clean them both up on uninstall.
 
-         Change-Id: I3b3efd5d80234a4c45a8ee58dcfe25b15d9ad100
+         We've fixed the issue where 'make install' was installing to
+         /usr/lib on 64-bit systems that use /usr/lib64.  Now we need
+         to clean up the remnants in /usr/lib.
 
-2017-02-13 16:50 +0000 [4c31e03e80]  Sean Bright <sean.bright@gmail.com>
+         * 'make install' now prints a warning if DESTDIR/ASTLIBDIR
+           contains 'lib64' and libasterisk* shared libraries or modules
+           are also found in DESTDIR/ASTLIBDIR with 'lib64' transformed
+           to 'lib'.
 
-       * app_voicemail: Allow 'Comedian Mail' branding to be overriden
-
-         Original patch by John Covert, slight modifications by me.
+         * 'make uninstall' ALWAYS cleans up both DESTDIR/ASTLIBDIR and
+           DESTDIR/ASTLIBDIR with 'lib64' transformed to 'lib'.
 
-         ASTERISK-17428 #close
-         Reported by: John Covert
-         Patches:
-               app_voicemail.c.patch (license #5512) patch uploaded by
-                 John Covert
+         ASTERISK-26705
 
-         Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6
+         Change-Id: I6edddeb3c07a51e7c7ba7cac3c05e4bf3ec3f01f
 
-2017-01-20 23:59 +0000 [e97e50b68b]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+2017-02-27 07:02 +0000 [eac818801b]  Joshua Colp <jcolp@digium.com>
 
-       * tcptls: use TLS_client_method with OpenSSL 1.1
+       * bridge_native_rtp: Handle case where channel joins already suspended.
 
-         OpenSSL 1.1 introduced TLS_client_method() and deprecated the previous
-         version-specific methods (such as TLSv1_client_method(). Other than
-         being simpler to use and more correct (gain support for TLS newer that
-         TLS1, in our case), the older ones produce a deprecation warning that
-         fails the build in dev-mode.
+         The bridge_native_rtp module did not properly handle the case where
+         a smart bridge operation occurs while a channel is suspended. In this
+         scenario the module would incorrectly set up local or remote RTP
+         bridging despite the media having to flow through Asterisk. The remote
+         endpoint would see two media streams and experience wonky audio.
 
-         ASTERISK-26109 #close
+         The module has been changed so that it ensures both channels are
+         not suspended when performing the native RTP bridging and this
+         requirement has been documented in the bridge technology.
 
-         Change-Id: I257b1c8afd09dcb0d96cda3a41cb9f7a15d0ba07
+         ASTERISK-26781
 
-2017-01-20 23:57 +0000 [0d555f0d81]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: Id4022d73ace837d4a293106445e3ade10dbc7c7c
 
-       * openssl 1.1 support: use OPENSSL_VERSION_NUMBER
+2017-02-24 11:49 +0000 [d49af061bc]  Joshua Colp <jcolp@digium.com>
 
-         Use OPENSSL_VERSION_NUMBER instead of OPENSSL_API_COMPAT to detect
-         the openssl 1.1 API.
+       * config: Improve documentation and behavior of outbound_proxy option.
 
-         ASTERISK-26109 #close
+         This change updates the documentation for the outbound_proxy option
+         to ensure it is consistently stated that a full SIP URI must be
+         provided for the option.
 
-         Change-Id: I4e448f55ef516aedf6ad154037c35577a421a458
+         The res_pjsip_outbound_registration module has also been changed so
+         that the provided outbound_proxy value is checked to ensure it is a
+         URI and if not an error is output stating so.
 
-2017-01-25 16:25 +0000 [9d34df9a5e]  Ryan Rittgarn <rrittgarn@techpro.com>
+         ASTERISK-26782
 
-       * app_voicemail: VoiceMailPlayMsg did not play database stored messages
+         Change-Id: I6c239a32274846fd44e65b44ad9bf6373479b593
 
-         When attempting to use VoiceMailPlayMsg with a realtime data backend
-         the message is located, but never retrieved. This patch adds the
-         required RETRIEVE and DISPOSE calls that will fetch the message from
-         the database (and IMAP storage as well for that matter).
+2017-02-09 18:05 +0000 [9c05ddbddd]  George Joseph <gjoseph@digium.com>
 
-         Also, removed extraneous make_file call.
+       * pjproject_bundled: Update for pjproject 2.6
 
-         ASTERISK-26723 #close
+          * Removed all 2.5.5 functional patches.
+          * Updated usages of pj_release_pool to be "safe".
+          * Updated configure options to disable webrtc.
+          * Updated config_site.h to disable webrtc in pjmedia.
+          * Added Richard Mudgett's recent resolver patches.
 
-         Change-Id: I1e122dd53c0f3d7faa10f3c2b7e7e76a47d51b8c
+         Change-Id: Ib400cc4dfca68b3d07ce14d314e829bfddc252c7
 
-2017-02-14 08:12 +0000 [f99e5f4de4]  var <cbrunker@appenbutlerhill.com>
+2017-02-23 15:49 +0000 [bee55aaf2c]  George Joseph <gjoseph@digium.com>
 
-       * app_record: Add option to prevent silence from being truncated
+       * build: Execute ldconfig to build cache. (take two)
 
-         When using Record() with the silence detection feature, the stream is
-         written out to the given file. However, if only 'silence' is detected,
-         this file is then truncated to the first second of the recording.
+         On some platforms a multiarch approach is used for libraries.
+         The build system does not take this into account and still
+         places libraries into the lib directory if no --libdir is
+         specified to configure. On initial startup this results in
+         libasteriskssl.so not being found, as it is not in the multiarch
+         lib directory.  To make matters worse, options were being passed
+         to ldconfig on both Linux and FreeBSD that actually prevented
+         the rebuild of the cache.
 
-         This patch adds the 'u' option to Record() to override that behavior.
+          * Fedora has a /usr/share/config.site that automatically tells
+            autoconf to use /usr/lib64 but CentOS does not. This logic was
+            copied to configure.ac and modified so systems like Ubuntu,
+            which still use /usr/lib for 64-bit systems, aren't affected.
 
-         ASTERISK-18286 #close
-         Reported by: var
-         Patches:
-               app_record-1.8.7.1.diff (license #6184) patch uploaded by var
+         Now that we have them in the correct directory...
 
-         Change-Id: Ia1cd163483235efe2db05e52f39054288553b957
+         In order for the system loader to find libasteriskssl and
+         libasteriskpj, one of 3 things has to happen...
 
-2017-02-11 09:57 +0000 [ea8a610776]  Sean Bright <sean.bright@gmail.com>
+           - The linker cache must be rebuilt including the directory
+             where the libasterisk* libraries were installed.  Only root
+             can rebuild the cache.  This was busted.
+           - We have to link the asterisk binary with an rpath pointing
+             to the directrory where the libasterisk* libraries were
+             installed.  This makes things very complicated and will happen
+             over the collective dead bodies of everyone who's had to
+             package a distribution with an rpath.
+           - Finally, you can start asterisk with LD_LIBRARY_PATH set to the
+             directrory where the libasterisk* libraries were installed.
 
-       * cli: Fix various CLI documentation and completion issues
+         There are no other options. So...
 
-         * app_minivm: Use built-in completion facilities to complete optional
-         arguments.
+          * The invokation of ldconfig has been moved from main/Makefile
+            to ASTTOPDIR/Makefile, the options have been removed, and
+            DESTDIR/ASTLIBDIR appended.  If you aren't root, you will be
+            warned after the "Asterisk Installation Compete" banner that
+            you must re-run 'make install' as root, manually run
+            'ldconfig DESTDIR/ASTLIBDIR' as root, or run asterisk with
+            LD_LIBRARY_PATH.
 
-         * app_voicemail: Use built-in completion facilities to complete
-         optional arguments.
+         ASTERISK-26705
 
-         * app_confbridge: Add missing colons after 'Usage' text.
+         Change-Id: I2a64b7c33a7d3e9bde20f47e3d3ab771977af982
 
-         * chan_alsa: Use built-in completion facilities to complete optional
-         arguments.
+2017-02-23 14:48 +0000 [da0cadd100]  Sean Bright <sean.bright@gmail.com>
 
-         * chan_sip: Use built-in completion facilities to complete optional
-         arguments. Add completions for 'load' for 'sip show user', 'sip show
-         peer', and 'sip qualify peer.'
+       * res_config_pgsql: Fix thread safety problems
 
-         * chan_skinny: Correct and extend completions for 'skinny reset' and
-         'skinny show line.'
+         * A missing AST_LIST_UNLOCK() in find_table()
 
-         * func_odbc: Correct completions for 'odbc read' and 'odbc write'
+         * The ESCAPE_STRING() macro uses pgsqlConn under the hood and we were
+           not consistently locking before calling it.
 
-         * main/asterisk: Correct and extend completions for 'core show file
-         version.'
+         * There were a handful of other places where pgsqlConn was accessed
+           directly without appropriate locking.
 
-         * main/astmm: Use built-in completion facilities to complete arguments
-         for 'memory' commands.
+         Change-Id: Iea63f0728f76985a01e95b9912c3c5c6065836ed
 
-         * main/bridge: Correct completions for 'bridge kick.'
+2017-02-22 08:53 +0000 [f1963c5b8d]  Sean Bright <sean.bright@gmail.com>
 
-         * main/ccss: Use built-in completion facilities to complete arguments
-         for 'cc cancel' command.
+       * res_config_ldap: Various code improvements
 
-         * main/cli: Add 'all' completion for 'channel request hangup.' Correct
-         completions for 'core set debug channel.' Correct completions for 'core
-         show calls.'
+         The initial motivation for this patch was to properly handle memory
+         allocation failures - we weren't checking the return values from the
+         various LDAP library allocation functions.
 
-         * main/pbx_app: Remove redundant completions for 'core show
-         applications.'
+         In the process, because update_ldap() and update2_ldap() were
+         substantially the same code, they've been consolidated.
 
-         * main/pbx_hangup_handler: Remove unused completions for 'core show
-         hanguphandlers all.'
+         Change-Id: Iebcfe404177cc6860ee5087976fe97812221b822
 
-         * res_sorcery_memory_cache: Add completion for 'reload' argument of
-         'sorcery memory cache stale' and properly implement.
+2017-02-22 13:08 +0000 [1ec796ce18]  Michael L. Young <elgueromexicano@gmail.com>
 
-         Change-Id: Iee58c7392f6fec34ad9d596109117af87697bbca
+       * build_tools:  Fix download_externals to allow the use of curl or wget
 
-2017-01-13 11:21 +0000 [17030100ca]  Norbert Varga <vnorbix@gmail.com>
+         Not sure if this is really a bug versus an improvement. I can see it being
+         viewed as a bug though by some.
 
-       * chan_pjsip: Multidomain endpoint finding on call
+         The current build_tools/download_externals file depends on wget in order to
+         download external modules.  The current build system is able to discover
+         which tool to use for fetching remote files - either wget or curl.
 
-         When PJSIP tries to call an endpoint with a domain (e.g. 1000@test.com),
-         the user part is stripped down as it would be a trunk with a specified user,
-         and only the host part is called as a PJSIP endpoint and can't be found.
-         This is not correct in the case of a multidomain SIP account, so the stripping
-         after the @ sign is done only if the whole endpoint (in multidomain case
-         1000@test.com) can't be found.
+         This patch takes advantage of this capability by modifying the two calls to
+         the wget binary to instead use what was discovered by the build system.
 
-         ASTERISK-26248
+         ASTERISK-26812 #close
 
-         Change-Id: I3a2dd6f57f3bd042df46b961eccd81d31ab202e6
+         Change-Id: If9411a2554f009274d377445613ae91192d948a1
 
-2017-02-13 05:05 +0000 [18f1b52601]  Joshua Colp <jcolp@digium.com>
+2017-02-22 11:13 +0000 [5c9c097d17]  Joshua Colp <jcolp@digium.com>
 
-       * channel: Protect flags in ast_waitfor_nandfds operation.
+       * Revert "build: Execute ldconfig to build cache."
 
-         The ast_waitfor_nandfds operation will manipulate the flags
-         of channels passed in. This was previously done without
-         the channel lock being held. This could result in incorrect
-         values existing for the flags if another thread manipulated
-         the flags at the same time.
+         This reverts commit d90430953c508670a67de68de400fef44f5e9fba.
 
-         This change locks the channel during flag manipulation.
+         Change-Id: I758fe7ea0408f83a6df8e1774310d69f482700f6
 
-         ASTERISK-26788
+2017-02-21 10:47 +0000 [ca6d001144]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I2c5c8edec17c9bdad4a93291576838cb552ca5ed
+       * pbx_realtime: Prevent premature extension matching
 
-2017-02-11 11:25 +0000 [a46a21642e]  Richard Mudgett <rmudgett@digium.com>
+         The patterns provided by pbx_realtime were checked in the order in
+         which they were returned from the realtime backend. If there was
+         overlap between multiple patterns, the first one to correctly match was
+         chosen even though it may not have been the best match.
 
-       * res_pjsip.c: Fix inconsistency between warning and action.
+         We now sort the patterns descending by their length and compare in that
+         order. There may be cases where this still results in a sub-optimal
+         match, but this patch should improve the overall behavior.
 
-         The original return value corresponded to AST_SIP_AUTHENTICATION_CHALLENGE
-         but we have no authenticator registered to create the challenge.
+         ASTERISK-18271 #close
+         Reported by: Charlie Smurthwaite
 
-         Change-Id: I62368180d774b497411b80fbaabd0c80841f8512
+         Change-Id: I56d9ac15810eb1775966b669c3028e32cc7bd809
 
-2017-02-11 11:26 +0000 [67b21dc63a]  Richard Mudgett <rmudgett@digium.com>
+2017-02-21 15:09 +0000 [0654bf637c]  Sean Bright <sean.bright@gmail.com>
 
-       * pjsip_distributor.c: Fix off-nominal tdata ref leak.
+       * pbx_dundi: DUNDi weight parameter not processed correctly
 
-         Change-Id: I571f371d0956a8039b197b4dbd8af6b18843598d
+         The DUNDi weight field is not always converted from network byte order
+         to host byte order. This can result in incorrect weight values and
+         incorrect selection of DUNDi destinations.
 
-2017-02-09 10:01 +0000 [8936568515]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-18731 #close
+         Reported by: Peter Racz
+         Patches:
+               dundi_weight.patch (license #6290) patch uploaded by Peter Racz
 
-       * manager: Restore Originate failure behavior from Asterisk 11
+         Change-Id: Iba3e1a700ff539db57211a7bbc26f7b22ea9a1be
 
-         In Asterisk 11, if the 'Originate' AMI command failed to connect the provided
-         Channel while in extension mode, a 'failed' extension would be looked up and
-         run. This was, I believe, unintentionally removed in 51b6c49. This patch
-         restores that behavior.
+2017-02-21 10:47 +0000 [d5522de597]  Sean Bright <sean.bright@gmail.com>
 
-         This also adds an enum for the various 'synchronous' modes in an attempt to
-         make them meaningful.
+       * realtime: Fix ast_load_realtime_multientry handling
 
-         ASTERISK-26115 #close
-         Reported by: Nasir Iqbal
+         ast_load_realtime_multientry() returns an ast_config structure whose
+         ast_categorys are keyed with the empty strings. Several modules were
+         giving semantic meaning to the category names causing problems at
+         runtime.
 
-         Change-Id: I8afbd06725e99610e02adb529137d4800c05345d
+         * app_directory: Treated the category name as the mailbox name, and
+           would fail to direct calls to the appropriate extension after an
+           entry was chosen.
 
-2017-02-08 14:27 +0000 [2817f87d27]  Richard Mudgett <rmudgett@digium.com>
+         * app_queue: Queues, queue members, and queue rules were all affected
+           and needed to be updated.
 
-       * core: Cleanup some channel snapshot staging anomalies.
+         * pbx_realtime: Pattern matching would never succeed because the
+           extension entered by the user was always compared to the empty
+           string.
 
-         We shouldn't unlock the channel after starting a snapshot staging because
-         another thread may interfere and do its own snapshot staging.
+         Change-Id: Ie7e44986344b0b76ea8f6ddb5879f5040c6ca8a7
 
-         * app_dial.c:dial_exec_full() made hold the channel lock while setting up
-         the outgoing channel staging.  Made hold the channel lock after the called
-         party answers while updating the caller channel staging.
+2017-02-21 08:56 +0000 [5eb7875243]  Sean Bright <sean.bright@gmail.com>
 
-         * chan_sip.c:sip_new() completed the channel staging on off-nominal exit.
-         Also we need to use ast_hangup() instead of ast_channel_unref() at that
-         location.
+       * realtime: Centralize some common realtime backend code
 
-         * channel.c:__ast_channel_alloc_ap() added a comment about not needing to
-         complete the channel snapshot staging on off-nominal exit paths.
+         All of the realtime backends create artificial ast_categorys to pass
+         back into the core as query results. These categories have no filename
+         or line number information associated with them and the backends differ
+         slightly on how they create them. So create a couple helper macros to
+         help make things more consistent.
 
-         * rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel
-         locks while staging the channels for the stats channel variables.
+         Also updated the call sites to remove redundant error messages about
+         memory allocation failure.
 
-         Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a
+         Note that res_config_ldap sets the category filename to the 'table name'
+         but that is not read by anything in the core, so I've dropped it.
 
-2017-02-10 09:35 +0000 [c7fcc4468f]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I3a1fd91e0c807dea1ce3b643b0a6fe5be9002897
 
-       * configs/samples: Fix placement of 'identify' entry in sorcery.conf
+2017-02-16 10:30 +0000 [d90430953c]  Joshua Colp <jcolp@digium.com>
 
-         The entry for 'identify' was incorrectly placed in the
-         res_pjsip section when it should be in
-         res_pjsip_endpoint_identifier_ip.
+       * build: Execute ldconfig to build cache.
 
-         ASTERISK-26785 #close
+         On some platforms a multiarch approach is used for libraries.
+         The build system does not take this into account and still
+         places libraries into the lib directory if no --libdir is
+         specified to configure. On initial startup this results in
+         libasteriskssl.so not being found, as it is not in the multiarch
+         lib directory.
 
-         Change-Id: Ia1372b12a952bfe2df6b1b1e0e725ca306a5d41a
+         This change does the minimally invasive thing and executes
+         ldconfig so that the libraries in the lib directory are found
+         and their location cached. By doing so Asterisk starts up fine.
 
-2017-02-08 11:50 +0000 [cbc23c31cf]  Mark Michelson <mmichelson@digium.com>
+         If DESTDIR is specified, however, the old logic is executed as
+         the install process may not have permission to alter the ldconfig
+         cache.
 
-       * Revert "Update qualifies when AOR configuration changes."
+         ASTERISK-26705
 
-         This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f.
+         Change-Id: If4eca46ac510c6fea5568256280ffdb3888d7bb4
 
-         The change in question was intended to prevent the need to reload in
-         order to update qualifies on contacts when an AOR changes. However, this
-         ended up causing a deadlock instead.
+2017-01-08 20:32 +0000 [3b606093d3]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e
+       * res_pjsip_authenticator_digest.c: Fix sorcery's immutable contract violation.
 
-2017-02-07 12:01 +0000 [7e14e086cf]  nappsoft <infos@nappsoft.com> (license 6822)
+         The inbound authentication object is supposed to be immutable when it is
+         stored in sorcery.  However, the immutable property is violated if the
+         authentication object does not have a realm set.
 
-       * srv: Fix crash when ast_srv_lookup is used and 0 records are returned.
+         The immutable contract violation has a different effect depending upon
+         what sorcery back end is used.  If it is the config file back end you
+         would get the same object back until res_pjsip is reloaded.  If it is the
+         real-time or AstDB back end you would get a new object on each query.  If
+         it is cached you would get the same object back until it is refreshed from
+         the database.
 
-         When performing an SRV lookup using the ast_srv_lookup function it
-         did not properly handle the situation where 0 records are returned.
-         If this happened it would wrongly assume that at least one record
-         was present.
+         Once an inbound authentication object has its realm set it may or may not
+         get updated again if the default_realm changes.
 
-         This change fixes the code so it will exit early if an error occurs
-         or if 0 records are returned.
+         If the same authentication object is used for inbound and outbound
+         authentication then the immutable violation can make it very hard to
+         determine why the outbound authentication now fails.  The only diagnostic
+         message is a complaint about no realms matching when it had worked
+         earlier.  It fails because of the difference in behaviour for an empty
+         realm setting between inbound and outbound authentication objects.
 
-         ASTERISK-26772
-         patches:
-           srv_lookup.patch submitted by nappsoft (license 6822)
+         * Fixed the sorcery object immutable violation by creating a new object
+         and setting the default_realm on it instead.  The new object is a shallow
+         copy for speed.
 
-         Change-Id: I09b19081c74e0ad11c12bf54a257243b1bcb2351
+         * The auth_store thread storage no longer holds an auth ref.  It
+         interferes with the shallow copy and never needed a ref anyway.
 
-2017-02-06 11:40 +0000 [7b39d6901a]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26799 #close
 
-       * res_stasis_device_state: Protect the adding/removing of subscriptions.
+         Change-Id: I2328a52f61b78ed5fbba38180b7f183ee7e08956
 
-         The adding and removing of device state subscriptions did not protect
-         fully against simultaneous manipulation. In particular the subscribe
-         case allowed a small window where two subscriptions could be added for
-         the same device state instead of just one.
+2017-02-04 20:17 +0000 [6208962b00]  Richard Mudgett <rmudgett@digium.com>
 
-         This change makes the code hold the subscriptions lock for the entirety
-         of each operation to ensure that two are not occurring at the same time.
+       * res_pjsip: Update artificial auth whenever default_realm changes.
 
-         ASTERISK-26770
+         There was code attempting to update the artificial authentication object
+         whenever the default_realm changed.  However, once the artificial
+         authentication object was created it would never get updated.  The
+         artificial authentication object would require a system restart for a
+         change to the default_realm to take effect.
 
-         Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b
+         ASTERISK-26799
 
-2017-02-01 17:56 +0000 [c384dfd6b0]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id59036e9529c2d3ed728af2ed904dc36e7094802
 
-       * res_pjsip: Fix some off nominal tdata leaks.
+2017-01-01 08:02 +0000 [9f11da85a2]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I243a4be5e7fbfe604923764969c4ee04eee89b9d
+       * res_pjsip: Update authentication realm documentation.
 
-2017-02-06 16:27 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         Using the same auth section for inbound and outbound authentication is not
+         recommended.  There is a difference in meaning for an empty realm setting
+         between inbound and outbound authentication uses.
 
-       * asterisk 13.14.0-rc1 Released.
+         An empty inbound auth realm represents the global section's default_realm
+         value when the authentication object is used to challenge an incoming
+         request.  An empty outgoing auth realm is treated as a don't care wildcard
+         when the authentication object is used to respond to an incoming
+         authentication challenge.
 
-2017-02-02 11:26 +0000 [70aff89e5d]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-26799
 
-       * res_odbc: Remove deprecated settings from sample configuration file
+         Change-Id: Id3952f7cfa1b6683b9954f2c5d2352d2f11059ce
 
-         ASTERISK-26704 #close
-         Reported by: Anthony Messina
+2017-02-13 17:11 +0000 [473813311b]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I976a1f94cf79c5f31e76174c61f5c6a65fd6354f
+       * pjproject: Fixes to resolve DNS SRV crashes.
 
-2017-02-01 15:56 +0000 [3aee199913]  Sean Bright <sean.bright@gmail.com>
+         * Re #1945 (misc): Don't trigger SRV complete callback when there is a
+         parse error.
 
-       * audiohooks:  Muting a hook can mute underlying frames
+         * srv_resolver.c: Don't try to send query if already considered resolved.
 
-         If an audiohook is placed on a channel that does not require transcoding,
-         muting that hook will cause the underlying frames to be muted as well.
+         ** In resolve_hostnames() don't try to resolve a query that is already
+         considered resolved.
 
-         The original patch is from David Woolley but I have modified slightly.
+         ** In resolve_hostnames() fix DNS typo in comments.
 
-         ASTERISK-21094 #close
-         Reported by: David Woolley
-         Patches:
-               ASTERISK-21094-Patch-1.8-1.txt (license #5737) patch uploaded
-               by David Woolley
+         ** In build_server_entries() move a common expression assigning to cnt
+         earlier.
 
-         Change-Id: Ib2b68c6283e227cbeb5fa478b2d0f625dae338ed
+         * sip_transport.c: Fix tdata object name to actually contain the pointer.
 
-2017-02-01 13:54 +0000 [6492e91392]  Mark Michelson <mmichelson@digium.com>
+         It helps if the logs referencing a tdata object buffer actually have a
+         name that includes the correct pointer as part of the name.  Also since
+         the tdata has its own pool it helps if any logs referencing the pool have
+         the same name as the tdata object.  This change brings tdata logging in
+         line with how tsx objects are named.
 
-       * Update qualifies when AOR configuration changes.
+         ASTERISK-26669 #close
+         ASTERISK-26738 #close
 
-         Prior to this change, qualifies would only update in the following
-         cases:
-         * A reload of res_pjsip.so was issued.
-         * A dynamic contact was re-registered after its AOR's qualify_frequency
-           had been changed
-         This does not work well if you are using realtime for your AORs. You can
-         update your database to have a new qualify_frequency, but the permanent
-         contacts on that AOR will not have their qualifies updated. And the
-         dynamic contacts on that AOR will not have their qualifies updated until
-         the next registration, which could be a long time.
+         Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af
 
-         This change seeks to fix this problem by making it so that whenever AOR
-         configuration is applied, the contacts pertaining to that AOR have their
-         qualifies updated.
+2017-02-06 14:26 +0000 [d58fdae811]  Richard Mudgett <rmudgett@digium.com>
 
-         Additions from this patch:
-         * AOR sorcery objects now have an apply handler that calls into a newly
-           added function in the OPTIONS code. This causes all contacts
-           associated with that AOR to re-schedule qualifies.
-         * When it is time to qualify a contact, the OPTIONS code checks to see
-           if the AOR can still be retrieved. If not, then qualification is
-           canceled on the contact.
+       * pjsip_distributor.c: Update some debug messages to get transaction name.
 
-         Alterations from this patch:
-         * The registrar code no longer updates contact's qualify_frequence and
-           qualify_timeout. There is no point to this since those values already
-           get updated when the AOR changes.
-         * Reloading res_pjsip.so no longer calls the OPTIONS initialization
-           function. Reloading res_pjsip.so results in re-loading AORs, which
-           results in re-scheduling qualifies.
+         * Removed overloaded unmatched response ignore.  We obviously sent the
+         request so we shouldn't ignore it because it isn't new work.
 
-         Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121
+         ASTERISK-26669
+         ASTERISK-26738
 
-2017-01-31 18:28 +0000 [43f0ff4b69]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37
 
-       * channel.c: Fix unbalanced read queue deadlocking local channels.
+2017-02-04 16:00 +0000 [eb9ae4f7cb]  Richard Mudgett <rmudgett@digium.com>
 
-         Using the timerfd timing module can cause channel freezing, lingering, or
-         deadlock issues.  The problem is because this is the only timing module
-         that uses an associated alert-pipe.  When the alert-pipe becomes
-         unbalanced with respect to the number of frames in the read queue bad
-         things can happen.  If the alert-pipe has fewer alerts queued than the
-         read queue then nothing might wake up the thread to handle received frames
-         from the channel driver.  For local channels this is the only way to wake
-         up the thread to handle received frames.  Being unbalanced in the other
-         direction is less of an issue as it will cause unnecessary reads into the
-         channel driver.
+       * res_pjsip: Record the serializer earlier on the tdata.
 
-         ASTERISK-26716 is an example of this deadlock which was indirectly fixed
-         by the change that found the need for this patch.
+         When PJPROJECT needs to do a DNS resolution and there is not a cached
+         entry available, the SIP request message goes out on the PJSIP monitor
+         thread instead of the original serializer thread.  Thus when the response
+         comes back it does not get processed by the original sending serializer.
 
-         * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue
-         did not add the same number of alerts to the alert-pipe.  Correspondingly,
-         when there is an exceptionally long queue event, any removed frames did
-         not also remove the corresponding number of alerts from the alert-pipe.
+         This patch records the serializer on tdata before passing a request
+         message to PJPROJECT where it can in Asterisk code.  There are several
+         places in PJPROJECT for outbound registration and publishing support that
+         would need to record the serializer.  Unfortunately, without replacing the
+         PJPROJECT DNS resolver as was done in v14 we cannot fix those without
+         modifying PJPROJECT.
 
-         ASTERISK-26632 #close
+         Even if we backported the DNS resolver from v14, the outbound registration
+         refresh timer does not go out on a serializer thread but the PJSIP monitor
+         thread.  Fortunately, Asterisk's outbound publish support doesn't use the
+         auto refresh timer that would also not go out under the serializer thread.
 
-         Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6
+         This patch is v13 only.
 
-2017-01-31 16:38 +0000 [a199f94908]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26669
+         ASTERISK-26738
 
-       * res_agi: Prevent an AGI from eating frames it should not. (Re-do)
+         Change-Id: I9997b9ed6dbcebd2c37d6a67dc6dcee9c78914a4
 
-         A dialplan intercept routine is equivalent to an interrupt routine.  As
-         such, the routine must be done quickly and you do not have access to the
-         media stream.  These restrictions are necessary because the media stream
-         is the responsibility of some other code and interfering with or delaying
-         that processing is bad.  A possible future dialplan processing
-         architecture change may allow the interception routine to run in a
-         different thread from the main thread handling the media and remove the
-         execution time restriction.
+2017-02-20 13:38 +0000 [57f19d6efb]  Richard Mudgett <rmudgett@digium.com>
 
-         * Made res_agi.c:run_agi() running an AGI in an interception routine run
-         in DeadAGI mode.  No touchy channel frames.
+       * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs.
 
-         ASTERISK-25951
+         ASTERISK-26669
+         ASTERISK-26738
 
-         ASTERISK-26343
+         Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0
 
-         ASTERISK-26716
+2017-02-20 06:28 +0000 [47daca8a2b]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43
+       * app_voicemail: vm_authenticate accesses uninitialized memory
 
-2017-01-31 16:32 +0000 [6bed318a66]  Richard Mudgett <rmudgett@digium.com>
-
-       * Frame deferral: Revert API refactoring.
+         vm_authenticate doesn't always set the passed ast_vm_user argument, so
+         we initialize to 0 before passing it in.
 
-         There are several issues with deferring frames that are caused by the
-         refactoring.
+         ASTERISK-25893 #close
+         Reported by: Filip Jenicek
 
-         1) The code deferring frames mishandles adding a deferred frame to the
-         deferred queue.  As a result the deferred queue can only be one frame
-         long.
+         Change-Id: Ia3cc0128f93d352ed9add8d5c2f0f7232c2cbe4a
 
-         2) Deferrable frames can come directly from the channel driver as well as
-         the read queue.  These frames need to be added to the deferred queue.
+2017-02-20 11:19 +0000 [06214173a9]  Joshua Colp <jcolp@digium.com>
 
-         3) Whoever is deferring frames is really only doing the __ast_read() to
-         collect deferred frames and doesn't care about the returned frames except
-         to detect a hangup event.  When frame deferral is completed we must make
-         the normal frame processing see the hangup as a frame anyway.  As such,
-         there is no need to have varying hangup frame deferral methods.  We also
-         need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real.
-         That fake hangup is to cause the PBX thread to break out of loops to go
-         execute a new dialplan location.
+       * Revert "build: Execute ldconfig to build cache."
 
-         4) To properly deal with deferrable frames from the channel driver as
-         pointed out by (2) above, means that it is possible to process a dialplan
-         interception routine while frames are deferred because of the
-         AST_CONTROL_READ_ACTION control frame.  Deferring frames is not
-         implemented as a re-entrant operation so you could have the unsupported
-         case of two sections of code thinking they have control of the media
-         stream.
+         This reverts commit e910dbab90ef3d628955c49f441b2c9dda1f222c.
 
-         A worse problem is because of the bad implementation of the AMI PlayDTMF
-         action.  It can cause two threads to be deferring frames on the same
-         channel at the same time.  (ASTERISK_25940)
+         Change-Id: I242aa0a965a79738dc898299959c6d2e020c86bd
 
-         * Rather than fix all these problems simply revert the API refactoring as
-         there is going to be only autoservice and safe_sleep deferring frames
-         anyway.
+2017-02-20 08:04 +0000 [c9ea98f9bf]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26343
+       * pjproject cli:  Add object count after object lists
 
-         ASTERISK-26716 #close
+         When listing a container, we now print the number of objects
+         in the container at the end of the list.
 
-         Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496
+         Change-Id: I791cbc3ee9da9a2af9adc655164b5d32953df812
 
-2017-01-31 11:17 +0000 [e371e13b9e]  Joshua Colp <jcolp@digium.com>
+2017-02-20 05:53 +0000 [d8972f50f4]  Sean Bright <sean.bright@gmail.com>
 
-       * res_pjsip: Handle invocation of callback on outgoing request when error occurs.
+       * res_config_ldap: Don't try to delete non-existent attributes
 
-         There are some error cases in PJSIP when sending a request that will
-         result in the callback for the request being invoked.  The code did not
-         handle this case and assumed on every error case that the callback was not
-         invoked.
+         OpenLDAP will raise an error when we try to delete an LDAP attribute
+         that doesn't exist. We need to filter out LDAP_MOD_DELETE requests
+         based on which attributes the current LDAP entry actually has. There
+         is of course a small window of opportunity for this to still fail,
+         but it is much less likely now.
 
-         The code has been changed to check whether the callback has been invoked
-         and if so to absorb the error and treat it as a success.
+         Change-Id: I3fe1b04472733e43151563aaf9f8b49980273e6b
 
-         ASTERISK-26679
-         ASTERISK-26699
+2017-02-20 05:49 +0000 [b980cae1f7]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91
+       * res_config_ldap: Remove extraneous line numbers from log messages
 
-2017-01-30 09:02 +0000 [339c30f2b6]  Sean Bright <sean.bright@gmail.com>
+         Extraneous line numbers were being output in many log messages. These
+         have been removed.
 
-       * res_rtp_asterisk:  Swap byte-order when sending signed linear
+         Change-Id: Ice9efa3d252ee87f37fa8f5ea852fda482675431
 
-         Before Asterisk 13, signed linear was converted into network byte order by a
-         smoother before being sent over the network. We restore this behavior by
-         forcing the creation of a smoother when slinear is in use and setting the
-         appropriate flags so that the byte order conversion is always done.
+2017-02-20 05:45 +0000 [011b7be62a]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-24858 #close
-         Reported-by: Frankie Chin
+       * res_config_ldap: Make memory allocation more consistent
 
-         Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9
+         The code in update_ldap() and update2_ldap() was using both Asterisk's
+         memory allocation routines as well as OpenLDAP's. I've changed it so
+         that everything that is passed to OpenLDAP's functions are allocated
+         with their routines.
 
-2017-01-31 12:46 +0000 [7fd28cefdb]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Iafec9c1fd8ea49ccc496d6316769a6a426daa804
 
-       * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts
+2017-02-20 05:30 +0000 [b2836dde7e]  Sean Bright <sean.bright@gmail.com>
 
-         Forgot to install it with the original patch
+       * res_config_ldap: Fix configuration inheritance from _general
 
-         Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c
+         The "_general" configuration section allows administrators to provide
+         both general configuration options (host, port, url, etc.) as well as a
+         global realtime-to-LDAP-attribute mapping that is a fallback if one of
+         the later sections do not override it. This neglected to exclude the
+         general configuration options from the mapping. As an example, during
+         my testing, chan_sip requested 'port' from realtime, and because I did
+         not have it defined, it pulled in the 'port' configuration option from
+         "_general." We now filter those out explicitly.
 
-2017-01-25 06:50 +0000 [456bc3c704]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I1fc61560bf96b8ba623063cfb7e0a49c4690d778
 
-       * debug_utilities:  Add ast_logescalator
+2017-02-20 05:27 +0000 [6d5e9993b2]  Sean Bright <sean.bright@gmail.com>
 
-         The escalator works by creating a set of startup commands in cli.conf
-         that set up logger channels and issue the debug commands for the
-         subsystems specified.  If asterisk is running when it is executed,
-         the same commands will be issued to the running instance.  The original
-         cli.conf is saved before any changes are made and can be restored by
-         executing '$prog --reset'.
+       * res_config_ldap: Fix erroneous LDAP_MOD_REPLACE in LDAP modify
 
-         The log output will be stored in...
-         $astlogdir/message.$uniqueid
-         $astlogdir/debug.$uniqueid
-         $astlogdir/dtmf.$uniqueid
-         $astlogdir/fax.$uniqueid
-         $astlogdir/security.$uniqueid
-         $astlogdir/pjsip_history.$uniqueid
-         $astlogdir/sip_history.$uniqueid
+         We always treat the first change of our modification batch as a
+         replacement when it sometimes is actually a delete. So we have to pass
+         the correct arguments to the OpenLDAP library.
 
-         Some minor tweaks were made to chan_sip, and res_pjsip_history
-         so their history output could be send to a log channel as packets
-         are captured.
+         ASTERISK-26580 #close
+         Reported by: Nicholas John Koch
+         Patches:
+               res_config_ldap.c-11.24.1.patch (license #6833) patch uploaded
+               by Nicholas John Koch
 
-         A minor tweak was also made to manager so events are output to verbose
-         when "manager set debug on" is issued.
+         Change-Id: I0741d25de07c9539f1edc6eff3696165dfb64fbe
 
-         Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543
+2017-02-15 11:55 +0000 [5b7c6678ae]  Sean Bright <sean.bright@gmail.com>
 
-2017-01-23 09:35 +0000 [54b027916a]  Torrey Searle <torrey@voxbone.com>
+       * res_config_sqlite3: Fix crash when loading with invalid config
 
-       * libastssl/pj: libastssl/pj should have an so_version
+         When ast_config_load() fails with CONFIG_STATUS_FILEINVALID, it has
+         already destroyed the ast_config struct for us. Trying to do it again
+         results in a crash.
 
-         Issue introduced in b59956a87.  In the non-darwin case libastssl/pj
-         should be versioned.  This causes the symbol file for this lib
-         to not be generated.
+         Change-Id: If6a5c0ca718ad428e01a1fb25beb209a9ac18bc6
 
-         Change-Id: Ib07ae8c40252813c488e2c1ac6204fd42816dd4c
+2017-02-17 16:57 +0000 [096496e13e]  Richard Mudgett <rmudgett@digium.com>
 
-2017-01-24 19:51 +0000 [3c8f84786e]  Kirill Katsnelson <kkm@smartaction.com>
+       * tcptls.c: Add some missing allocation failure checks.
 
-       * make_build_h: handle backslashes in external strings
+         Change-Id: I0ddf01cd3c10d3b6666d7bf68d4e206a37f4fbdb
 
-         LikewiseOpen creates user names with a backslash in them. A gentle
-         massage with sed(1) allows such strings to be inserted into build.h
-         properly quoted. I am also adding the same for host name and other
-         strings used in the script that are more or less user-controlled.
+2017-02-17 17:06 +0000 [047a1e7dcc]  Sean Bright <sean.bright@gmail.com>
 
-         ASTERISK-26754
+       * pjproject-bundled: Fix checksum verification when using cURL
 
-         Change-Id: Iac5ef2b67a68ee58f35ddbf86bb818ba6eabecae
+         ASTERISK-26802 #close
+         Reported by: Michael L. Young
 
-2017-01-17 20:46 +0000 [555e8cd2ba]  Kirill Katsnelson <kkm@smartaction.com>
+         Change-Id: Iad293080f55d4d69ab615717a15211d916eed613
 
-       * ast_careful_fwrite to support EPIPE gracefully
+2017-02-16 08:38 +0000 [2cd75fe311]  Sean Bright <sean.bright@gmail.com>
 
-         When a reading end of the network socket is closed by an AMI manager,
-         the EPIPE is signaled when writing to our end, resulting in the
-         spurious log error message
+       * realtime: Fix LIKE escaping in SQL backends
 
-           ast_careful_fwrite: fwrite() returned error: Broken pipe
+         The realtime framework allows for components to look up values using a
+         LIKE clause with similar syntax to SQL's. pbx_realtime uses this
+         functionality to search for pattern matching extensions that start with
+         an underscore (_).
 
-         Previously EPIPE was handled in ast_carefulwrite() a few lines above,
-         but not in this function.
+         When passing an underscore to SQL's LIKE clause, it will be interpreted
+         as a wildcard matching a single character and therefore needs to be
+         escaped. It is (for better or for worse) the responsibility of the
+         component that is querying realtime to escape it with a backslash before
+         passing it in. Some RDBMs support escape characters by default, but the
+         SQL92 standard explicitly says that there are no escape characters
+         unless they are specified with an ESCAPE clause, e.g.
 
-         ASTERISK-26753
+               SELECT * FROM table WHERE column LIKE '\_%' ESCAPE '\'
 
-         Change-Id: I6a67335cd6526608bb9b78f796c626b1677664b8
+         This patch instructs 3 backends - res_config_mysql, res_config_pgsql,
+         and res_config_sqlite3 - to use the ESCAPE clause where appropriate.
 
-2017-01-24 22:31 +0000 [be92f10a16]  Kirill Katsnelson <kkm@smartaction.com>
+         Looking through documentation and source tarballs, I was able to
+         determine that the ESCAPE clause is supported in:
 
-       * app_queue: Fix queues randomly disappearing on reload
+         MySQL 5.0.15   (released 2005-10-22 - earliest version available from
+                         archives)
+         PostgreSQL 7.1 (released 2001-04-13)
+         SQLite 3.1.0   (released 2005-01-21)
 
-         With 500+ queues and a reload every minute, a random queue disappears
-         upon reload. The cause is mususe of the 'dead' flag. Namely, all queues
-         were marked dead up front, and then "resurrected" by dropping this flag
-         for those found in the configuration. But a queue marked dead can be
-         removed also when control leaves the app entry point on a PBX thread.
+         The versions of the relevant libraries that we depend on to access MySQL
+         and PostgreSQL will not work on versions that old, and I've added an
+         explicit check in res_config_sqlite3 to only use the ESCAPE clause when
+         we have a sufficiently new version of SQLite3.
 
-         With this change, the queue is marked only not found, and at the end of
-         reload only the queues that are still not found are actually marked as
-         dead, so the dead flag is never reset, and set only on positively dead
-         queues.
+         res_config_odbc already handles the escape characters appropriately, so
+         no changes were required there.
 
-         ASTERISK-26755
+         ASTERISK-15858 #close
+         Reported by: Humberto Figuera
 
-         Change-Id: I3a4537aec9eb8d8aeeaa0193407e3523feb004bf
+         ASTERISK-26057 #close
+         Reported by: Stepan
 
-2017-01-26 07:57 +0000 [aae9df0643]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I93117fbb874189ae819f4a31222df7c82cd20efa
 
-       * res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving.
+2017-02-16 10:30 +0000 [e910dbab90]  Joshua Colp <jcolp@digium.com>
 
-         This change adds a missing unreference of the hostname when resolving and
-         also cleans up the iterator.
+       * build: Execute ldconfig to build cache.
 
-         ASTERISK-26735
+         On some platforms a multiarch approach is used for libraries.
+         The build system does not take this into account and still
+         places libraries into the lib directory if no --libdir is
+         specified to configure. On initial startup this results in
+         libasteriskssl.so not being found, as it is not in the multiarch
+         lib directory.
 
-         Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a
+         This change does the minimally invasive thing and executes
+         ldconfig so that the libraries in the lib directory are found
+         and their location cached. By doing so Asterisk starts up fine.
 
-2017-01-25 15:26 +0000 [9e3150b98d]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-26705
 
-       * Add reload options to CLI/AMI stale object commands.
+         Change-Id: I6d30b6427e9d5e69470e11327c7ff203fa7da519
 
-         Marking an object as stale in a memory cache is supposed to prime the
-         cache so that the next time the item is retrieved, the stale item is
-         deleted from the cache and a background task is run to re-populate the
-         cache with a fresh version of the object.
+2017-02-16 05:46 +0000 [9b02bbfa88]  Sean Bright <sean.bright@gmail.com>
 
-         The problem is, there are some object types out there for which there is
-         no natural reason that they would be retrieved from the backend with any
-         regularity. Outbound PJSIP registrations are a good example of this. At
-         startup, they are read, and an object-specific state is created that
-         refers to the initially-retrieved object for all time.
+       * res_config_sqlite3: Properly create missing columns when necessary
 
-         Adding the "reload" option to the CLI/AMI commands gives the cache the
-         opportunity to manually re-retrieve the object from the backend, both
-         storing the new object in the cache and applying the new object's
-         configuration to the module that uses that object.
+         There were two specific issues resolved here:
 
-         Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8
+         1) The code that iterated over the required fields
+            (via ast_realtime_require) was broken for the RQ_INTEGER1 field
+            type. Iteration would stop when the first RQ_INTEGER1 (0) field
+            was encountered.
 
-2017-01-10 17:39 +0000 [c54f9d2bf0]  Richard Mudgett <rmudgett@digium.com>
+         2) sqlite3_changes() was used to try and count the number of rows
+            returned by a SELECT statement. sqlite3_changes() only counts
+            affected rows, so this was always returning the value from the
+            most recent data modification statement. We now separate read-only
+            queries from data modification queries and count rows appropriately
+            in both cases.
 
-       * T.140: Fix format ref and memory leaks.
+         ASTERISK-23457 #close
+         Reported by: Scott Griepentrog
 
-         * channel.c:ast_sendtext(): Fix T.140 SendText memory leak.
+         Change-Id: I91ed20494efc3fcfbc2a96ac7646999a49814884
 
-         * format_compatibility.c: T.140 RED and T.140 were swapped.
+2017-02-15 14:44 +0000 [0fc27fa364]  Joshua Elson <joshelson@gmail.com>
 
-         * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak.
+       * http: Ensure capath is defined on all http creations
 
-         * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic
-         scheduled red_write().
+         ASTERISK-26794 #close
 
-         * res_rtp_asterisk.c: Some other minor misc tweaks.
+         Change-Id: I9cbc3b6b6a8aab590f5ccde9c262a98e4d5253a1
 
-         Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb
+2017-02-15 23:09 +0000 [7aa731c1c7]  Igor Goncharovsky <igor.goncharovsky@gmail.com>
 
-2017-01-24 15:39 +0000 [a2f0adccbd]  Joshua Colp <jcolp@digium.com>
+       * chan_unistim: fix char type to have consistent behavior on ARM
 
-       * res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0.
+         There is difference exists in behaviour of char type on x86 and ARM.
+         On x86 by default char variable type means signed char, but in ARM
+         unsigned char used. This make binary calculations and negative values
+         works wrong on ARM.
 
-         When configuring a match using a netmask the error variable was
-         not defaulting to 0. For some people this would cause the code
-         to think an error occurred when adding the match when in reality
-         it added perfectly fine.
+         This patch change type of char variables used for store negative
+         values and binary calculations to signed char.
 
-         ASTERISK-26693
+         ASTERISK-26714
 
-         Change-Id: I850c250813742bddde65c84e739093c9e01dfe56
+         Change-Id: Id78716dee9568a58419d4ef63c038affc3dfc7ab
 
-2017-01-10 17:37 +0000 [607b3ac736]  Richard Mudgett <rmudgett@digium.com>
+2017-02-07 13:17 +0000 [be77b845d9]  George Joseph <gjoseph@digium.com>
 
-       * astobj2.c: Add excessive ref count trap.
+       * res_pjsip_pubsub:  Correctly implement persisted subscriptions
 
-         Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a
+         This patch fixes 2 original issues and more that those 2 exposed.
 
-2017-01-10 13:11 +0000 [ab8cb5a7ce]  Richard Mudgett <rmudgett@digium.com>
+         * When we send a NOTIFY, and the client either doesn't respond or
+           responds with a non OK, pjproject only calls our
+           pubsub_on_evsub_state callback, no others.  Since
+           pubsub_on_evsub_state (which does the sub_tree cleanup) does not
+           expect to be called back without the other callbacks being called
+           first, it just returns leaving the sub_tree orphaned.  Now
+           pubsub_on_evsub_state checks the event for PJSIP_EVENT_TSX_STATE
+           which is what pjproject will set to tell us that it was the
+           transaction that timed out or failed and not the subscription
+           itself timing our or being terminated by the client. If is
+           TSX_STATE, pubsub_on_evsub_state now does the proper cleanup
+           regardless of the state of the subscription.
 
-       * main/app.c: Memory corruption from early format destruction.
+         * When a client renews a subscription, we don't update the
+           persisted subscription with the new expires timestamp.  This causes
+           subscription_persistence_recreate to prune the subscription if/when
+           asterisk restarts.  Now, pubsub_on_rx_refresh calls
+           subscription_persistence_update to apply the new expires timestamp.
+           This exposed other issues however...
 
-         * make_silence() created a malloced silence slin frame without adding a
-         slin format ref.  When the frame is destroyed it will unref the slin
-         format that never had a ref added.  Memory corruption is expected to
-         follow.
+         * When creating a dialog from rdata (which sub_persistence_recreate
+           does from the packet buffer) there must NOT be a tag on the To
+           header (which there will be when a client refreshes a
+           subscription).  If there is one, pjsip_dlg_create_uas will fail.
+           To address this, subscription_persistence_update now accepts a flag
+           that indicates that the original packet buffer must not be updated.
+           New subscribes don't set the flag and renews do.  This makes sure
+           that when the rdata is recreated on asterisk startup, it's done
+           from the original subscribe packet which won't have the tag on To.
 
-         * Simplified and fixed counting the number of samples in a frame list for
-         make_silence().
+         * When creating a dialog from rdata, we were setting the dialog's
+           remote (SUBSCRIBE) cseq to be the same as the local (NOTIFY) cseq.
+           When the client tried to resubscribe after a restart with the
+           correct cseq, we'd reject the request with an Invalid CSeq error.
 
-         * Eliminated an unnecessary RAII_VAR associated with the make_silence()
-         frame.
+         * The acts of creating a dialog and evsub by themselves when
+           recreating a subscription does NOT restart pjproject's subscription
+           timer.  The result was that even if we did correctly recreate the
+           subscription, we never removed it if the client happened to go away
+           or send a non-OK response to a NOTIFY.  However, there is no
+           pjproject function exposed to just set the timer on an evsub that
+           wasn't created by an incoming subscribe request.  To address this,
+           we create our own timer using ast_sip_schedule_task.  This timer is
+           used only for re-establishing subscriptions after a restart.
 
-         Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747
+           An earlier approach was to add support for setting pjproject's
+           timer (via a pjproject patch) and while that patch is still included
+           here, we don't use that call at the moment.
 
-2017-01-11 14:59 +0000 [dcd8e4b1a0]  Richard Mudgett <rmudgett@digium.com>
+         While addressing these issues, additional debugging was added and
+         some existing messages made more useful.  A few formatting changes
+         were also made to 'pjsip show scheduled tasks' to make displaying
+         the subscription timers a little more friendly.
 
-       * frame.c: Fix off-nominal format ref leaks.
+         ASTERISK-26696
+         ASTERISK-26756
 
-         * ast_frisolate() could leak frame format refs on allocation
-         failures.
+         Change-Id: I8c605fc1e3923f466a74db087d5ab6f90abce68e
 
-         * Similified code in ast_frisolate() and code used by
-         ast_frisolate().
+2017-02-15 11:03 +0000 [73133d5354]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d
+       * res_rtp_asterisk: Use PJ_ICE_MAX_CAND instead of hard-coding 16
 
-2017-01-13 19:08 +0000 [00a227e93d]  Richard Mudgett <rmudgett@digium.com>
+         pjsip limits the total number of ICE candidates to PJ_ICE_MAX_CAND,
+         which is a compile-time constant. Instead of hard-coding 16 when we
+         enumerate local interfaces, use PJ_ICE_MAX_CAND so that we can
+         potentially collect more interfaces if the compile time options are
+         changed.
 
-       * stasis_bridge.c: Fix off-nominal stasis control ref leak.
+         Tangentially related to ASTERISK~24464
 
-         Change-Id: Ib17218343a6596832060180e19386da9df150ac8
+         Change-Id: I1b85509e39e33b1fed63c86261fc229ba14bbabd
 
-2017-01-10 12:30 +0000 [38a2021c68]  Richard Mudgett <rmudgett@digium.com>
+2017-02-03 02:25 +0000 [99b40e72ae]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-       * res_musiconhold.c: Fix format ref leak when parsing MOH config class.
+       * libasteriskssl: do nothing with OpenSSL >= 1.1
 
-         Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5
+         OpenSSL 1.1 requires no explicit initialization. The hacks in the
+         library are not needed. They also happen to fail running Asterisk.
 
-2017-01-10 14:03 +0000 [ab7a9fc5b2]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26109 #close
 
-       * chan_oss.c: Fix format ref leak in oss_read().
+         Change-Id: I3b3efd5d80234a4c45a8ee58dcfe25b15d9ad100
 
-         Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0
+2017-02-13 16:50 +0000 [4c31e03e80]  Sean Bright <sean.bright@gmail.com>
 
-2017-01-10 17:48 +0000 [1484a991e1]  Richard Mudgett <rmudgett@digium.com>
+       * app_voicemail: Allow 'Comedian Mail' branding to be overriden
 
-       * Add notes about embedded ast_frame structs holding a format ref.
+         Original patch by John Covert, slight modifications by me.
 
-         mod_format.h: Note ast_filestream.fr holds a format ref.
+         ASTERISK-17428 #close
+         Reported by: John Covert
+         Patches:
+               app_voicemail.c.patch (license #5512) patch uploaded by
+                 John Covert
 
-         translate.h: Note ast_trans_pvt.f holds a format ref.
+         Change-Id: Ic3361b0782e5a5397a19ab18eb8550923a9bd6a6
 
-         Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749
+2017-01-20 23:59 +0000 [e97e50b68b]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-2017-01-19 09:05 +0000 [17f4989d49]  gtjoseph <gjoseph@digium.com>
+       * tcptls: use TLS_client_method with OpenSSL 1.1
 
-       * ari: Implement 'debug all' and request/response logging
+         OpenSSL 1.1 introduced TLS_client_method() and deprecated the previous
+         version-specific methods (such as TLSv1_client_method(). Other than
+         being simpler to use and more correct (gain support for TLS newer that
+         TLS1, in our case), the older ones produce a deprecation warning that
+         fails the build in dev-mode.
 
-         The 'ari set debug' command has been enhanced to accept 'all' as an
-         application name.  This allows dumping of all apps even if an app
-         hasn't registered yet.  To accomplish this, a new global_debug global
-         variable was added to res/stasis/app.c and new APIs were added to
-         set and query the value.
+         ASTERISK-26109 #close
 
-         'ari set debug' now displays requests and responses as well as events.
-         This required refactoring the existing debug code.
+         Change-Id: I257b1c8afd09dcb0d96cda3a41cb9f7a15d0ba07
 
-         * The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
-           to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
-         * In order to print the body of incoming requests even if a request
-           failed, the consumption of the body was moved from the ari stubs
-           to ast_ari_callback in res_ari.c and the moustache templates were
-           then regenerated.  The body is now passed to ast_ari_invoke and then
-           on to the handlers.  This results in code savings since that template
-           was inserted multiple times into all the stubs.
+2017-01-20 23:57 +0000 [0d555f0d81]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         An additional change was made to the ao2_str_container implementation
-         to add partial key searching and a sort function.  The existing cli
-         code assumed it was already there when it wasn't so the tab completion
-         was never working.
+       * openssl 1.1 support: use OPENSSL_VERSION_NUMBER
 
-         Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
+         Use OPENSSL_VERSION_NUMBER instead of OPENSSL_API_COMPAT to detect
+         the openssl 1.1 API.
 
-2017-01-20 21:13 +0000 [30cb4eb57f]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26109 #close
 
-       * PJPROJECT logging: Fix detection of max supported log level.
+         Change-Id: I4e448f55ef516aedf6ad154037c35577a421a458
 
-         The mechanism used for detecting the maximum log level compiled into the
-         linked pjproject did not work.  The API call simply stores the requested
-         level into an integer and does no range checking.  Asterisk was assuming
-         that there was range checking and limited the new value to the allowable
-         range.  To get the actual maximum log level compiled into the linked
-         pjproject we need to get and save off the initial set log level from
-         pjproject.  This is the maximum log level supported.
+2017-01-25 16:25 +0000 [9d34df9a5e]  Ryan Rittgarn <rrittgarn@techpro.com>
 
-         * Get and save off the initial log level setting before altering it to the
-         desired level on startup.  This has to be done by a macro rather than
-         calling a core function to avoid incorrectly linking pjproject.
+       * app_voicemail: VoiceMailPlayMsg did not play database stored messages
 
-         * Split the initial log level warning messages to warn if the linked
-         pjproject cannot support the requested startup level and if it is too low
-         to get the pjproject buildopts for "pjproject show buildopts".
+         When attempting to use VoiceMailPlayMsg with a realtime data backend
+         the message is located, but never retrieved. This patch adds the
+         required RETRIEVE and DISPOSE calls that will fetch the message from
+         the database (and IMAP storage as well for that matter).
 
-         * Adjust the CLI "pjproject set log level" to check the saved max log
-         level and to generate normal output messages instead of a warning message.
+         Also, removed extraneous make_file call.
 
-         ASTERISK-26743 #close
+         ASTERISK-26723 #close
 
-         Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
+         Change-Id: I1e122dd53c0f3d7faa10f3c2b7e7e76a47d51b8c
 
-2017-01-21 14:43 +0000 [cd2677f966]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+2017-02-14 08:12 +0000 [f99e5f4de4]  Sean Bright <sean.bright@gmail.com>
 
-       * tests: use datadir for sound files
+       * app_record: Add option to prevent silence from being truncated
 
-         Some (voicemail-related) tests API symlinks beep.gsm and other files
-         from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR.
+         When using Record() with the silence detection feature, the stream is
+         written out to the given file. However, if only 'silence' is detected,
+         this file is then truncated to the first second of the recording.
 
-         ASTERISK-26740 #close
+         This patch adds the 'u' option to Record() to override that behavior.
 
-         Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89
+         ASTERISK-18286 #close
+         Reported by: var
+         Patches:
+               app_record-1.8.7.1.diff (license #6184) patch uploaded by var
 
-2017-01-20 23:41 +0000 [b62f84bfb1]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: Ia1cd163483235efe2db05e52f39054288553b957
 
-       * test_voicemail_api: order of params to VERIFY macros
+2017-02-11 09:57 +0000 [ea8a610776]  Sean Bright <sean.bright@gmail.com>
 
-         Fix order of parameters in calls to VM_API_INT_VERIFY and
-         VM_API_STRING_VERIFY
+       * cli: Fix various CLI documentation and completion issues
 
-         ASTERISK-26739 #close
+         * app_minivm: Use built-in completion facilities to complete optional
+         arguments.
 
-         Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6
-         Note: status: builds. Not tested any further.
+         * app_voicemail: Use built-in completion facilities to complete
+         optional arguments.
 
-2017-01-05 13:21 +0000 [e3dcb9ddd9]  Richard Mudgett <rmudgett@digium.com>
+         * app_confbridge: Add missing colons after 'Usage' text.
 
-       * res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands.
+         * chan_alsa: Use built-in completion facilities to complete optional
+         arguments.
 
-         ASTERISK-23828 #close
+         * chan_sip: Use built-in completion facilities to complete optional
+         arguments. Add completions for 'load' for 'sip show user', 'sip show
+         peer', and 'sip qualify peer.'
 
-         Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567
+         * chan_skinny: Correct and extend completions for 'skinny reset' and
+         'skinny show line.'
 
-2017-01-23 16:18 +0000 [75497c33ea]  Mark Michelson <mmichelson@digium.com>
+         * func_odbc: Correct completions for 'odbc read' and 'odbc write'
 
-       * Free endpoint ACLs when destroying PJSIP endpoints.
+         * main/asterisk: Correct and extend completions for 'core show file
+         version.'
 
-         If endpoint ACLs were specified, they were not being freed
-         when endpoints were destroyed. On systems with realtime endpoints, this
-         could add up quickly since each DB lookup would allocate the ACL without
-         freeing it.
+         * main/astmm: Use built-in completion facilities to complete arguments
+         for 'memory' commands.
 
-         ASTERISK-26731 #close
-         Reported by Ustinov Artem
+         * main/bridge: Correct completions for 'bridge kick.'
 
-         Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad
+         * main/ccss: Use built-in completion facilities to complete arguments
+         for 'cc cancel' command.
 
-2017-01-23 09:10 +0000 [177e81ee47]  gtjoseph <gjoseph@digium.com>
+         * main/cli: Add 'all' completion for 'channel request hangup.' Correct
+         completions for 'core set debug channel.' Correct completions for 'core
+         show calls.'
 
-       * pjproject_bundled: Fix setting max log level
+         * main/pbx_app: Remove redundant completions for 'core show
+         applications.'
 
-         An earlier attempt to prevent pjsua from spitting out an extra 6795
-         lines of debug output every time the testsuite called it was also
-         turning off the ability for asterisk to output debug info when it
-         needed to.  This patch reverts the earlier fix and instead adds
-         a pjproject patch that sets the startup log level to 1 for pjsua
-         pjsystest and the pjsua python binding.  This is an asterisk-only
-         patch that does not affect pjproject functionality and will not be
-         submitted upstream.
+         * main/pbx_hangup_handler: Remove unused completions for 'core show
+         hanguphandlers all.'
 
-         Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8
+         * res_sorcery_memory_cache: Add completion for 'reload' argument of
+         'sorcery memory cache stale' and properly implement.
 
-2017-01-23 10:08 +0000 [6d23b2e360]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Iee58c7392f6fec34ad9d596109117af87697bbca
 
-       * res_pjsip_endpoint_identifier_ip: Read settings before resolving.
+2017-01-13 11:21 +0000 [17030100ca]  Norbert Varga <vnorbix@gmail.com>
 
-         An option has been added, srv_lookups, which controls whether
-         SRV lookups are performed on the provided match hosts or not.
-         It was possible for this option to be applied after resolution
-         had already happened.
+       * chan_pjsip: Multidomain endpoint finding on call
 
-         This change makes it so hosts are stored away, settings are read
-         and applied, and then resolution is done. This ensures that no
-         matter the ordering the srv_lookups option is in effect.
+         When PJSIP tries to call an endpoint with a domain (e.g. 1000@test.com),
+         the user part is stripped down as it would be a trunk with a specified user,
+         and only the host part is called as a PJSIP endpoint and can't be found.
+         This is not correct in the case of a multidomain SIP account, so the stripping
+         after the @ sign is done only if the whole endpoint (in multidomain case
+         1000@test.com) can't be found.
 
-         ASTERISK-26735
+         ASTERISK-26248
 
-         Change-Id: I750378cb277be0140f8c5539450270afbfc43388
+         Change-Id: I3a2dd6f57f3bd042df46b961eccd81d31ab202e6
 
-2017-01-22 17:25 +0000 [a969bf3577]  Richard Mudgett <rmudgett@digium.com>
+2017-02-13 05:05 +0000 [18f1b52601]  Joshua Colp <jcolp@digium.com>
 
-       * LISTFILTER: Remove outdated ERROR message.
+       * channel: Protect flags in ast_waitfor_nandfds operation.
 
-         Feeding LISTFILTER an empty variable results in an invalid ERROR message.
-         Earlier changes made the message useless because we can no longer tell if
-         the variable is empty or does not exist.  It is valid to try to remove a
-         value from an empty list just as it is valid to try to remove a value that
-         is not in a non-empty list.
+         The ast_waitfor_nandfds operation will manipulate the flags
+         of channels passed in. This was previously done without
+         the channel lock being held. This could result in incorrect
+         values existing for the flags if another thread manipulated
+         the flags at the same time.
 
-         * Removed the outdated ERROR message.
+         This change locks the channel during flag manipulation.
 
-         * Added more test cases to the LISTFILTER unit test.
+         ASTERISK-26788
 
-         Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134
+         Change-Id: I2c5c8edec17c9bdad4a93291576838cb552ca5ed
 
-2017-01-05 15:11 +0000 [3890337e7a]  Richard Mudgett <rmudgett@digium.com>
+2017-02-11 11:25 +0000 [a46a21642e]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_pubsub.c: Fix AMI event list counts.
+       * res_pjsip.c: Fix inconsistency between warning and action.
 
-         Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound,
-         and PJSIPShowResourceLists actions event counts.  The reported counts may
-         not necessarily be accurate depending on what happens.
+         The original return value corresponded to AST_SIP_AUTHENTICATION_CHALLENGE
+         but we have no authenticator registered to create the challenge.
 
-         The subscriptions count would be wrong if Asterisk ever has outbound
-         subscriptions.
+         Change-Id: I62368180d774b497411b80fbaabd0c80841f8512
 
-         The resource list count could be wrong if a list were added or removed
-         during the AMI action being processed.
+2017-02-11 11:26 +0000 [67b21dc63a]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I4344301827523fa174960a42c413fd19abe4aed5
+       * pjsip_distributor.c: Fix off-nominal tdata ref leak.
 
-2017-01-05 13:02 +0000 [fe4801c4f9]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I571f371d0956a8039b197b4dbd8af6b18843598d
 
-       * res_pjsip_pubsub.c: Fix incorrect message string wrapping.
+2017-02-09 10:01 +0000 [8936568515]  Sean Bright <sean.bright@gmail.com>
 
-         Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120
+       * manager: Restore Originate failure behavior from Asterisk 11
 
-2017-01-05 13:01 +0000 [46484b8730]  Richard Mudgett <rmudgett@digium.com>
+         In Asterisk 11, if the 'Originate' AMI command failed to connect the provided
+         Channel while in extension mode, a 'failed' extension would be looked up and
+         run. This was, I believe, unintentionally removed in 51b6c49. This patch
+         restores that behavior.
 
-       * res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage.
+         This also adds an enum for the various 'synchronous' modes in an attempt to
+         make them meaningful.
 
-         Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be
+         ASTERISK-26115 #close
+         Reported by: Nasir Iqbal
 
-2017-01-05 12:58 +0000 [8160474d7d]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I8afbd06725e99610e02adb529137d4800c05345d
 
-       * res_pjsip: alloca can never fail.
+2017-02-08 14:27 +0000 [2817f87d27]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1
+       * core: Cleanup some channel snapshot staging anomalies.
 
-2017-01-13 11:03 +0000 [c628a7acac]  gtjoseph <gjoseph@digium.com>
+         We shouldn't unlock the channel after starting a snapshot staging because
+         another thread may interfere and do its own snapshot staging.
 
-       * debug_utilities:  Create ast_loggrabber
+         * app_dial.c:dial_exec_full() made hold the channel lock while setting up
+         the outgoing channel staging.  Made hold the channel lock after the called
+         party answers while updating the caller channel staging.
 
-         ast_loggrabber gathers log files from customizable search patterns,
-         optionally converts POSIX timestamps to a readable format and
-         tarballs the results.
+         * chan_sip.c:sip_new() completed the channel staging on off-nominal exit.
+         Also we need to use ast_hangup() instead of ast_channel_unref() at that
+         location.
 
-         Also a few tweaks were made to ast_coredumper.
+         * channel.c:__ast_channel_alloc_ap() added a comment about not needing to
+         complete the channel snapshot staging on off-nominal exit paths.
 
-         Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495
-         (cherry picked from commit 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c)
+         * rtp_engine.c:ast_rtp_instance_set_stats_vars() made hold the channel
+         locks while staging the channels for the stats channel variables.
 
-2017-01-01 03:47 +0000 [e335b706ee]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Iefb6336893163f6447bad65568722ad5d5d8212a
 
-       * res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages.
+2017-02-10 09:35 +0000 [c7fcc4468f]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49
+       * configs/samples: Fix placement of 'identify' entry in sorcery.conf
 
-2017-01-12 15:58 +0000 [883e7fde31]  Kevin Harwell <kharwell@digium.com>
+         The entry for 'identify' was incorrectly placed in the
+         res_pjsip section when it should be in
+         res_pjsip_endpoint_identifier_ip.
 
-       * abstract/fixed/adpative jitter buffer: disallow frame re-inserts
+         ASTERISK-26785 #close
 
-         It was possible for a frame to be re-inserted into a jitter buffer after it
-         had been removed from it. A case when this happened was if a frame was read
-         out of the jitterbuffer, passed to the translation core, and then multiple
-         frames were returned from said translation core. Upon multiple frames being
-         returned the first is passed on, but sebsequently "chained" frames are put
-         back into the read queue. Thus it was possible for a frame to go back into
-         the jitter buffer where this would cause problems.
+         Change-Id: Ia1372b12a952bfe2df6b1b1e0e725ca306a5d41a
 
-         This patch adds a flag to frames that are inserted into the channel's read
-         queue after translation. The abstract jitter buffer code then checks for this
-         flag and ignores any frames marked as such.
+2017-02-08 11:50 +0000 [cbc23c31cf]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I276c44edc9dcff61e606242f71274265c7779587
+       * Revert "Update qualifies when AOR configuration changes."
 
-2017-01-13 21:23 +0000 [473330983b]  Richard Mudgett <rmudgett@digium.com>
+         This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f.
 
-       * taskprocessor.c: Change when high water warning logged.
+         The change in question was intended to prevent the need to reload in
+         order to update qualifies on contacts when an AOR changes. However, this
+         ended up causing a deadlock instead.
 
-         The task processor queue reached X scheduled tasks message was originally
-         intended to get logged only once per task processor to prevent spamming
-         the log.  This is no longer necessary since high and low water thresholds
-         can better control when the message is logged.
+         Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e
 
-         It is beneficial to generate the warning each time a task processor
-         reaches the high water level because PJSIP stops processing new requests
-         while any high water alert is active.  Without this change you would have
-         to enable at least debug level 3 logging to know about a repeated alert
-         trigger.
+2017-02-07 12:01 +0000 [7e14e086cf]  Joshua Colp <jcolp@digium.com>
 
-         * Made generate the warning message whenever a task is pushed into the
-         task processor that triggers the high water alert.
+       * srv: Fix crash when ast_srv_lookup is used and 0 records are returned.
 
-         * Appended 'again' to the warning for a repeated high water alert trigger.
+         When performing an SRV lookup using the ast_srv_lookup function it
+         did not properly handle the situation where 0 records are returned.
+         If this happened it would wrongly assume that at least one record
+         was present.
 
-         Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999
+         This change fixes the code so it will exit early if an error occurs
+         or if 0 records are returned.
 
-2017-01-10 05:54 +0000 [0047b1bc49]  Aaron An <anjb@ti-net.com.cn>
+         ASTERISK-26772
+         patches:
+           srv_lookup.patch submitted by nappsoft (license 6822)
 
-       * res_rtp_asterisk:  Fix bug in function CHANNEL(rtcp, all_rtt)
+         Change-Id: I09b19081c74e0ad11c12bf54a257243b1bcb2351
 
-         Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter)
-         always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and
-         "AST_RTP_STAT_STRCPY".
-         It should compare "combined" with "stat" not "current_stat".
+2017-02-06 11:40 +0000 [7b39d6901a]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26710 #close
-         Reported-by: Aaron An
-         Tested-by: AaronAn
+       * res_stasis_device_state: Protect the adding/removing of subscriptions.
 
-         Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15
+         The adding and removing of device state subscriptions did not protect
+         fully against simultaneous manipulation. In particular the subscribe
+         case allowed a small window where two subscriptions could be added for
+         the same device state instead of just one.
 
-2017-01-10 18:10 +0000 [47474cfd54]  gtjoseph <gjoseph@digium.com>
+         This change makes the code hold the subscriptions lock for the entirety
+         of each operation to ensure that two are not occurring at the same time.
 
-       * debug_utilities:  Create the ast_coredumper utility
+         ASTERISK-26770
 
-         This utility allows easy manipulation of asterisk coredumps.
+         Change-Id: I3e7f8eb9d09de440c9024d2dd52029f6f20e725b
 
-         * Configurable search paths and patterns for existing coredumps
-         * Can generate a consistent coredump from the running instance
-         * Can dump the lock_infos table from a coredump
-         * Dumps backtraces to separate files...
-           - thread apply 1 bt full -> <coredump>.thread1.txt
-           - thread apply all bt -> <coredump>.brief.txt
-           - thread apply all bt full -> <coredump>.full.txt
-           - lock_infos table -> <coredump>.locks.txt
-         * Can tarball corefiles and optionally delete them after processing
-         * Can tarball results files and optionally delete them after processing
-         * Converts ':' in coredump and results file names '-' to facilitate
-           uploading.  Jira for instance, won't accept file names with colons
-           in them.
+2017-02-01 17:56 +0000 [c384dfd6b0]  Richard Mudgett <rmudgett@digium.com>
 
-         Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1].
+       * res_pjsip: Fix some off nominal tdata leaks.
 
-         [1] For *BSDs, the "devel/gdb" package might have to be installed to
-         get a recent gdb.  The utility will check all instances of gdb
-         it finds in $PATH and if one isn't found that can run python, it
-         prints a friendly error.
+         Change-Id: I243a4be5e7fbfe604923764969c4ee04eee89b9d
 
-         Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd
+2017-02-02 11:26 +0000 [70aff89e5d]  Sean Bright <sean.bright@gmail.com>
 
-2017-01-08 10:29 +0000 [f8cd73ec3c]  gtjoseph <gjoseph@digium.com>
+       * res_odbc: Remove deprecated settings from sample configuration file
 
-       * pjproject_bundled:  Fix compilation with MALLOC_DEBUG
+         ASTERISK-26704 #close
+         Reported by: Anthony Messina
 
-         When MALLOC_DEBUG was specified, make was failing.  Immediately
-         remaking would work.  The issues was in the ordering of the make
-         dependencies.
+         Change-Id: I976a1f94cf79c5f31e76174c61f5c6a65fd6354f
 
-         Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
+2017-02-01 15:56 +0000 [3aee199913]  Sean Bright <sean.bright@gmail.com>
 
-2017-01-05 06:11 +0000 [37aaaa2da2]  Joshua Colp <jcolp@digium.com>
+       * audiohooks:  Muting a hook can mute underlying frames
 
-       * res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.
+         If an audiohook is placed on a channel that does not require transcoding,
+         muting that hook will cause the underlying frames to be muted as well.
 
-         This change implements SRV support for the IP based endpoint
-         identifier module. All possible addresses through SRV are looked
-         up and added as matches. If no SRV records are available a
-         fallback to normal host resolution is done. If an IP address
-         is provided then no SRV lookup occurs.
+         The original patch is from David Woolley but I have modified slightly.
 
-         This is configured using the "srv_lookups" option on the
-         identify section and defaults to "yes".
+         ASTERISK-21094 #close
+         Reported by: David Woolley
+         Patches:
+               ASTERISK-21094-Patch-1.8-1.txt (license #5737) patch uploaded
+               by David Woolley
 
-         ASTERISK-26693
+         Change-Id: Ib2b68c6283e227cbeb5fa478b2d0f625dae338ed
 
-         Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
+2017-02-01 13:54 +0000 [6492e91392]  Mark Michelson <mmichelson@digium.com>
 
-2016-12-22 09:13 +0000 [569dac8e50]  Alexander Traud <pabstraud@compuserve.com>
+       * Update qualifies when AOR configuration changes.
 
-       * res_pjsip_session: Access SIPDOMAIN via Dialplan.
+         Prior to this change, qualifies would only update in the following
+         cases:
+         * A reload of res_pjsip.so was issued.
+         * A dynamic contact was re-registered after its AOR's qualify_frequency
+           had been changed
+         This does not work well if you are using realtime for your AORs. You can
+         update your database to have a new qualify_frequency, but the permanent
+         contacts on that AOR will not have their qualifies updated. And the
+         dynamic contacts on that AOR will not have their qualifies updated until
+         the next registration, which could be a long time.
 
-         This feature was available in the SIP channel driver chan_sip. For example,
-         Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
-         local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
-         and dial remote SIP-URIs. This change here sets the SIP destination domain of
-         an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.
+         This change seeks to fix this problem by making it so that whenever AOR
+         configuration is applied, the contacts pertaining to that AOR have their
+         qualifies updated.
 
-         ASTERISK-26670 #close
+         Additions from this patch:
+         * AOR sorcery objects now have an apply handler that calls into a newly
+           added function in the OPTIONS code. This causes all contacts
+           associated with that AOR to re-schedule qualifies.
+         * When it is time to qualify a contact, the OPTIONS code checks to see
+           if the AOR can still be retrieved. If not, then qualification is
+           canceled on the contact.
 
-         Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
+         Alterations from this patch:
+         * The registrar code no longer updates contact's qualify_frequence and
+           qualify_timeout. There is no point to this since those values already
+           get updated when the AOR changes.
+         * Reloading res_pjsip.so no longer calls the OPTIONS initialization
+           function. Reloading res_pjsip.so results in re-loading AORs, which
+           results in re-scheduling qualifies.
 
-2017-01-04 05:50 +0000 [367128e70b]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121
 
-       * chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND.
+2017-01-31 18:28 +0000 [43f0ff4b69]  Richard Mudgett <rmudgett@digium.com>
 
-         After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats
-         but remember the joint format. Cached formats contain default parameters,
-         often create an empty fmtp line. However, a joint format might have passed
-         format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and
-         contain the resulting format parameters from a SDP negotiation.
+       * channel.c: Fix unbalanced read queue deadlocking local channels.
 
-         ASTERISK-26691 #close
+         Using the timerfd timing module can cause channel freezing, lingering, or
+         deadlock issues.  The problem is because this is the only timing module
+         that uses an associated alert-pipe.  When the alert-pipe becomes
+         unbalanced with respect to the number of frames in the read queue bad
+         things can happen.  If the alert-pipe has fewer alerts queued than the
+         read queue then nothing might wake up the thread to handle received frames
+         from the channel driver.  For local channels this is the only way to wake
+         up the thread to handle received frames.  Being unbalanced in the other
+         direction is less of an issue as it will cause unnecessary reads into the
+         channel driver.
 
-         Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc
+         ASTERISK-26716 is an example of this deadlock which was indirectly fixed
+         by the change that found the need for this patch.
 
-2017-01-03 15:14 +0000 [d7e5a747c3]  gtjoseph <gjoseph@digium.com>
+         * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue
+         did not add the same number of alerts to the alert-pipe.  Correspondingly,
+         when there is an exceptionally long queue event, any removed frames did
+         not also remove the corresponding number of alerts from the alert-pipe.
 
-       * pjproject_bundled:  Compile pjsua with max log level = 2
+         ASTERISK-26632 #close
 
-         A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6.
-         This allowed us to control the log level better from inside Asterisk.
-         An unfortunate side effect of this was that the pjsua binary and
-         python bindings were also compiled with log level set to 6 so whenever
-         a testsuite test that uses pjsua runs, it spits out 6795 lines of
-         debug in an instant even before the test starts.  I believe this
-         overruns the Jenkins capture buffer and prevents the test from
-         properly terminating.  In turn, this results in the testsuite just
-         hanging until the job is killed.  It's more frequent on the higher
-         end agents because they can spit out the messages faster.
+         Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6
 
-         Unfortunately, the messages are all spit out before we have control
-         of the python pj.Lib instance where we can set logging levels so the
-         only alternative was to actually compile pjsua and _pjsua.so with an
-         overridden PJ_LOG_MAX_LEVEL.  Although defining a lower max level was
-         done in the Makefile, the define in config_site.h had to be wrapped
-         with "#ifndef" so the change would take effect.
+2017-01-31 16:38 +0000 [a199f94908]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
+       * res_agi: Prevent an AGI from eating frames it should not. (Re-do)
 
-2016-12-22 16:00 +0000 [34e728cfb9]  Joshua Colp <jcolp@digium.com>
+         A dialplan intercept routine is equivalent to an interrupt routine.  As
+         such, the routine must be done quickly and you do not have access to the
+         media stream.  These restrictions are necessary because the media stream
+         is the responsibility of some other code and interfering with or delaying
+         that processing is bad.  A possible future dialplan processing
+         architecture change may allow the interception routine to run in a
+         different thread from the main thread handling the media and remove the
+         execution time restriction.
 
-       * chan_pjsip: Use session for retrieving CHANNEL() information.
+         * Made res_agi.c:run_agi() running an AGI in an interception routine run
+         in DeadAGI mode.  No touchy channel frames.
 
-         The CHANNEL() dialplan function implementation for PJSIP allows
-         querying of PJSIP specific information. This used the channel
-         passed in to get the PJSIP session and associated information.
-         It is possible for this channel to be masqueraded and end
-         up as a different channel type by the time the information
-         request is actually acted upon.
+         ASTERISK-25951
 
-         This change retrieves the PJSIP session safely and accesses
-         data from it (including channel). This provides a guarantee
-         that the session and channel will not be altered when the
-         request is being acted upon.
+         ASTERISK-26343
 
-         ASTERISK-26673
+         ASTERISK-26716
 
-         Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6
+         Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43
 
-2016-12-31 19:56 +0000 [a398f98b08]  Joshua Elson <joshelson@gmail.com>
+2017-01-31 16:32 +0000 [6bed318a66]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip: Fix known compact header issues
+       * Frame deferral: Revert API refactoring.
 
-         ASTERISK-26684 #close
+         There are several issues with deferring frames that are caused by the
+         refactoring.
 
-         Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a
+         1) The code deferring frames mishandles adding a deferred frame to the
+         deferred queue.  As a result the deferred queue can only be one frame
+         long.
 
-2016-12-30 09:10 +0000 [0ab9d103f6]  JoshE (license 6075)
+         2) Deferrable frames can come directly from the channel driver as well as
+         the read queue.  These frames need to be added to the deferred queue.
 
-       * res_pjsip_refer:  Handle compact Refer-To header.
+         3) Whoever is deferring frames is really only doing the __ast_read() to
+         collect deferred frames and doesn't care about the returned frames except
+         to detect a hangup event.  When frame deferral is completed we must make
+         the normal frame processing see the hangup as a frame anyway.  As such,
+         there is no need to have varying hangup frame deferral methods.  We also
+         need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real.
+         That fake hangup is to cause the PBX thread to break out of loops to go
+         execute a new dialplan location.
 
-         refer_incoming_refer_request needed to look for the "r" header as well
-         as the "Refer-To" header.
+         4) To properly deal with deferrable frames from the channel driver as
+         pointed out by (2) above, means that it is possible to process a dialplan
+         interception routine while frames are deferred because of the
+         AST_CONTROL_READ_ACTION control frame.  Deferring frames is not
+         implemented as a re-entrant operation so you could have the unsupported
+         case of two sections of code thinking they have control of the media
+         stream.
 
-         ASTERISK-26655 #close
-         patches:
-               refer_compact_fix.diff  submitted by JoshE (license 6075)
+         A worse problem is because of the bad implementation of the AMI PlayDTMF
+         action.  It can cause two threads to be deferring frames on the same
+         channel at the same time.  (ASTERISK_25940)
 
-         Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
+         * Rather than fix all these problems simply revert the API refactoring as
+         there is going to be only autoservice and safe_sleep deferring frames
+         anyway.
 
-2016-12-23 12:11 +0000 [21151408f7]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26343
 
-       * bridge_native_rtp.c: Minor code cleanups.
+         ASTERISK-26716 #close
 
-         In native_rtp_bridge_compatible_check()
+         Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496
 
-         * Made one variable declaration per line.
+2017-01-31 11:17 +0000 [e371e13b9e]  Joshua Colp <jcolp@digium.com>
 
-         * Extracted if test assignment to make the test easier to see.
+       * res_pjsip: Handle invocation of callback on outgoing request when error occurs.
 
-         * Made long if tests easier to see the combinatorial logic.
+         There are some error cases in PJSIP when sending a request that will
+         result in the callback for the request being invoked.  The code did not
+         handle this case and assumed on every error case that the callback was not
+         invoked.
 
-         * Added bridge id to a couple debug messages.
+         The code has been changed to check whether the callback has been invoked
+         and if so to absorb the error and treat it as a success.
 
-         Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad
+         ASTERISK-26679
+         ASTERISK-26699
 
-2016-12-23 12:10 +0000 [9dcf9e9cea]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91
 
-       * bridge_native_rtp.c: Fix native rtp bridge data race.
+2017-01-30 09:02 +0000 [339c30f2b6]  Sean Bright <sean.bright@gmail.com>
 
-         native_rtp_bridge_compatible() didn't lock the bridge channels before
-         checking the channels for native bridging ability.  As a result, one of
-         the channel's native format capabilities structure got replaced out from
-         under the native bridge check.  Use of a stale pointer to freed memory
-         causes bad things to happen.
+       * res_rtp_asterisk:  Swap byte-order when sending signed linear
 
-         MALLOC_DEBUG, DO_CRASH, and the
-         tests/channels/pjsip/transfers/blind_transfer/caller_direct_media
-         testsuite test caught this.
+         Before Asterisk 13, signed linear was converted into network byte order by a
+         smoother before being sent over the network. We restore this behavior by
+         forcing the creation of a smoother when slinear is in use and setting the
+         appropriate flags so that the byte order conversion is always done.
 
-         * Add missing channel locking in native_rtp_bridge_compatible().
+         ASTERISK-24858 #close
+         Reported-by: Frankie Chin
 
-         Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
+         Change-Id: I868449617d1a7819578f218c8c6b2111ad84f5a9
 
-2016-12-21 16:28 +0000 [a9e459f8ac]  Richard Mudgett <rmudgett@digium.com>
+2017-01-31 12:46 +0000 [7fd28cefdb]  George Joseph <gjoseph@digium.com>
 
-       * res_rtp_asterisk.c: Fix uninitialized memory crash.
+       * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts
 
-         ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
-         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
-         parameter may not get initialized.  Thus when the code tries to save the
-         'us' parameter to the local address we could try to copy a ridiculous
-         sized memory buffer and segfault.
+         Forgot to install it with the original patch
 
-         * Made pass an initialized 'us' parameter to ast_ouraddrfor().
+         Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c
 
-         * Optimized out the 'us' struct variable.
+2017-01-25 06:50 +0000 [456bc3c704]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26672 #close
+       * debug_utilities:  Add ast_logescalator
 
-         Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
+         The escalator works by creating a set of startup commands in cli.conf
+         that set up logger channels and issue the debug commands for the
+         subsystems specified.  If asterisk is running when it is executed,
+         the same commands will be issued to the running instance.  The original
+         cli.conf is saved before any changes are made and can be restored by
+         executing '$prog --reset'.
 
-2016-12-21 17:55 +0000 [bcdd282ada]  Richard Mudgett <rmudgett@digium.com>
+         The log output will be stored in...
+         $astlogdir/message.$uniqueid
+         $astlogdir/debug.$uniqueid
+         $astlogdir/dtmf.$uniqueid
+         $astlogdir/fax.$uniqueid
+         $astlogdir/security.$uniqueid
+         $astlogdir/pjsip_history.$uniqueid
+         $astlogdir/sip_history.$uniqueid
 
-       * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().
+         Some minor tweaks were made to chan_sip, and res_pjsip_history
+         so their history output could be send to a log channel as packets
+         are captured.
 
-         We access uninitialized memory when the 'ourip' parameter does not
-         have an initial guess to our IP address.
+         A minor tweak was also made to manager so events are output to verbose
+         when "manager set debug on" is issued.
 
-         ASTERISK-26672
+         Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543
 
-         Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
+2017-01-23 09:35 +0000 [54b027916a]  Torrey Searle <torrey@voxbone.com>
 
-2016-12-21 16:25 +0000 [ac31233dbe]  Richard Mudgett <rmudgett@digium.com>
+       * libastssl/pj: libastssl/pj should have an so_version
 
-       * acl.c: Improve ast_ouraddrfor() diagnostic messages.
+         Issue introduced in b59956a87.  In the non-darwin case libastssl/pj
+         should be versioned.  This causes the symbol file for this lib
+         to not be generated.
 
-         * Made not generate strings unless they will actually be used.
+         Change-Id: Ib07ae8c40252813c488e2c1ac6204fd42816dd4c
 
-         ASTERISK-26672
+2017-01-24 19:51 +0000 [3c8f84786e]  Kirill Katsnelson <kkm@smartaction.com>
 
-         Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
+       * make_build_h: handle backslashes in external strings
 
-2016-12-21 17:54 +0000 [0aa5db4b38]  Richard Mudgett <rmudgett@digium.com>
+         LikewiseOpen creates user names with a backslash in them. A gentle
+         massage with sed(1) allows such strings to be inserted into build.h
+         properly quoted. I am also adding the same for host name and other
+         strings used in the script that are more or less user-controlled.
 
-       * chan_rtp.c: Fix uninitialized memory crash.
+         ASTERISK-26754
 
-         unicast_rtp_request() could pass an uninitialized 'us' parameter to
-         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
-         parameter may not get initialized.  Thus when the code tries to save the
-         'us' parameter to the local address we could try to copy a ridiculous
-         sized memory buffer and segfault.
+         Change-Id: Iac5ef2b67a68ee58f35ddbf86bb818ba6eabecae
 
-         * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort
-         the UnicastRTP channel request if it fails.
+2017-01-17 20:46 +0000 [555e8cd2ba]  Kirill Katsnelson <kkm@smartaction.com>
 
-         ASTERISK-26672
+       * ast_careful_fwrite to support EPIPE gracefully
 
-         Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
+         When a reading end of the network socket is closed by an AMI manager,
+         the EPIPE is signaled when writing to our end, resulting in the
+         spurious log error message
 
-2016-12-07 15:23 +0000 [e2fa3c7eda]  Richard Mudgett <rmudgett@digium.com>
+           ast_careful_fwrite: fwrite() returned error: Broken pipe
 
-       * res_rtp_asterisk.c: Fix off nominal memory leak.
+         Previously EPIPE was handled in ast_carefulwrite() a few lines above,
+         but not in this function.
 
-         Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75
+         ASTERISK-26753
 
-2016-12-09 12:23 +0000 [d13be4eff6]  Martin Tomec <tomec@ipex.cz>
+         Change-Id: I6a67335cd6526608bb9b78f796c626b1677664b8
 
-       * app_queue: Ensure member is removed from pending when hanging up.
+2017-01-24 22:31 +0000 [be92f10a16]  Kirill Katsnelson <kkm@smartaction.com>
 
-         In some cases member is added to pending_members, and the channel
-         is hung up before any extension state change. So the member would
-         stay in pending_members forever. So when we call do_hang, we
-         should also remove member from pending.
+       * app_queue: Fix queues randomly disappearing on reload
 
-         ASTERISK-26621 #close
+         With 500+ queues and a reload every minute, a random queue disappears
+         upon reload. The cause is mususe of the 'dead' flag. Namely, all queues
+         were marked dead up front, and then "resurrected" by dropping this flag
+         for those found in the configuration. But a queue marked dead can be
+         removed also when control leaves the app entry point on a PBX thread.
 
-         Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54
+         With this change, the queue is marked only not found, and at the end of
+         reload only the queues that are still not found are actually marked as
+         dead, so the dead flag is never reset, and set only on positively dead
+         queues.
 
-2016-12-18 15:23 +0000 [815f755155]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26755
 
-       * pjproject_bundled:  Make build single threaded
+         Change-Id: I3a4537aec9eb8d8aeeaa0193407e3523feb004bf
 
-         There were just too many issues in various environments with
-         multi threaded building of pjproject.  It doesn't really speed
-         things up anyway since asterisk is already being compiled in
-         parallel.
+2017-01-26 07:57 +0000 [aae9df0643]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1
+       * res_pjsip_endpoint_identifier_ip: Fix memory leak of hosts when resolving.
 
-2016-12-08 20:00 +0000 [493849dcd7]  Corey Farrell <git@cfware.com>
+         This change adds a missing unreference of the hostname when resolving and
+         also cleans up the iterator.
 
-       * chan_sip: Reorder unload_module to deal with stuck TCP threads.
+         ASTERISK-26735
 
-         In some situations TCP threads may become frozen.  This creates the
-         possibility that Asterisk could segfault if they become unfrozen after
-         chan_sip has been dlclose'd.  This reorders the unload_module process to
-         allow abort if threads do not exit within 5 seconds.
+         Change-Id: Ic012ebaf3d89e714eec340b7b0c5e63c66af857a
 
-         High level order as follows:
-         1) Unregister from the core to stop new requests.
-         2) Signal threads to stop
-         3) Clear config based tables (but do not free the table itself).
-         4) Verify that threads have shutdown, cancel unload if not.
-         5) Clean all remaining resources.
+2017-01-25 15:26 +0000 [9e3150b98d]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-26586
+       * Add reload options to CLI/AMI stale object commands.
 
-         Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882
+         Marking an object as stale in a memory cache is supposed to prime the
+         cache so that the next time the item is retrieved, the stale item is
+         deleted from the cache and a background task is run to re-populate the
+         cache with a fresh version of the object.
 
-2016-12-16 01:32 +0000 [ab447f8a6a]  David M. Lee <dlee@respoke.io>
+         The problem is, there are some object types out there for which there is
+         no natural reason that they would be retrieved from the backend with any
+         regularity. Outbound PJSIP registrations are a good example of this. At
+         startup, they are read, and an object-specific state is created that
+         refers to the initially-retrieved object for all time.
 
-       * configure: fix with-pjproject-bundled
+         Adding the "reload" option to the CLI/AMI commands gives the cache the
+         opportunity to manually re-retrieve the object from the backend, both
+         storing the new object in the cache and applying the new object's
+         configuration to the module that uses that object.
 
-         The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely
-         coincidentally, the option would work when --enable-dev-mode is given.
+         Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8
 
-         Also fixed a portability problem with bootstrap.sh, since -printf is not
-         a portable option for find.
+2017-01-10 17:39 +0000 [c54f9d2bf0]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376
+       * T.140: Fix format ref and memory leaks.
 
-2016-12-15 13:25 +0000 [35736d419a]  Richard Mudgett <rmudgett@digium.com>
+         * channel.c:ast_sendtext(): Fix T.140 SendText memory leak.
 
-       * autosupport: Add 'pjproject show buildopts'
+         * format_compatibility.c: T.140 RED and T.140 were swapped.
 
-         Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7
+         * res_rtp_asterisk.c:rtp_red_init(): Fix ast_format_t140_red ref leak.
 
-2016-12-14 14:21 +0000 [4b285d226d]  Richard Mudgett <rmudgett@digium.com>
+         * res_rtp_asterisk.c:rtp_red_init(): Fix data race after starting periodic
+         scheduled red_write().
 
-       * chan_dahdi.c: Fix bounds check regression.
+         * res_rtp_asterisk.c: Some other minor misc tweaks.
 
-         Caused by ASTERISK-25494
+         Change-Id: Ifa27a2e0f8a966b1cf628607c86fc4374b0b88cb
 
-         Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb
+2017-01-24 15:39 +0000 [a2f0adccbd]  Joshua Colp <jcolp@digium.com>
 
-2016-12-13 14:34 +0000 [9114574188]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_endpoint_identifier_ip: Ensure error defaults to 0.
 
-       * res_pjsip: Add/update ERROR msg if invalid URI.
+         When configuring a match using a netmask the error variable was
+         not defaulting to 0. For some people this would cause the code
+         to think an error occurred when adding the match when in reality
+         it added perfectly fine.
 
-         ASTERISK-24499
+         ASTERISK-26693
 
-         Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c
+         Change-Id: I850c250813742bddde65c84e739093c9e01dfe56
 
-2016-12-12 18:38 +0000 [75a6afbec5]  Richard Mudgett <rmudgett@digium.com>
+2017-01-10 17:37 +0000 [607b3ac736]  Richard Mudgett <rmudgett@digium.com>
 
-       * MESSAGE: Flush Message/ast_msg_queue channel alert pipe.
+       * astobj2.c: Add excessive ref count trap.
 
-         ASTERISK-25083
+         Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a
 
-         Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2
+2017-01-10 13:11 +0000 [ab8cb5a7ce]  Richard Mudgett <rmudgett@digium.com>
 
-2016-12-13 14:06 +0000 [91485734a4]  gtjoseph <gjoseph@digium.com>
+       * main/app.c: Memory corruption from early format destruction.
 
-       * res_sorcery_memory_cache:  Change an error to a debug message
+         * make_silence() created a malloced silence slin frame without adding a
+         slin format ref.  When the frame is destroyed it will unref the slin
+         format that never had a ref added.  Memory corruption is expected to
+         follow.
 
-         When a sorcery user calls ast_sorcery_delete on an object that
-         may have already expired from the cache, res_sorcery_memory_cache
-         spits out an ERROR.  Since this can happen frequently and validly when
-         an inbound registration expires after the cache entry expired, the
-         errors are unnecessary and misleading.  Changed to a debug/1.
+         * Simplified and fixed counting the number of samples in a frame list for
+         make_silence().
 
-         Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7
+         * Eliminated an unnecessary RAII_VAR associated with the make_silence()
+         frame.
 
-2016-12-09 08:14 +0000 [cd46e86491]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I47de3f9b92635b7f8b4d72309444d6c0aee6f747
 
-       * pjproject_bundled:  Retry download if previously saved tarball is bad
+2017-01-11 14:59 +0000 [dcd8e4b1a0]  Richard Mudgett <rmudgett@digium.com>
 
-         If a tarball is corrupted during download, the makefile will attempt to
-         download it again. If the tarball somehow gets corrupted after it's
-         downloaded however, the makefile was just failing.  We now
-         retry the download.
+       * frame.c: Fix off-nominal format ref leaks.
 
-         ASTERISK-26653 #close
+         * ast_frisolate() could leak frame format refs on allocation
+         failures.
 
-         Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359
+         * Similified code in ast_frisolate() and code used by
+         ast_frisolate().
 
-2016-12-08 12:54 +0000 [22820e10fe]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+         Change-Id: I79566d4d36b3d7801bf0c8294fcd3e9a86a2ed6d
 
-       * chan_sip: Delete unneeded check
+2017-01-13 19:08 +0000 [00a227e93d]  Richard Mudgett <rmudgett@digium.com>
 
-         P is always true. We check it before
+       * stasis_bridge.c: Fix off-nominal stasis control ref leak.
 
-         Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb
+         Change-Id: Ib17218343a6596832060180e19386da9df150ac8
 
-2016-12-08 12:58 +0000 [6aa2c5e5f9]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+2017-01-10 12:30 +0000 [38a2021c68]  Richard Mudgett <rmudgett@digium.com>
 
-       * Small code cleanup in chan_sip
+       * res_musiconhold.c: Fix format ref leak when parsing MOH config class.
 
-         The conditional expressions of the 'if' operators situated
-         alongside each other are identical.
+         Change-Id: Ica8e8e2ce7604c2c61ec55bef07dc675361d2ea5
 
-         Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a
+2017-01-10 14:03 +0000 [ab7a9fc5b2]  Richard Mudgett <rmudgett@digium.com>
 
-2016-12-08 12:43 +0000 [b596fac838]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+       * chan_oss.c: Fix format ref leak in oss_read().
 
-       * Fix typo in chan_sip
+         Change-Id: I0a5d56c7dcf327d60f86a4c25a23571733709fd0
 
-         The conditional expressions of the 'if' operators
-         situated alongside each other are identical.
+2017-01-10 17:48 +0000 [1484a991e1]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb
+       * Add notes about embedded ast_frame structs holding a format ref.
 
-2016-12-08 12:30 +0000 [483ed9f1aa]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+         mod_format.h: Note ast_filestream.fr holds a format ref.
 
-       * res_pjsip: Fix 'A = B != C' kind.
+         translate.h: Note ast_trans_pvt.f holds a format ref.
 
-         Consider reviewing the expression of the 'A = B != C' kind.
-         The expression is calculated as following: 'A = (B != C)'
+         Change-Id: I86bda354d725207b41e08920355d7c31b2d7f749
 
-         Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d
+2017-01-19 09:05 +0000 [17f4989d49]  George Joseph <gjoseph@digium.com>
 
-2016-11-30 09:31 +0000 [41c6319c4e]  Walter Doekes <walter+asterisk@wjd.nu>
+       * ari: Implement 'debug all' and request/response logging
 
-       * chan_sip: Do not allow non-SP/HTAB between header key and colon.
+         The 'ari set debug' command has been enhanced to accept 'all' as an
+         application name.  This allows dumping of all apps even if an app
+         hasn't registered yet.  To accomplish this, a new global_debug global
+         variable was added to res/stasis/app.c and new APIs were added to
+         set and query the value.
 
-         RFC says SIP headers look like:
+         'ari set debug' now displays requests and responses as well as events.
+         This required refactoring the existing debug code.
 
-             HCOLON  =  *( SP / HTAB ) ":" SWS
-             SWS     =  [LWS]                    ; sep whitespace
-             LWS     =  [*WSP CRLF] 1*WSP        ; linear whitespace
-             WSP     =  SP / HTAB                ; from rfc2234
+         * The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
+           to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
+         * In order to print the body of incoming requests even if a request
+           failed, the consumption of the body was moved from the ari stubs
+           to ast_ari_callback in res_ari.c and the moustache templates were
+           then regenerated.  The body is now passed to ast_ari_invoke and then
+           on to the handlers.  This results in code savings since that template
+           was inserted multiple times into all the stubs.
 
-         chan_sip implemented this:
+         An additional change was made to the ao2_str_container implementation
+         to add partial key searching and a sort function.  The existing cli
+         code assumed it was already there when it wasn't so the tab completion
+         was never working.
 
-             HCOLON  =  *( LOWCTL / SP ) ":" SWS
-             LOWCTL  = %x00-1F                   ; CTL without DEL
+         Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
 
-         This discrepancy meant that SIP proxies in front of Asterisk with
-         chan_sip could pass on unknown headers with \x00-\x1F in them, which
-         would be treated by Asterisk as a different (known) header.  For
-         example, the "To\x01:" header would gladly be forwarded by some proxies
-         as irrelevant, but chan_sip would treat it as the relevant "To:" header.
+2017-01-20 21:13 +0000 [30cb4eb57f]  Richard Mudgett <rmudgett@digium.com>
 
-         Those relying on a SIP proxy to scrub certain headers could mistakenly
-         get unexpected and unvalidated data fed to Asterisk.
+       * PJPROJECT logging: Fix detection of max supported log level.
 
-         This change fixes so chan_sip only considers SP/HTAB as valid tokens
-         before the colon, making it agree on the headers with other speakers of
-         SIP.
+         The mechanism used for detecting the maximum log level compiled into the
+         linked pjproject did not work.  The API call simply stores the requested
+         level into an integer and does no range checking.  Asterisk was assuming
+         that there was range checking and limited the new value to the allowable
+         range.  To get the actual maximum log level compiled into the linked
+         pjproject we need to get and save off the initial set log level from
+         pjproject.  This is the maximum log level supported.
 
-         ASTERISK-26433 #close
-         AST-2016-009
+         * Get and save off the initial log level setting before altering it to the
+         desired level on startup.  This has to be done by a macro rather than
+         calling a core function to avoid incorrectly linking pjproject.
 
-         Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b
+         * Split the initial log level warning messages to warn if the linked
+         pjproject cannot support the requested startup level and if it is too low
+         to get the pjproject buildopts for "pjproject show buildopts".
 
-2016-11-14 18:18 +0000 [888142e891]  Joshua Colp <jcolp@digium.com>
+         * Adjust the CLI "pjproject set log level" to check the saved max log
+         level and to generate normal output messages instead of a warning message.
 
-       * res_format_attr_opus: Fix crash when fmtp contains spaces.
+         ASTERISK-26743 #close
 
-         When an opus offer or answer was received that contained an
-         fmtp line with spaces between the attributes the module would
-         fail to properly parse it and crash due to recursion.
+         Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
 
-         This change makes the module handle the space properly and
-         also removes the recursion requirement.
+2017-01-21 14:43 +0000 [cd2677f966]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         ASTERISK-26579
+       * tests: use datadir for sound files
 
-         Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3
+         Some (voicemail-related) tests API symlinks beep.gsm and other files
+         from ast_config_AST_VAR_DIR. It should use ast_config_AST_DATA_DIR.
 
-2016-12-06 14:54 +0000 [ebc67d3053]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26740 #close
 
-       * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command
+         Change-Id: Id49c56fb9e16df64b1a2b829693ca7601252df89
 
-         The PJSIPShowRegistrationsInbound AMI command was just dumping out
-         all AORs which was pretty useless and resource heavy since it had
-         to get all endpoints, then all aors for each endpoint, then all
-         contacts for each aor.
+2017-01-20 23:41 +0000 [b62f84bfb1]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail
-         events which meets the intended purpose of the other command and has
-         significantly less overhead.  Also, some additional fields that were
-         added to Contact since the original creation of the ContactStatusDetail
-         event have been added to the end of the event.
+       * test_voicemail_api: order of params to VERIFY macros
 
-         For compatibility purposes, PJSIPShowRegistrationsInbound is left
-         intact.
+         Fix order of parameters in calls to VM_API_INT_VERIFY and
+         VM_API_STRING_VERIFY
 
-         ASTERISK-26644 #close
+         ASTERISK-26739 #close
 
-         Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a
+         Change-Id: I30dc6b36893aadad6012be3f16f93aa5720870d6
+         Note: status: builds. Not tested any further.
 
-2016-12-06 16:45 +0000 [d506874477]  Richard Mudgett <rmudgett@digium.com>
+2017-01-05 13:21 +0000 [e3dcb9ddd9]  Richard Mudgett <rmudgett@digium.com>
 
-       * Bundled pjproject:  Fix finding SIP transactions.
+       * res_pjsip_pubsub.c: Implement "pjsip show subscriptions" commands.
 
-         Occasionally SIP message transactions are not found when they should be.
-         In the particular case an incoming INVITE transaction is CANCELed but the
-         INVITE transaction cannot be found so a 481 response is returned for the
-         CANCEL.  The problematic calls have a '_' character in the Via branch
-         parameter.
+         ASTERISK-23828 #close
 
-         The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code.
-         The problem with the "own tolower" code is that it does not calculate the
-         same hash value as when the pj_tolower() function is used.  The "own
-         tolower" code will erroneously modify the ASCII characters '@', '[', '\\',
-         ']', '^', and '_'.  Calls to pj_hash_calc_tolower() can use the
-         PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled.  Calls to
-         pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call
-         find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm.  As a
-         result you may not be able to find a hash tabled entry because the
-         calculated hash values would differ.
+         Change-Id: Ifb8a3b61f447aedc58a8e6b36a810f7566018567
 
-         * Simply disable PJ_HASH_USE_OWN_TOLOWER.
+2017-01-23 16:18 +0000 [75497c33ea]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-26490 #close
+       * Free endpoint ACLs when destroying PJSIP endpoints.
 
-         Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253
+         If endpoint ACLs were specified, they were not being freed
+         when endpoints were destroyed. On systems with realtime endpoints, this
+         could add up quickly since each DB lookup would allocate the ACL without
+         freeing it.
 
-2016-12-06 12:06 +0000 [4b233675d8]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26731 #close
+         Reported by Ustinov Artem
 
-       * pjproject_bundled:  Fix missing inclusion of symbols
+         Change-Id: Ie1f8bf5b7a0de628c975beba01e69c56893331ad
 
-         Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to
-         the CFLAGS.  Not sure how they went missing.
+2017-01-23 09:10 +0000 [177e81ee47]  George Joseph <gjoseph@digium.com>
 
-         Also fixed an uninstall problem where we weren't removing the
-         symlink from libasteriskpj.so.2 to libasteriskpj.so.  While I was
-         there, I fixed it for libasteriskssl as well.
+       * pjproject_bundled: Fix setting max log level
 
-         Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556
+         An earlier attempt to prevent pjsua from spitting out an extra 6795
+         lines of debug output every time the testsuite called it was also
+         turning off the ability for asterisk to output debug info when it
+         needed to.  This patch reverts the earlier fix and instead adds
+         a pjproject patch that sets the startup log level to 1 for pjsua
+         pjsystest and the pjsua python binding.  This is an asterisk-only
+         patch that does not affect pjproject functionality and will not be
+         submitted upstream.
 
-2016-12-02 12:04 +0000 [580f83dac7]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8
 
-       * Remove files that got merged in error somehow to the 13 branch.
+2017-01-23 10:08 +0000 [6d23b2e360]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Id79e2226c31084f9252d5aede9050d3cf13322c8
+       * res_pjsip_endpoint_identifier_ip: Read settings before resolving.
 
-2016-11-30 18:25 +0000 [61ba2a014a]  Richard Mudgett <rmudgett@digium.com>
+         An option has been added, srv_lookups, which controls whether
+         SRV lookups are performed on the provided match hosts or not.
+         It was possible for this option to be applied after resolution
+         had already happened.
 
-       * res_pjsip_outbound_registration.c: Filter redundant statsd reporting.
+         This change makes it so hosts are stored away, settings are read
+         and applied, and then resolution is done. This ensures that no
+         matter the ordering the srv_lookups option is in effect.
 
-         Increasing the testsuite shutdown timeout before forcibly killing
-         Asterisk allowed more events to be sent out.  Some tests failed as
-         a result.  The tests/channels/pjsip/statsd/registrations failed
-         because we now get the statsd events that a comment in the test
-         configuration stated couldn't be intercepted.  Unfortunately, we
-         get a variable number of events because of internal status state
-         transition races generating redundant statsd events.
+         ASTERISK-26735
 
-         We were reporting redundant statsd PJSIP.registrations.state changes
-         for internal state changes that equated to the same thing publicly.
+         Change-Id: I750378cb277be0140f8c5539450270afbfc43388
 
-         * Made update_client_state_status() filter out redundant statsd
-         updates.
+2017-01-22 17:25 +0000 [a969bf3577]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26527
+       * LISTFILTER: Remove outdated ERROR message.
 
-         Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646
+         Feeding LISTFILTER an empty variable results in an invalid ERROR message.
+         Earlier changes made the message useless because we can no longer tell if
+         the variable is empty or does not exist.  It is valid to try to remove a
+         value from an empty list just as it is valid to try to remove a value that
+         is not in a non-empty list.
 
-2016-11-22 11:20 +0000 [2ceb609edb]  Guido Falsi <mad@madpilot.net>
+         * Removed the outdated ERROR message.
 
-       * res_rtp: Fix regression when IPv6 is not available.
+         * Added more test cases to the LISTFILTER unit test.
 
-         The latest Release candidate fails to create RTP streams when IPv6
-         is not available. Due to the changes made in September the ast_sockaddr
-         structure passed around to create these streams is always of AF_INET6
-         type, causing failure when used for IPv4. This patch adds a utility
-         function to check for availability of IPv6 and applies such check
-         at startup to determine how to create the ast_sockaddr structures.
+         Change-Id: Ided9040e6359c44a335ef54e02ef5950a1863134
 
-         ASTERISK-26617 #close
+2017-01-05 15:11 +0000 [3890337e7a]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I627a4e91795e821111e1cda523f083a40d0e0c3e
+       * res_pjsip_pubsub.c: Fix AMI event list counts.
 
-2016-11-28 19:43 +0000 [53459cdaa9]  Eduardo S. Libardi <eslibardi@gmail.com>
+         Fix the AMI PJSIPShowSubscriptionsInbound, PJSIPShowSubscriptionsOutbound,
+         and PJSIPShowResourceLists actions event counts.  The reported counts may
+         not necessarily be accurate depending on what happens.
 
-       * res_calendar_caldav: Add support reading gmail calendar
+         The subscriptions count would be wrong if Asterisk ever has outbound
+         subscriptions.
 
-         The response from gmail calendar includes the string name
-         "caldav:calendar-data". res_calendar_caldav implements
-         the example included in RFC 4791: string "C:calendar-data".
-         When reading the calendar, res_calendar_caldav compare the
-         string and if does not match just discards the event.
-         This commit compares the response to both strings,
-         successfully loading gmail calendar events.
-         Writing to gmail calendar is working prior to this fix.
+         The resource list count could be wrong if a list were added or removed
+         during the AMI action being processed.
 
-         ASTERISK-26624
-         Reported by: Eduardo S. Libardi
+         Change-Id: I4344301827523fa174960a42c413fd19abe4aed5
 
-         Change-Id: Ia1eef10552ae616efb645d390f5ffe81260d7d4a
+2017-01-05 13:02 +0000 [fe4801c4f9]  Richard Mudgett <rmudgett@digium.com>
 
-2016-11-23 18:27 +0000 [44fe4a5769]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_pubsub.c: Fix incorrect message string wrapping.
 
-       * PJPROJECT logging: Made easier to get available logging levels.
+         Change-Id: Id771e6fe56d89ce365ddcbb423f820af97211120
 
-         Use of the new logging is as simple as issuing the new CLI command or
-         setting the new pjproject.conf option.
+2017-01-05 13:01 +0000 [46484b8730]  Richard Mudgett <rmudgett@digium.com>
 
-         Other options that can affect the logging are how you have the pjproject
-         log levels mapped to Asterisk log types in pjproject.conf and if you have
-         configured Asterisk to log the DEBUG type messages.  Altering the
-         pjproject.conf level mapping shouldn't be necessary for most installations
-         as the default mapping is sensible.  Configuring Asterisk to log the DEBUG
-         message type is standard practice for collecting debug information.
+       * res_pjsip_pubsub.c: Eliminate trivial SCOPED_LOCK usage.
 
-         * Added CLI "pjproject set log level" command to dynamically adjust the
-         maximum pjproject log message level.
+         Change-Id: Ie0b69a830385452042fa19e7d267c6790ec6b6be
 
-         * Added CLI "pjproject show log level" command to see the currently set
-         maximum pjproject log message level.
+2017-01-05 12:58 +0000 [8160474d7d]  Richard Mudgett <rmudgett@digium.com>
 
-         * Added pjproject.conf startup section "log_level" option to set the
-         initial maximum pjproject log message level so all messages could be
-         captured from initialization.
+       * res_pjsip: alloca can never fail.
 
-         * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into
-         bundled pjproject.  Pjproject will use the currently set run time log
-         level to determine if a log message is generated just like Asterisk
-         verbose and debug logging levels.
+         Change-Id: Ia2a6158e5fdf311bc2a1c0c43417978de504b1f1
 
-         * In log_forwarder(), made always log enabled and mapped pjproject log
-         messages.  DEBUG mapped log messages are no longer gated by the current
-         Asterisk debug logging level.
+2017-01-13 11:03 +0000 [c628a7acac]  George Joseph <gjoseph@digium.com>
 
-         * Removed RAII_VAR() from res_pjproject.c:get_log_level().
+       * debug_utilities:  Create ast_loggrabber
 
-         ASTERISK-26630 #close
+         ast_loggrabber gathers log files from customizable search patterns,
+         optionally converts POSIX timestamps to a readable format and
+         tarballs the results.
 
-         Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389
+         Also a few tweaks were made to ast_coredumper.
 
-2016-11-30 10:48 +0000 [17b0b91afa]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495
+         (cherry picked from commit 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c)
 
-       * Frame deferral: Re-queue deferred frames one-at-a-time.
+2017-01-01 03:47 +0000 [e335b706ee]  Richard Mudgett <rmudgett@digium.com>
 
-         The recent change that made frame deferral into an API had a behavior
-         change to it. When frame deferral was completed, we would take all of
-         the deferred frames and queue them all onto the channel in one call to
-         ast_queue_frame_head(). Before frame deferral was API-ized, places that
-         performed manual frame deferral would actually take each deferred frame
-         and queue them onto the channel.
+       * res_pjsip_outbound_authenticator_digest.c: Fix spacing in warning messages.
 
-         This change in behavior caused the confbridge_recording test to start
-         failing consistently. Without going too crazily deep into the details,
-         a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect
-         was attempting to break it out of the sleep, but because there were more
-         frames in the channel read queue than expected, the channel ended up
-         being unable to break from its sleep loop.
+         Change-Id: I573f0343c0c63a785cd4da60d57cc9f8b9ce7f49
 
-         By restoring the behavior of individual frame queuing after deferral,
-         the test starts passing again.
+2017-01-12 15:58 +0000 [883e7fde31]  Kevin Harwell <kharwell@digium.com>
 
-         Note, this points to a potential underlying issue pointing to an
-         "unbalance" that can occur when queuing multiple frames at once,
-         and so a follow-up issue is being created to investigate that
-         possibility.
+       * abstract/fixed/adpative jitter buffer: disallow frame re-inserts
 
-         Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d
+         It was possible for a frame to be re-inserted into a jitter buffer after it
+         had been removed from it. A case when this happened was if a frame was read
+         out of the jitterbuffer, passed to the translation core, and then multiple
+         frames were returned from said translation core. Upon multiple frames being
+         returned the first is passed on, but sebsequently "chained" frames are put
+         back into the read queue. Thus it was possible for a frame to go back into
+         the jitter buffer where this would cause problems.
 
-2016-06-28 16:26 +0000 [b0c9f07f04]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         This patch adds a flag to frames that are inserted into the channel's read
+         queue after translation. The abstract jitter buffer code then checks for this
+         flag and ignores any frames marked as such.
 
-       * OpenSSL 1.1.0 support
+         Change-Id: I276c44edc9dcff61e606242f71274265c7779587
 
-         OpenSSL 1.1.0 includes some major changes in the interface. See
-         https://wiki.openssl.org/index.php/1.1_API_Changes .
+2017-01-13 21:23 +0000 [473330983b]  Richard Mudgett <rmudgett@digium.com>
 
-         Status: Right now there are still a few deprecation notes with OpenSSL
-         1.1.0. But it's a start.
+       * taskprocessor.c: Change when high water warning logged.
 
-         Changes:
-         * CRYPTO_LOCK is no longer available. Replace it with its value for now.
-           I don't completely understand what it is used for there.
-         * Remove several functions from libasteriskssl that seem to no longer be
-           needed.
-         * Structures have become opaque and are accesses with accessors.
-         * ERR_remove_thread_state() no longer needed.
-         * SSLv2 code now could no longer be used in 1.1.
+         The task processor queue reached X scheduled tasks message was originally
+         intended to get logged only once per task processor to prevent spamming
+         the log.  This is no longer necessary since high and low water thresholds
+         can better control when the message is logged.
 
-         ASTERISK-26109 #close
+         It is beneficial to generate the warning each time a task processor
+         reaches the high water level because PJSIP stops processing new requests
+         while any high water alert is active.  Without this change you would have
+         to enable at least debug level 3 logging to know about a repeated alert
+         trigger.
 
-         Change-Id: I5e29d477d486ca29b6aae0dc2f5dff960c1cb82b
+         * Made generate the warning message whenever a task is pushed into the
+         task processor that triggers the high water alert.
 
-2016-11-28 15:12 +0000 [a33ed3327a]  Matt Jordan <mjordan@digium.com>
+         * Appended 'again' to the warning for a repeated high water alert trigger.
 
-       * res/res_pjsip: Fix documentation whitespace issues
+         Change-Id: Iabf75a004f7edaf1e5e8c323099418e667cac999
 
-         Tabs > Spaces.
+2017-01-10 05:54 +0000 [0047b1bc49]  Aaron An <anjb@ti-net.com.cn>
 
-         Change-Id: If1e43a71822615a898e958e0f8b2e882606f0bd0
+       * res_rtp_asterisk:  Fix bug in function CHANNEL(rtcp, all_rtt)
 
-2016-11-22 10:27 +0000 [09c36a6535]  Matt Jordan <mjordan@digium.com>
+         Function CHANNEL(rtcp,all_rtt) CHANNEL(rtcp,all_loss) CHANNEL(rtcp,all_jitter)
+         always return 0.0 due to wrong define of macro "AST_RTP_SATA_SET" and
+         "AST_RTP_STAT_STRCPY".
+         It should compare "combined" with "stat" not "current_stat".
 
-       * res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter
+         ASTERISK-26710 #close
+         Reported-by: Aaron An
+         Tested-by: AaronAn
 
-         Per RFC 7118 5.2, the SIP URI 'transport' parameter should advertise
-         'ws' when WebSockets are to be used as the transport. This applies to
-         both secure and insecure WebSockets.
+         Change-Id: Id4140fafbf92e2db689dac5b17d9caa009028a15
 
-         There were two bugs in Asterisk with respect to this:
+2017-01-10 18:10 +0000 [47474cfd54]  George Joseph <gjoseph@digium.com>
 
-         (1) The most egregious occurs in res_pjsip. There, we advertise 'ws' for
-             insecure websockets and 'wss' for secure websockets. While this
-             would seem to make sense - since 'WS' and 'WSS' are used for the Via
-             Transport parameter - this is not the case for the SIP URI. This
-             patch corrects that by registering the secure websockets with
-             pjproject using the shorthand 'WS', and by returning 'ws' when asked
-             for the transport parameter. Note that in pjproject, it is perfectly
-             valid to have multiple transports use the same shorthand.
+       * debug_utilities:  Create the ast_coredumper utility
 
-         (2) In chan_sip, we return an upper-case version of the transport 'WS'
-             instead of 'ws'. Since we should be strict in what we send and
-             liberal in what we accept (within reason), this patch lower-cases
-             the transport before appending it to the parameter.
+         This utility allows easy manipulation of asterisk coredumps.
 
-         ASTERISK-24330 #close
-         Reported by: cervajs, Inaki Baz Castillo
+         * Configurable search paths and patterns for existing coredumps
+         * Can generate a consistent coredump from the running instance
+         * Can dump the lock_infos table from a coredump
+         * Dumps backtraces to separate files...
+           - thread apply 1 bt full -> <coredump>.thread1.txt
+           - thread apply all bt -> <coredump>.brief.txt
+           - thread apply all bt full -> <coredump>.full.txt
+           - lock_infos table -> <coredump>.locks.txt
+         * Can tarball corefiles and optionally delete them after processing
+         * Can tarball results files and optionally delete them after processing
+         * Converts ':' in coredump and results file names '-' to facilitate
+           uploading.  Jira for instance, won't accept file names with colons
+           in them.
 
-         Change-Id: Iff77b645f8cc3b7cd35168a6676c26b147f22f42
+         Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1].
 
-2016-11-28 11:03 +0000 [29e887e9e1]  gtjoseph <gjoseph@digium.com>
+         [1] For *BSDs, the "devel/gdb" package might have to be installed to
+         get a recent gdb.  The utility will check all instances of gdb
+         it finds in $PATH and if one isn't found that can run python, it
+         prints a friendly error.
 
-       * build_tools:  Fix download_externals to handle certified branches
+         Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd
 
-         download_externals wasn't handling the "certified/13.x" version
-         correctly.
+2017-01-08 10:29 +0000 [f8cd73ec3c]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a
+       * pjproject_bundled:  Fix compilation with MALLOC_DEBUG
 
-2016-11-02 05:05 +0000 [bfb8c962c4]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         When MALLOC_DEBUG was specified, make was failing.  Immediately
+         remaking would work.  The issues was in the ordering of the make
+         dependencies.
 
-       * autoconf: more variants for OSARCH linux-gnu
+         Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
 
-         There are quite a few odd GNU/Linux platforms. Just call all of them
-         linux-gnu.
+2017-01-05 06:11 +0000 [37aaaa2da2]  Joshua Colp <jcolp@digium.com>
 
-         Specifically this fixes building the Debian platforms mips64el and x32.
-         And maybe also others.
+       * res_pjsip_endpoint_identifier_ip: Add support for SRV lookups.
 
-         ASTERISK-26546 #close
+         This change implements SRV support for the IP based endpoint
+         identifier module. All possible addresses through SRV are looked
+         up and added as matches. If no SRV records are available a
+         fallback to normal host resolution is done. If an IP address
+         is provided then no SRV lookup occurs.
 
-         Change-Id: I06ec4bd7f0ee1c84b6b24d81538223b07c4174b1
+         This is configured using the "srv_lookups" option on the
+         identify section and defaults to "yes".
 
-2016-11-17 08:25 +0000 [a1fa909033]  Timo Teräs <timo.teras@iki.fi>
+         ASTERISK-26693
 
-       * codec_dahdi: Fix poll.h include.
+         Change-Id: I6b641e275bf96629320efa8b479737062aed82ac
 
-         POSIX defines poll.h. sys/poll.h should not be used as it is c-library
-         internal header which may or may not exist. Notably in musl including
-         sys/poll.h generates warning of being incorrect.
+2016-12-22 09:13 +0000 [569dac8e50]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: Ib318c1c7142a737bcf3caa4d8d72560bebe39252
+       * res_pjsip_session: Access SIPDOMAIN via Dialplan.
 
-2016-11-26 10:57 +0000 [0cc8351484]  Michael Kuron <m.kuron@gmx.de>
+         This feature was available in the SIP channel driver chan_sip. For example,
+         Asterisk is the outbound proxy and has to handle all SIP-URIs, even domains not
+         local to Asterisk. In that case, SIPDOMAIN is used in the Dialplan, to detect
+         and dial remote SIP-URIs. This change here sets the SIP destination domain of
+         an inbound call (SIPDOMAIN) in the SIP channel driver res_pjsip as well.
 
-       * chan_sip: Fix segfault during module unload
+         ASTERISK-26670 #close
 
-         If a TCP/TLS connection was pending (not accepted and not timed out) during
-         unload of chan_sip, Asterisk would segfault when trying to send a signal to
-         a thread whose thread ID hadn't been recorded yet. This commit fixes that by
-         recording the thread ID before calling the blocking connect() syscall.
-         This was a regression introduced by 776a14386a55b5425c7e9617eff8af8b45427144.
+         Change-Id: I27c880dc404a3c1c6792e1ba3545475339577243
 
-         The above wasn't enough to fix the segfault, which was now delayed to the
-         point where connect() timed out. Therefore, it was necessary to also remove
-         the SA_RESTART flag from the SIGURG sigaction so that pthread_kill() could be
-         used to interruput the connect() syscall.
-         This was a regression introduced by 5d313f51b982a18f7321adcf7c7a4e822d8b2714.
+2017-01-04 05:50 +0000 [367128e70b]  Alexander Traud <pabstraud@compuserve.com>
 
-         ASTERISK-26586 #close
+       * chan_sip: Remember SDP negotiation on SIP_CODEC_INBOUND.
 
-         Change-Id: I76fd9d47d56e4264e2629bce8ec15fecba673e7b
+         After a SIP_CODEC_INBOUND in the dialplan, do not continue with cached formats
+         but remember the joint format. Cached formats contain default parameters,
+         often create an empty fmtp line. However, a joint format might have passed
+         format_get_joint(.) in a res_format_attr_* module (like Opus Codec) and
+         contain the resulting format parameters from a SDP negotiation.
 
-2016-11-11 08:16 +0000 [8756ce64b7]  gestoip2 <gestoip2@ull.edu.es>
+         ASTERISK-26691 #close
 
-       * res_rtp_asterisk: RTT miscalculation in RTCP
+         Change-Id: I35712d98a793d4c3efdd156cec57deab9014b1dc
 
-         When retrieving RTCP stats for PJSIP channels, RTT values are unreliable.
-         RTT calculation is correct, but the data representation isn't.  RTT is
-         represented by a 32-bit fixed-point number with the integer part in the
-         first 16 bits and the fractional part in the last 16 bits.  In order to
-         get the RTT value, the fractional part is miscalculated, there is an
-         unnecessary 16 bit shift that causes overflow.  Besides this there is
-         another mistake, when transforming the integer value to the fixed point
-         fractional part via bitwise operation, that loses precision.
+2017-01-03 15:14 +0000 [d7e5a747c3]  George Joseph <gjoseph@digium.com>
 
-         * RTT fractional part is no longer shifted, avoiding overflow.
+       * pjproject_bundled:  Compile pjsua with max log level = 2
 
-         * RTT fractional part is transformed to its fixed-point value more
-         precisely.
+         A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6.
+         This allowed us to control the log level better from inside Asterisk.
+         An unfortunate side effect of this was that the pjsua binary and
+         python bindings were also compiled with log level set to 6 so whenever
+         a testsuite test that uses pjsua runs, it spits out 6795 lines of
+         debug in an instant even before the test starts.  I believe this
+         overruns the Jenkins capture buffer and prevents the test from
+         properly terminating.  In turn, this results in the testsuite just
+         hanging until the job is killed.  It's more frequent on the higher
+         end agents because they can spit out the messages faster.
 
-         * Fixed timeval2ntp() and ntp2timeval() second fraction conversions.
+         Unfortunately, the messages are all spit out before we have control
+         of the python pj.Lib instance where we can set logging levels so the
+         only alternative was to actually compile pjsua and _pjsua.so with an
+         overridden PJ_LOG_MAX_LEVEL.  Although defining a lower max level was
+         done in the Makefile, the define in config_site.h had to be wrapped
+         with "#ifndef" so the change would take effect.
 
-         * Fixed NTP timestamp report logging.  The usec was inexplicably
-         multiplied by 4096.
+         Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
 
-         ASTERISK-26566 #close
-         Reported by Hector Royo Concepcion
+2016-12-22 16:00 +0000 [34e728cfb9]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Ie09bdabfee75afb3f1b8ddfd963e5219ada3b96f
+       * chan_pjsip: Use session for retrieving CHANNEL() information.
 
-2016-11-15 13:44 +0000 [8e77d6f520]  Michael Kuron <m.kuron@gmx.de>
+         The CHANNEL() dialplan function implementation for PJSIP allows
+         querying of PJSIP specific information. This used the channel
+         passed in to get the PJSIP session and associated information.
+         It is possible for this channel to be masqueraded and end
+         up as a different channel type by the time the information
+         request is actually acted upon.
 
-       * tcptls: Use new certificate upon sip reload
+         This change retrieves the PJSIP session safely and accesses
+         data from it (including channel). This provides a guarantee
+         that the session and channel will not be altered when the
+         request is being acted upon.
 
-         Previously, a TLS server socket would only be restarted upon sip reload if the
-         bind address had changed. This commit adds checking for changes to TLS
-         parameters like certificate, ciphers, etc. so they get picked up without
-         requiring a reload of the entire chan_sip module. This does not affect open
-         connections in any way, but new connections will use the new TLS parameters.
-         The changes also apply to HTTP and Manager.
+         ASTERISK-26673
 
-         ASTERISK-26604 #close
+         Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6
 
-         Change-Id: I169e86cefc6dcd627c915134015a6a1ab1aadbe6
-2016-11-11 00:29 +0000 [86d824b7ff]  Timo Teräs <timo.teras@iki.fi>
+2016-12-31 19:56 +0000 [a398f98b08]  Joshua Elson <joshelson@gmail.com>
 
-       * addons/chan_mobile: do not use strerror_r
+       * res_pjsip: Fix known compact header issues
 
-         The two reasons why it might be used are that some systems do not
-         implement strerror in thread safe manner, and that strerror_r returns
-         the error code in the string in case there's no error message.
+         ASTERISK-26684 #close
 
-         However, all of asterisk elsewhere uses strerror() and assumes it
-         to be thread safe. And in chan_mobile the errno is also explicitly
-         printed so neither of the above reasons are valid.
+         Change-Id: Ifd7e401c45015119dd5e8421dbfe3afa6381744a
 
-         The reasoning to remove usage is that there are actually two versions
-         of strerror_r: XSI and GNU. They are incompatible in their return
-         value, and there's no easy way to figure out which one is being
-         used. glibc gives you the GNU version if _GNU_SOURCE is defined,
-         but the same feature test macro is needed for other symbols. On
-         all other systems you assumedly get XSI symbol, and compilation warnings
-         as well as non-working error printing.
+2016-12-30 09:10 +0000 [0ab9d103f6]  George Joseph <gjoseph@digium.com>
 
-         Thus the easiest solution is to just remove strerror_r and use
-         strerror as rest of the code. Alternative is to introduce ast_strerror
-         in separate translation unit so it can request the XSI symbol in
-         glibc case, and replace all usage of strerror.
+       * res_pjsip_refer:  Handle compact Refer-To header.
 
-         Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d
+         refer_incoming_refer_request needed to look for the "r" header as well
+         as the "Refer-To" header.
 
-2016-11-21 09:40 +0000 [425da14927]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26655 #close
+         patches:
+               refer_compact_fix.diff  submitted by JoshE (license 6075)
 
-       * build:  Backport addition of librt check to configure.ac
+         Change-Id: I610410a99b02427ea5db887aeb454d5f12c2259f
 
-         A while back, a master-only change was made to check for librt which
-         should probably have been cherry-picked to 13 at that time.  Sometime
-         between then and now, part of that change did make it into 13 but it
-         was incomplete and non-functional.  This patch backports the rest
-         of the librt check and allows the link of libasteriskpj to use the
-         results.
+2016-12-23 12:11 +0000 [21151408f7]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1424008fd8c90f389dda53162ec4a340b253a3c1
+       * bridge_native_rtp.c: Minor code cleanups.
 
-2016-11-16 12:05 +0000 [2a40c3a867]  gtjoseph <gjoseph@digium.com>
+         In native_rtp_bridge_compatible_check()
 
-       * pjproject_bundled:  Improve reliability of pjproject download
+         * Made one variable declaration per line.
 
-         The download process now has a timeout which will cause wget to retry
-         if it stops retrieving data for 5 seconds and fetch and curl to timeout
-         if the whole retrieval take smore than 30 seconds.
+         * Extracted if test assignment to make the test easier to see.
 
-         If the tarball retrieval works, the MD5SUM file is retrieved from
-         the downloads site and the md5 checksum is verified.
+         * Made long if tests easier to see the combinatorial logic.
 
-         If either the tarball retrieval or MD5SUM retrieval fails, or the
-         checksums don't match, the entire process is retried once.  If it
-         fails again, any incomplete tarball is deleted.
+         * Added bridge id to a couple debug messages.
 
-         .DELETE_ON_ERROR: was also added to the Makefile.  Not only does
-         this delete the tarball on failure, it till also delete corrupted
-         library files from the pjproject source directory should they
-         fail to build correctly.
+         Change-Id: I65bc5732aa7c9a2537f062f106fbea711cf2daad
 
-         Tested all the way back to FreeBSD 9, CentOS 6, Debian 6 and
-         Ubuntu 14.
+2016-12-23 12:10 +0000 [9dcf9e9cea]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Iea7d33b96a31622ab1b6e54baebaf271959514e1
+       * bridge_native_rtp.c: Fix native rtp bridge data race.
 
-2016-11-11 07:13 +0000 [12c4e664bc]  Mikheili Dautashvili <mishadaut@gmail.com>
+         native_rtp_bridge_compatible() didn't lock the bridge channels before
+         checking the channels for native bridging ability.  As a result, one of
+         the channel's native format capabilities structure got replaced out from
+         under the native bridge check.  Use of a stale pointer to freed memory
+         causes bad things to happen.
 
-       * main/app.c: Transmit Silence on ControlPlayback pause
+         MALLOC_DEBUG, DO_CRASH, and the
+         tests/channels/pjsip/transfers/blind_transfer/caller_direct_media
+         testsuite test caught this.
 
-         ASTERISK-26562 #close
+         * Add missing channel locking in native_rtp_bridge_compatible().
 
-         Change-Id: Ie6cb0ffc2b8c775639ce7784fe96f4ea00cfa2f8
+         Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
 
-2016-11-15 15:01 +0000 [cf6d13180e]  Alexei Gradinari <alex2grad@gmail.com>
+2016-12-21 16:28 +0000 [a9e459f8ac]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no
+       * res_rtp_asterisk.c: Fix uninitialized memory crash.
 
-         The sending codec is switched to the receiving codec and then
-         is switched back to the best native codec on EVERY receiving RTP packets.
-         This is because after call of ast_channel_set_rawwriteformat there is call
-         of ast_set_write_format which calls set_format which sets rawwriteformat
-         to the best native format.
+         ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
+         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
+         parameter may not get initialized.  Thus when the code tries to save the
+         'us' parameter to the local address we could try to copy a ridiculous
+         sized memory buffer and segfault.
 
-         This patch adds a new function ast_set_write_format_path which set
-         specific write path on channel and uses this function to switch
-         the sending codec.
+         * Made pass an initialized 'us' parameter to ast_ouraddrfor().
 
-         ASTERISK-26603 #close
+         * Optimized out the 'us' struct variable.
 
-         Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d
+         ASTERISK-26672 #close
 
-2016-11-10 13:34 +0000 [ee73af1d88]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
 
-       * Update for 13.12.2
+2016-12-21 17:55 +0000 [bcdd282ada]  Richard Mudgett <rmudgett@digium.com>
 
-2016-11-04 10:57 +0000 [a3614d75f6]  Kevin Harwell <kharwell@digium.com>
+       * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().
 
-       * Revert "chan_sip: Fix lastrtprx always updated"
+         We access uninitialized memory when the 'ourip' parameter does not
+         have an initial guess to our IP address.
 
-         This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc.
+         ASTERISK-26672
 
-         Unfortunately, the aforementioned commit caused a regression (incoming calls
-         would eventually disconnect). Thus it is being removed.
+         Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
 
-         ASTERISK-26523 #close
-         ASTERISK-25270
+2016-12-21 16:25 +0000 [ac31233dbe]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d
+       * acl.c: Improve ast_ouraddrfor() diagnostic messages.
 
-2016-10-27 13:48 +0000 [7d7b52c434]  Mark Michelson <mmichelson@digium.com>
+         * Made not generate strings unless they will actually be used.
 
-       * Update for 13.12.1
+         ASTERISK-26672
 
-2016-10-26 07:51 +0000 [9c761b8f45]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
 
-       * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS.
+2016-12-21 17:54 +0000 [0aa5db4b38]  Richard Mudgett <rmudgett@digium.com>
 
-         When executing the MailboxExists dialplan application and
-         MAILBOX_EXISTS dialplan function the passed in temporary voice
-         mailbox was not cleared, causing it to try to free garbage.
+       * chan_rtp.c: Fix uninitialized memory crash.
 
-         ASTERISK-26503 #close
+         unicast_rtp_request() could pass an uninitialized 'us' parameter to
+         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
+         parameter may not get initialized.  Thus when the code tries to save the
+         'us' parameter to the local address we could try to copy a ridiculous
+         sized memory buffer and segfault.
 
-         Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3
+         * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort
+         the UnicastRTP channel request if it fails.
 
-2016-10-25 14:13 +0000 [226a7e36c5]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-26672
 
-       * Update for 13.12.0
+         Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
 
-2016-10-17 14:08 +0000 [df75b647da]  Mark Michelson <mmichelson@digium.com>
+2016-12-07 15:23 +0000 [e2fa3c7eda]  Richard Mudgett <rmudgett@digium.com>
 
-       * Update for 13.12.0-rc1
+       * res_rtp_asterisk.c: Fix off nominal memory leak.
 
-2016-11-18 18:59 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         Change-Id: I95b1088d11244a2edae6607c12fbf33b38658a75
 
-       * asterisk 13.13.0-rc1 Released.
+2016-12-09 12:23 +0000 [d13be4eff6]  Martin Tomec <tomec@ipex.cz>
 
-2016-11-18 09:45 +0000 [cb624b10ae]  Mark Michelson <mmichelson@digium.com>
+       * app_queue: Ensure member is removed from pending when hanging up.
 
-       * Bump ARI version to 1.10.0
+         In some cases member is added to pending_members, and the channel
+         is hung up before any extension state change. So the member would
+         stay in pending_members forever. So when we call do_hang, we
+         should also remove member from pending.
 
-         The video-related bridge changes mean that the version needs to be
-         bumped.
+         ASTERISK-26621 #close
 
-         Change-Id: I41c4495068562bef03aa76728f188b8ac4bd393d
+         Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54
 
-2016-11-17 10:50 +0000 [bde3d022a3]  Mark Michelson <mmichelson@digium.com>
+2016-12-18 15:23 +0000 [815f755155]  George Joseph <gjoseph@digium.com>
 
-       * manager: update minor version
+       * pjproject_bundled:  Make build single threaded
 
-         Based on bridge video AMI event changes, bump the minor version of AMI.
+         There were just too many issues in various environments with
+         multi threaded building of pjproject.  It doesn't really speed
+         things up anyway since asterisk is already being compiled in
+         parallel.
 
-         Change-Id: I02586bd6cafc0baa33ea98c2f75356c0f5e03435
+         Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1
 
-2016-11-16 20:24 +0000 [b213045fe4]  gtjoseph <gjoseph@digium.com>
+2016-12-08 20:00 +0000 [493849dcd7]  Corey Farrell <git@cfware.com>
 
-       * build:  Various OpenBSD issues
+       * chan_sip: Reorder unload_module to deal with stuck TCP threads.
 
-         OpenBSD's 'find' doesn't take the -delete argument so you have to pipe
-         through 'xargs rm -rf'.
+         In some situations TCP threads may become frozen.  This creates the
+         possibility that Asterisk could segfault if they become unfrozen after
+         chan_sip has been dlclose'd.  This reorders the unload_module process to
+         allow abort if threads do not exit within 5 seconds.
 
-         'echo -e' doesn't like \t starting a line. It just prints 't' which
-         causes the libasteriskpj.exports file to be garbage.  They were just
-         cosmetic so they were removed.
+         High level order as follows:
+         1) Unregister from the core to stop new requests.
+         2) Signal threads to stop
+         3) Clear config based tables (but do not free the table itself).
+         4) Verify that threads have shutdown, cancel unload if not.
+         5) Clean all remaining resources.
 
-         librt doesn't exist so the link of libasteriskpj.so fails. It's not
-         actually needed for linux anyway so -lrt was removed from the link.
+         ASTERISK-26586
 
-         res_rtp_asterisk was failing to load because of an undefined
-         DTLS_method. '|| defined(LIBRESSL_VERSION_NUMBER)' was added to the #if
-         so DTLSv1_method is used instead.
+         Change-Id: Ie23692041d838fbd35ece61868f4c640960ff882
 
-         ASTERISK-26608
+2016-12-16 01:32 +0000 [ab447f8a6a]  David M. Lee <dlee@respoke.io>
 
-         Change-Id: I926ec95b0b69633231e3ad1d6e803b977272c49c
+       * configure: fix with-pjproject-bundled
 
-2016-11-14 18:45 +0000 [404596b790]  gtjoseph <gjoseph@digium.com>
+         The AC_ARG_WITH macro's shell variable is withval; not enableval. Purely
+         coincidentally, the option would work when --enable-dev-mode is given.
 
-       * channel:  Fix issues in hangup scenarios caused by frame deferral
+         Also fixed a portability problem with bootstrap.sh, since -printf is not
+         a portable option for find.
 
-         ASTERISK-26343
+         Change-Id: I0f0e5b1a934b5af5737713834361e9c95b96b376
 
-         Change-Id: I06dbf7366e26028251964143454a77d017bb61c8
+2016-12-15 13:25 +0000 [35736d419a]  Richard Mudgett <rmudgett@digium.com>
 
-2016-11-16 15:42 +0000 [2c031b67d3]  Mark Michelson <mmichelson@digium.com>
+       * autosupport: Add 'pjproject show buildopts'
 
-       * res_format_attr_opus: Fix fmtp generation.
+         Change-Id: I8aa55a7c3fb175235ddc7f85e9457d5102d06fa7
 
-         res_format_attr_opus assumed that the string being passed into it was
-         empty. It tried to determine if the only thing it had written was
+2016-12-14 14:21 +0000 [4b285d226d]  Richard Mudgett <rmudgett@digium.com>
 
-         a=fmtp:<num>
+       * chan_dahdi.c: Fix bounds check regression.
 
-         And if it had, it would reset the string. Its calculation was off when
-         working with chan_sip, though. chan_sip passes the entire built SDP
-         rather than an empty string. This resulted in always putting an empty
-         fmtp line in the SDP.
+         Caused by ASTERISK-25494
 
-         ASTERISK-26520 #close
-         Reported by scgm11
+         Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb
 
-         Change-Id: Ib2e8712d26a47067e5f36d5973577added01dbb5
+2016-12-13 14:34 +0000 [9114574188]  Richard Mudgett <rmudgett@digium.com>
 
-2016-11-15 16:23 +0000 [ed0f1afc8c]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip: Add/update ERROR msg if invalid URI.
 
-       * codec_opus: Fix warning when Opus negotiated but codec_opus not loaded.
+         ASTERISK-24499
 
-         When Opus is negotiated but not loaded, the log is spammed with messages
-         because the system does not know how to calculate the number of samples in
-         a frame.
+         Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c
 
-         * Suppress the warning by supplying a function that assumes 20ms of
-         samples in the frame.  For pass through support it doesn't really seem to
-         matter what number of samples is returned anyway.
+2016-12-12 18:38 +0000 [75a6afbec5]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26605 #close
+       * MESSAGE: Flush Message/ast_msg_queue channel alert pipe.
 
-         Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f
+         ASTERISK-25083
 
-2016-11-14 14:36 +0000 [e632222bc4]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2
 
-       * res_pjsip_outbound_authenticator_digest.c: Fix memory pool leak.
+2016-12-13 14:06 +0000 [91485734a4]  George Joseph <gjoseph@digium.com>
 
-         Responding to authentication challenges leaks PJSIP memory pools.
+       * res_sorcery_memory_cache:  Change an error to a debug message
 
-         The leak was introduced with a pjproject 2.5.5 API change.
-         https://trac.pjsip.org/repos/ticket/1929 changed the API usage of
-         pjsip_auth_clt_init() to require the new API pjsip_auth_clt_deinit() to
-         clean up cached authentication allocations that get allocated with
-         pjsip_auth_clt_reinit_req().
+         When a sorcery user calls ast_sorcery_delete on an object that
+         may have already expired from the cache, res_sorcery_memory_cache
+         spits out an ERROR.  Since this can happen frequently and validly when
+         an inbound registration expires after the cache entry expired, the
+         errors are unnecessary and misleading.  Changed to a debug/1.
 
-         ASTERISK-26516 #close
+         Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7
 
-         Change-Id: I4473141b8c3961d0dc91c382beb3876b3efb45c8
+2016-12-09 08:14 +0000 [cd46e86491]  George Joseph <gjoseph@digium.com>
 
-2016-11-15 12:01 +0000 [c92dcc76da]  gtjoseph <gjoseph@digium.com>
+       * pjproject_bundled:  Retry download if previously saved tarball is bad
 
-       * file.c/__ast_file_read_dirs:  Fix issues on filesystems without d_type
+         If a tarball is corrupted during download, the makefile will attempt to
+         download it again. If the tarball somehow gets corrupted after it's
+         downloaded however, the makefile was just failing.  We now
+         retry the download.
 
-         One of the code paths in __ast_file_read_dirs will only get executed if
-         the OS doesn't support dirent->d_type OR if the filesystem the
-         particular file is on doesn't support it.  So, while standard Linux
-         systems support the field, some filesystems like XFS do not.  In this
-         case, we need to call stat() to determine whether the directory entry
-         is a file or directory so we append the filename to the supplied
-         directory path and call stat.  We forgot to truncate path back to just
-         the directory afterwards though so we were passing a complete file name
-         to the callback in the dir_name parameter instead of just the directory
-         name.
+         ASTERISK-26653 #close
 
-         The logic has been re-written to only create a full_path if we need to
-         call stat() or if we need to descend into another directory.
+         Change-Id: I1b24d454852d80186f60c5a65dc4624ea8a1c359
 
-         Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba
+2016-12-08 12:54 +0000 [22820e10fe]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-2015-05-14 17:12 +0000 [7b96e8cc3d]  Maciej Szmigiero <mail@maciej.szmigiero.name>
+       * chan_sip: Delete unneeded check
 
-       * Add X.509 subject alternative name support to TLS certificate
-         verification.
+         P is always true. We check it before
 
-         This way one X.509 certificate can be used for hosts that
-         can be reached under multiple DNS names or for multiple hosts.
+         Change-Id: Iee61cda002a9f61aee26b9f66c5f9b59e3389efb
 
-         Signed-off-by: Maciej Szmigiero <mail@maciej.szmigiero.name>
+2016-12-08 12:58 +0000 [6aa2c5e5f9]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-         ASTERISK-25063 #close
+       * Small code cleanup in chan_sip
 
-         Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f
+         The conditional expressions of the 'if' operators situated
+         alongside each other are identical.
 
-2016-11-14 15:57 +0000 [0790aa528a]  Matt Jordan <mjordan@digium.com>
+         Change-Id: I2cf7c317b106ec14440c7f1b5dcfbf03639f748a
 
-       * pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKS
+2016-12-08 12:43 +0000 [b596fac838]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-         The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how
-         many pairs of local/remote candidates will be made. If for some reason
-         we reach this upper bound, ICE will generally fail and no media will
-         flow between the browser and Asterisk.
+       * Fix typo in chan_sip
 
-         This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of
-         pairs of candidates we'd theoretically allow, which is
-         PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied
-         PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame
-         Docker), this is far too low to allow WebRTC calls to succeed.
+         The conditional expressions of the 'if' operators
+         situated alongside each other are identical.
 
-         Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed
-         even when the system Asterisk was running on had quite a few virtual
-         interfaces.
+         Change-Id: I652b6dcddb3be007e669a6aa8107edb31a1ddafb
 
-         Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55
+2016-12-08 12:30 +0000 [483ed9f1aa]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-2016-11-14 15:32 +0000 [993a6f96c7]  Matt Jordan <mjordan@digium.com>
+       * res_pjsip: Fix 'A = B != C' kind.
 
-       * apps/app_echo: Only relay a single video source change frame
+         Consider reviewing the expression of the 'A = B != C' kind.
+         The expression is calculated as following: 'A = (B != C)'
 
-         In 9785e8d0, app_echo was updated to relay video source updates to the
-         channel for the purposes of displaying video in WebRTC tests.
-         Unfortunately, this can cause a Kafkaesque nightmare if two or more
-         Local channels are in a bridge together where their ends are in
-         app_echo. When this situation occurs, a video update sent into app_echo
-         will cause the video update to be relayed to the other Local channels,
-         causing another round of video updates, etc. In not much time at all,
-         the channel length queues will be overwhelmed, channel alert pipes will
-         fail, and all hell will break loose as Asterisk merrily continues to
-         throw more video update requests onto the channels.
+         Change-Id: Ibaa637dfda47d51a20e26069d3103e05ce80003d
 
-         This patch updates app_echo to *only* relay a single video update. Once
-         a video update has been made, all further video updates are dropped.
-         This meets the intended purpose of the original patch: if we get a video
-         update and we're in app_echo, go ahead and ask the sender to update
-         themselves. However, once we've got that video stream sync'd up, don't
-         keep spamming the world.
+2016-11-30 09:31 +0000 [41c6319c4e]  Walter Doekes <walter+asterisk@wjd.nu>
 
-         Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74
+       * chan_sip: Do not allow non-SP/HTAB between header key and colon.
 
-2016-11-08 10:11 +0000 [d23b4af477]  Matt Jordan <mjordan@digium.com>
+         RFC says SIP headers look like:
 
-       * res/ari/resource_bridges: Add the ability to manipulate the video source
+             HCOLON  =  *( SP / HTAB ) ":" SWS
+             SWS     =  [LWS]                    ; sep whitespace
+             LWS     =  [*WSP CRLF] 1*WSP        ; linear whitespace
+             WSP     =  SP / HTAB                ; from rfc2234
 
-         In multi-party bridges, Asterisk currently supports two video modes:
-          * Follow the talker, in which the speaker with the most energy is shown
-            to all participants but the speaker, and the speaker sees the
-            previous video source
-          * Explicitly set video sources, in which all participants see a locked
-            video source
+         chan_sip implemented this:
 
-         Prior to this patch, ARI had no ability to manipulate the video source.
-         This isn't important for two-party bridges, in which Asterisk merely
-         relays the video between the participants. However, in a multi-party
-         bridge, it can be advantageous to allow an external application to
-         manipulate the video source.
+             HCOLON  =  *( LOWCTL / SP ) ":" SWS
+             LOWCTL  = %x00-1F                   ; CTL without DEL
 
-         This patch provides two new routes to accomplish this:
-         (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId}
-             Sets a video source to an explicit channel
-         (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource
-             Removes any explicit video source, and sets the video mode to talk
-             detection
+         This discrepancy meant that SIP proxies in front of Asterisk with
+         chan_sip could pass on unknown headers with \x00-\x1F in them, which
+         would be treated by Asterisk as a different (known) header.  For
+         example, the "To\x01:" header would gladly be forwarded by some proxies
+         as irrelevant, but chan_sip would treat it as the relevant "To:" header.
 
-         ASTERISK-26595 #close
+         Those relying on a SIP proxy to scrub certain headers could mistakenly
+         get unexpected and unvalidated data fed to Asterisk.
 
-         Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621
+         This change fixes so chan_sip only considers SP/HTAB as valid tokens
+         before the colon, making it agree on the headers with other speakers of
+         SIP.
 
-2016-11-14 14:22 +0000 [404a62eeee]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26433 #close
+         AST-2016-009
 
-       * Revert "Revert "channel: Use frame deferral API for safe sleep.""
+         Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b
 
-         This reverts commit 58c88cfbaa80cb43419cde9186d643d1c5d24baf.
+2016-11-14 18:18 +0000 [888142e891]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I72692e2b2e83ef6da9390075ff20b138b2c374b6
+       * res_format_attr_opus: Fix crash when fmtp contains spaces.
 
-2016-11-14 14:22 +0000 [09d8febc91]  gtjoseph <gjoseph@digium.com>
+         When an opus offer or answer was received that contained an
+         fmtp line with spaces between the attributes the module would
+         fail to properly parse it and crash due to recursion.
 
-       * Revert "Revert "autoservice: Use frame deferral API""
+         This change makes the module handle the space properly and
+         also removes the recursion requirement.
 
-         This reverts commit 1df434e2b4bd7cc34b9b4addf405a3caa7ac16b8.
+         ASTERISK-26579
 
-         Change-Id: Id2b8a8bccbb4bbdd82b792275d4cd6f32563e401
+         Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3
 
-2016-11-14 14:21 +0000 [ffad2b44df]  gtjoseph <gjoseph@digium.com>
+2016-12-06 14:54 +0000 [ebc67d3053]  George Joseph <gjoseph@digium.com>
 
-       * Revert "Revert "AGI: Only defer frames when in an interception routine.""
+       * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command
 
-         This reverts commit 6be5d8de0da7e804544507f70382425af9a07b3f.
+         The PJSIPShowRegistrationsInbound AMI command was just dumping out
+         all AORs which was pretty useless and resource heavy since it had
+         to get all endpoints, then all aors for each endpoint, then all
+         contacts for each aor.
 
-         Change-Id: I4b548137f52ae0686d8f09e21496b778d1c6a797
+         PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail
+         events which meets the intended purpose of the other command and has
+         significantly less overhead.  Also, some additional fields that were
+         added to Contact since the original creation of the ContactStatusDetail
+         event have been added to the end of the event.
 
-2016-11-14 14:21 +0000 [2fefb6187f]  gtjoseph <gjoseph@digium.com>
+         For compatibility purposes, PJSIPShowRegistrationsInbound is left
+         intact.
 
-       * Revert "Revert "Add API for channel frame deferral.""
+         ASTERISK-26644 #close
 
-         This reverts commit 6b5a7ced136b7178ae0b2ba39221eba1cd2e37c9.
+         Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a
 
-         Change-Id: I61d1dbb2e69e1977f684b7dfc8e98211024e1cd1
+2016-12-06 16:45 +0000 [d506874477]  Richard Mudgett <rmudgett@digium.com>
 
-2016-11-14 12:16 +0000 [5e0c224043]  gtjoseph <gjoseph@digium.com>
+       * Bundled pjproject:  Fix finding SIP transactions.
 
-       * cli:  Fix ast_el_read_char to work with libedit >= 3.1
+         Occasionally SIP message transactions are not found when they should be.
+         In the particular case an incoming INVITE transaction is CANCELed but the
+         INVITE transaction cannot be found so a 481 response is returned for the
+         CANCEL.  The problematic calls have a '_' character in the Via branch
+         parameter.
 
-         Libedit 3.1 is not build with unicode on as a default and so the
-         prototype for the el_gets callback changed from expecting a char buffer
-         to accepting a wchar buffer.  If ast_el_read_char isn't changed,
-         the cli reads garbage from teh terminal.
+         The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code.
+         The problem with the "own tolower" code is that it does not calculate the
+         same hash value as when the pj_tolower() function is used.  The "own
+         tolower" code will erroneously modify the ASCII characters '@', '[', '\\',
+         ']', '^', and '_'.  Calls to pj_hash_calc_tolower() can use the
+         PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled.  Calls to
+         pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call
+         find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm.  As a
+         result you may not be able to find a hash tabled entry because the
+         calculated hash values would differ.
 
-         Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and
-         updated ast_el_read_char to use the HAVE_ define to detemrine whether
-         to use char or wchar.
+         * Simply disable PJ_HASH_USE_OWN_TOLOWER.
 
-         ASTERISK-26592 #close
+         ASTERISK-26490 #close
 
-         Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a
+         Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253
 
-2016-11-11 02:41 +0000 [3faca1d4ff]  Igor Goncharovskiy <igor.goncharovsky@gmail.com>
+2016-12-06 12:06 +0000 [4b233675d8]  George Joseph <gjoseph@digium.com>
 
-       * Fix closing rtp ports after call finished in chan_unistim.
+       * pjproject_bundled:  Fix missing inclusion of symbols
 
-         Fix ASTERISK-26565 by adding ast_rtp_instance_stop before
-         rtp instance destroy for chan_unistim. Also several fixes
-         for displayed text translation.
+         Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to
+         the CFLAGS.  Not sure how they went missing.
 
-         Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc
+         Also fixed an uninstall problem where we weren't removing the
+         symlink from libasteriskpj.so.2 to libasteriskpj.so.  While I was
+         there, I fixed it for libasteriskssl as well.
 
-2016-09-23 17:54 +0000 [412d43fa21]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556
 
-       * res_pjsip.c: Rework endpt_send_request() req_wrapper code.
+2016-12-02 12:04 +0000 [580f83dac7]  Richard Mudgett <rmudgett@digium.com>
 
-         * Don't hold the req_wrapper lock too long in endpt_send_request().  We
-         could block the PJSIP monitor thread if the timeout timer expires.
-         sip_get_tpselector_from_endpoint() does a sorcery access that could take
-         awhile accessing a database.  pjsip_endpt_send_request() might take awhile
-         if selecting a transport.
+       * Remove files that got merged in error somehow to the 13 branch.
 
-         * Shorten the time that the req_wrapper lock is held in the callback
-         functions.
+         Change-Id: Id79e2226c31084f9252d5aede9050d3cf13322c8
 
-         * Simplify endpt_send_request() req_wrapper->timeout code.
+2016-11-30 18:25 +0000 [61ba2a014a]  Richard Mudgett <rmudgett@digium.com>
 
-         * Removed some redundant req_wrapper->timeout_timer->id assignments.
+       * res_pjsip_outbound_registration.c: Filter redundant statsd reporting.
 
-         Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9
+         Increasing the testsuite shutdown timeout before forcibly killing
+         Asterisk allowed more events to be sent out.  Some tests failed as
+         a result.  The tests/channels/pjsip/statsd/registrations failed
+         because we now get the statsd events that a comment in the test
+         configuration stated couldn't be intercepted.  Unfortunately, we
+         get a variable number of events because of internal status state
+         transition races generating redundant statsd events.
 
-2016-09-21 15:10 +0000 [2e7fc56d3c]  Richard Mudgett <rmudgett@digium.com>
+         We were reporting redundant statsd PJSIP.registrations.state changes
+         for internal state changes that equated to the same thing publicly.
 
-       * res_pjsip: Fix tdata leaks in off nominal paths.
+         * Made update_client_state_status() filter out redundant statsd
+         updates.
 
-         Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b
+         ASTERISK-26527
 
-2016-10-24 12:41 +0000 [da68b185b3]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: If851c7d514bb530d9226e4941ba97dcf52000646
 
-       * res_pjsip_registrar_expire.c: Remove extra linefeed in debug message.
+2016-11-22 11:20 +0000 [2ceb609edb]  Guido Falsi <mad@madpilot.net>
 
-         Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94
+       * res_rtp: Fix regression when IPv6 is not available.
 
-2016-11-10 10:57 +0000 [b70eb07c53]  Joshua Colp <jcolp@digium.com>
+         The latest Release candidate fails to create RTP streams when IPv6
+         is not available. Due to the changes made in September the ast_sockaddr
+         structure passed around to create these streams is always of AF_INET6
+         type, causing failure when used for IPv4. This patch adds a utility
+         function to check for availability of IPv6 and applies such check
+         at startup to determine how to create the ast_sockaddr structures.
 
-       * res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp.
+         ASTERISK-26617 #close
 
-         When optimistic SRTP was on it was possible for us to still
-         set up a call without an audio stream if an offer was received
-         with required SRTP.
+         Change-Id: I627a4e91795e821111e1cda523f083a40d0e0c3e
 
-         This change makes it so this scenario will now fail with a 488
-         response.
+2016-11-28 19:43 +0000 [53459cdaa9]  Eduardo S. Libardi <eslibardi@gmail.com>
 
-         ASTERISK-26575
+       * res_calendar_caldav: Add support reading gmail calendar
 
-         Change-Id: I7d14187037681f48879bd20319ac79d0877318f3
+         The response from gmail calendar includes the string name
+         "caldav:calendar-data". res_calendar_caldav implements
+         the example included in RFC 4791: string "C:calendar-data".
+         When reading the calendar, res_calendar_caldav compare the
+         string and if does not match just discards the event.
+         This commit compares the response to both strings,
+         successfully loading gmail calendar events.
+         Writing to gmail calendar is working prior to this fix.
 
-2016-11-10 08:33 +0000 [71dc333565]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26624
+         Reported by: Eduardo S. Libardi
 
-       * app_queue: Add mention of 'ABANDON' variable to CHANGES.
+         Change-Id: Ia1eef10552ae616efb645d390f5ffe81260d7d4a
 
-         ASTERISK-26558
+2016-11-23 18:27 +0000 [44fe4a5769]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e
+       * PJPROJECT logging: Made easier to get available logging levels.
 
-2016-11-10 07:41 +0000 [6b5a7ced13]  gtjoseph <gjoseph@digium.com>
+         Use of the new logging is as simple as issuing the new CLI command or
+         setting the new pjproject.conf option.
 
-       * Revert "Add API for channel frame deferral."
+         Other options that can affect the logging are how you have the pjproject
+         log levels mapped to Asterisk log types in pjproject.conf and if you have
+         configured Asterisk to log the DEBUG type messages.  Altering the
+         pjproject.conf level mapping shouldn't be necessary for most installations
+         as the default mapping is sensible.  Configuring Asterisk to log the DEBUG
+         message type is standard practice for collecting debug information.
 
-         This reverts commit 9231a56cf3d6f5eca1bf2d37d827453400690773.
-         Multiple testsuite failures were detected after the fact.
+         * Added CLI "pjproject set log level" command to dynamically adjust the
+         maximum pjproject log message level.
 
-         Change-Id: I3bac8d7c3ddb69a4ddf6c5d6de0ffa5ff7ff3af7
+         * Added CLI "pjproject show log level" command to see the currently set
+         maximum pjproject log message level.
 
-2016-11-10 07:41 +0000 [6be5d8de0d]  gtjoseph <gjoseph@digium.com>
+         * Added pjproject.conf startup section "log_level" option to set the
+         initial maximum pjproject log message level so all messages could be
+         captured from initialization.
 
-       * Revert "AGI: Only defer frames when in an interception routine."
+         * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into
+         bundled pjproject.  Pjproject will use the currently set run time log
+         level to determine if a log message is generated just like Asterisk
+         verbose and debug logging levels.
 
-         This reverts commit 5c10091f3d1430c6fc04015226f8c3e3aa9d8282.
-         Multiple testsuite failures were detected after the fact.
+         * In log_forwarder(), made always log enabled and mapped pjproject log
+         messages.  DEBUG mapped log messages are no longer gated by the current
+         Asterisk debug logging level.
 
-         Change-Id: I397a841acc17ae230c512449cd6bed89d2ef3b73
+         * Removed RAII_VAR() from res_pjproject.c:get_log_level().
 
-2016-11-10 07:41 +0000 [1df434e2b4]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26630 #close
 
-       * Revert "autoservice: Use frame deferral API"
+         Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389
 
-         This reverts commit 2e3a3545754749de21873bfdc6d1a40ec7d8893f.
-         Multiple testsuite failures were detected after the fact.
+2016-11-30 10:48 +0000 [17b0b91afa]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: Ia45fa4633fae74dca345b24bb6722737c63035de
+       * Frame deferral: Re-queue deferred frames one-at-a-time.
 
-2016-11-10 07:40 +0000 [58c88cfbaa]  gtjoseph <gjoseph@digium.com>
+         The recent change that made frame deferral into an API had a behavior
+         change to it. When frame deferral was completed, we would take all of
+         the deferred frames and queue them all onto the channel in one call to
+         ast_queue_frame_head(). Before frame deferral was API-ized, places that
+         performed manual frame deferral would actually take each deferred frame
+         and queue them onto the channel.
 
-       * Revert "channel: Use frame deferral API for safe sleep."
+         This change in behavior caused the confbridge_recording test to start
+         failing consistently. Without going too crazily deep into the details,
+         a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect
+         was attempting to break it out of the sleep, but because there were more
+         frames in the channel read queue than expected, the channel ended up
+         being unable to break from its sleep loop.
 
-         This reverts commit 44f7e252397fd87420b3374df26941d7436401b3.
-         Multiple testsuite failures were detected after the fact.
+         By restoring the behavior of individual frame queuing after deferral,
+         the test starts passing again.
 
-         Change-Id: I56299087da22128a95f0c8f3955f740890d7ca65
+         Note, this points to a potential underlying issue pointing to an
+         "unbalance" that can occur when queuing multiple frames at once,
+         and so a follow-up issue is being created to investigate that
+         possibility.
 
-2016-11-09 18:18 +0000 [a562fbe618]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d
 
-       * build:  Fix default values for some SANITIZER options
+2016-06-28 16:26 +0000 [b0c9f07f04]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         2 of the sanitizers didn't have default values so in systems that
-         don't support sanitizers menuselect would spit out warnings.  They
-         were harmless but confusing.  They've now been set to "0".
+       * OpenSSL 1.1.0 support
 
-         Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58
+         OpenSSL 1.1.0 includes some major changes in the interface. See
+         https://wiki.openssl.org/index.php/1.1_API_Changes .
 
-2016-11-06 06:04 +0000 [7fd5031c1c]  Sebastian Gutierrez <sgutierrez@integraccs.com>
+         Status: Right now there are still a few deprecation notes with OpenSSL
+         1.1.0. But it's a start.
 
-       * app_queue: new variable set when abandoned
+         Changes:
+         * CRYPTO_LOCK is no longer available. Replace it with its value for now.
+           I don't completely understand what it is used for there.
+         * Remove several functions from libasteriskssl that seem to no longer be
+           needed.
+         * Structures have become opaque and are accesses with accessors.
+         * ERR_remove_thread_state() no longer needed.
+         * SSLv2 code now could no longer be used in 1.1.
 
-         sets the variable ABANDONED to TRUE if the call was not answered.
+         ASTERISK-26109 #close
 
-         ASTERISK-26558
+         Change-Id: I5e29d477d486ca29b6aae0dc2f5dff960c1cb82b
 
-         Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3
+2016-11-28 15:12 +0000 [a33ed3327a]  Matt Jordan <mjordan@digium.com>
 
-2016-11-08 10:48 +0000 [e043d1a55c]  Mark Michelson <mmichelson@digium.com>
+       * res/res_pjsip: Fix documentation whitespace issues
 
-       * res_pjsip_session: Do not call session supplements when it's too late.
+         Tabs > Spaces.
 
-         res_pjsip_sesssion was hooking into transaction and invite state
-         changes. One of the reasons for doing so was due to the
-         PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the
-         message sending process, and so we should call session supplements to
-         alter the outgoing message.
+         Change-Id: If1e43a71822615a898e958e0f8b2e882606f0bd0
 
-         In reality, this event was meant to indicate that the message either
-         a) had already been sent, or
-         b) required a DNS lookup and would be sent when the DNS query
-         completed.
+2016-11-22 10:27 +0000 [09c36a6535]  Matt Jordan <mjordan@digium.com>
 
-         In case (a), this meant we were altering an already-sent
-         request/response for no reason. In case (b), this potentially meant we
-         could be trying to alter a request/response at the same time that the
-         DNS resolution completed. In this case, it meant we might be stomping on
-         memory being used by the thread actually sending the message. This
-         caused potential crashes and memory corruption.
+       * res_pjsip/chan_sip: Advertise 'ws' in the SIP URI transport parameter
 
-         This patch removes the calls to session supplements from the case where
-         the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to
-         alter the message at this point is too late, and it can cause nothing
-         but harm to try to do it. Because there were no longer any calls to the
-         handle_outgoing() function, it has been removed.
+         Per RFC 7118 5.2, the SIP URI 'transport' parameter should advertise
+         'ws' when WebSockets are to be used as the transport. This applies to
+         both secure and insecure WebSockets.
 
-         Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
+         There were two bugs in Asterisk with respect to this:
 
-2016-11-03 16:46 +0000 [44f7e25239]  Mark Michelson <mmichelson@digium.com>
+         (1) The most egregious occurs in res_pjsip. There, we advertise 'ws' for
+             insecure websockets and 'wss' for secure websockets. While this
+             would seem to make sense - since 'WS' and 'WSS' are used for the Via
+             Transport parameter - this is not the case for the SIP URI. This
+             patch corrects that by registering the secure websockets with
+             pjproject using the shorthand 'WS', and by returning 'ws' when asked
+             for the transport parameter. Note that in pjproject, it is perfectly
+             valid to have multiple transports use the same shorthand.
 
-       * channel: Use frame deferral API for safe sleep.
+         (2) In chan_sip, we return an upper-case version of the transport 'WS'
+             instead of 'ws'. Since we should be strict in what we send and
+             liberal in what we accept (within reason), this patch lower-cases
+             the transport before appending it to the parameter.
 
-         This is another case where manual frame deferral can be replaced with
-         centralized routines instead.
+         ASTERISK-24330 #close
+         Reported by: cervajs, Inaki Baz Castillo
 
-         Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e
+         Change-Id: Iff77b645f8cc3b7cd35168a6676c26b147f22f42
 
-2016-11-03 16:46 +0000 [2e3a354575]  Mark Michelson <mmichelson@digium.com>
+2016-11-28 11:03 +0000 [29e887e9e1]  George Joseph <gjoseph@digium.com>
 
-       * autoservice: Use frame deferral API
+       * build_tools:  Fix download_externals to handle certified branches
 
-         Rather than use manual frame deferral, just let the channel API do it
-         for us.
+         download_externals wasn't handling the "certified/13.x" version
+         correctly.
 
-         ASTERISK-26343
+         Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a
 
-         Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49
+2016-11-02 05:05 +0000 [bfb8c962c4]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-2016-11-03 16:42 +0000 [5c10091f3d]  Mark Michelson <mmichelson@digium.com>
+       * autoconf: more variants for OSARCH linux-gnu
 
-       * AGI: Only defer frames when in an interception routine.
+         There are quite a few odd GNU/Linux platforms. Just call all of them
+         linux-gnu.
 
-         AGI recently was modified to defer important frames. This was because
-         when AGI was used in a connected line interception routine, the
-         resulting connected line frame would end up getting discarded by the
-         AGI.
+         Specifically this fixes building the Debian platforms mips64el and x32.
+         And maybe also others.
 
-         However, this caused bad behavior in other cases. Specifically, during a
-         transfer, if someone attempted to manually set the Caller ID on a
-         channel in an AGI, the deferred connected line frame would end up
-         overwriting what had been manually set in the AGI.
+         ASTERISK-26546 #close
 
-         Since the initial issue was specific to interception routines, this
-         change removes the manual frame deferral from AGI and instead uses the
-         new frame deferral API in interception routines.
+         Change-Id: I06ec4bd7f0ee1c84b6b24d81538223b07c4174b1
 
-         ASTERISK-26343 #close
-         Reported by Morton Tryfoss
+2016-11-17 08:25 +0000 [a1fa909033]  Timo Teräs <timo.teras@iki.fi>
 
-         Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208
+       * codec_dahdi: Fix poll.h include.
 
-2016-11-03 16:36 +0000 [9231a56cf3]  Mark Michelson <mmichelson@digium.com>
+         POSIX defines poll.h. sys/poll.h should not be used as it is c-library
+         internal header which may or may not exist. Notably in musl including
+         sys/poll.h generates warning of being incorrect.
 
-       * Add API for channel frame deferral.
+         Change-Id: Ib318c1c7142a737bcf3caa4d8d72560bebe39252
 
-         There are several places in Asterisk that have duplicated logic
-         for deferring important frames until later.
+2016-11-26 10:57 +0000 [0cc8351484]  Michael Kuron <m.kuron@gmx.de>
 
-         This commit adds a couple of API calls to facilitate this automatically.
+       * chan_sip: Fix segfault during module unload
 
-         ast_channel_start_defer_frames(): Future reads of deferrable frames on
-         this channel will be deferred until later.
+         If a TCP/TLS connection was pending (not accepted and not timed out) during
+         unload of chan_sip, Asterisk would segfault when trying to send a signal to
+         a thread whose thread ID hadn't been recorded yet. This commit fixes that by
+         recording the thread ID before calling the blocking connect() syscall.
+         This was a regression introduced by 776a14386a55b5425c7e9617eff8af8b45427144.
 
-         ast_channel_stop_defer_frames(): Any frames that have been deferred get
-         requeued onto the channel.
+         The above wasn't enough to fix the segfault, which was now delayed to the
+         point where connect() timed out. Therefore, it was necessary to also remove
+         the SA_RESTART flag from the SIGURG sigaction so that pthread_kill() could be
+         used to interruput the connect() syscall.
+         This was a regression introduced by 5d313f51b982a18f7321adcf7c7a4e822d8b2714.
 
-         ASTERISK-26343
+         ASTERISK-26586 #close
 
-         Change-Id: I3e1b87bc6796f222442fa6f7d1b6a4706fb33641
+         Change-Id: I76fd9d47d56e4264e2629bce8ec15fecba673e7b
 
-2016-11-03 07:42 +0000 [a9ac1f5de4]  Alexander Anikin <may213@yandex.ru>
+2016-11-11 08:16 +0000 [8756ce64b7]  gestoip2 <gestoip2@ull.edu.es>
 
-       * chan_ooh323: Fixes to work right with Cisco devices
+       * res_rtp_asterisk: RTT miscalculation in RTCP
 
-         Changed output packets queue processing algo to one read-one write
-         instead of all read-all send
+         When retrieving RTCP stats for PJSIP channels, RTT values are unreliable.
+         RTT calculation is correct, but the data representation isn't.  RTT is
+         represented by a 32-bit fixed-point number with the integer part in the
+         first 16 bits and the fractional part in the last 16 bits.  In order to
+         get the RTT value, the fractional part is miscalculated, there is an
+         unnecessary 16 bit shift that causes overflow.  Besides this there is
+         another mistake, when transforming the integer value to the fixed point
+         fractional part via bitwise operation, that loses precision.
 
-         Remove h.245 tunneling parameter from ReleaseComplete packet
+         * RTT fractional part is no longer shifted, avoiding overflow.
 
-         ASTERISK-24400 #close
-         Reported by: Dmitry Melekhov
-         Tested by: Dmitry Melekhov
+         * RTT fractional part is transformed to its fixed-point value more
+         precisely.
 
-         Change-Id: I0b31933b062a21011dbac9a82b8bcfe345f406f6
+         * Fixed timeval2ntp() and ntp2timeval() second fraction conversions.
 
-2016-11-03 13:10 +0000 [0ee249075a]  Alexander Anikin <may213@yandex.ru>
+         * Fixed NTP timestamp report logging.  The usec was inexplicably
+         multiplied by 4096.
 
-       * chan_ooh323: reset rrq count on gk registration
+         ASTERISK-26566 #close
+         Reported by Hector Royo Concepcion
 
-         reset registration attempts count on success registration on gatekeeper
+         Change-Id: Ie09bdabfee75afb3f1b8ddfd963e5219ada3b96f
 
-         Change-Id: I5f47351852e0ca76c9ac78421659600e0f106336
+2016-11-15 13:44 +0000 [8e77d6f520]  Michael Kuron <m.kuron@gmx.de>
 
-2016-11-06 03:46 +0000 [59c23e1768]  Michael Kuron <m.kuron@gmx.de>
+       * tcptls: Use new certificate upon sip reload
 
-       * automon: restore mixing of the both channels after recording stops
+         Previously, a TLS server socket would only be restarted upon sip reload if the
+         bind address had changed. This commit adds checking for changes to TLS
+         parameters like certificate, ciphers, etc. so they get picked up without
+         requiring a reload of the entire chan_sip module. This does not affect open
+         connections in any way, but new connections will use the new TLS parameters.
+         The changes also apply to HTTP and Manager.
 
-         This is a regression over Asterisk 11, introduced by
-         2dc8a060064f359a17f5ebcd515d85fe5203c019. Previously, recordings started via
-         the automon DTMF code would automatically be mixed together using sox because
-         app_monitor would be called with the m option. This commit restores this
-         behavior.
-
-         Change-Id: Ibaf58684285c3f1b6ca3714524e6d638ae3b3759
-
-2016-11-04 15:42 +0000 [e79acaeb75]  Matt Jordan <mjordan@digium.com>
-
-       * res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems
-
-         Not surprisingly, using Respoke (and possibly other systems) it is
-         possible to blow past the 16k limit for a WebSocket packet size. This
-         patch bumps it up to 32k, which, at least for Respoke, is sufficient.
-         For now.
-
-         Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that
-         matter), this patch adds a LOW_MEMORY directive that sets the buffer to
-         8k for systems who have asked for their reduced memory availability to
-         be considered.
-
-         Change-Id: Id235902537091b58608196844dc4b045e383cd2e
-
-2016-11-04 15:40 +0000 [7a83196985]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-26604 #close
 
-       * res_stasis: Set a video source mode on Stasis created bridges
+         Change-Id: I169e86cefc6dcd627c915134015a6a1ab1aadbe6
+2016-11-11 00:29 +0000 [86d824b7ff]  Timo Teräs <timo.teras@iki.fi>
 
-         When a bridge is created via ARI (through res_stasis), no video source
-         mode is set by default. As a result, any endpoint sending video media
-         won't ever see any video reflected back to it.
+       * addons/chan_mobile: do not use strerror_r
 
-         This patch defaults a bridge to a 'follow the talker' video mode.
-         Further work can be done to add routes that allow for the video mode to
-         be controlled through the /bridges resource.
+         The two reasons why it might be used are that some systems do not
+         implement strerror in thread safe manner, and that strerror_r returns
+         the error code in the string in case there's no error message.
 
-         Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866
+         However, all of asterisk elsewhere uses strerror() and assumes it
+         to be thread safe. And in chan_mobile the errno is also explicitly
+         printed so neither of the above reasons are valid.
 
-2016-11-04 15:37 +0000 [e7dc536b7a]  Matt Jordan <mjordan@digium.com>
+         The reasoning to remove usage is that there are actually two versions
+         of strerror_r: XSI and GNU. They are incompatible in their return
+         value, and there's no easy way to figure out which one is being
+         used. glibc gives you the GNU version if _GNU_SOURCE is defined,
+         but the same feature test macro is needed for other symbols. On
+         all other systems you assumedly get XSI symbol, and compilation warnings
+         as well as non-working error printing.
 
-       * main/bridge_channel: Fix channel reference leak on video source
+         Thus the easiest solution is to just remove strerror_r and use
+         strerror as rest of the code. Alternative is to introduce ast_strerror
+         in separate translation unit so it can request the XSI symbol in
+         glibc case, and replace all usage of strerror.
 
-         When a channel is made the video source, the bridge holds a reference to
-         it. Whenever the video source changes, that reference is released.
-         However, a ref leak does occur if the channel leaves the bridge (such as
-         being hung up) while it is the video source, as the bridge never
-         releases the ref in such a case.
+         Change-Id: I84d35225b5642d85d48bc35fdf399afbae28a91d
 
-         This patch adds a line to the bridge_channel_internal_join routine such
-         that, when a channel finishes its time in the bridge, it notifies the
-         bridge via ast_bridge_remove_video_src that if it is a video source its
-         reference should be released.
+2016-11-21 09:40 +0000 [425da14927]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26555 #close
+       * build:  Backport addition of librt check to configure.ac
 
-         Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a
+         A while back, a master-only change was made to check for librt which
+         should probably have been cherry-picked to 13 at that time.  Sometime
+         between then and now, part of that change did make it into 13 but it
+         was incomplete and non-functional.  This patch backports the rest
+         of the librt check and allows the link of libasteriskpj to use the
+         results.
 
-2016-11-04 15:36 +0000 [7c824b955d]  Matt Jordan <mjordan@digium.com>
+         Change-Id: I1424008fd8c90f389dda53162ec4a340b253a3c1
 
-       * main/bridge: Add some verbose logging for video source changes
+2016-11-16 12:05 +0000 [2a40c3a867]  George Joseph <gjoseph@digium.com>
 
-         It's actually quite useful to see the source of a video stream change.
-         This doesn't happen terribly often, even with talk detection - but when
-         it does, it's nice to know which channel is now providing your video
-         stream.
+       * pjproject_bundled:  Improve reliability of pjproject download
 
-         As a verbose 5 level message, it shouldn't be terribly spammy or costly
-         to have, and is 'lower level' then most other verbose messages that the
-         bridge system emits.
+         The download process now has a timeout which will cause wget to retry
+         if it stops retrieving data for 5 seconds and fetch and curl to timeout
+         if the whole retrieval take smore than 30 seconds.
 
-         ASTERISK-26555
+         If the tarball retrieval works, the MD5SUM file is retrieved from
+         the downloads site and the md5 checksum is verified.
 
-         Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c
+         If either the tarball retrieval or MD5SUM retrieval fails, or the
+         checksums don't match, the entire process is retried once.  If it
+         fails again, any incomplete tarball is deleted.
 
-2016-11-04 15:33 +0000 [fd6af2dee8]  Matt Jordan <mjordan@digium.com>
+         .DELETE_ON_ERROR: was also added to the Makefile.  Not only does
+         this delete the tarball on failure, it till also delete corrupted
+         library files from the pjproject source directory should they
+         fail to build correctly.
 
-       * bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source
+         Tested all the way back to FreeBSD 9, CentOS 6, Debian 6 and
+         Ubuntu 14.
 
-         WebRTC clients really, really want to know the SSRC of the media they're
-         getting. Changing the SSRC is generally not a good thing.
+         Change-Id: Iea7d33b96a31622ab1b6e54baebaf271959514e1
 
-         bridge_softmix, starting in Asterisk 12, started changing the SSRC of
-         parties as they joined or left the bridge. With most phones, this isn't
-         a problem: phones just play back the stream they're getting. With WebRTC
-         clients, however, the SSRC is tied to a media stream that may be
-         negotiated. When a new SSRC just shows up, the media can be dropped.
+2016-11-11 07:13 +0000 [12c4e664bc]  Mikheili Dautashvili <mishadaut@gmail.com>
 
-         As it turns out, the SSRC change shouldn't even be necessary. From the
-         perspective of the client, it's still talking to Asterisk with the same
-         media stream: why indicate that the far party has suddenly changed to a
-         different source of media?
+       * main/app.c: Transmit Silence on ControlPlayback pause
 
-         This patch opts to just remove the SSRC changes. With this patch, video
-         clients that join/leave a softmix bridge actually get the video stream
-         instead of freaking out.
+         ASTERISK-26562 #close
 
-         ASTERISK-26555
+         Change-Id: Ie6cb0ffc2b8c775639ce7784fe96f4ea00cfa2f8
 
-         Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf
+2016-11-15 15:01 +0000 [cf6d13180e]  Alexei Gradinari <alex2grad@gmail.com>
 
-2016-10-28 15:11 +0000 [bd4d7d8ad0]  Kevin Harwell <kharwell@digium.com>
+       * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no
 
-       * stasis_recording/stored: remove calls to deprecated readdir_r function.
+         The sending codec is switched to the receiving codec and then
+         is switched back to the best native codec on EVERY receiving RTP packets.
+         This is because after call of ast_channel_set_rawwriteformat there is call
+         of ast_set_write_format which calls set_format which sets rawwriteformat
+         to the best native format.
 
-         The readdir_r function has been deprecated and should no longer be used. This
-         patch removes the readdir_r dependency (replaced it with readdir) and also moves
-         the directory search code to a more centralized spot (file.c)
+         This patch adds a new function ast_set_write_format_path which set
+         specific write path on channel and uses this function to switch
+         the sending codec.
 
-         Also removed a strict dependency on the dirent structure's d_type field as it
-         is not portable. The code now checks to see if the value is available. If so,
-         it tries to use it, but defaults back to using the stats function if necessary.
+         ASTERISK-26603 #close
 
-         Lastly, for most implementations of readdir it *should* be thread-safe to make
-         concurrent calls to it as long as different directory streams are specified.
-         glibc falls into this category. However, since it is possible that there exist
-         some implementations that are not safe, locking has been added for those other
-         than glibc.
+         Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d
 
-         ASTERISK-26412
-         ASTERISK-26509 #close
+2016-11-10 13:34 +0000 [ee73af1d88]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba
+       * Update for 13.12.2
 
-2016-11-04 10:57 +0000 [cb30963d22]  Kevin Harwell <kharwell@digium.com>
+2016-11-04 10:57 +0000 [a3614d75f6]  Kevin Harwell <kharwell@digium.com>
 
        * Revert "chan_sip: Fix lastrtprx always updated"
 
 
          Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d
 
-2016-11-02 10:52 +0000 [3a1f9c5dab]  Joshua Colp <jcolp@digium.com>
+2016-10-27 13:48 +0000 [7d7b52c434]  Mark Michelson <mmichelson@digium.com>
 
-       * res_stasis: Don't unsubscribe from a NULL bridge.
+       * Update for 13.12.1
 
-         A NULL bridge has special meaning in res_stasis for
-         unsubscribing. It means that a subscription to ALL
-         bridges should be removed. This should not be done
-         as part of the normal subscription management in
-         the res_stasis channel loop.
+2016-10-26 07:51 +0000 [9c761b8f45]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26468
+       * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS.
 
-         Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0
+         When executing the MailboxExists dialplan application and
+         MAILBOX_EXISTS dialplan function the passed in temporary voice
+         mailbox was not cleared, causing it to try to free garbage.
 
-2016-11-03 13:45 +0000 [eceab15f33]  Alexander Anikin <may213@yandex.ru>
+         ASTERISK-26503 #close
 
-       * chan_ooh323: Fix infinite loop on read second part of H.225 packet
+         Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3
 
-         Fix logic on read second part of H.225 packet. There was infinite loop on
-         wrong connections due to read before poll.
+2016-10-25 14:13 +0000 [226a7e36c5]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff
+       * Update for 13.12.0
 
-2016-11-03 11:55 +0000 [a9992da4aa]  gtjoseph <gjoseph@digium.com>
+2016-10-17 14:08 +0000 [df75b647da]  Mark Michelson <mmichelson@digium.com>
 
-       * pjproject_bundled:  Fix issue with libasteriskpj needing libresample
+       * Update for 13.12.0-rc1
 
-         libresample is only needed by pjproject if we're building pjsua, which
-         we only do if TEST_FRAMEWORK is selected.  It's required by pjsua to
-         process audio which is needed by some testsuite tests.  Unfortunately,
-         pjproject relies on a newer version of libresample than the version
-         that ships by most distros so we need to compile the version that's
-         bundled with pjproject.  Since we only need it for pjsua, we DON'T want
-         it's symbols exposed when we actually build asterisk.
+2017-12-13 14:34 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         There was a problem however... TEST_FRAMEWORK is only known AFTER we've
-         already run ./configure on both asterisk and pjproject but pjproject's
-         ./configure needs to test it to know whether to set up to build
-         libresample or not.  The previous way of figuring this out was to
-         always tell ./configure "yes" but not actually build the library.  This
-         caused an issue where building libasteriskpj was being told to include
-         libresample but it wasn't actually there.
+       * asterisk certified/13.13-cert9 Released.
 
-         The solution is to still do a default pjproject configure during an
-         asterisk ./configure but if makeopts or menuselect.makeopts changes
-         subsequently, we now reconfigure pjproject, taking into account the
-         current state of TEST_FRAMEWORK.  Previously, if makeopts or
-         menuselect.makeopts changed, only a recompile of pjproject was done.
+2017-11-30 10:12 +0000 [3eea735a39]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685
+       * AST-2017-012: Place single RTCP report block at beginning of report.
 
-2016-11-01 19:48 +0000 [714412f6c4]  Sebastian Gutierrez <sgutierrez@integraccs.com>
+         When the RTCP code was transitioned over to Stasis a code change
+         was made to keep track of how many reports are present. This count
+         controlled where report blocks were placed in the RTCP report.
 
-       * chan_sip: add missing account code
+         If a compound RTCP packet was received this logic would incorrectly
+         place a report block in the wrong location resulting in a write
+         to an invalid location.
 
-         Added missing account to AMI event of sip show peers
+         This change removes this counting logic and always places the report
+         block at the first position. If in the future multiple reports are
+         supported the logic can be extended but for now keeping a count
+         serves no purpose.
 
-         ASTERISK-26176 #close
+         ASTERISK-27382
+         ASTERISK-27429
 
-         Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482
+         Change-Id: Iad6c8a9985c4b608ef493e19c421211615485116
 
-2016-09-13 04:08 +0000 [0cf1778eed]  Alexander Traud <pabstraud@compuserve.com>
+2017-12-05 18:04 +0000 [7c0bc72972]  Richard Mudgett <rmudgett@digium.com>
 
-       * rtp_engine: Allow more than 32 dynamic payload types.
+       * CDR: Fix deadlock setting some CDR values.
 
-         The dynamic range (96-127) allows 32 RTP Payload Types. RFC 3551 section 3
-         allows to reassign other ranges. Consequently, when the dynamic range is
-         exhausted, you can go for "rtp_pt_dynamic = 35" (or 0) in asterisk.conf. This
-         enables the range 35-63 (or 0-63) giving room for another 29 (or 64) payload
-         types.
+         Setting channel variables with the AMI Originate action caused a deadlock
+         when you set CDR(amaflags) or CDR(accountcode).  This path has the channel
+         locked when the CDR function is called.  The CDR function then
+         synchronously passes the job to a stasis thread.  The stasis handling
+         function then attempts to lock the channel.  Deadlock results.
 
-         ASTERISK-26311 #close
+         * Avoid deadlock by making the CDR function handle setting amaflags and
+         accountcode directly on the channel rather than passing it off to the CDR
+         processing code under a stasis thread to do it.
 
-         Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964
-         (cherry picked from commit 9ac53877f688c06acaa7c377f15da8770e4ee88b)
+         * Made the CHANNEL function and the CDR function process amaflags the same
+         way.
 
-2016-11-02 09:15 +0000 [d971647949]  Joshua Colp <jcolp@digium.com>
+         * Fixed referencing the wrong message type in cdr_prop_write().
 
-       * app_dial: Fix incorrect device state when channel is picked up.
+         ASTERISK-27460
 
-         Given the scenario where multiple channels are dialed using Dial()
-         but the caller is picked up using PickupChan() all outgoing channels
-         except the channel specified to PickupChan() would be marked
-         as ringing until the call had been hung up.
+         Change-Id: I5eacb47586bc0b8f8ff76a19bd92d1dc38b75e8f
 
-         When using the PickupChan application the channel executing the
-         application is swapped into place of another channel. As part
-         of this process the channel is answered. The Dial application
-         has explicit logic which checks if the channel is answered,
-         cancels all other outgoing channels, and bridges. This logic is
-         different than the normal logic that is executed when an outgoing
-         channel is answered. This different logic failed to publish dial
-         events stating that the other outgoing channels had been canceled.
-         As a result references to the outgoing channels were held onto by
-         the dial masquerade process until the call had been ended and
-         the channels had gone away. This would result in the channels
-         appearing in the "core show channels" list despite not being present
-         anymore and would also result in incorrect device state.
+2017-12-01 19:42 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         This change makes it so that this logic also publishes
-         dial events stating that the other outgoing channels have been
-         canceled.
+       * asterisk certified/13.13-cert8 Released.
 
-         ASTERISK-26549
+2017-11-30 14:38 +0000 [efeb9da0e7]  George Joseph <gjoseph@digium.com>
 
-         Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f
+       * AST-2017-013: chan_skinny: Call pthread_detach when sess threads end
 
-2016-11-01 13:13 +0000 [afecb2cfc0]  Richard Mudgett <rmudgett@digium.com>
+         chan_skinny creates a new thread for each new session.  In trying
+         to be a good cleanup citizen, the threads are joinable and the
+         unload_module function does a pthread_cancel() and a pthread_join()
+         on any sessions that are active at that time.  This has an
+         unintended side effect though. Since you can call pthread_join on a
+         thread that's already terminated, pthreads keeps the thread's
+         storage around until you explicitly call pthread_join (or
+         pthread_detach()).   Since only the module_unload function was
+         calling pthread_join, and even then only on the ones active at the
+         tme, the storage for every thread/session ever created sticks
+         around until asterisk exits.
 
-       * bundled pjproject: Fix DNS write to freed memory.
+         * A thread can detach itself so the session_destroy() function
+           now calls pthread_detach() just before it frees the session
+           memory allocation.  The module_unload function still takes care
+           of the ones that are still active should the module be unloaded.
 
-         PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS
-         patch.
+         ASTERISK-27452
+         Reported by: Juan Sacco
 
-         The patch below fixes a write to freed memory under cartain DNS lookup
-         conditions.
+         Change-Id: I9af7268eba14bf76960566f891320f97b974e6dd
 
-         0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch
+2017-11-10 07:06 +0000 [191190a982]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26516
-         Reported by:  Richard Mudgett
+       * pjsip: Add patch to allow all transports to be destroyed.
 
-         Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5
+         If a transport is created with the same transport type, source
+         IP address, and source port as one that already exists the old
+         transport is moved into a linked list called "tp_list".
 
-2016-11-01 06:56 +0000 [5f188bb7a8]  Joshua Colp <jcolp@digium.com>
+         If this old transport is later shutdown it will not be destroyed
+         as the process checks whether the transport is valid or not. This
+         check does not look at the "tp_list" when making the determination
+         causing the transport to not be destroyed.
 
-       * res_pjsip_sdp_rtp: Limit number of formats to defined maximum.
+         This change updates the logic to query not just the main storage
+         method for transports but also the "tp_list".
 
-         The res_pjsip_sdp_rtp module did not restrict the number of
-         formats added to a media stream in the SDP to the defined
-         limit. If allow=all was used with additional loaded codecs this
-         could result in the next media stream being overwritten some.
+         Upstream issue https://trac.pjsip.org/repos/ticket/2061
 
-         This change restricts the module to limit it to the defined
-         maximum and also increases the maximum in our bundled pjproject.
+         ASTERISK-27411
 
-         ASTERISK-26541 #close
+         Change-Id: Ic5c2bb60226df0ef1c8851359ed8d4cd64469429
 
-         Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8
+2017-11-08 16:59 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2016-11-01 04:18 +0000 [94c9496ed5]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * asterisk certified/13.13-cert7 Released.
 
-       * netsock.c: fix includes for HURD
+2017-10-19 13:53 +0000 [44f3d85cde]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-25070
+       * AST-2017-009: pjproject: Add validation of numeric header values
 
-         Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814
+         Parsing the numeric header fields like cseq, ttl, port, etc. all
+         had the potential to overflow, either causing unintended values to
+         be captured or, if the values were subsequently converted back to
+         strings, a buffer overrun.  To address this, new "strto" functions
+         have been created that do range checking and those functions are
+         used wherever possible in the parser.
 
-2016-11-01 04:00 +0000 [c1c9487375]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+          * Created pjlib/include/limits.h and pjlib/include/compat/limits.h
+            to either include the system limits.h or define common numeric
+            limits if there is no system limits.h.
 
-       * define PATH_MAX for HURD
+          * Created strto*_validate functions in sip_parser that take bounds
+            and on failure call the on_str_parse_error function which prints
+            an error message and calls PJ_THROW.
 
-         PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD
-         define it to a constant. It is indeed not safe to assume there won't be
-         longer paths and Asterisk generally does err safely on such cases.
+          * Updated sip_parser to validate the numeric fields.
 
-         So even for HURD we'll just pretend PATH_MAX is 4096.
+          * Fixed an issue in sip_transport that prevented error messages
+            from being properly displayed.
 
-         ASTERISK-25070 #close
+          * Added "volatile" to some variables referenced in PJ_CATCH blocks
+            as the optimizer was sometimes optimizing them away.
 
-         Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3
+          * Fixed length calculation in sip_transaction/create_tsx_key_2543
+            to account for signed ints being 11 characters, not 9.
 
-2016-10-31 17:35 +0000 [50fa868ab8]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-27319
+         Reported by: Youngsung Kim at LINE Corporation
 
-       * codecs.conf.sample: Add sample and option descriptions for codec_opus
+         Change-Id: I48de2e4ccf196990906304e8d7061f4ffdd772ff
 
-         codecs.conf.sample was missing codec opus's configuration options, descriptions,
-         and examples. This patch adds the configuration options and examples to
-         codecs.conf.sample that can be used with codec_opus.
+2017-10-19 13:35 +0000 [1b31e3c3bd]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-26538 #close
+       * AST-2017-011 - res_pjsip_session: session leak when a call is rejected
 
-         Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b
+         A previous commit made it so when an invite session transitioned into a
+         disconnected state destruction of the Asterisk pjsip session object was
+         postponed until either a transport error occurred or the event timer
+         expired. However, if a call was rejected (for instance a 488) before the
+         session was fully established the event timer may not have been initiated,
+         or it was canceled without triggering either of the session finalizing states
+         mentioned above.
 
-2016-11-01 08:32 +0000 [b3f10b7b94]  Grachev Sergey <grachev@mcn.ru>
+         Really the only time destruction of the session should be delayed is when a
+         BYE is being transacted. This is because it's possible in some cases for the
+         session to be disconnected, but the BYE is still transacting.
 
-       * chan_sip: Incorrect display option Outbound reg. retry 403
+         This patch makes it so the session object always gets released (no more
+         memory leak) when the pjsip session is in a disconnected state. Except when
+         the method is a BYE. Then it waits until a transport error occurs or an event
+         timeout.
 
-         If in sip.conf (general section) set option register_retry_403=no,
-         the command "sip show settings" return value:
-         Outbound reg. retry 403:0
-         If in sip.conf (general section) set option register_retry_403=yes,
-         the command "sip show settings" return value:
-         Outbound reg. retry 403:-1
+         ASTERISK-27345 #close
 
-         * In static char "sip show settings" for "Outbound.reg. retry 403"
-         option use AST_CLI_YESNO
+         Reported by: Corey Farrell
 
-         ASTERISK-26476 #close
+         Change-Id: I1e724737b758c20ac76d19d3611e3d2876ae10ed
 
-         Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9
+2017-10-03 16:19 +0000 [178b372019]  Richard Mudgett <rmudgett@digium.com>
 
-2016-10-20 07:27 +0000 [29692d4aa4]  Matt Jordan <mjordan@digium.com>
+       * AST-2017-010: Fix cdr_object_update_party_b_userfield_cb() buf overrun
 
-       * res/stasis: Add CLI commands for displaying/debugging ARI apps
+         cdr_object_update_party_b_userfield_cb() could overrun the fixed buffer if
+         the supplied string is too long.  The long string could be supplied by
+         external means using the CDR(userfield) function.
 
-         This patch adds three new CLI commands:
-          - ari show apps: list the registered ARI applications
-          - ari show app: show detailed information about an ARI application
-          - ari set debug: dump events being sent to an ARI application
+         This may seem reminiscent to AST-2017-001 (ASTERISK_26897) and it is.  The
+         earlier patch fixed the buffer overrun for Party A's userfield while this
+         patch fixes the same thing for Party B's userfield.
 
-         Note that while these CLI commands live in the res_stasis module, we use
-         the 'ari' family for these commands. This was done as most users of
-         Asterisk aren't aware of the semantic differences between ARI and
-         res_stasis, and some 'ari' CLI commands already exist.
+         ASTERISK-27337
 
-         ASTERISK-26488 #close
+         Change-Id: I0fa767f65ecec7e676ca465306ff9e0edbf3b652
 
-         Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5
+2017-09-19 16:09 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2016-10-31 16:12 +0000 [a36a7d0cf4]  gtjoseph <gjoseph@digium.com>
+       * asterisk certified/13.13-cert6 Released.
 
-       * pjproject_bundled:  Fix compile of pjsua so it handles audio
+2017-08-25 17:05 +0000 [88c8e8a11c]  Richard Mudgett <rmudgett@digium.com>
 
-         In order for pjsua and its python binding to actually negotiate
-         audio for the testsuite tests, it needs g711 and resample.  The
-         pj* libraries themselves do not.  Unfortunately, pjproject relies
-         on a brand new libresample that most distros don't ship so we need
-         to use the libresample already bundled with pjproject.  Only the pjsua
-         executable and the _pjsua.so python library are linked with it so it
-         shouldn't interfere with asterisk itself.
+       * AST-2017-008: Improve RTP and RTCP packet processing.
 
-         Also it was pointed out that apply_patches couldn't handle multiple
-         patches that depended on each other during the dry-run, so the
-         dry-run was removed.
+         Validate RTCP packets before processing them.
 
-         Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098
+         * Validate that the received packet is of a minimum length and apply the
+         RFC3550 RTCP packet validation checks.
 
-2016-10-31 13:46 +0000 [42bd70b29f]  Etienne Lessard <elessard@proformatique.com>
+         * Fixed potentially reading garbage beyond the received RTCP record data.
 
-       * manager: Add documentation for NewConnectedLine event.
+         * Fixed rtp->themssrc only being set once when the remote could change
+         the SSRC.  We would effectively stop handling the RTCP statistic records.
 
-         The NewConnectedLine event has been added by commit fe7671f, but the
-         documentation was missing.
+         * Fixed rtp->themssrc to not treat a zero value as special by adding
+         rtp->themssrc_valid to indicate if rtp->themssrc is available.
 
-         ASTERISK-26537 #close
+         ASTERISK-27274
 
-         Change-Id: I7fc331f18caa28492da9303e576f70884ca8c9e6
+         Make strict RTP learning more flexible.
 
-2016-10-30 13:33 +0000 [30b1bc77d2]  Corey Farrell <git@cfware.com>
+         Direct media can cause strict RTP to attempt to learn a remote address
+         again before it has had a chance to learn the remote address the first
+         time.  Because of the rapid relearn requests, strict RTP could latch onto
+         the first remote address and fail to latch onto the direct media remote
+         address.  As a result, you have one way audio until the call is placed on
+         and off hold.
 
-       * vector: Prevent NULL argument to memcpy.
+         The new algorithm learns remote addresses for a set time (1.5 seconds)
+         before locking the remote address.  In addition, we must see a configured
+         number of remote packets from the same address in a row before switching.
 
-         Headers declare that memcpy does not accept NULL argument for the first
-         two parameters.  Add a conditional block to prevent memcpy and ast_free
-         from running on vectors with NULL element array.
+         * Fixed strict RTP learning from always accepting the first new address
+         packet as the new stream.
 
-         ASTERISK-26526 #close
+         * Fixed strict RTP to initialize the expected sequence number with the
+         last received sequence number instead of the last transmitted sequence
+         number.
 
-         Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71
+         * Fixed the predicted next sequence number calculation in
+         rtp_learning_rtp_seq_update() to handle overflow.
 
-2016-10-29 10:31 +0000 [b96f18560b]  Corey Farrell <git@cfware.com>
+         ASTERISK-27252
 
-       * astobj2: Declare private variable data_size for AO2_DEBUG only.
+         Change-Id: Ia2d3aa6e0f22906c25971e74f10027d96525f31c
 
-         Every ao2 object contains storage for a private variable data_size,
-         though the value is never read if AO2_DEBUG is disabled.  This change
-         makes the variable conditional, reducing memory usage.
+2017-09-01 05:17 +0000 [67b1b028a1]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26524 #close
+       * stasis/control:  Fix possible deadlock with swap channel
 
-         Change-Id: If859929e507676ebc58b0f84247a4231e11da07f
+         If an error occurs during a bridge impart it's possible that
+         the "bridge_after" callback might try to run before
+         control_swap_channel_in_bridge has been signalled to continue.
+         Since control_swap_channel_in_bridge is holding the control lock
+         and the callback needs it, a deadlock will occur.
 
-2016-10-28 16:59 +0000 [6b1c55dc9b]  gtjoseph <gjoseph@digium.com>
+         * control_swap_channel_in_bridge now only holds the control
+           lock while it's actually modifying the control structure and
+           releases it while the bridge impart is running.
+         * bridge_after_cb is now tolerant of impart failures.
 
-       * pjproject_bundled:  Fix issue where "/version.mak" wasn't found
+         Change-Id: Ifd239aa93955b3eb475521f61e284fcb0da2c3b3
 
-         main/Makefile includes third-party/pjproject/build.mak but
-         doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak"
-         evaluates to "/version.mak".  Fix is to set PJDIR in main/Makefile
-         before the include.
+2017-08-31 15:48 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604
+       * asterisk certified/13.13-cert5 Released.
 
-2016-10-28 14:55 +0000 [d7f457e4c1]  Richard Mudgett <rmudgett@digium.com>
+2017-07-01 19:24 +0000 [7ca7306012]  Corey Farrell <git@cfware.com>
 
-       * bundled pjproject: Crashes while resolving DNS names.
+       * AST-2017-006: Fix app_minivm application MinivmNotify command injection
 
-         PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS
-         patch.
+         An admin can configure app_minivm with an externnotify program to be run
+         when a voicemail is received.  The app_minivm application MinivmNotify
+         uses ast_safe_system() for this purpose which is vulnerable to command
+         injection since the Caller-ID name and number values given to externnotify
+         can come from an external untrusted source.
 
-         The patches below fix the DNS lookup race condition crash caused by
-         attempting to send the same message twice for the single DNS lookup.
+         * Add ast_safe_execvp() function.  This gives modules the ability to run
+         external commands with greater safety compared to ast_safe_system().
+         Specifically when some parameters are filled by untrusted sources the new
+         function does not allow malicious input to break argument encoding.  This
+         may be of particular concern where CALLERID(name) or CALLERID(num) may be
+         used as a parameter to a script run by ast_safe_system() which could
+         potentially allow arbitrary command execution.
 
-         0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch
-         0006-r5473-svn-backport-Fix-pending-query.patch
+         * Changed app_minivm.c:run_externnotify() to use the new ast_safe_execvp()
+         instead of ast_safe_system() to avoid command injection.
 
-         The patch below removes a cached DNS response from the hash table when
-         another thread is referencing the old entry.  The table still contained
-         the entry when it was destroyed which can result in inexplicable crashes.
+         * Document code injection potential from untrusted data sources for other
+         shell commands that are under user control.
 
-         0006-r5475-svn-backport-Remove-DNS-cache-entry.patch
+         ASTERISK-27103
 
-         ASTERISK-26344 #close
-         Reported by: Ian Gilmour
+         Change-Id: I7552472247a84cde24e1358aaf64af160107aef1
 
-         ASTERISK-26387 #close
-         Reported by: Harley Peters
+2017-05-22 10:36 +0000 [1724a8c98f]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4
+       * res_rtp_asterisk: Only learn a new source in learn state.
 
-2016-10-28 09:50 +0000 [87903a6848]  Rusty Newton <rnewton@digium.com>
+         This change moves the logic which learns a new source address
+         for RTP so it only occurs in the learning state. The learning
+         state is entered on initial allocation of RTP or if we are
+         told that the remote address for the media has changed. While
+         in the learning state if we continue to receive media from
+         the original source we restart the learning process. It is
+         only once we receive a sufficient number of RTP packets from
+         the new source that we will switch to it. Once this is done
+         the closed state is entered where all packets that do not
+         originate from the expected source are dropped.
 
-       * SAC documentation: don't specify transports for endpoints and registrations
+         The learning process has also been improved to take into
+         account the time between received packets so a flood of them
+         while in the learning state does not cause media to be switched.
 
-         Removing explicit transport definition for endpoints and registrations. It
-         isn't necessary and isn't generally advised.
+         Finally RTCP now drops packets which are not for the learned
+         SSRC if strict RTP is enabled.
 
-         ASTERISK-26514 #close
+         ASTERISK-27013
 
-         Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb
+         Change-Id: I56a96e993700906355e79bc880ad9d4ad3ab129c
 
-2016-10-27 21:49 +0000 [f373de3020]  Corey Farrell <git@cfware.com>
+2017-07-11 07:26 +0000 [b189f8c5cf]  George Joseph <gjoseph@digium.com>
 
-       * Fix shutdown crash caused by modules being left open.
+       * res_musiconhold:  Add kill_escalation_delay, kill_method to class
 
-         It is only safe to run ast_register_cleanup callbacks when all modules
-         have been unloaded.  Previously these callbacks were run during graceful
-         shutdown, making it possible to crash during shutdown.
+         By default, when res_musiconhold reloads or unloads, it sends a HUP
+         signal to custom applications (and all descendants), waits 100ms,
+         then sends a TERM signal, waits 100ms, then finally sends a KILL
+         signal.  An application which is interacting with an external
+         device and/or spawns children of its own may not be able to exit
+         cleanly in the default times, expecially if sent a KILL signal, or
+         if it's children are getting signals directly from
+         res_musiconhoild.
 
-         ASTERISK-26513 #close
+         * To allow extra time, the 'kill_escalation_delay'
+           class option can be used to set the number of milliseconds
+           res_musiconhold waits before escalating kill signals, with the
+           default being the current 100ms.
 
-         Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21
+         * To control to whom the signals are sent, the "kill_method" class
+           option can be set to "process_group" (the default, existing
+           behavior), which sends signals to the application and its
+           descendants directly, or "process" which sends signals only to the
+           application itself.
 
-2016-10-26 18:48 +0000 [61a5c3460e]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Iff70a1a9405685a9021a68416830c0db5158603b
 
-       * pjproject_bundled:  Remove usage of tar's --strip-components option
+2017-06-29 18:27 +0000 [aa10dd31d0]  Richard Mudgett <rmudgett@digium.com>
 
-         Older versions of tar don't support the --strip-components option so
-         instead of doing 'tar --strip-components=1 -C source', we now just
-         untar to the tarball's root directory (pjproject-<version>) and
-         rename that directory to 'source'.
+       * pjsip_distributor.c: Fix deadlock with TCP type transports.
 
-         Also fixed an issue where the pjproject source directory is a hard
-         coded absolute pathname.
+         When a SIP message comes in on a transport, pjproject obtains the lock on
+         the transport and pulls the data out of the socket.  Unlike UDP, the TCP
+         transport does not allow concurrent access.  Without concurrency the
+         transport lock is not released when the transport's message complete
+         callback is called.  The processing continues and eventually Asterisk
+         starts processing the SIP message.  The first thing Asterisk tries to do
+         is determine the associated dialog of the message to determine the
+         associated serializer.  To get the associated serializer safely requires
+         us to get the dialog lock.
 
-         ASTERISK-26510 #close
-         ASTERISK-22480 #close
+         To send a request or response message for a dialog, pjproject obtains the
+         dialog lock and then obtains the transport lock.  Deadlock can result
+         because of the opposite order the locks are obtained.
 
-         Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0
+         * Fix the deadlock by obtaining the serializer associated with the dialog
+         another way that doesn't involve obtaining the dialog lock.  In this case,
+         we use an ao2 container to hold the associated endpoint and serializer.
+         The new locks are held a brief time and won't overlap other existing lock
+         times.
 
-2016-10-27 08:07 +0000 [675c71ae8c]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-27090 #close
 
-       * res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls.
+         Change-Id: I9ed63f4da9649e9db6ed4be29c360968917a89bd
 
-         The res_pjsip_caller_id module wrongly assumed that a
-         saved From header would always exist on sessions. This
-         is true until an inbound call is received and a session
-         timer causes an UPDATE to be sent. In this case there will
-         be no saved From header and a crash will occur. This change
-         makes it fall back to the From header of the outgoing request
-         if no saved From header is present.
+2017-06-29 14:50 +0000 [ef4a035371]  George Joseph <gjoseph@digium.com>
 
-         ASTERISK-26307 #close
+       * chan_pjsip:  Fix ability to send UPDATE on COLP
 
-         Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa
+         When connected_line_method is "invite", we're supposed to determine
+         if the client can support UPDATE and if it can, send UPDATE instead
+         of INVITE to avoid the SDP renegotiation.  Not only was pjproject
+         not setting the PJSIP_INV_SUPPORT_UPDATE flag, we were testing
+         that invite_tsx wasn't NULL which isn't always the case.
 
-2016-10-26 07:51 +0000 [14496ce1e5]  Joshua Colp <jcolp@digium.com>
+         * Updated chan_pjsip/update_connected_line_information to drop the
+           requirement that invite_tsx isn't NULL.
+         * Submitted patch to pjproject sip_inv.c that sets the
+           PJSIP_INV_SUPPORT_UPDATE flag correctly.
+         * Updated pjsip.conf.sample to clarify what happens when "invite"
+           is specified.
 
-       * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS.
+         ASTERISK-27095
 
-         When executing the MailboxExists dialplan application and
-         MAILBOX_EXISTS dialplan function the passed in temporary voice
-         mailbox was not cleared, causing it to try to free garbage.
+         Change-Id: Ic2381b3567b8052c616d96fbe79564c530e81560
 
-         ASTERISK-26503 #close
+2017-06-20 15:41 +0000 [89aabfe10b]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3
+       * core_local: local channel data not being properly unref'ed and unlocked
 
-2016-10-23 07:38 +0000 [e0bc17edff]  Joshua Colp <jcolp@digium.com>
+         In an earlier version of Asterisk a local channel [un]lock all functions were
+         added in order to keep a crash from occurring when a channel hung up too early
+         during an attended transfer. Unfortunately, when a transfer failure occurs and
+         depending on the timing, the local channels sometime do not get properly
+         unlocked and deref'ed after being locked and ref'ed. This happens because the
+         underlying local channel structure gets NULLed out before unlocking.
 
-       * pjsip: Fix a few media bugs with reinvites and asymmetric payloads.
+         This patch reworks those [un]lock functions and makes sure the values that get
+         locked and ref'ed later get unlocked and deref'ed.
 
-         When channel format changes occurred as a result of an RTP
-         re-negotiation the bridge was not informed this had happened.
-         As a result the bridge technology was not re-evaluated and the
-         channel may have been in a bridge technology that was incompatible
-         with its formats. The bridge is now unbridged and the technology
-         re-evaluated when this occurs.
+         ASTERISK-27074 #close
 
-         The chan_pjsip module also allowed asymmetric codecs for sending
-         and receiving. This did not work with all devices and caused one
-         way audio problems. The default has been changed to NOT do this
-         but to match the sending codec to the receiving codec. For users
-         who want asymmetric codecs an option has been added, asymmetric_rtp_codec,
-         which will return chan_pjsip to the previous behavior.
+         Change-Id: Ice96653e29bd9d6674ed5f95feb6b448ab148b09
 
-         The codecs returned by the chan_pjsip module when queried by
-         the bridge_native_rtp module were also not reflective of the
-         actual negotiated codecs. The nativeformats are now returned as
-         they reflect the actual negotiated codecs.
+2017-06-20 16:01 +0000 [9dcac3b7e3]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-26423 #close
+       * bridge: stuck channel(s) after failed attended transfer
 
-         Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc
+         If an attended transfer failed it was possible for some of the channels
+         involved to get "stuck" because Asterisk was not hanging up the transfer target.
 
-2016-10-26 06:32 +0000 [f534f67f52]  Joshua Colp <jcolp@digium.com>
+         This patch ensures Asterisk hangs up the transfer target when an attended
+         transfer failure occurs.
 
-       * res_pjsip_sdp_rtp: Fix address family of explicit media_address.
+         ASTERISK-27075 #close
 
-         When an explicit media_address is provided the address family
-         in the SDP needs to be set to reflect it.
+         Change-Id: I98a6ecd92d3461ab98c36f0d9451d23adaf3e5f9
 
-         ASTERISK-26309
+2017-06-13 14:17 +0000 [adfdfdee61]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Ib9350cc91c120eb2f96f0623d3907d12af67eb79
+       * res_pjsip_refer/session: Calls dropped during transfer
 
-2016-10-25 11:20 +0000 [3a2092b722]  gtjoseph <gjoseph@digium.com>
+         When doing an attended transfer it's possible for the transferer, after
+         receiving an accepted response from Asterisk, to send a BYE to Asterisk,
+         which can then be processed before Asterisk has time to start and/or
+         complete the transfer process. This of course causes the transfer to not
+         complete successfully, thus dropping the call.
 
-       * test_astobj2_thrash:  Fix multithreaded issues
+         This patch makes it so any BYEs received from the transferer, after the REFER,
+         that initiate a session end are deferred until the transfer is complete. This
+         allows the channel that would have otherwise been hung up by Asterisk to
+         remain available throughout the transfer process.
 
-         The test uses 4 threads to grow, count, lookup and shrink 15K objects
-         in a container.  If there's only 1 execution engine available, the test
-         will complete in <50ms.  If each threads gets its own execution engine,
-         the test may timeout after 60 seconds because the count thread does a
-         locked ao2_callback on the whole container in a tight loop with only
-         a sched_yield to give up time.  The lock contention makes the test
-         execution times wildly variable and mostly timeout.  2 execution
-         engines are OK, 3 results in about 33% failure rate and >=4 causes
-         a 80% failure rate.
+         ASTERISK-27053 #close
 
-         To fix, the sched_yield was changed to a usleep(500).
+         Change-Id: I43586db79079457d92d71f1fd993be9a3b409d5a
 
-         Also, the number of buckets specified for the container was an even
-         number so that was changed to the next prime number greater than
-         (MAX_HASH_ENTRIES / 100).  That's 151 currently.
+2017-05-19 20:45 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         Change-Id: I50cd2344161ea61bfe4b96d2a29a6ccf88385c77
+       * asterisk certified/13.13-cert4 Released.
 
-2016-10-24 14:13 +0000 [640203802e]  Pascal Cadotte Michaud <pcadotte@proformatique.com>
+2017-04-13 11:14 +0000 [7e8b57db67]  gtjoseph <gjoseph@digium.com>
 
-       * typo: s/paranthesis/parenthesis/ in a comment
+       * AST-2017-004: chan_skinny:  Add EOF check in skinny_session
 
-         Change-Id: I7c1f4eb051177ee22cbe97e063d4a3effe29be30
+         The while(1) loop in skinny_session wasn't checking for EOF so
+         a packet that was longer than a header but still truncated
+         would spin the while loop infinitely.  Not only does this
+         permanently tie up a thread and drive a core to 100% utilization,
+         the call of ast_log() in such a tight loop eats all available
+         process memory.
 
-2016-10-24 10:55 +0000 [9b3557e054]  gtjoseph <gjoseph@digium.com>
+         Added poll with timeout to top of read loop
 
-       * pjproject_bundled:  Fixed various build issues
+         ASTERISK-26940 #close
+         Reported-by: Sandro Gauci
 
-         * CFLAGS is now properly set when using older gcc.
-         * All third-party pjproject targets have been removed.  This fixes
-           an issue with older libsrtp in some distros.
-         * Manually removing the source directory now causes a rebuild.
-         * EXTERNALS_CACHE_DIR is now properly checked.
-         * Whitespace fixes.
+         Change-Id: I2ce65f3c5cb24b4943a9f75b64d545a1e2cd2898
 
-         Change-Id: I98fec6847efc5602a9f41cb95096fd660a49fa60
+2017-04-13 17:17 +0000 [d0e628e792]  Mark Michelson <mmichelson@digium.com>
 
-2016-09-19 06:13 +0000 [bb982480d8]  Joshua Colp <jcolp@digium.com>
+       * AST-2017-003: Handle zero-length body parts correctly.
 
-       * pjsip: Support dual stack automatically.
+         ASTERISK-26939 #close
 
-         This change adds support for dual stack automatically. No
-         configuration is required and the IP address and version
-         in the SIP messages and SDP will be automatically changed
-         based on the transport over which the message is being
-         sent. RTP usage has also been changed to listen on both
-         IPv4 and IPv6 simultaneously to allow media to flow, and
-         to allow ICE support on both simultaneously. This also
-         allows failover between IPv6 and IPv4 to work as expected.
+         Change-Id: I7ea235ab39833a187db4e078f0788bd0af0a24fd
 
-         ASTERISK-26309 #close
+2017-04-13 17:16 +0000 [14e57ba5b5]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d
+       * AST-2017-002: Ensure transaction key buffer is large enough.
 
-2016-10-17 14:18 +0000 [eff97808fb]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-26938 #close
 
-       * ARI: Detect duplicate channel IDs
+         Change-Id: I266490792fd8896a23be7cb92f316b7e69356413
 
-         ARI and AMI allow for an explicit channel ID to be specified
-         when originating channels. Unfortunately, there is nothing in
-         place to prevent someone from using the same ID for multiple
-         channels. Further complicating things, adding ID validation to channel
-         allocation makes it impossible for ARI to discern why channel allocation
-         failed, resulting in a vague error code being returned.
+2017-04-04 12:37 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         The fix for this is to institute a new method for channel errors to be
-         discerned. The method mirrors errno, in that when an error occurs, the
-         caller can consult the channel errno value to determine what the error
-         was. This initial iteration of the feature only introduces "unknown" and
-         "channel ID exists" errors. However, it's possible to add more errors as
-         needed.
+       * asterisk certified/13.13-cert3 Released.
 
-         ARI uses this feature to determine why channel allocation failed and can
-         return a 409 error during origination to show that a channel with the
-         given ID already exists.
+2017-03-27 09:03 +0000 [d91f264721]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-26421
+       * CDR: Protect from data overflow in ast_cdr_setuserfield.
 
-         Change-Id: Ibba7ae68842dab6df0c2e9c45559208bc89d3d06
+         ast_cdr_setuserfield wrote to a fixed length field using strcpy. This could
+         result in a buffer overrun when called from chan_sip or func_cdr. This patch
+         adds a maximum bytes written to the field by using ast_copy_string instead.
 
-2016-10-19 17:53 +0000 [c2036c827c]  snuffy <snuffy22@gmail.com>
+         ASTERISK-26897 #close
+         patches:
+           0001-CDR-Protect-from-data-overflow-in-ast_cdr_setuserfie.patch submitted
+             by Corey Farrell (license #5909)
 
-       * Fix issue with CLI not returning to prompt after running "features show"
+         Change-Id: Ib23ca77e9b9e2803a450e1206af45df2d2fdf65c
 
-         ASTERISK-26444 #close
+2017-03-14 09:27 +0000 [563b639e5a]  Robert Mordec <r.mordec@slican.pl>
 
-         Change-Id: I91d645b7e6e5dba35f8c410df2be77a8c0e3acb8
+       * app_queue: Member stuck as pending after forwarding previous call from queue
 
-2016-10-04 18:24 +0000 [3c62b60e56]  Michael Walton <mike@farsouthnet.com>
+         Queue member will get stuck in pending_members if queue calls a device
+         that is different from the one observed for state changes.
 
-       * res_rtp_asterisk: Add ice_blacklist option
+         This patch removes members from pending_members as a result of channel stasis
+         events such as blind or attended transfers and hangup.
 
-         Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the
-         form ice_blacklist = <subnet spec>, e.g. ice_blacklist =
-         192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay
-         discovery. This is useful for optimizing the ICE process where a system
-         has multiple host address ranges and/or physical interfaces and certain
-         of them are not expected to be used for RTP. Multiple ice_blacklist
-         configuration lines may be used. If left unconfigured, all discovered
-         host addresses are used, as per previous behavior.
+         ASTERISK-26862 #close
 
-         Documention in rtp.conf.sample.
+         Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727
 
-         ASTERISK-26418 #close
+2017-03-07 18:43 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9
+       * asterisk certified/13.13-cert2 Released.
 
-2016-10-18 16:30 +0000 [012fda29d2]  Mark Michelson <mmichelson@digium.com>
+2016-11-15 15:01 +0000 [44cac45610]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * CDR: Alter destruction pattern for CDR chains.
+       * chan_pjsip: fix switching sending codec when asymmetric_rtp_codec=no
 
-         CDRs form chains. When the root of the chain is destroyed, it then
-         unreferences the next CDR in the chain. That CDR is destroyed, and it
-         then unreferences the next CDR in the chain. This repeats until the end
-         of the chain is reached. While this typically does not cause any sort of
-         problems, it is possible in strange scenarios for the CDR chain to grow
-         way longer than expected. In such a scenario, the destruction pattern
-         can result in a stack overflow.
+         The sending codec is switched to the receiving codec and then
+         is switched back to the best native codec on EVERY receiving RTP packets.
+         This is because after call of ast_channel_set_rawwriteformat there is call
+         of ast_set_write_format which calls set_format which sets rawwriteformat
+         to the best native format.
 
-         This patch fixes the problem by switching from a recursive pattern to an
-         iterative pattern for destruction. When the root CDR is destroyed, it is
-         responsible for iterating over the rest of the CDRs and unreferencing
-         each one. Other CDRs in the chain, since they are not the root, will
-         simply destroy themselves and be done. This causes the stack depth not
-         to increase.
+         This patch adds a new function ast_set_write_format_path which set
+         specific write path on channel and uses this function to switch
+         the sending codec.
 
-         ASTERISK-26421 #close
-         Reported by Andrew Nagy
+         ASTERISK-26603 #close
 
-         Change-Id: I3ca90c2b8051f3b7ead2e0e43f60d2c18fb204b8
+         Change-Id: I5b7d098f8b254ce8f45546e6c36e5d324737f71d
+         (cherry picked from commit cf6d13180effc92a2483dccc68f2f188689a40fa)
 
-2016-10-18 09:04 +0000 [6d462b9eaf]  Alexei Gradinari <alex2grad@gmail.com>
+2017-02-13 17:11 +0000 [0d7f99a087]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_pjsip: segfault on already disconnected session
+       * pjproject: Fixes to resolve DNS SRV crashes.
 
-         On heavy loaded system the TCP/TLS incoming calls could be
-         disconnected by pjproject while these calls are being
-         processed by asterisk.
+         * Re #1945 (misc): Don't trigger SRV complete callback when there is a
+         parse error.
 
-         This patch uses functions pjsip_inv_add_ref/pjsip_inv_dec_ref
-         to inform pjproject that an INVITE session is in use.
+         * srv_resolver.c: Don't try to send query if already considered resolved.
 
-         ASTERISK-26482 #close
+         ** In resolve_hostnames() don't try to resolve a query that is already
+         considered resolved.
 
-         Change-Id: Ia2e3e2f75358cdb530252a9ce158af3d5d9fdf33
+         ** In resolve_hostnames() fix DNS typo in comments.
 
-2016-10-18 03:01 +0000 [662b560c35]  Alexander Traud <pabstraud@compuserve.com>
+         ** In build_server_entries() move a common expression assigning to cnt
+         earlier.
 
-       * cli: Auto-complete File not Module for core set debug.
+         * sip_transport.c: Fix tdata object name to actually contain the pointer.
 
-         Since Asterisk 1.8, the command "core set debug" on the command-line interface
-         asks not for a file (.c) but a module name. This change shows modules (.so) on
-         the auto-completion via a tabulator or the question mark. Now, when you
-         partially type a module name, TAB or ?, you get the correct candidiates.
+         It helps if the logs referencing a tdata object buffer actually have a
+         name that includes the correct pointer as part of the name.  Also since
+         the tdata has its own pool it helps if any logs referencing the pool have
+         the same name as the tdata object.  This change brings tdata logging in
+         line with how tsx objects are named.
 
-         ASTERISK-26480
+         ASTERISK-26669 #close
+         ASTERISK-26738 #close
 
-         Change-Id: I1213f1dd409bd4ff8de08ad80cb0c73cafb1bae0
+         Change-Id: I56af2ded25476b3e870ca586ee69ed6954ef75af
 
-2016-09-11 10:13 +0000 [6f5880913f]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+2017-02-20 13:38 +0000 [35881858db]  Richard Mudgett <rmudgett@digium.com>
 
-       * menuselect: invalid test for GTK2
+       * pjproject: Increase SENDER_WIDTH column size for 64-bit system logs.
 
-         configuire.ac was only checking for the existence of pkg-config
-         and not the gtk2 package itself.  Now it calls AST_PKG_CONFIG_CHECK
-         for gtk+-2.0.
+         ASTERISK-26669
+         ASTERISK-26738
 
-         ASTERISK-26356 #close
+         Change-Id: Ibae6fc8cae69a1f04df0c577c4c11200499d6fe0
 
-         Change-Id: I8079d515d6ea99f9ab320a7eaa71c2aaa101ccd5
+2017-02-06 14:26 +0000 [0d4412f2b3]  Richard Mudgett <rmudgett@digium.com>
 
-2016-10-13 02:06 +0000 [644fad7477]  Moises Silva <moises.silva@gmail.com>
+       * pjsip_distributor.c: Update some debug messages to get transaction name.
 
-       * chan_rtp: Set a sane default rtp engine for unicast.
+         * Removed overloaded unmatched response ignore.  We obviously sent the
+         request so we shouldn't ignore it because it isn't new work.
 
-         ASTERISK-26439
+         ASTERISK-26669
+         ASTERISK-26738
 
-         Change-Id: I7f5ee2eeba8906e9ecb3293dbe3a747770bb5011
+         Change-Id: I55fb5cadc83a8e6699b347c6dc7fa32c5a617d37
 
-2016-10-15 20:05 +0000 [42cfdcd1b7]  Matt Jordan <mjordan@digium.com>
+2017-02-04 16:00 +0000 [4af241ab60]  Richard Mudgett <rmudgett@digium.com>
 
-       * res/ari: Add the Asterisk EID field to outgoing events
+       * res_pjsip: Record the serializer earlier on the tdata.
 
-         This patch adds the Asterisk EID field to all outgoing ARI events.
-         Because this field should be added to all events as they are
-         transmitted, it is appended to the JSON message just prior to it being
-         handed off to the application message handler. This makes it somewhat
-         resilient to both new events being added to ARI, as well as other
-         potential event transport mechanisms.
+         When PJPROJECT needs to do a DNS resolution and there is not a cached
+         entry available, the SIP request message goes out on the PJSIP monitor
+         thread instead of the original serializer thread.  Thus when the response
+         comes back it does not get processed by the original sending serializer.
 
-         ASTERISK-26470 #close
+         This patch records the serializer on tdata before passing a request
+         message to PJPROJECT where it can in Asterisk code.  There are several
+         places in PJPROJECT for outbound registration and publishing support that
+         would need to record the serializer.  Unfortunately, without replacing the
+         PJPROJECT DNS resolver as was done in v14 we cannot fix those without
+         modifying PJPROJECT.
 
-         Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d
+         Even if we backported the DNS resolver from v14, the outbound registration
+         refresh timer does not go out on a serializer thread but the PJSIP monitor
+         thread.  Fortunately, Asterisk's outbound publish support doesn't use the
+         auto refresh timer that would also not go out under the serializer thread.
 
-2016-10-16 17:25 +0000 [74d9385273]  gtjoseph <gjoseph@digium.com>
+         This patch is v13 only.
 
-       * utils.c:  Fix ast_set_default_eid for multiple platforms
+         ASTERISK-26669
+         ASTERISK-26738
 
-         ast_set_default_eid was searching for ethX, emX, enoX, ensX and even
-         pciD#U interface names.  While this was a good attempt, it wasn't
-         inclusive enough to capture interfaces like enp6s0 or ens6d1, etc.
+         Change-Id: I9997b9ed6dbcebd2c37d6a67dc6dcee9c78914a4
 
-         Rather than relying on interface names, we now simply find the first
-         interface returned by the OS that has a hardware address and that
-         address isn't all 0x00 or all 0xff.  The code IS different for BSD,
-         Solaris and Linux based on what method is available for enumerating
-         interfaces.
+2017-02-13 19:25 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         Tested on:
-         FreeBSD9
-         CentOS6
-         Ubuntu14
-         Fedora24
+       * asterisk certified/13.13-cert1 Released.
 
-         I was unable to test on Solaris at this time but the code for Solaris
-         is used elsewhere at Digium.
+2017-02-08 12:58 +0000 [0ef6b6960d]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Iaa6db87ca78a9a375e47d70e043ae08c1448cb72
+       * Update for certified/13.13-cert1-rc4
 
-2016-10-13 14:09 +0000 [0306869399]  Leandro Dardini <ldardini@gmail.com>
+2017-02-08 11:50 +0000 [7603c4f32b]  Mark Michelson <mmichelson@digium.com>
 
-       * app_queue: Added initialization for "context" parameter
+       * Revert "Update qualifies when AOR configuration changes."
 
-         When using Asterisk Realtime Architecture, empty fields are skipped and the
-         default values are used. If the "context" parameter in queue was set and then
-         cleared from the database, the old value remains in memory and it continues
-         to be used. This change initialize the "context" parameter with an empty value,
-         allowing clearing the parameter.
+         This reverts commit 6492e91392b8fd394193e411c6eb64b45486093f.
 
-         ASTERISK-26462 #close
+         The change in question was intended to prevent the need to reload in
+         order to update qualifies on contacts when an AOR changes. However, this
+         ended up causing a deadlock instead.
 
-         Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905
+         Change-Id: I1a835c90a5bb65b6dc3a1e94cddc12a4afc3d71e
 
-2016-10-11 06:55 +0000 [a859bcb49c]  Alexander Traud <pabstraud@compuserve.com>
+2017-02-03 13:58 +0000 [47febcb927]  Mark Michelson <mmichelson@digium.com>
 
-       * chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia.
+       * Update for certified/13.13-cert1-rc3
 
-         In the SIP channel driver chan_sip, auto_comedia was expected to be used in
-         tandem with auto_force_rport. Or stated differently: Only when auto_force_rport
-         was chosen (the default), auto_comedia worked. This change allows auto_comedia
-         to be set independently of the state of (auto_)force_rport. For example,
-         nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments
-         when IPv6 clients are behind a Firewall.
+2017-01-31 18:28 +0000 [5c90c1e9f5]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26457 #close
+       * channel.c: Fix unbalanced read queue deadlocking local channels.
 
-         Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2
+         Using the timerfd timing module can cause channel freezing, lingering, or
+         deadlock issues.  The problem is because this is the only timing module
+         that uses an associated alert-pipe.  When the alert-pipe becomes
+         unbalanced with respect to the number of frames in the read queue bad
+         things can happen.  If the alert-pipe has fewer alerts queued than the
+         read queue then nothing might wake up the thread to handle received frames
+         from the channel driver.  For local channels this is the only way to wake
+         up the thread to handle received frames.  Being unbalanced in the other
+         direction is less of an issue as it will cause unnecessary reads into the
+         channel driver.
 
-2016-10-17 19:08 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         ASTERISK-26716 is an example of this deadlock which was indirectly fixed
+         by the change that found the need for this patch.
 
-       * asterisk 13.12.0-rc1 Released.
+         * In channel.c:__ast_queue_frame(): Adding frame lists to the read queue
+         did not add the same number of alerts to the alert-pipe.  Correspondingly,
+         when there is an exceptionally long queue event, any removed frames did
+         not also remove the corresponding number of alerts from the alert-pipe.
 
-2016-10-17 11:39 +0000 [546ec4b038]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26632 #close
 
-       * pjproject_bundled:  Add patch to address SSL crash
+         Change-Id: Ia98137c5bf6e9d6d202ce0eb36441851875863f6
 
-         Addresses crashes when an attempt is made to operate on an SSL socket
-         after the socket has been closed.
+2017-01-31 16:38 +0000 [5c2b7e34ff]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26477 #close
+       * res_agi: Prevent an AGI from eating frames it should not. (Re-do)
 
-         Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002
+         A dialplan intercept routine is equivalent to an interrupt routine.  As
+         such, the routine must be done quickly and you do not have access to the
+         media stream.  These restrictions are necessary because the media stream
+         is the responsibility of some other code and interfering with or delaying
+         that processing is bad.  A possible future dialplan processing
+         architecture change may allow the interception routine to run in a
+         different thread from the main thread handling the media and remove the
+         execution time restriction.
 
-2016-10-15 04:58 +0000 [f1fd873df0]  Michael Kuron <m.kuron@gmx.de>
+         * Made res_agi.c:run_agi() running an AGI in an interception routine run
+         in DeadAGI mode.  No touchy channel frames.
 
-       * chan_sip: Only send video on outgoing channel if incoming channel supports it
+         ASTERISK-25951
 
-         Previously, the settings videosupport=always and videosupport=yes behaved
-         identically and unconditionally caused a video offer to be sent in the SDP on
-         an outgoing call. This was a regression introduced with commit
-         5a1d90e1fbfc4b48927aad55311f3b38efbf1f54 in Asterisk 1.6.1.
+         ASTERISK-26343
 
-         This commit restores correct behavior: videosupport=always causes a video offer
-         to be sent unconditionally, while videosupport=yes will only offer video on an
-         outbound channel if the incoming channel it is bridged to also supports video.
-         That way, the device receiving the outgoing call can display the correct user
-         interface elements for audio or video and will not unnecessarily show a blank
-         video window on an audio-only call.
+         ASTERISK-26716
 
-         ASTERISK-17470 #close
+         Change-Id: I638f147ca7a7f2590d7194a8ef4090eb191e4e43
 
-         Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae
+2017-01-31 16:32 +0000 [7d291e9ef7]  Richard Mudgett <rmudgett@digium.com>
 
-2016-10-14 00:18 +0000 [ce4cfd2eca]  Corey Farrell <git@cfware.com>
+       * Frame deferral: Revert API refactoring.
 
-       * Fix issues with bundled pjproject cached download.
+         There are several issues with deferring frames that are caused by the
+         refactoring.
 
-         Previously when testing I had a preexisting makeopts in ASTTOPDIR.  The
-         ordering of configure.ac causes --with-externals-cache to be processed
-         after third-party configure.  In cases where the Asterisk clone is
-         cleaned it would cause pjproject to be downloaded to /tmp.  This
-         moves processing of the externals cache and sounds cache to happen
-         before third-party configure.
+         1) The code deferring frames mishandles adding a deferred frame to the
+         deferred queue.  As a result the deferred queue can only be one frame
+         long.
 
-         This also addresses a possible issue with the third-party Makefile.  If
-         TMPDIR is set by the environment it would override the path given to
-         --with-externals-cache.
+         2) Deferrable frames can come directly from the channel driver as well as
+         the read queue.  These frames need to be added to the deferred queue.
 
-         ASTERISK-26416
+         3) Whoever is deferring frames is really only doing the __ast_read() to
+         collect deferred frames and doesn't care about the returned frames except
+         to detect a hangup event.  When frame deferral is completed we must make
+         the normal frame processing see the hangup as a frame anyway.  As such,
+         there is no need to have varying hangup frame deferral methods.  We also
+         need to be aware of the AST_SOFTHANGUP_ASYNCGOTO hangup that isn't real.
+         That fake hangup is to cause the PBX thread to break out of loops to go
+         execute a new dialplan location.
 
-         Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d
+         4) To properly deal with deferrable frames from the channel driver as
+         pointed out by (2) above, means that it is possible to process a dialplan
+         interception routine while frames are deferred because of the
+         AST_CONTROL_READ_ACTION control frame.  Deferring frames is not
+         implemented as a re-entrant operation so you could have the unsupported
+         case of two sections of code thinking they have control of the media
+         stream.
 
-2016-10-12 16:24 +0000 [3c54328c57]  Richard Mudgett <rmudgett@digium.com>
+         A worse problem is because of the bad implementation of the AMI PlayDTMF
+         action.  It can cause two threads to be deferring frames on the same
+         channel at the same time.  (ASTERISK_25940)
 
-       * Audit ast_json_pack() calls for needed UTF-8 checks.
+         * Rather than fix all these problems simply revert the API refactoring as
+         there is going to be only autoservice and safe_sleep deferring frames
+         anyway.
 
-         Added needed UTF-8 checks before constructing json objects in various
-         files for strings obtained outside the system.  In this case string values
-         from a channel driver's peer and not from the user setting channel
-         variables.
+         ASTERISK-26343
 
-         * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json
-         object construction.
+         ASTERISK-26716 #close
 
-         ASTERISK-26466
-         Reported by: Richard Mudgett
+         Change-Id: I45069c779aa3a35b6c863f65245a6df2c7865496
 
-         Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096
+2017-01-10 17:37 +0000 [640d3b21d1]  Richard Mudgett <rmudgett@digium.com>
 
-2016-10-12 16:20 +0000 [7f8f125738]  Richard Mudgett <rmudgett@digium.com>
+       * astobj2.c: Add excessive ref count trap.
 
-       * json: Check party id name, number, subaddresses for UTF-8.
+         Change-Id: I32e6a589cf9009450e4ff7cb85c07c9d9ef7fe4a
 
-         * Updated unit test as ast_json_name_number() is now NULL tolerant.
+2017-01-31 11:17 +0000 [107c8a7e19]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26466 #close
-         Reported by: Richard Mudgett
+       * res_pjsip: Handle invocation of callback on outgoing request when error occurs.
 
-         Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6
+         There are some error cases in PJSIP when sending a request that will
+         result in the callback for the request being invoked.  The code did not
+         handle this case and assumed on every error case that the callback was not
+         invoked.
 
-2016-10-11 18:14 +0000 [9621c9bcbc]  Richard Mudgett <rmudgett@digium.com>
+         The code has been changed to check whether the callback has been invoked
+         and if so to absorb the error and treat it as a success.
 
-       * json: Add UTF-8 check call.
+         ASTERISK-26679
+         ASTERISK-26699
 
-         Since the json library does not make the check function public we
-         recreate/copy the function in our interface module.
+         Change-Id: I563982ba204da5aa1428989a11c06dd9087fea91
 
-         ASTERISK-26466
-         Reported by: Richard Mudgett
+2017-02-01 13:54 +0000 [3eb5f42090]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99
+       * Update qualifies when AOR configuration changes.
 
-2016-10-12 17:42 +0000 [e4bb9f9a37]  Richard Mudgett <rmudgett@digium.com>
+         Prior to this change, qualifies would only update in the following
+         cases:
+         * A reload of res_pjsip.so was issued.
+         * A dynamic contact was re-registered after its AOR's qualify_frequency
+           had been changed
+         This does not work well if you are using realtime for your AORs. You can
+         update your database to have a new qualify_frequency, but the permanent
+         contacts on that AOR will not have their qualifies updated. And the
+         dynamic contacts on that AOR will not have their qualifies updated until
+         the next registration, which could be a long time.
 
-       * aoc.c: Whitespace cleanup
+         This change seeks to fix this problem by making it so that whenever AOR
+         configuration is applied, the contacts pertaining to that AOR have their
+         qualifies updated.
 
-         * In s_to_json() removed unnecessary ast_json_ref() to ast_json_null()
-         when creating the type json object.  The ref is a noop.
+         Additions from this patch:
+         * AOR sorcery objects now have an apply handler that calls into a newly
+           added function in the OPTIONS code. This causes all contacts
+           associated with that AOR to re-schedule qualifies.
+         * When it is time to qualify a contact, the OPTIONS code checks to see
+           if the AOR can still be retrieved. If not, then qualification is
+           canceled on the contact.
 
-         Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a
+         Alterations from this patch:
+         * The registrar code no longer updates contact's qualify_frequence and
+           qualify_timeout. There is no point to this since those values already
+           get updated when the AOR changes.
+         * Reloading res_pjsip.so no longer calls the OPTIONS initialization
+           function. Reloading res_pjsip.so results in re-loading AORs, which
+           results in re-scheduling qualifies.
 
-2016-10-12 17:27 +0000 [bcac905bd3]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I2e7c3316da28f389c45954f24c4e9389abac1121
 
-       * app_queue.c: Fix clearing of pause reason string.
+2017-01-31 12:46 +0000 [0611290911]  gtjoseph <gjoseph@digium.com>
 
-         The pause reason is not always cleared when it should be cleared.
+       * debug_utilities: Install ast_logescalator to /var/lib/asterisk/scripts
 
-         * Made set_queue_member_pause() always clear pause reason if not pausing
-         with a reason string.
+         Forgot to install it with the original patch
 
-         Change-Id: I993dad19626ec017478a230e980989438b778c53
+         Change-Id: I8bdb540a6694971ae5fe21f48d532332c6482e4c
 
-2016-10-12 16:22 +0000 [ee4ae2b648]  Richard Mudgett <rmudgett@digium.com>
+2017-01-25 06:50 +0000 [805928c98b]  gtjoseph <gjoseph@digium.com>
 
-       * app_minivm.c: Fix malformed ast_json_pack() call.
+       * debug_utilities:  Add ast_logescalator
 
-         Change-Id: I082b239022fac462666e52a14a44304748908dc0
+         The escalator works by creating a set of startup commands in cli.conf
+         that set up logger channels and issue the debug commands for the
+         subsystems specified.  If asterisk is running when it is executed,
+         the same commands will be issued to the running instance.  The original
+         cli.conf is saved before any changes are made and can be restored by
+         executing '$prog --reset'.
 
-2016-10-12 16:30 +0000 [90ae4e4337]  gtjoseph <gjoseph@digium.com>
+         The log output will be stored in...
+         $astlogdir/message.$uniqueid
+         $astlogdir/debug.$uniqueid
+         $astlogdir/dtmf.$uniqueid
+         $astlogdir/fax.$uniqueid
+         $astlogdir/security.$uniqueid
+         $astlogdir/pjsip_history.$uniqueid
+         $astlogdir/sip_history.$uniqueid
 
-       * res_config_mysql:  Fix several issues related to recent table changes
+         Some minor tweaks were made to chan_sip, and res_pjsip_history
+         so their history output could be send to a log channel as packets
+         are captured.
 
-         Unlike any of the other database drivers, res_config_mysql checks that
-         the table definition matches the requirements for every insert and
-         update statement.  Since all requirements are forced to 'char', any
-         column that isn't a char, like ps_contacts' expiration_time,
-         qualify_timeout, etc., will throw a warning.  It's kinda harmless but
-         very misleading.  Since no other driver does those checks on insert
-         or update, they've been removed from res_config_mysql.  Also, all
-         the logic that actually attempted to ALTER the table to fix the issue
-         has been removed.  With the move to alembic, the auto-alter
-         functionality is not only unnecessary, it's also dangerous.
+         A minor tweak was also made to manager so events are output to verbose
+         when "manager set debug on" is issued.
 
-         The other issue is that res_config_mysql calls the mysql_insert_id
-         function inside store_mysql.  Presumably the intention was to return
-         the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE
-         IS NON_PORTABLE AND MAY CHANGE.  That value is then returned to
-         config realtime as the number of rows inserted.  Guess what?  The value
-         changed.  It now only returns the number of rows inserted if there's an
-         auto increment column on the table, which ps_contacts doesn't have.
-         Otherwise it returns 0.  So now, the insert worked but we tell config
-         realtime and sorcery that no rows were inserted.  That call to
-         mysql_insert_id was removed and we now always return 1 if the insert
-         succeeded.  We're only inserting 1 row at a time anyway.  If the insert
-         fails, we still return -1.
+         Change-Id: I799f8e5013b86dc5282961b27383d134bf09e543
 
-         ASTERISK-26362 #close
-         Reported-by: Carlos Chavez
+2017-01-25 15:26 +0000 [1997157e7e]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4
+       * Add reload options to CLI/AMI stale object commands.
 
-2016-09-29 13:08 +0000 [86c15db6a1]  Torrey Searle <torrey@voxbone.com>
+         Marking an object as stale in a memory cache is supposed to prime the
+         cache so that the next time the item is retrieved, the stale item is
+         deleted from the cache and a background task is run to re-populate the
+         cache with a fresh version of the object.
 
-       * res_fax: Fix a tight race condition causing fax to crash in audio fallback
+         The problem is, there are some object types out there for which there is
+         no natural reason that they would be retrieved from the backend with any
+         regularity. Outbound PJSIP registrations are a good example of this. At
+         startup, they are read, and an object-specific state is created that
+         refers to the initially-retrieved object for all time.
 
-         When T.38 gets rejected and G711 failback occurs there is a period of
-         time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set,
-         leading to a crash.
+         Adding the "reload" option to the CLI/AMI commands gives the cache the
+         opportunity to manually re-retrieve the object from the backend, both
+         storing the new object in the cache and applying the new object's
+         configuration to the module that uses that object.
 
-         Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982
+         Change-Id: Ieb1fe7270ceed491f057ec5cbf0e097bde96c5c8
 
-2016-09-30 16:29 +0000 [29b7a5b00f]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+2016-12-09 12:23 +0000 [92bdcfd57e]  Martin Tomec <tomec@ipex.cz>
 
-       * Add text of cdr directory into README.md for ast-db-manage
+       * app_queue: Ensure member is removed from pending when hanging up.
 
-         Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636
+         In some cases member is added to pending_members, and the channel
+         is hung up before any extension state change. So the member would
+         stay in pending_members forever. So when we call do_hang, we
+         should also remove member from pending.
 
-2016-10-06 09:58 +0000 [f919edc4e2]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26621 #close
 
-       * app_dial:  Add the "Q" option to set the cause on unanswered channels
+         Change-Id: Iae476b5c06481db18ebe0fa594b3e80fdc9a7d54
+         (cherry picked from commit d13be4eff699449172efbd9fed0ee97f6a790b6a)
 
-         The "Q" option will set the cause on the unanswered channels when
-         another channel answers.  It overrides the default of
-         ANSWERED_ELSEWHERE.
+2017-01-20 21:13 +0000 [9a4434eb74]  Richard Mudgett <rmudgett@digium.com>
 
-         NOTE:  chan_sip does not support setting the cause on a CANCEL to
-         anything other than ANSWERED_ELSEWHERE.
+       * PJPROJECT logging: Fix detection of max supported log level.
 
-         ASTERISK-26446 #close
+         The mechanism used for detecting the maximum log level compiled into the
+         linked pjproject did not work.  The API call simply stores the requested
+         level into an integer and does no range checking.  Asterisk was assuming
+         that there was range checking and limited the new value to the allowable
+         range.  To get the actual maximum log level compiled into the linked
+         pjproject we need to get and save off the initial set log level from
+         pjproject.  This is the maximum log level supported.
 
-         Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47
+         * Get and save off the initial log level setting before altering it to the
+         desired level on startup.  This has to be done by a macro rather than
+         calling a core function to avoid incorrectly linking pjproject.
 
-2016-10-10 16:59 +0000 [a884b26392]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+         * Split the initial log level warning messages to warn if the linked
+         pjproject cannot support the requested startup level and if it is too low
+         to get the pjproject buildopts for "pjproject show buildopts".
 
-       * vector: After remove element recheck index
+         * Adjust the CLI "pjproject set log level" to check the saved max log
+         level and to generate normal output messages instead of a warning message.
 
-         Small fix. It is necessary to double-check
-         the index that we just removed because there
-         is a new element.
+         ASTERISK-26743 #close
 
-         ASTERISK-26453 #close
+         Change-Id: I40aa76653e2a1dece66c3f8734594b4f0471cfb4
 
-         Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7
+2017-01-19 09:05 +0000 [6b0d734312]  gtjoseph <gjoseph@digium.com>
 
-2016-09-29 12:52 +0000 [349c34f72a]  Torrey Searle <torrey@voxbone.com>
+       * ari: Implement 'debug all' and request/response logging
 
-       * res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge
+         The 'ari set debug' command has been enhanced to accept 'all' as an
+         application name.  This allows dumping of all apps even if an app
+         hasn't registered yet.  To accomplish this, a new global_debug global
+         variable was added to res/stasis/app.c and new APIs were added to
+         set and query the value.
 
-         If a bridge switched to P2P when a DTMF was in progress it
-         was possible for the DTMF to continue being sent indefinitely.
+         'ari set debug' now displays requests and responses as well as events.
+         This required refactoring the existing debug code.
 
-         Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29
+         * The implementation for 'ari set debug' was moved from stasis/cli.{c,h}
+           to ari/cli.{c,h}, and stasis/cli.{c,h} were deleted.
+         * In order to print the body of incoming requests even if a request
+           failed, the consumption of the body was moved from the ari stubs
+           to ast_ari_callback in res_ari.c and the moustache templates were
+           then regenerated.  The body is now passed to ast_ari_invoke and then
+           on to the handlers.  This results in code savings since that template
+           was inserted multiple times into all the stubs.
 
-2016-10-10 10:59 +0000 [9da3489d24]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+         An additional change was made to the ao2_str_container implementation
+         to add partial key searching and a sort function.  The existing cli
+         code assumed it was already there when it wasn't so the tab completion
+         was never working.
 
-       * res_pjsip_config_wizard: Memory leak in module_unload
+         Change-Id: Ief936f747ce47f1fb14035fbe61152cf766406bf
 
-         Fixed a memory leak. It removes only the first element.
-         Added a useful feature in vector.h to remove all items
-         under the CMP through a callback function / macro.
+2017-01-23 09:10 +0000 [28733bb0ab]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26453 #close
+       * pjproject_bundled: Fix setting max log level
 
-         Change-Id: I84508353463456d2495678f125738e20052da950
+         An earlier attempt to prevent pjsua from spitting out an extra 6795
+         lines of debug output every time the testsuite called it was also
+         turning off the ability for asterisk to output debug info when it
+         needed to.  This patch reverts the earlier fix and instead adds
+         a pjproject patch that sets the startup log level to 1 for pjsua
+         pjsystest and the pjsua python binding.  This is an asterisk-only
+         patch that does not affect pjproject functionality and will not be
+         submitted upstream.
 
-2016-10-09 21:53 +0000 [fa2885b3ff]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+         Change-Id: I347a8b58b2626f2906ccfc1d339e907627a0c9e8
 
-       * cel_odbc: Fix memory leak on module unload
+2017-01-13 11:03 +0000 [0d2f17b22c]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715
+       * debug_utilities:  Create ast_loggrabber
 
-2016-10-03 11:30 +0000 [e6b0053d75]  gtjoseph <gjoseph@digium.com>
+         ast_loggrabber gathers log files from customizable search patterns,
+         optionally converts POSIX timestamps to a readable format and
+         tarballs the results.
 
-       * bundled_pjproject:  Add tests for programs used by the Makefile, et al.
+         Also a few tweaks were made to ast_coredumper.
 
-         Added tests for bzip2, tar, patch, sed and nm to configure.ac.
+         Change-Id: I8bfe1468ada24c1344ce4abab7b002a59a659495
+         (cherry picked from commit 5fa1c56d7e76999aa14f133a33f6b168e7c3b99c)
 
-         Set DOWNLOAD_TO_STDOUT to a working command line regardless of
-         whether the download program is wget, curl or fetch.
+2017-01-19 13:18 +0000 [92876c1c2a]  Mark Michelson <mmichelson@digium.com>
 
-         Added a 'configure.m4' file to the third-party directory which takes
-         care of calling any third-party project setup.  Had to move some
-         pjproject_bundled stuff up in configure.ac so it was called before
-         the third-party configure macro.
+       * Update for certified/13.13-cert1-rc2
 
-         The pjproject tarball is now downloaded to the externals_cache_dir if
-         it was specified on the ./configure command line
+2017-01-08 10:29 +0000 [52bee5df9e]  gtjoseph <gjoseph@digium.com>
 
-         Removed regeneration of the pjproject aconfigure file.  It was only
-         needed for an old patch that no longer applies.
+       * pjproject_bundled:  Fix compilation with MALLOC_DEBUG
 
-         Converted the tests for symbols to explicit tests since we know that
-         they're now available in the bundled version.  Saves a little time
-         during configure.
+         When MALLOC_DEBUG was specified, make was failing.  Immediately
+         remaking would work.  The issues was in the ordering of the make
+         dependencies.
 
-         ASTERISK-26416 #close
-         Reported-by: Corey Farrell
+         Change-Id: If6030b54fc693f3179f32bfd20c6b5d5f1b3f7cd
+         (cherry picked from commit f8cd73ec3c159f2e6c464952c92d8fdb69394371)
 
-         Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b
+2017-01-03 15:14 +0000 [08857b6e0e]  gtjoseph <gjoseph@digium.com>
 
-2016-10-05 14:53 +0000 [0dc0356e39]  gtjoseph <gjoseph@digium.com>
+       * pjproject_bundled:  Compile pjsua with max log level = 2
 
-       * pjproject_bundled:  Add MALLOC_DEBUG capability
+         A while back, we changed config_site.h to set PJ_LOG_MAX_LEVEL = 6.
+         This allowed us to control the log level better from inside Asterisk.
+         An unfortunate side effect of this was that the pjsua binary and
+         python bindings were also compiled with log level set to 6 so whenever
+         a testsuite test that uses pjsua runs, it spits out 6795 lines of
+         debug in an instant even before the test starts.  I believe this
+         overruns the Jenkins capture buffer and prevents the test from
+         properly terminating.  In turn, this results in the testsuite just
+         hanging until the job is killed.  It's more frequent on the higher
+         end agents because they can spit out the messages faster.
 
-         pjproject_bundled will now use the asterisk memory debugging APIs
-         if MALLOC_DEBUG is turned on in menuselect.
+         Unfortunately, the messages are all spit out before we have control
+         of the python pj.Lib instance where we can set logging levels so the
+         only alternative was to actually compile pjsua and _pjsua.so with an
+         overridden PJ_LOG_MAX_LEVEL.  Although defining a lower max level was
+         done in the Makefile, the define in config_site.h had to be wrapped
+         with "#ifndef" so the change would take effect.
 
-         Because this required stubs for the executable programs and the python
-         bindings, some Makefile reorganization was needed to properly handle
-         the dependencies.  As a result, the makefile now individually makes
-         each of the pjproject libraries separately instead of making them all
-         in 1 shot.  The only visible change is that there are separate status
-         lines printed for each library instead oif 1 for all libs.  Also, the
-         making of the pjproject dependency files was eliminated.  They're not
-         needed for building unless you're actively modifying pjproject source
-         files and it makes the build process faster.  Finally, any issues with
-         parallel builds should be resolved again making the build faster.
+         Change-Id: I2af9e7d48dde1927279c586c9c725d868fe6f3ff
+         (cherry picked from commit d7e5a747c312de18647213359103ce6022776864)
 
-         Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0
+2016-12-18 15:23 +0000 [7aacc0fc7f]  gtjoseph <gjoseph@digium.com>
 
-2016-10-07 17:32 +0000 [dd873bcada]  Corey Farrell <git@cfware.com>
+       * pjproject_bundled:  Make build single threaded
 
-       * astobj2: Add backtrace to log_bad_ao2.
+         There were just too many issues in various environments with
+         multi threaded building of pjproject.  It doesn't really speed
+         things up anyway since asterisk is already being compiled in
+         parallel.
 
-         * Compile __ast_assert_failed unconditionally.
-         * Use __ast_assert_failed to log messages from log_bad_ao2
-         * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run.
+         Change-Id: Ie5648fb91bb89b4224b6bf43a0daa1af793c4ce1
+         (cherry picked from commit 815f7551550908c83220196ba08742af0c745772)
 
-         Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751
+2016-11-23 18:27 +0000 [3a8a42b404]  Richard Mudgett <rmudgett@digium.com>
 
-2016-10-04 16:59 +0000 [86550f9c17]  gtjoseph <gjoseph@digium.com>
+       * PJPROJECT logging: Made easier to get available logging levels.
 
-       * alembic:  Allow cdr, config and voicemail to exist in the same schema
+         Use of the new logging is as simple as issuing the new CLI command or
+         setting the new pjproject.conf option.
 
-         cdr, config and voicemail are all separate alembic trees.  Because
-         alembic's default is to use a table named 'alembic_version' to store
-         the current tree revision, the 3 trees can't exist in the same schema
-         without stepping on each other.
+         Other options that can affect the logging are how you have the pjproject
+         log levels mapped to Asterisk log types in pjproject.conf and if you have
+         configured Asterisk to log the DEBUG type messages.  Altering the
+         pjproject.conf level mapping shouldn't be necessary for most installations
+         as the default mapping is sensible.  Configuring Asterisk to log the DEBUG
+         message type is standard practice for collecting debug information.
 
-         Now each tree uses 'alembic_version_<tree_name>' as the version table.
-         Each tree's env.py script now first checks for 'alembic_version'.  If
-         it finds it AND its revision is in the tree's history, the script
-         renames it to 'alembic_version_<tree_name>'.  Regardless, the script
-         then continues with the migration using 'alembic_version_<tree_name>'
-         and creates that table if it's not found.  The result is that if an
-         existing 'alembic_version' table was found but it didn't belong to this
-         tree, it's left alone and 'alembic_version_<tree_name>' is used or
-         created.
+         * Added CLI "pjproject set log level" command to dynamically adjust the
+         maximum pjproject log message level.
 
-         WARNING:  If multiple trees are using the same schema, they MUST NOT
-         CRU or D any objects with names that might exist in the other trees.
-         An example would be 'yesno_values' type.  If two trees perform
-         operations on it, one tree could pull it out from under the other.
-         Thankfully we currently don't share any names among cdr, config and
-         voicemail.
+         * Added CLI "pjproject show log level" command to see the currently set
+         maximum pjproject log message level.
 
-         NOTE:  Since the env.py scripts in each tree were identical, a common
-         env.py has been placed in the ast-db-manage directory and a symlink
-         to it has been placed in each tree directory.
+         * Added pjproject.conf startup section "log_level" option to set the
+         initial maximum pjproject log message level so all messages could be
+         captured from initialization.
 
-         ASTERISK-24311 #close
-         Reported-by: Dafi Ni
+         * Set PJ_LOG_MAX_LEVEL to 6 to compile in all defined logging levels into
+         bundled pjproject.  Pjproject will use the currently set run time log
+         level to determine if a log message is generated just like Asterisk
+         verbose and debug logging levels.
 
-         Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898
+         * In log_forwarder(), made always log enabled and mapped pjproject log
+         messages.  DEBUG mapped log messages are no longer gated by the current
+         Asterisk debug logging level.
 
-2016-10-05 04:25 +0000 [f166681c12]  Alexander Traud <pabstraud@compuserve.com>
+         * Removed RAII_VAR() from res_pjproject.c:get_log_level().
 
-       * chan_sip: Honor support of Symmetric Response (rport) for SIP requests.
+         ASTERISK-26630 #close
 
-         In the SIP channel driver chan_sip, the default is "auto_force_rport". When no
-         NAT was detected, for example in case of IPv6, Asterisk uses the IP address
-         from the headers within the SIP-REGISTER for subsequent SIP signaling. When
-         the remote party specifies support for Symmetric Response (RFC 3581) via the
-         parameter "rport", Asterisk should not extract the port from the SIP headers
-         but reuse the port of the transport. This did not happen because of a typo.
+         Change-Id: I6dca12979f482ffb0450aaf58db0fe0f6d2e5389
 
-         ASTERISK-26438 #close
+2017-01-10 18:10 +0000 [8e5e3c2b0c]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6
+       * debug_utilities:  Create the ast_coredumper utility
 
-2016-10-04 20:46 +0000 [430f6e5388]  Michael Walton <mike@farsouthnet.com>
+         This utility allows easy manipulation of asterisk coredumps.
 
-       * audiohooks: Remove redundant codec translations when using audiohooks
+         * Configurable search paths and patterns for existing coredumps
+         * Can generate a consistent coredump from the running instance
+         * Can dump the lock_infos table from a coredump
+         * Dumps backtraces to separate files...
+           - thread apply 1 bt full -> <coredump>.thread1.txt
+           - thread apply all bt -> <coredump>.brief.txt
+           - thread apply all bt full -> <coredump>.full.txt
+           - lock_infos table -> <coredump>.locks.txt
+         * Can tarball corefiles and optionally delete them after processing
+         * Can tarball results files and optionally delete them after processing
+         * Converts ':' in coredump and results file names '-' to facilitate
+           uploading.  Jira for instance, won't accept file names with colons
+           in them.
 
-         The main frame read and write handlers in main/channel.c don't use the
-         optimum placement in the processing flow for calling audiohooks
-         callbacks, as far as codec translation is concerned. This change places
-         the audiohooks callback code:
-          * After the channel read translation if the frame is not linear before
-         the translation, thereby increasing the chance that the frame is linear
-         as required by audiohooks
-          * Before the channel write translation if the frame is linear at this
-         point
-         This prevents the audiohooks code from instantiating additional
-         translation paths to/from linear where a linear frame format is already
-         available, saving valuable CPU cycles
+         Tested on Fedora24+, Ubuntu14+, Debian6+, CentOS6+ and FreeBSD9+[1].
 
-         ASTERISK-26419
+         [1] For *BSDs, the "devel/gdb" package might have to be installed to
+         get a recent gdb.  The utility will check all instances of gdb
+         it finds in $PATH and if one isn't found that can run python, it
+         prints a friendly error.
 
-         Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f
+         Change-Id: I935d37ab9db85ef923f32b05579897f0893d33cd
+         (cherry picked from commit 47474cfd54a9185c1433464ccfd6301427a03957)
 
-2016-09-29 14:02 +0000 [2449d2877c]  Kevin Harwell <kharwell@digium.com>
+2016-12-22 16:00 +0000 [cedf8a21a1]  Joshua Colp <jcolp@digium.com>
 
-       * Remove "format_ogg_opus: New format"
+       * chan_pjsip: Use session for retrieving CHANNEL() information.
 
-         This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c.
+         The CHANNEL() dialplan function implementation for PJSIP allows
+         querying of PJSIP specific information. This used the channel
+         passed in to get the PJSIP session and associated information.
+         It is possible for this channel to be masqueraded and end
+         up as a different channel type by the time the information
+         request is actually acted upon.
 
-         ASTERISK-26426 #close
+         This change retrieves the PJSIP session safely and accesses
+         data from it (including channel). This provides a guarantee
+         that the session and channel will not be altered when the
+         request is being acted upon.
 
-         Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5
+         ASTERISK-26673
 
-2016-09-27 16:10 +0000 [f0a2e628d6]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I335e12b89e1820cafdd92b3e7526b8ba649eb7e6
 
-       * download_externals: Fix issue with re-install
+2016-12-23 12:10 +0000 [92235dba88]  Richard Mudgett <rmudgett@digium.com>
 
-         Needed to ignore an xmlstarlet return code for optional element.
+       * bridge_native_rtp.c: Fix native rtp bridge data race.
 
-         Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873
-         Reported-by: Dan Jenkins
+         native_rtp_bridge_compatible() didn't lock the bridge channels before
+         checking the channels for native bridging ability.  As a result, one of
+         the channel's native format capabilities structure got replaced out from
+         under the native bridge check.  Use of a stale pointer to freed memory
+         causes bad things to happen.
 
-2016-09-22 09:49 +0000 [5258c067ae]  gtjoseph <gjoseph@digium.com>
+         MALLOC_DEBUG, DO_CRASH, and the
+         tests/channels/pjsip/transfers/blind_transfer/caller_direct_media
+         testsuite test caught this.
 
-       * codec_opus: Add download ability to menuselect
+         * Add missing channel locking in native_rtp_bridge_compatible().
 
-         Updated codecs/codecs.xml to add codec_opus to the external
-         download list.
+         Change-Id: If25fdb3ac8e85563c4857fb8216b3d9dc3d0fa53
 
-         ASTERISK-26409
+2016-12-21 16:28 +0000 [d8747659f0]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4
+       * res_rtp_asterisk.c: Fix uninitialized memory crash.
 
-2016-07-23 14:50 +0000 [a5af8709c8]  gtjoseph <gjoseph@digium.com>
+         ast_rtp_remote_address_set() could pass an uninitialized 'us' parameter to
+         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
+         parameter may not get initialized.  Thus when the code tries to save the
+         'us' parameter to the local address we could try to copy a ridiculous
+         sized memory buffer and segfault.
 
-       * codec_opus: Replace res_format_attr_opus with the one from codec_opus
+         * Made pass an initialized 'us' parameter to ast_ouraddrfor().
 
-         Preparation
+         * Optimized out the 'us' struct variable.
 
-         ASTERISK-26409
+         ASTERISK-26672 #close
 
-         Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3
-         (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9)
+         Change-Id: I4acea5dcdf0813da2c7d3e11c2d6067d160d17dc
 
-2016-07-23 15:56 +0000 [44c0c51cf1]  gtjoseph <gjoseph@digium.com>
+2016-12-21 17:54 +0000 [a9400da2d3]  Richard Mudgett <rmudgett@digium.com>
 
-       * format_ogg_opus: New format
-
-         Add Ogg/Opus playback support.
-
-         This uses libopusfile in order to be able to read .opus files and play
-         them back.
+       * chan_rtp.c: Fix uninitialized memory crash.
 
-         Writing/recording support is not present at this time.
+         unicast_rtp_request() could pass an uninitialized 'us' parameter to
+         ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
+         parameter may not get initialized.  Thus when the code tries to save the
+         'us' parameter to the local address we could try to copy a ridiculous
+         sized memory buffer and segfault.
 
-         ASTERISK-26409
+         * Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort
+         the UnicastRTP channel request if it fails.
 
-         Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955
+         ASTERISK-26672
 
-2016-09-24 19:05 +0000 [0ab443007b]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
 
-       * build_tools:  Add ability to download variants to download_externals
+2016-12-21 17:55 +0000 [a2c695cd18]  Richard Mudgett <rmudgett@digium.com>
 
-         Some external packages have multiple variants that apply to different
-         builds of asterisk.  The DPMA for instance has a "bundled" variant that
-         needs to be downloaded if asterisk was configured with
-         --with-pjproject-bundled.
+       * res_rtp_asterisk.c: Initialize ourip passed to ast_find_ourip().
 
-         There are 2 ways to specify variants:
+         We access uninitialized memory when the 'ourip' parameter does not
+         have an initial guess to our IP address.
 
-         If you need the user to make the decision about which variant to
-         download, simply create multiple menuselect "member" entries like so...
+         ASTERISK-26672
 
-         <member name="res_digium_phone" displayname="..snipped..">
-           <support_level>external</support_level>
-           <depend>xmlstarlet</depend>
-           <depend>bash</depend>
-           <defaultenabled>no</defaultenabled>
-         </member>
+         Change-Id: I35507ea1ad7455d2be188f6ccdd4add7bd150e15
 
-         <member name="res_digium_phone-bundled" displayname="..snipped..">
-           <support_level>external</support_level>
-           <depend>xmlstarlet</depend>
-           <depend>bash</depend>
-           <defaultenabled>no</defaultenabled>
-         </member>
+2016-12-21 16:25 +0000 [a3502c1885]  Richard Mudgett <rmudgett@digium.com>
 
-         Note that the second entry has "-<variant>" appended to the name.
-         You can then use the existing menuselect facilities to restrict which
-         members to enable or disable.  Youy probably don't want the user to
-         enable multiple at the same time.
+       * acl.c: Improve ast_ouraddrfor() diagnostic messages.
 
-         If you want to hide the details of the variants, the better way to
-         do it is to create 1 member with "variant" elements.
+         * Made not generate strings unless they will actually be used.
 
-         <member name="res_digium_phone" displayname="..snipped..">
-           <support_level>external</support_level>
-           <depend>xmlstarlet</depend>
-           <depend>bash</depend>
-           <defaultenabled>no</defaultenabled>
-           <member_data>
-             <downloader>
-               <variants>
-                 <variant tag="bundled"
-                   condition='[[ "$PJPROJECT_BUNDLED" = "yes" ]]'/>
-               </variants>
-             </downloader>
-           </member_data>
-         </member>
+         ASTERISK-26672
 
-         The condition must be a bash expression suitable for use with an "if"
-         statement.  Any environment variable can be used plus those available
-         in makeopts.
+         Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
 
-         In this case, if asterisk was configured with --with-pjproject-bundled
-         the bundled variant will be automatically downloaded.  Otherwise the
-         normal version will be downloaded.
+2016-12-14 14:21 +0000 [a3da3bb406]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e
+       * chan_dahdi.c: Fix bounds check regression.
 
-2016-09-22 01:40 +0000 [a0a17a8c6f]  Aaron An <anjb@ti-net.com.cn>
+         Caused by ASTERISK-25494
 
-       * channels/chan_pjsip: fix HANGUPCAUSE function bug.
+         Change-Id: I1fc408c1a083745ff59da5c4113041bbfce54bcb
 
-         HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered.
-         This patch change the call order of ast_queue_control_data
-         and ast_queue_control in chan_pjsip_incoming_response.
+2016-12-13 14:34 +0000 [1bb47bc3b0]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26396 #close
-         Reported by: AaronAn
-         Tested by: AaronAn
+       * res_pjsip: Add/update ERROR msg if invalid URI.
 
-         Change-Id: Ide2d31723d8d425961e985de7de625694580be61
+         ASTERISK-24499
 
-2016-09-23 09:54 +0000 [0502675e5c]  Alessandro Crespi
+         Change-Id: Ie305153e47e922233b2ff24715e0e326e5fa3a6c
 
-       * chan_sip: Resolve externhost not to IPv6; instead go for IPv4.
+2016-12-12 18:38 +0000 [ee9c8d0c97]  Richard Mudgett <rmudgett@digium.com>
 
-         For the channel driver chan_sip, you specify externhost=example.com in sip.conf
-         when your Asterisk is behind a NAT and your IP address is assigned dynamically.
-         Or stated differently: You do not have a static IP address to use "externaddr"
-         directly. This NAT support is quite handy but just about IPv4. Previously,
-         Asterisk resolved "externhost" to any IP version. When the first DNS answer
-         resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and
-         connection (c=). This happened in outgoing SIP-REGISTER and while answering
-         SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an
-         IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost".
+       * MESSAGE: Flush Message/ast_msg_queue channel alert pipe.
 
-         ASTERISK-18232 #close
-         Reported by: Jacek Kowalski
-         Tested by: Alexander Traud
-         patches:
-          changes.patch submitted by Alessandro Crespi
+         ASTERISK-25083
 
-         Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac
+         Change-Id: Id54baa57a8dbca84e29f28bcd2ffc0a5ac12d8b2
 
-2016-09-20 09:42 +0000 [0056bcaebd]  gtjoseph <gjoseph@digium.com>
+2016-12-13 14:06 +0000 [a209faa94f]  gtjoseph <gjoseph@digium.com>
 
-       * chan_sip:  Address runaway when realtime peers subscribe to mailboxes
+       * res_sorcery_memory_cache:  Change an error to a debug message
 
-         Users upgrading from asterisk 13.5 to a later version and who use
-         realtime with peers that have mailboxes were experiencing runaway
-         situations that manifested as a continuous stream of taskprocessor
-         congestion errors, memory leaks and an unresponsive chan_sip.
+         When a sorcery user calls ast_sorcery_delete on an object that
+         may have already expired from the cache, res_sorcery_memory_cache
+         spits out an ERROR.  Since this can happen frequently and validly when
+         an inbound registration expires after the cache entry expired, the
+         errors are unnecessary and misleading.  Changed to a debug/1.
 
-         A related issue was that setting rtcachefriends=no NEVER worked in
-         asterisk 13 (since the move to stasis).  In 13.5 and earlier, when a
-         peer tried to register, all of the stasis threads would block and
-         chan_sip would again become unresponsive.  After 13.5, the runaway
-         would happen.
+         Change-Id: Idf3a67038c16e3da814cf612ff4d6d18ad29ecd7
 
-         There were a number of causes...
-         * mwi_event_cb was (indirectly) calling build_peer even though calls to
-           mwi_event_cb are often caused by build_peer.
-         * In an effort to prevent chan_sip from being unloaded while messages
-           were still in flight, destroy_mailboxes was calling
-           stasis_unsubscribe_and_join but in some cases waited forever for the
-           final message.
-         * add_peer_mailboxes wasn't properly marking the existing mailboxes
-           on a peer as "keep" so build_peer would always delete them all.
-         * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions
-           then just creating them again.
+2016-11-30 09:31 +0000 [2021b5380d]  Walter Doekes <walter+asterisk@wjd.nu>
 
-         All of this was causing a flood of subscribes and unsubscribes on
-         multiple threads all for the same peer and mailbox.
+       * chan_sip: Do not allow non-SP/HTAB between header key and colon.
 
-         Fixes...
-         * add_peer_mailboxes now marks mailboxes correctly and build_peer only
-           deletes the ones that really are no longer needed by the peer.
-         * add_peer_mwi_subs now only adds subscriptions marked as "new" instead
-           of unsubscribing and resubscribing everything.  It also adds the peer
-           object's address to the mailbox instead of its name to the subscription
-           userdata so mwi_event_cb doesn't have to call build_peer.
+         RFC says SIP headers look like:
 
-         With these changes, with rtcachefriends=yes (the most common setting),
-         there are no leaks, locks, loops or crashes at shutdown.
+             HCOLON  =  *( SP / HTAB ) ":" SWS
+             SWS     =  [LWS]                    ; sep whitespace
+             LWS     =  [*WSP CRLF] 1*WSP        ; linear whitespace
+             WSP     =  SP / HTAB                ; from rfc2234
 
-         rtcachefriends=no still causes leaks but at least it doesn't lock, loop
-         or crash.  Since making rtcachefriends=no work wasnt in scope for this
-         issue, further work will have to be deferred to a separate patch.
+         chan_sip implemented this:
 
-         Side fixes...
-          * The ast_lock_track structure had a member named "thread" which gdb
-            doesn't like since it conflicts with it's "thread" command.  That
-            member was renamed to "thread_id".
+             HCOLON  =  *( LOWCTL / SP ) ":" SWS
+             LOWCTL  = %x00-1F                   ; CTL without DEL
 
-         ASTERISK-25468 #close
+         This discrepancy meant that SIP proxies in front of Asterisk with
+         chan_sip could pass on unknown headers with \x00-\x1F in them, which
+         would be treated by Asterisk as a different (known) header.  For
+         example, the "To\x01:" header would gladly be forwarded by some proxies
+         as irrelevant, but chan_sip would treat it as the relevant "To:" header.
 
-         Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0
+         Those relying on a SIP proxy to scrub certain headers could mistakenly
+         get unexpected and unvalidated data fed to Asterisk.
 
-2016-09-21 15:03 +0000 [323aff3a09]  Joshua Colp <jcolp@digium.com>
+         This change fixes so chan_sip only considers SP/HTAB as valid tokens
+         before the colon, making it agree on the headers with other speakers of
+         SIP.
 
-       * core: Ensure presencestate subtype and message are NULL.
+         ASTERISK-26433 #close
+         AST-2016-009
 
-         When retrieving presence state information there is no
-         guarantee that the subtype and message passed in are
-         set to NULL. This change ensures they are.
+         Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b
 
-         ASTERISK-26397 #close
+2016-11-14 18:18 +0000 [d27eae001d]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I61f8187972d5d8bbd7d6b7f4daa4f4f7e8237b23
+       * res_format_attr_opus: Fix crash when fmtp contains spaces.
 
-2016-09-21 10:48 +0000 [10c180760c]  Joshua Colp <jcolp@digium.com>
+         When an opus offer or answer was received that contained an
+         fmtp line with spaces between the attributes the module would
+         fail to properly parse it and crash due to recursion.
 
-       * res_odbc: Make pooling option deprecation notice more useful.
+         This change makes the module handle the space properly and
+         also removes the recursion requirement.
 
-         This changes the notice for the deprecation of the old
-         pooling options to point to the new option for doing
-         pooling. This gives a clearer direction as to what to
-         look into.
+         ASTERISK-26579
 
-         ASTERISK-26389 #close
+         Change-Id: I01f53e5d9fa9f1925a7365f8d25071b5b3ac2dc3
 
-         Change-Id: I2ca9cdfdcd75aec170a7db9d5ff69a4cd25b7c10
+2016-12-06 14:54 +0000 [f243f7fb4b]  gtjoseph <gjoseph@digium.com>
 
-2016-09-12 07:37 +0000 [42cc267016]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * res_pjsip_registrar: AMI Add RegistrationInboundContactStatuses command
 
-       * cdr_mysql: fix UTC support
+         The PJSIPShowRegistrationsInbound AMI command was just dumping out
+         all AORs which was pretty useless and resource heavy since it had
+         to get all endpoints, then all aors for each endpoint, then all
+         contacts for each aor.
 
-         * Make 'cdrzone=UTC' work properly.
-         * Fix the documentation of cdr_mysql.conf: it's cdrzone and not timezone
+         PJSIPShowRegistrationInboundContactStatuses sends ContactStatusDetail
+         events which meets the intended purpose of the other command and has
+         significantly less overhead.  Also, some additional fields that were
+         added to Contact since the original creation of the ContactStatusDetail
+         event have been added to the end of the event.
 
-         ASTERISK-26359 #close
+         For compatibility purposes, PJSIPShowRegistrationsInbound is left
+         intact.
 
-         Change-Id: I2a6f67b71bbbe77cac31a34d0bbfb1d67c933778
+         ASTERISK-26644 #close
 
-2016-09-21 08:46 +0000 [f16ab19292]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I326f12c9ecb52bf37ba03f0748749de4da01490a
 
-       * odbc: Remove options that are no longer applicable.
+2016-12-06 16:45 +0000 [c7c2db5a29]  Richard Mudgett <rmudgett@digium.com>
 
-         The pooling, shared_connection, limit, and idlecheck options
-         are no longer used in res_odbc.
+       * Bundled pjproject:  Fix finding SIP transactions.
 
-         ASTERISK-26389
+         Occasionally SIP message transactions are not found when they should be.
+         In the particular case an incoming INVITE transaction is CANCELed but the
+         INVITE transaction cannot be found so a 481 response is returned for the
+         CANCEL.  The problematic calls have a '_' character in the Via branch
+         parameter.
 
-         Change-Id: I2fde7b467d01f9d1c82cc0a339bb4f7e1dd6bbe6
+         The problem is in the pjproject PJ_HASH_USE_OWN_TOLOWER feature's code.
+         The problem with the "own tolower" code is that it does not calculate the
+         same hash value as when the pj_tolower() function is used.  The "own
+         tolower" code will erroneously modify the ASCII characters '@', '[', '\\',
+         ']', '^', and '_'.  Calls to pj_hash_calc_tolower() can use the
+         PJ_HASH_USE_OWN_TOLOWER substitute algorithm when enabled.  Calls to
+         pj_hash_get_lower(), pj_hash_set_lower(), and pj_hash_set_np_lower() call
+         find_entry() which never uses the PJ_HASH_USE_OWN_TOLOWER algorithm.  As a
+         result you may not be able to find a hash tabled entry because the
+         calculated hash values would differ.
 
-2016-09-20 15:17 +0000 [c9ce299b64]  Corey Farrell <git@cfware.com>
+         * Simply disable PJ_HASH_USE_OWN_TOLOWER.
 
-       * core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get.
+         ASTERISK-26490 #close
 
-         Move the function outside the conditional block that excludes
-         LOW_MEMORY.
+         Change-Id: If89bfdb5f301b8b685881a9a2a6e0c3c5af32253
 
-         ASTERISK-26273 #close
+2016-12-06 12:06 +0000 [221e838b26]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Ic290fa128222c410c3531107e30efacabc8493b4
+       * pjproject_bundled:  Fix missing inclusion of symbols
 
-2016-09-20 10:05 +0000 [610eb4c189]  Corey Farrell <git@cfware.com>
+         Added back in a -g3, and an -O3 when DONT_OPTIMIZE is not set, to
+         the CFLAGS.  Not sure how they went missing.
 
-       * logger: Fix default console settings.
+         Also fixed an uninstall problem where we weren't removing the
+         symlink from libasteriskpj.so.2 to libasteriskpj.so.  While I was
+         there, I fixed it for libasteriskssl as well.
 
-         When logger.conf is missing or invalid we should be printing notices,
-         warnings and errors to the console.  The logmask was incorrectly
-         calculated.
+         Change-Id: I9e00873b1e9082d05b5549d974534b48a2142556
 
-         Change-Id: Ibaa9465a8682854bc1a5e9ba07079bea1bfb6bb3
+2016-11-30 10:48 +0000 [492b37429c]  Mark Michelson <mmichelson@digium.com>
 
-2016-06-27 14:26 +0000 [36092ee3a0]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * Frame deferral: Re-queue deferred frames one-at-a-time.
 
-       * sd_notify (systemd status notifications) support
+         The recent change that made frame deferral into an API had a behavior
+         change to it. When frame deferral was completed, we would take all of
+         the deferred frames and queue them all onto the channel in one call to
+         ast_queue_frame_head(). Before frame deferral was API-ized, places that
+         performed manual frame deferral would actually take each deferred frame
+         and queue them onto the channel.
 
-         sd_notify() is used to notify systemd of changes to the status of the
-         process. This allows the systemd daemon to know when the process
-         finished loading (and thus only start another program after Asterisk has
-         finished loading).
+         This change in behavior caused the confbridge_recording test to start
+         failing consistently. Without going too crazily deep into the details,
+         a channel was getting "stuck" in an ast_safe_sleep(). An AMI redirect
+         was attempting to break it out of the sleep, but because there were more
+         frames in the channel read queue than expected, the channel ended up
+         being unable to break from its sleep loop.
 
-         To use this, use a systemd unit with 'Type=notify' for Asterisk.
+         By restoring the behavior of individual frame queuing after deferral,
+         the test starts passing again.
 
-         This commit also adds the function ast_sd_notify(), a wrapper around
-         sd_notify that does nothing if not built with systemd support.
+         Note, this points to a potential underlying issue pointing to an
+         "unbalance" that can occur when queuing multiple frames at once,
+         and so a follow-up issue is being created to investigate that
+         possibility.
 
-         Also adds support for libsystemd detection in the configure script.
+         Change-Id: Ied5dacacda06d343dea751ed5814a03364fe5a7d
 
-         Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811
-         (cherry picked from commit 07b95f7c65b7c083724f1af2b26f93cc22cad58c)
+2016-11-28 11:03 +0000 [d4d1909077]  gtjoseph <gjoseph@digium.com>
 
-2016-09-19 14:21 +0000 [9372d32100]  Walter Doekes <walter+github@wjd.nu>
+       * build_tools:  Fix download_externals to handle certified branches
 
-       * asterisk.c: Non-root users also get the astcanary after core restart.
+         download_externals wasn't handling the "certified/13.x" version
+         correctly.
 
-         Without this change, a 'core restart' would kill the astcanary forever
-         if you're not running as root. Both with and without this patch, the
-         scheduling priority was still SCHED_RR after restart.
+         Change-Id: I124d195bb117ca36fd7bf1150c630f3b474a9d9a
 
-         Additionally, the astcanary is now spawned if you start with high
-         priority and Asterisk doesn't get a chance to lower it. For example
-         through: `chrt -r 10 sudo -u asterisk asterisk -c`
+2016-11-23 15:58 +0000 [33a0d64eab]  Kevin Harwell <kharwell@digium.com>
 
-         Also reap killed astcanary processes on core restart.
+       * Update for certified/13.13-cert1-rc1
 
-         ASTERISK-26352 #close
+2016-11-23 15:20 +0000 [907160ee21]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Iacb49f26491a0717084ad46ed96b0bea5f627a55
+       * app_talkdectect: Now core supported, enable for cert
 
-2016-09-19 09:40 +0000 [e96448e991]  Walter Doekes <walter+github@wjd.nu>
+         Change-Id: Ic0b2cacb21a6e11a25ebbff7e508e106ea156f6c
 
-       * asterisk.c: When astcanary dies on linux, reset priority on all threads.
+2016-11-23 15:01 +0000 [0cd0495732]  Kevin Harwell <kharwell@digium.com>
 
-         Previously only the canary checking thread itself had its priority set
-         to SCHED_OTHER. Now all threads are traversed and adjusted.
+       * Disable extended support modules
 
-         ASTERISK-19867 #close
-         Reported by: Xavier Hienne
+         Change-Id: Ib6b4f9451b5b68b738d8ab07a27de1c87c28f819
 
-         Change-Id: Ie0dd02a3ec42f66a78303e9c1aac28f7ed9aae39
+2016-11-23 14:57 +0000 [854196eea9]  Kevin Harwell <kharwell@digium.com>
 
-2016-09-09 06:35 +0000 [01884a7af6]  Timo Teräs <timo.teras@iki.fi>
+       * .version: Update for certified/13.13
 
-       * Fix showing of swap details when sysinfo() is available
+         Change-Id: Ia1a0f035359d88b8885c7aca22f0d70b73aeb05d
 
-         If sysinfo() is available, but not sysctl() or swapctl() the
-         printing code for swap buffer sizes is incorrectly omitted.
-         The above condition happens with musl c-library.
+2016-11-23 09:26 +0000 [fdde690e0f]  Kevin Harwell <kharwell@digium.com>
 
-         Fix #if rule to consider defined(HAVE_SYSINFO). And also
-         remove the redundant || defined(HAVE_SYSCTL) which was
-         incorrectly there to start with. Now swap information is
-         displayed only if an actual libc function to get it is
-         available.
+       * Update for 13.13.0
 
-         This also fixes warnings previously seen with musl libc:
+2016-11-22 12:02 +0000 [f93e55d124]  Kevin Harwell <kharwell@digium.com>
 
-            [CC] asterisk.c -> asterisk.o
-         asterisk.c: In function 'handle_show_sysinfo':
-         asterisk.c:773:6: warning: variable 'totalswap' set but not used
-          [-Wunused-but-set-variable]
-           int totalswap = 0;
-               ^~~~~~~~~
-         asterisk.c:770:11: warning: variable 'freeswap' set but not used
-          [-Wunused-but-set-variable]
-           uint64_t freeswap = 0;
-                    ^~~~~~~~
+       * Update for 13.13.0-rc2
 
-         Change-Id: I1fb21dad8f27e416c60f138c6f2bff03fb626eca
+2016-11-21 09:40 +0000 [e246b36a3c]  gtjoseph <gjoseph@digium.com>
 
-2016-09-12 18:00 +0000 [cdbad152c7]  Richard Mudgett <rmudgett@digium.com>
+       * build:  Backport addition of librt check to configure.ac
 
-       * res_config_odbc.c: Fix buffer size limitation creating invalid SQL.
+         A while back, a master-only change was made to check for librt which
+         should probably have been cherry-picked to 13 at that time.  Sometime
+         between then and now, part of that change did make it into 13 but it
+         was incomplete and non-functional.  This patch backports the rest
+         of the librt check and allows the link of libasteriskpj to use the
+         results.
 
-         Creating ODBC SQL queries resulted in queries too large to fit into the
-         supplied buffer.  The resulting truncated buffer contained an invalid SQL
-         query.
+         Change-Id: I1424008fd8c90f389dda53162ec4a340b253a3c1
 
-         * Made SQL query generation code use a thread storage buffer that can
-         increase in size as needed.
+2016-11-22 11:20 +0000 [855f05e525]  Kevin Harwell <kharwell@digium.com>
 
-         * Fixed bad multi-line warning messages.
+       * Update for 13.13.0
 
-         ASTERISK-26263 #close
-         Reported by: Jeppe Ryskov Larsen
+2016-11-18 12:59 +0000 [751d43e8e4]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I23f3cdd43c2dac80bed3ded4dd77d18cb17f21ae
+       * Update for 13.13.0-rc1
 
-2016-09-14 08:42 +0000 [449719be00]  Joshua Colp <jcolp@digium.com>
+2016-11-18 09:45 +0000 [cb624b10ae]  Mark Michelson <mmichelson@digium.com>
 
-       * res_pjsip_multihomed: Change Contact port to listening port.
+       * Bump ARI version to 1.10.0
 
-         The res_pjsip_multihomed module determines what interface and transport
-         a request is going out on and updates the SIP message accordingly with
-         the address information. This currently incorrectly updates the Contact
-         header for connectionful protocols to the ephemeral connection port,
-         instead of the bound address for the listening socket which can actually
-         accept the connection back. If the remote side attempts to connect back on
-         the epehemeral port it will fail.
+         The video-related bridge changes mean that the version needs to be
+         bumped.
 
-         This change makes it so the port is updated to the bound port on
-         connectionful protocols and is maintained on UDP (as there can be
-         multiple of those).
+         Change-Id: I41c4495068562bef03aa76728f188b8ac4bd393d
 
-         ASTERISK-26374 #close
+2016-11-17 10:50 +0000 [bde3d022a3]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I50f8dab65b9f75117d73ba5f6bbcf6c9871854ab
+       * manager: update minor version
 
-2016-09-07 14:48 +0000 [4d64b176eb]  gtjoseph <gjoseph@digium.com>
+         Based on bridge video AMI event changes, bump the minor version of AMI.
 
-       * pjproject_bundled:  Prevent SERVFAIL from marking name server bad
+         Change-Id: I02586bd6cafc0baa33ea98c2f75356c0f5e03435
 
-         A name server that returns "Server Failure" is indicating only that
-         the server couldn't process that particular request.  We should NOT
-         assume that the name server is incapable of serving other requests.
+2016-11-16 20:24 +0000 [b213045fe4]  gtjoseph <gjoseph@digium.com>
 
-         Here's the scenario we've been encountering...
+       * build:  Various OpenBSD issues
 
-         * 2 local name servers configured in resolv.conf.
-         * An OPTIONS request causes a request for A and AAAA records to go out
-           to both nameservers.
-         * The A responses both come back successfully resolved.
-         * Because of an issue at some upstream nameserver, the AAAA responses
-           for that particular query come back as "SERVFAIL" from both local
-           name servers.
-         * Both local servers are marked as bad and no further queries can be
-           sent until the 60 second ttl expires.  Only previously cached results
-           can be used.
-         * In this case, 60 seconds is just enough time for another OPTIONS
-           request to go out to the same host so the cycle repeats.
+         OpenBSD's 'find' doesn't take the -delete argument so you have to pipe
+         through 'xargs rm -rf'.
 
-         We could set the bad ttl really low but that also affects REFUSED and
-         NOTAUTH which probably DO signal a real server issue.  Besides, even
-         a really low bad ttl would be an issue on a pbx.
+         'echo -e' doesn't like \t starting a line. It just prints 't' which
+         causes the libasteriskpj.exports file to be garbage.  They were just
+         cosmetic so they were removed.
 
-         Although we use our own resolver in 14 and master and don't have this
-         issue there, Teluu has merged this patch upstream so it's appropriate
-         to cherry-pick to 14 and master to keep pjproject consistent.
+         librt doesn't exist so the link of libasteriskpj.so fails. It's not
+         actually needed for linux anyway so -lrt was removed from the link.
 
+         res_rtp_asterisk was failing to load because of an undefined
+         DTLS_method. '|| defined(LIBRESSL_VERSION_NUMBER)' was added to the #if
+         so DTLSv1_method is used instead.
 
-         Change-Id: Ie03ba902288e274aff23f9b9bb2786e1e8be09e0
+         ASTERISK-26608
 
-2016-09-14 07:59 +0000 [1cac856e17]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I926ec95b0b69633231e3ad1d6e803b977272c49c
 
-       * rtp: Preserve timestamps on video frames.
+2016-11-14 18:45 +0000 [404596b790]  gtjoseph <gjoseph@digium.com>
 
-         Currently when receiving video over RTP we store only
-         a calculated samples on the frame. When starting the video
-         it can take some time for this calculation to actually yield
-         a value as it requires constant changing timestamps. As well
-         if a video frame passes over multiple RTP packets this calculation
-         will fail as the timestamp is the same as the previous RTP
-         packet and the number of samples calculated will be 0.
+       * channel:  Fix issues in hangup scenarios caused by frame deferral
 
-         This change preserves the timestamp on the frame and allows
-         it to pass through the core. When sending the video this timestamp
-         is used instead of a new one being calculated.
+         ASTERISK-26343
 
-         ASTERISK-26367 #close
+         Change-Id: I06dbf7366e26028251964143454a77d017bb61c8
 
-         Change-Id: Iba8179fb5c14c9443aee4baf670d2185da3ecfbd
+2016-11-16 15:42 +0000 [2c031b67d3]  Mark Michelson <mmichelson@digium.com>
 
-2016-09-14 09:51 +0000 [9df4056d70]  Joshua Colp <jcolp@digium.com>
+       * res_format_attr_opus: Fix fmtp generation.
 
-       * res_pjsip_transport_management: Convert time in log message to seconds.
+         res_format_attr_opus assumed that the string being passed into it was
+         empty. It tried to determine if the only thing it had written was
 
-         ASTERISK-26375 #close
+         a=fmtp:<num>
 
-         Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc
+         And if it had, it would reset the string. Its calculation was off when
+         working with chan_sip, though. chan_sip passes the entire built SDP
+         rather than an empty string. This resulted in always putting an empty
+         fmtp line in the SDP.
 
-2016-09-13 05:34 +0000 [98e42cc662]  Steve Davies <steve@one47.co.uk>
+         ASTERISK-26520 #close
+         Reported by scgm11
 
-       * chan_sip: Fix session timeout on retransmit of non-UDP packets
+         Change-Id: Ib2e8712d26a47067e5f36d5973577added01dbb5
 
-         Change-Id I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 Enable Session-Timers for
-         SIP over TCP (and TLS) also disables SIP retransmits in chan_sip for non-UDP
-         connections, allowing the TCP layer to handle the retransmits. Unfortunately,
-         this caused sessions to be terminated with a retransmit timeout becasue it
-         stopped at the point of the first retrans call.
+2016-11-15 16:23 +0000 [ed0f1afc8c]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch waits for the 64*T1 timer to expire instead.
+       * codec_opus: Fix warning when Opus negotiated but codec_opus not loaded.
 
-         ASTERISK-19968
+         When Opus is negotiated but not loaded, the log is spammed with messages
+         because the system does not know how to calculate the number of samples in
+         a frame.
 
-         Change-Id: I844f26801aada10bc94e9bebe6e151f0a8443204
+         * Suppress the warning by supplying a function that assumes 20ms of
+         samples in the frame.  For pass through support it doesn't really seem to
+         matter what number of samples is returned anyway.
 
-2016-09-12 12:25 +0000 [0388882cdb]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26605 #close
 
-       * app_queue: Fix CLI "queue show" and AMI Queues action output truncation.
+         Change-Id: Icf2273692f040dc2c45b01e72a790d11092f9e0f
 
-         The output of CLI "queue show" and AMI Queues action is truncated and
-         "failed to extend from 240 to 327" messages are generated if the queue
-         member and interface names are lengthy.
+2016-11-14 14:36 +0000 [e632222bc4]  Richard Mudgett <rmudgett@digium.com>
 
-         * Increase the string buffer size from 240 to 512 in order to accommodate
-         for more information fields added to the output since v1.8.
+       * res_pjsip_outbound_authenticator_digest.c: Fix memory pool leak.
 
-         ASTERISK-26360 #close
-         Reported by: Richard Mudgett
+         Responding to authentication challenges leaks PJSIP memory pools.
 
-         Change-Id: Id99c03cf5362453b80491a4b3b0434cb67aa966d
+         The leak was introduced with a pjproject 2.5.5 API change.
+         https://trac.pjsip.org/repos/ticket/1929 changed the API usage of
+         pjsip_auth_clt_init() to require the new API pjsip_auth_clt_deinit() to
+         clean up cached authentication allocations that get allocated with
+         pjsip_auth_clt_reinit_req().
 
-2016-09-12 03:28 +0000 [da8ba990d1]  Walter Doekes <walter+github@wjd.nu>
+         ASTERISK-26516 #close
 
-       * chan_sip: Allow target refresh (Contact update) on re-INVITE.
+         Change-Id: I4473141b8c3961d0dc91c382beb3876b3efb45c8
 
-         Previously, the Contact was stored only on initial INVITE and on any
-         18X and 200. That meant that after re-INVITEs from *us* the Contact
-         could get updated, but after re-INVITEs from the *peer*, it did not.
+2016-11-15 12:01 +0000 [c92dcc76da]  gtjoseph <gjoseph@digium.com>
 
-         This changeset fixes this inconsistency, properly allowing target
-         refreshes through re-INVITES (RFC3261, 12.2).
+       * file.c/__ast_file_read_dirs:  Fix issues on filesystems without d_type
 
-         If your strictrtp setting allows it, this change allows you to switch
-         the source IP of a connected/calling device mid-call with a simple
-         re-INVITE from the new IP.
+         One of the code paths in __ast_file_read_dirs will only get executed if
+         the OS doesn't support dirent->d_type OR if the filesystem the
+         particular file is on doesn't support it.  So, while standard Linux
+         systems support the field, some filesystems like XFS do not.  In this
+         case, we need to call stat() to determine whether the directory entry
+         is a file or directory so we append the filename to the supplied
+         directory path and call stat.  We forgot to truncate path back to just
+         the directory afterwards though so we were passing a complete file name
+         to the callback in the dir_name parameter instead of just the directory
+         name.
 
-         ASTERISK-26358 #close
+         The logic has been re-written to only create a full_path if we need to
+         call stat() or if we need to descend into another directory.
 
-         Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435
+         Change-Id: I54e4228bd8355fad65200c6df3ec4c9c8a98dfba
 
-2016-08-31 15:22 +0000 [e9ddab4685]  Richard Mudgett <rmudgett@digium.com>
+2015-05-14 17:12 +0000 [7b96e8cc3d]  Maciej Szmigiero <mail@maciej.szmigiero.name>
 
-       * sip_to_pjsip.py: Map legacy_useroption_parsing.
+       * Add X.509 subject alternative name support to TLS certificate
+         verification.
 
-         Map the sip.conf general section legacy_useroption_parsing to the
-         new pjsip.conf global ignore_uri_user_options.
+         This way one X.509 certificate can be used for hosts that
+         can be reached under multiple DNS names or for multiple hosts.
 
-         ASTERISK-26316
-         Reported by: Kevin Harwell
+         Signed-off-by: Maciej Szmigiero <mail@maciej.szmigiero.name>
 
-         Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc
+         ASTERISK-25063 #close
 
-2016-08-29 18:08 +0000 [30af92e78d]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I13302c80490a0b44c43f1b45376c9bd7b15a538f
 
-       * res_pjsip: Add ignore_uri_user_options option.
+2016-11-14 15:57 +0000 [0790aa528a]  Matt Jordan <mjordan@digium.com>
 
-         This implements the chan_sip legacy_useroption_parsing option but with a
-         better name.
+       * pjproject: Use a much higher limit for PJ_ICE_MAX_CHECKS
 
-         * Made the caller-id number and redirecting number strings obtained from
-         incoming SIP URI user fields always truncated at the first semicolon.
-         People don't care about anything after the semicolon showing up on their
-         displays even though the RFC allows the semicolon.
+         The PJ_ICE_MAX_CHECKS constant is used by pjproject to determine how
+         many pairs of local/remote candidates will be made. If for some reason
+         we reach this upper bound, ICE will generally fail and no media will
+         flow between the browser and Asterisk.
 
-         ASTERISK-26316 #close
-         Reported by: Kevin Harwell
+         This patch makes PJ_ICE_MAX_CHECKS set to the total possible number of
+         pairs of candidates we'd theoretically allow, which is
+         PJ_ICE_MAX_CAND^2. Prior to this patch, we simply multiplied
+         PJ_ICE_MAX_CAND by two; on systems with multiple interfaces (I blame
+         Docker), this is far too low to allow WebRTC calls to succeed.
 
-         Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62
+         Setting this to be PJ_ICE_MAX_CAND^2 allowed WebRTC calls to succeed
+         even when the system Asterisk was running on had quite a few virtual
+         interfaces.
 
-2016-09-09 06:26 +0000 [7ed5dc2c58]  Walter Doekes <walter+github@wjd.nu>
+         Change-Id: Icd4f17de0ac9d3a83dddfc8bf1cb7616bc107d55
 
-       * contrib: Let safe_asterisk script continue without /dev/tty9.
+2016-11-14 15:32 +0000 [993a6f96c7]  Matt Jordan <mjordan@digium.com>
 
-         If you use the safe_asterisk script, it uses hardcoded defaults before
-         running configurable values from /etc/asterisk/startup.d. The hardcoded
-         default has TTY=9. Some containerized environments don't have such a
-         TTY, and safe_asterisk would stop.
+       * apps/app_echo: Only relay a single video source change frame
 
-         The custom configuration from /etc/asterisk/startup.d/* isn't read until
-         after it stopped, so changing TTY in a custom config did not help.
+         In 9785e8d0, app_echo was updated to relay video source updates to the
+         channel for the purposes of displaying video in WebRTC tests.
+         Unfortunately, this can cause a Kafkaesque nightmare if two or more
+         Local channels are in a bridge together where their ends are in
+         app_echo. When this situation occurs, a video update sent into app_echo
+         will cause the video update to be relayed to the other Local channels,
+         causing another round of video updates, etc. In not much time at all,
+         the channel length queues will be overwhelmed, channel alert pipes will
+         fail, and all hell will break loose as Asterisk merrily continues to
+         throw more video update requests onto the channels.
 
-         This changeset changes safe_asterisk to continue if the TTY setting was
-         untouched and /dev/tty9 and /dev/vc/9 aren't found.
+         This patch updates app_echo to *only* relay a single video update. Once
+         a video update has been made, all further video updates are dropped.
+         This meets the intended purpose of the original patch: if we get a video
+         update and we're in app_echo, go ahead and ask the sender to update
+         themselves. However, once we've got that video stream sync'd up, don't
+         keep spamming the world.
 
-         Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc
+         Change-Id: I9210780b08d4c17ddb38599d1c64453adfc34f74
 
-2016-09-09 05:39 +0000 [7580a736bb]  Joshua Colp <jcolp@digium.com>
+2016-11-08 10:11 +0000 [d23b4af477]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip: Only invoke unidentified endpoint logic when unidentified.
+       * res/ari/resource_bridges: Add the ability to manipulate the video source
 
-         The code was incorrectly invoking the unidentified logic when
-         an endpoint had actually been identified, causing log messages
-         to be output.
+         In multi-party bridges, Asterisk currently supports two video modes:
+          * Follow the talker, in which the speaker with the most energy is shown
+            to all participants but the speaker, and the speaker sees the
+            previous video source
+          * Explicitly set video sources, in which all participants see a locked
+            video source
 
-         ASTERISK-26349 #close
+         Prior to this patch, ARI had no ability to manipulate the video source.
+         This isn't important for two-party bridges, in which Asterisk merely
+         relays the video between the participants. However, in a multi-party
+         bridge, it can be advantageous to allow an external application to
+         manipulate the video source.
 
-         Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f
+         This patch provides two new routes to accomplish this:
+         (1) setVideoSource: POST /bridges/{bridgeId}/videoSource/{channelId}
+             Sets a video source to an explicit channel
+         (2) clearVideoSource: DELETE /bridges/{bridgeId}/videoSource
+             Removes any explicit video source, and sets the video mode to talk
+             detection
 
-2016-08-23 06:35 +0000 [efcfc4c1ee]  Corey Farrell <git@cfware.com> (license 5909)
+         ASTERISK-26595 #close
 
-       * chan_sip: Don't allocate new RTP instances on top of old ones.
+         Change-Id: I98e455d5bffc08ea5e8d6b84ccaf063c714e6621
 
-         In some scenarios dialog_initialize_rtp can be called multiple times on
-         the same dialog.  This can cause RTP instances to be leaked along with
-         multiple file descriptors for each instance.
+2016-11-14 14:22 +0000 [404a62eeee]  gtjoseph <gjoseph@digium.com>
 
-         This change makes it so the existing RTP instances are destroyed and
-         not overwritten, stopping the memory leak.
+       * Revert "Revert "channel: Use frame deferral API for safe sleep.""
 
-         ASTERISK-26272 #close
-         patches:
-           ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909)
+         This reverts commit 58c88cfbaa80cb43419cde9186d643d1c5d24baf.
 
-         Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73
+         Change-Id: I72692e2b2e83ef6da9390075ff20b138b2c374b6
 
-2016-08-16 15:34 +0000 [f1ffc22933]  Mark Michelson <mmichelson@digium.com>
+2016-11-14 14:22 +0000 [09d8febc91]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip: Do not crash on ACKs from unknown endpoints.
+       * Revert "Revert "autoservice: Use frame deferral API""
 
-         The endpoint identification PJSIP module is intended to identify which
-         endpoint an incoming request is from. If an endpoint is not identified,
-         then an artificial endpoint is used in its place when proceeding.
+         This reverts commit 1df434e2b4bd7cc34b9b4addf405a3caa7ac16b8.
 
-         The problem is that the ACK request type is an exception to the rule.
-         The artificial endpoint is not used when processing an ACK. This results
-         in the possibility of having a NULL endpoint being used further on.
+         Change-Id: Id2b8a8bccbb4bbdd82b792275d4cd6f32563e401
 
-         The reason ACK is an exception is an attempt not to spam security logs
-         with unidentified requests. Presumably, you've already logged the
-         unidentified request on the preceeding INVITE.
+2016-11-14 14:21 +0000 [ffad2b44df]  gtjoseph <gjoseph@digium.com>
 
-         Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion
-         didn't cause an issue. A new change in 13.10 added endpoint ACL checking
-         shortly after endpoint identification. Because we are accessing a NULL
-         endpoint, this ACL check resulted in a crash.
+       * Revert "Revert "AGI: Only defer frames when in an interception routine.""
 
-         The fix here is to be sure to retrieve the artificial endpoint for all
-         request types. ACKs still do not generate unidentified request security
-         events.
+         This reverts commit 6be5d8de0da7e804544507f70382425af9a07b3f.
 
-         ASTERISK-26264 #close
-         Reported by nappsoft
+         Change-Id: I4b548137f52ae0686d8f09e21496b778d1c6a797
 
-         AST-2016-006
+2016-11-14 14:21 +0000 [2fefb6187f]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703
+       * Revert "Revert "Add API for channel frame deferral.""
 
-2016-09-06 11:46 +0000 [23d6ec7417]  Richard Mudgett <rmudgett@digium.com>
+         This reverts commit 6b5a7ced136b7178ae0b2ba39221eba1cd2e37c9.
 
-       * res_pjsip_messaging.c: Misc cleanups and fixes.
+         Change-Id: I61d1dbb2e69e1977f684b7dfc8e98211024e1cd1
 
-         * Eliminated RAII_VAR in get_outbound_endpoint().
+2016-11-14 12:16 +0000 [5e0c224043]  gtjoseph <gjoseph@digium.com>
 
-         * Simplify update_to() coding.  However, this function can only be a NoOp
-         because the To string can only be a URI and not a name-address formatted
-         string.
+       * cli:  Fix ast_el_read_char to work with libedit >= 3.1
 
-         * Simplify update_from() coding.  Also fixed a code path modifying the
-         from string when the caller could still want to use the original string.
+         Libedit 3.1 is not build with unicode on as a default and so the
+         prototype for the el_gets callback changed from expecting a char buffer
+         to accepting a wchar buffer.  If ast_el_read_char isn't changed,
+         the cli reads garbage from teh terminal.
 
-         * Fixed msg_data_create() incompletely removing the "pjsip:" to then add
-         back the "sip:" string if needed.  The code didn't handle the "pjsip:sip:"
-         case because it left the colon after pjsip in the string.
+         Added a configure test for (*el_rfunc_t)(EditLine *, wchar_t *) and
+         updated ast_el_read_char to use the HAVE_ define to detemrine whether
+         to use char or wchar.
 
-         Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db
+         ASTERISK-26592 #close
 
-2016-09-07 16:00 +0000 [5f19657710]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I9099b46f68e06d0202ff80e53022a2b68b08871a
 
-       * res_pjsip: Allow global headers to be overridden.
+2016-11-11 02:41 +0000 [3faca1d4ff]  Igor Goncharovskiy <igor.goncharovsky@gmail.com>
 
-         Currently when you add global headers from the dialplan both
-         the header in the dialplan and the globally configured header
-         are added to the resulting SIP INVITE. This change makes it
-         so the headers in the dialplan take precedence and are the
-         only ones added.
+       * Fix closing rtp ports after call finished in chan_unistim.
 
-         Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad
+         Fix ASTERISK-26565 by adding ast_rtp_instance_stop before
+         rtp instance destroy for chan_unistim. Also several fixes
+         for displayed text translation.
 
-2016-08-11 12:10 +0000 [206d4f57dc]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: If42a03eea09bd1633471406bdc829cf98bf6affc
 
-       * followme: initialize all config items on reload
+2016-09-23 17:54 +0000 [412d43fa21]  Richard Mudgett <rmudgett@digium.com>
 
-         Some configuration directives were not initialized on reload, and hence
-         were not reset to default if they were removed from followme.conf.
+       * res_pjsip.c: Rework endpt_send_request() req_wrapper code.
 
-         ASTERISK-26288 #close
+         * Don't hold the req_wrapper lock too long in endpt_send_request().  We
+         could block the PJSIP monitor thread if the timeout timer expires.
+         sip_get_tpselector_from_endpoint() does a sorcery access that could take
+         awhile accessing a database.  pjsip_endpt_send_request() might take awhile
+         if selecting a transport.
 
-         Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150
+         * Shorten the time that the req_wrapper lock is held in the callback
+         functions.
 
-2016-08-01 20:55 +0000 [117a7741c8]  gtjoseph <gjoseph@digium.com>
+         * Simplify endpt_send_request() req_wrapper->timeout code.
 
-       * build: Add download capability for external packages
+         * Removed some redundant req_wrapper->timeout_timer->id assignments.
 
-         The DPMA and g729a, silk, siren7 and siren14 codecs hosted at
-         http://downloads.digium.com/pub/telephony/ are now listed in the
-         "External" sections of the "Resource Modules" and "Codec Translators"
-         pages in menuselect.  Any that are selected will automatically be
-         downloaded and installed when "make install" is run.  Their LICENSE and
-         README (if avaialble) files will be installed to
-         ASTVARLIBDIR/documentation/thirdparty/<product_name>.
+         Change-Id: I3195e3a8e0207bb8e7f49060ad2742cf21a6e4c9
 
-         Example use with codecs:
+2016-09-21 15:10 +0000 [2e7fc56d3c]  Richard Mudgett <rmudgett@digium.com>
 
-         The codecs/codecs.xml file is a menuselect style xml file that lists
-         the codecs to be included.  Their support levels are 'external', which
-         triggers the download and install, and defaultenabled is no.  Also
-         because codec_g729a is actually in a directory named codec_g729 on the
-         download server, the newly added 'member_data' element is used to
-         override the default of the directory name being the package name.  You
-         can use the 'directory_name' attribute to keep default base URL
-         (http://downloads.digium.com/pub/telephony/) but use the new directory,
-         or you use the 'remote_url' attribute to specify a full URL to the
-         download directory.  In this case, you must still follow the same
-         subdirectory naming conventions as that used for the packages located
-         at 'http://downloads.digium.com/pub/telephony'.
+       * res_pjsip: Fix tdata leaks in off nominal paths.
 
-         A new configure option '--with-externals-cache' was added and like
-         '--with-sounds-cache' it allows the installer to cache tarballs so
-         they're not downloaded every time.
+         Change-Id: Ie83e06e88c2d60157775263b07e40b61718ac97b
 
-         To assist with the download and install process, each external package
-         now has a manifest.xml file that, among other things, contains a package
-         version and checksums for each file in the tarball.  The manifest is
-         saved to both the cache directory and ASTMODDIR and together with the
-         manifest.xml on the downloads site, tells the install scripts whether
-         a download and/or update is needed.
+2016-10-24 12:41 +0000 [da68b185b3]  Richard Mudgett <rmudgett@digium.com>
 
-         bash and xmlstarlet are required for downloader operation.  If they're
-         not installed, the external items in menuselect will be unavailable.
+       * res_pjsip_registrar_expire.c: Remove extra linefeed in debug message.
 
-         Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a
+         Change-Id: I1f9adb911f23376503396ec8867e8005b755eb94
 
-2016-09-06 02:41 +0000 [d04ae7d1d8]  Walter Doekes <walter+github@wjd.nu>
+2016-11-10 10:57 +0000 [b70eb07c53]  Joshua Colp <jcolp@digium.com>
 
-       * chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP.
+       * res_pjsip_sdp_rtp: Reject offer of required SRTP without res_srtp.
 
-         Certain SNOM phones send so-called "optional crypto" in their SDP body.
-         Regular SRTP setup looks like this:
+         When optimistic SRTP was on it was possible for us to still
+         set up a call without an audio stream if an offer was received
+         with required SRTP.
 
-             m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101
-             a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:...
+         This change makes it so this scenario will now fail with a 488
+         response.
 
-         SNOM-style "optional crypto" looks like this:
+         ASTERISK-26575
 
-             m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101
-             a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:...
+         Change-Id: I7d14187037681f48879bd20319ac79d0877318f3
 
-         A crypto line is supplied, but the m-line does not have SAVP.
+2016-11-10 08:33 +0000 [71dc333565]  Joshua Colp <jcolp@digium.com>
 
-         When res_srtp.so is *not* loaded, then chan_sip.so treats the optional
-         crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the
-         incoming call with the following message:
+       * app_queue: Add mention of 'ABANDON' variable to CHANGES.
 
-             WARNING: process_sdp: Failed to receive SDP offer/answer with
-             required SRTP crypto attributes for audio
+         ASTERISK-26558
 
-         For platforms that want to start providing SRTP this presents a
-         compatibility problem.
+         Change-Id: I1127010181e79c8ac291f72f036cb8e430dc7f7e
 
-         This changeset lets chan_sip handle the SDP as if no crypto-line was
-         supplied: i.e. accept the call as regular RTP, just like it did before
-         res_srtp was loaded.
+2016-11-10 07:41 +0000 [6b5a7ced13]  gtjoseph <gjoseph@digium.com>
 
-         Now you'll get this informative warning instead:
+       * Revert "Add API for channel frame deferral."
 
-             WARNING: Ignoring crypto attribute in SDP because RTP transport is
-             insecure
+         This reverts commit 9231a56cf3d6f5eca1bf2d37d827453400690773.
+         Multiple testsuite failures were detected after the fact.
 
-         ASTERISK-23989 #close
-         Reported by: Olle Johansson
+         Change-Id: I3bac8d7c3ddb69a4ddf6c5d6de0ffa5ff7ff3af7
 
-         Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2
+2016-11-10 07:41 +0000 [6be5d8de0d]  gtjoseph <gjoseph@digium.com>
 
-2016-09-03 16:04 +0000 [df3d0188e4]  Matt Jordan <mjordan@digium.com>
+       * Revert "AGI: Only defer frames when in an interception routine."
 
-       * apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option
+         This reverts commit 5c10091f3d1430c6fc04015226f8c3e3aa9d8282.
+         Multiple testsuite failures were detected after the fact.
 
-         In any scenario in which the callee is not connected to the caller, the
-         current code in app_dial will crash due to raising a Dial End Stasis
-         Message after the callee channel has been hung up. This patch corrects
-         the error by simply moving the explicit hangup of the callee (peer)
-         channel until after the dial end message.
+         Change-Id: I397a841acc17ae230c512449cd6bed89d2ef3b73
 
-         ASTERISK-25691 #close
+2016-11-10 07:41 +0000 [1df434e2b4]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d
+       * Revert "autoservice: Use frame deferral API"
 
-2016-09-03 16:02 +0000 [a64063cc97]  Matt Jordan <mjordan@digium.com>
+         This reverts commit 2e3a3545754749de21873bfdc6d1a40ec7d8893f.
+         Multiple testsuite failures were detected after the fact.
 
-       * apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5
+         Change-Id: Ia45fa4633fae74dca345b24bb6722737c63035de
 
-         If the callee selects option '5' using the Dial application's privacy
-         (P) option, the DIALSTATUS is erroneously set to ANSWER. This option
-         reflects the callee sending the caller to VoiceMail one time; the call
-         is definitely *not* ANSWERed in such a scenario. With this patch, the
-         DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that
-         is set when the 'send to VoiceMail every time' option is set.
+2016-11-10 07:40 +0000 [58c88cfbaa]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-25691
+       * Revert "channel: Use frame deferral API for safe sleep."
 
-         Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358
+         This reverts commit 44f7e252397fd87420b3374df26941d7436401b3.
+         Multiple testsuite failures were detected after the fact.
 
-2016-08-30 16:40 +0000 [03fc438f6e]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I56299087da22128a95f0c8f3955f740890d7ca65
 
-       * res_pjsip_registrar.c: Reduce stack usage in find_aor_name().
+2016-11-09 18:18 +0000 [a562fbe618]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09
+       * build:  Fix default values for some SANITIZER options
 
-2016-08-29 18:06 +0000 [b5e753227d]  Richard Mudgett <rmudgett@digium.com>
+         2 of the sanitizers didn't have default values so in systems that
+         don't support sanitizers menuselect would spit out warnings.  They
+         were harmless but confusing.  They've now been set to "0".
 
-       * pjsip_configuration.c: Ignore repeated identify by methods.
+         Change-Id: I08dc495e3b83f1feac3160b421f538c375fc5d58
 
-         Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838
+2016-11-06 06:04 +0000 [7fd5031c1c]  Sebastian Gutierrez <sgutierrez@integraccs.com>
 
-2016-08-30 17:26 +0000 [9b7501b6ad]  Richard Mudgett <rmudgett@digium.com>
+       * app_queue: new variable set when abandoned
 
-       * config_global.c: Comments and a default expression adjustment.
+         sets the variable ABANDONED to TRUE if the call was not answered.
 
-         Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3
+         ASTERISK-26558
 
-2016-08-31 15:14 +0000 [3314e1cec2]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I4729af9bff4eba436d8a776afd3374065d0036d3
 
-       * sip_to_pjsip.py: Map canreinvite as directmedia alias.
+2016-11-08 10:48 +0000 [e043d1a55c]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2
+       * res_pjsip_session: Do not call session supplements when it's too late.
 
-2016-08-31 15:37 +0000 [6372f40ba0]  Richard Mudgett <rmudgett@digium.com>
+         res_pjsip_sesssion was hooking into transaction and invite state
+         changes. One of the reasons for doing so was due to the
+         PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the
+         message sending process, and so we should call session supplements to
+         alter the outgoing message.
 
-       * sip_to_pjsip.py: Fix typo converting outboundproxy registration.
+         In reality, this event was meant to indicate that the message either
+         a) had already been sent, or
+         b) required a DNS lookup and would be sent when the DNS query
+         completed.
 
-         Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15
+         In case (a), this meant we were altering an already-sent
+         request/response for no reason. In case (b), this potentially meant we
+         could be trying to alter a request/response at the same time that the
+         DNS resolution completed. In this case, it meant we might be stomping on
+         memory being used by the thread actually sending the message. This
+         caused potential crashes and memory corruption.
 
-2016-08-31 15:13 +0000 [11eb1afd2d]  Richard Mudgett <rmudgett@digium.com>
+         This patch removes the calls to session supplements from the case where
+         the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to
+         alter the message at this point is too late, and it can cause nothing
+         but harm to try to do it. Because there were no longer any calls to the
+         handle_outgoing() function, it has been removed.
 
-       * sip_to_pjsip.py: Fix comment typo and tabs.
+         Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
 
-         Change-Id: If35174614545727817d329c60ba4456c028941b5
+2016-11-03 16:46 +0000 [44f7e25239]  Mark Michelson <mmichelson@digium.com>
 
-2016-08-31 15:56 +0000 [0f9b144c1a]  Richard Mudgett <rmudgett@digium.com>
+       * channel: Use frame deferral API for safe sleep.
 
-       * Sample configs: Eliminate false multiline comment block starts.
+         This is another case where manual frame deferral can be replaced with
+         centralized routines instead.
 
-         Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6
+         Change-Id: I42cdf205f8f29a7977e599751a57efbaac07c30e
 
-2016-09-02 11:36 +0000 [8d1c535bd6]  Richard Mudgett <rmudgett@digium.com>
+2016-11-03 16:46 +0000 [2e3a354575]  Mark Michelson <mmichelson@digium.com>
 
-       * format_cap.c: Fix CLI "core show channeltype Surrogate" crash.
+       * autoservice: Use frame deferral API
 
-         * Make ast_format_cap_get_names() NULL tolerant.
+         Rather than use manual frame deferral, just let the channel API do it
+         for us.
 
-         ASTERISK-26331 #close
-         Reported by: CGI.NET
+         ASTERISK-26343
 
-         Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3
+         Change-Id: I688386f36e765dbc07be863943a43f26bd5eac49
 
-2016-08-18 14:45 +0000 [9bca895469]  Alexei Gradinari <alex2grad@gmail.com>
+2016-11-03 16:42 +0000 [5c10091f3d]  Mark Michelson <mmichelson@digium.com>
 
-       * res_pjsip_session: segfault on already disconnected session
+       * AGI: Only defer frames when in an interception routine.
 
-         On heavy loaded system the TCP/TLS incoming calls could be
-         disconnected by pjproject while these calls are being
-         processed by asterisk which could use the session's memory pools.
-         If the session in the disconnected state then the session memory
-         pools were already freed, so we get segfault.
+         AGI recently was modified to defer important frames. This was because
+         when AGI was used in a connected line interception routine, the
+         resulting connected line frame would end up getting discarded by the
+         AGI.
 
-         This patch adds a lifetime control on an INVITE session to pjproject.
-         The lifetime of the session is manipulated by calling
-         pjsip_inv_add_ref/pjsip_inv_dec_ref.
-         This patch uses these functions to inform pjproject that the
-         session is in use.
+         However, this caused bad behavior in other cases. Specifically, during a
+         transfer, if someone attempted to manually set the Caller ID on a
+         channel in an AGI, the deferred connected line frame would end up
+         overwriting what had been manually set in the AGI.
 
-         This patch adds check if the session state is not disconnected
-         and also checks if the memory pool is not NULL.
+         Since the initial issue was specific to interception routines, this
+         change removes the manual frame deferral from AGI and instead uses the
+         new frame deferral API in interception routines.
 
-         This patch also places tasks 'session_end' and 'session_end_completion'
-         into session's serializer to avoid race condition.
+         ASTERISK-26343 #close
+         Reported by Morton Tryfoss
 
-         ASTERISK-26291 #close
+         Change-Id: Iab7d39436d0ee99bfe32ad55ef91e9bd88db4208
 
-         Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7
+2016-11-03 16:36 +0000 [9231a56cf3]  Mark Michelson <mmichelson@digium.com>
 
-2016-08-10 15:14 +0000 [63feffa126]  Mark Michelson <mmichelson@digium.com>
+       * Add API for channel frame deferral.
 
-       * ConfBridge: Make some announcements asynchronous.
+         There are several places in Asterisk that have duplicated logic
+         for deferring important frames until later.
 
-         Confbridge announcements tend to block a channel while they are being
-         played. In some circumstances, this is warranted since you want that
-         particular channel not to hear the announcement (Example: "John Doe has
-         entered the conference"). For others it makes less sense.
+         This commit adds a couple of API calls to facilitate this automatically.
 
-         This change first introduces methods for playing sounds asynchronously
-         into the conference. This is very similar to how synchronous sounds are
-         played, except the channel initiating the playback does not wait for the
-         sound to complete before moving on.
+         ast_channel_start_defer_frames(): Future reads of deferrable frames on
+         this channel will be deferred until later.
 
-         Asynchronous announcements are used for two circumstances:
-         * Sounds played for a user after they have left the bridge
-         * Sounds that play first to a single user and then the rest of the
-           conference (if the channel and conference use the same language)
+         ast_channel_stop_defer_frames(): Any frames that have been deferred get
+         requeued onto the channel.
 
-         ASTERISK-26289 #close
-         Reported by Mark Michelson
+         ASTERISK-26343
 
-         Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a
+         Change-Id: I3e1b87bc6796f222442fa6f7d1b6a4706fb33641
 
-2016-08-31 12:23 +0000 [a002a4d2db]  Michael Kuron <m.kuron@gmx.de>
+2016-11-03 07:42 +0000 [a9ac1f5de4]  Alexander Anikin <may213@yandex.ru>
 
-       * app_mp3: Use correct buffer size and the same sample rate as the channel
+       * chan_ooh323: Fixes to work right with Cisco devices
 
-         Previously, the buffer used for MP3 streamed from HTTP servers had a size of
-         1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1
-         minute. Only when the buffer is full does audio start to play.
-         For MP3 files streamed from a server, that is usually not a big deal as long as
-         the connection to the server is fast enough to supply that much data within a
-         second or two. For MP3 live streams however, it takes 1 minute to download 1
-         minute of audio, so without this change, app_mp3 wasn't really usable for MP3
-         live streams.
-         This commit changes the buffer size so that it covers 6 seconds of an MP3 file
-         streamed from a server and 0.5 seconds of an MP3 live stream. The latter is
-         identified by the use of a .m3u file extension.
+         Changed output packets queue processing algo to one read-one write
+         instead of all read-all send
 
-         app_mp3 so far only supported 8 kHz audio.
-         Now it always runs at the sample rate of the channel.
+         Remove h.245 tunneling parameter from ReleaseComplete packet
 
-         ASTERISK-26085 #close
+         ASTERISK-24400 #close
+         Reported by: Dmitry Melekhov
+         Tested by: Dmitry Melekhov
 
-         Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0
+         Change-Id: I0b31933b062a21011dbac9a82b8bcfe345f406f6
 
-2016-08-26 10:39 +0000 [308a65fe6c]  Alexei Gradinari <alex2grad@gmail.com>
+2016-11-03 13:10 +0000 [0ee249075a]  Alexander Anikin <may213@yandex.ru>
 
-       * res_pjsip: qualify/unqualify added/deleted realtime endpoints
+       * chan_ooh323: reset rrq count on gk registration
 
-         If the PJSIP endpoint's AOR with the permanent contact
-         was deleted from the realtime storage the res_pjsip module
-         continues trying to qualify this contact.
-         The error 'Unable to find an endpoint to qualify contact'
-         appeares every 'qualify_frequency' seconds.
-         This patch deletes this contact in this case.
+         reset registration attempts count on success registration on gatekeeper
 
-         The PJSIP endpoint's AOR with the permanent contact
-         is never qualified if it is added to realtime storage
-         after asterisk started.
-         This patch adds qualifying for the AOR's permanent contacts
-         on the first handling of this AOR.
+         Change-Id: I5f47351852e0ca76c9ac78421659600e0f106336
 
-         ASTERISK-26319 #close
+2016-11-06 03:46 +0000 [59c23e1768]  Michael Kuron <m.kuron@gmx.de>
 
-         Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe
+       * automon: restore mixing of the both channels after recording stops
 
-2016-08-17 02:51 +0000 [2fa168348e]  chris de rock <chris@derock.de>
+         This is a regression over Asterisk 11, introduced by
+         2dc8a060064f359a17f5ebcd515d85fe5203c019. Previously, recordings started via
+         the automon DTMF code would automatically be mixed together using sox because
+         app_monitor would be called with the m option. This commit restores this
+         behavior.
 
-       * app_macro: Consider '~~s~~' as a macro start extension.
+         Change-Id: Ibaf58684285c3f1b6ca3714524e6d638ae3b3759
 
-         As described in issue ASTERISK-26282 the AEL parser creates macros with
-         extension '~~s~~'.  app_macro searches only for extension 's' so the
-         created extension cannot be found.  with this patch app_macro searches for
-         both extensions and performs the right extension.
+2016-11-04 15:42 +0000 [e79acaeb75]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-26282 #close
+       * res_http_websocket: Increase the buffer size for non-LOW_MEMORY systems
 
-         Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb
+         Not surprisingly, using Respoke (and possibly other systems) it is
+         possible to blow past the 16k limit for a WebSocket packet size. This
+         patch bumps it up to 32k, which, at least for Respoke, is sufficient.
+         For now.
 
-2016-08-29 07:10 +0000 [27951792c4]  Etienne Lessard <elessard@proformatique.com>
+         Because 32k is laughable on a LOW_MEMORY system (as is 16k, for that
+         matter), this patch adds a LOW_MEMORY directive that sets the buffer to
+         8k for systems who have asked for their reduced memory availability to
+         be considered.
 
-       * pbx.c: Prevent infinite recursion in manager_show_dialplan_helper.
+         Change-Id: Id235902537091b58608196844dc4b045e383cd2e
 
-         Previously, if context A was including context B and context B was including
-         context A, i.e. if there was a circular dependency between contexts, then
-         calling manager_show_dialplan_helper could lead to an infinite recursion,
-         resulting in a crash.
+2016-11-04 15:40 +0000 [7a83196985]  Matt Jordan <mjordan@digium.com>
 
-         This commit applies the same solution as the one implemented in the
-         show_dialplan_helper function. The manager_show_dialplan_helper and
-         show_dialplan_helper functions contain lots of code in common, but the former
-         was missing the "infinite recursion avoidance" code.
+       * res_stasis: Set a video source mode on Stasis created bridges
 
-         ASTERISK-26226 #close
+         When a bridge is created via ARI (through res_stasis), no video source
+         mode is set by default. As a result, any endpoint sending video media
+         won't ever see any video reflected back to it.
 
-         Change-Id: I1aea85133c21787226f4f8442253a93000aa0897
+         This patch defaults a bridge to a 'follow the talker' video mode.
+         Further work can be done to add routes that allow for the video mode to
+         be controlled through the /bridges resource.
 
-2016-08-26 14:34 +0000 [fb82fdb013]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I7e9d530a5d7a97a4524a9ee4e468e1a6b3443866
 
-       * pjproject_bundled:  Disable srtp use by pjmedia
+2016-11-04 15:37 +0000 [e7dc536b7a]  Matt Jordan <mjordan@digium.com>
 
-         The reason for the disable is that while Asterisk works fine with older
-         libsrtp versions, newer versions of pjproject won't compile with them.
-         Debian 6 for instance, has libsrtp 1.4.4 which is older than what
-         pjproject is expecting.
+       * main/bridge_channel: Fix channel reference leak on video source
 
-         We don't use most of pjmedia but we DO use it for SDP negotiation.
-         Luckily disabling srtp in pjmedia doesn't interfere with it's ability
-         to negitiate a secure channel.  The proper crypto attributes are
-         negotiated in both directions.
+         When a channel is made the video source, the bridge holds a reference to
+         it. Whenever the video source changes, that reference is released.
+         However, a ref leak does occur if the channel leaves the bridge (such as
+         being hung up) while it is the video source, as the bridge never
+         releases the ref in such a case.
 
-         ASTERISK-26279 #close
+         This patch adds a line to the bridge_channel_internal_join routine such
+         that, when a channel finishes its time in the bridge, it notifies the
+         bridge via ast_bridge_remove_video_src that if it is a video source its
+         reference should be released.
 
-         Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2
+         ASTERISK-26555 #close
 
-2016-08-26 08:41 +0000 [847bd47ff0]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I3a2f5238a9d2fc49c591f0e65199d782ab0be76a
 
-       * channel: No hung-up on failing security requirements.
+2016-11-04 15:36 +0000 [7c824b955d]  Matt Jordan <mjordan@digium.com>
 
-         In your Diaplan, if you specify
-          same => n,Set(CHANNEL(secure_bridge_media)=1)
-          same => n,Set(CHANNEL(secure_bridge_signaling)=1)
-         only the SIP channel driver chan_sip supports this. All other channels drivers
-         like res_pjsip fail. In case of failure, the original sRTP source code released
-         the whole channel, even if not hung-up, yet. This change does not release the
-         channel but instead hangs-up the channel.
+       * main/bridge: Add some verbose logging for video source changes
 
-         ASTERISK-26306
+         It's actually quite useful to see the source of a video stream change.
+         This doesn't happen terribly often, even with talk detection - but when
+         it does, it's nice to know which channel is now providing your video
+         stream.
 
-         Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db
+         As a verbose 5 level message, it shouldn't be terribly spammy or costly
+         to have, and is 'lower level' then most other verbose messages that the
+         bridge system emits.
 
-2016-08-20 09:04 +0000 [b59d3b48d0]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26555
 
-       * sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations.
+         Change-Id: Ia1c20ecafa9670171fd38bddcf3beccae47fb15c
 
-         When using the migration script sip_to_pjsip.py, and your sip.conf is
-         configured with bindaddr=::, two transports are written to pjsip.conf, one for
-         0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4
-         and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface
-         like in chan_sip.
+2016-11-04 15:33 +0000 [fd6af2dee8]  Matt Jordan <mjordan@digium.com>
 
-         Furthermore, the script internal functions "build_host" and "split_hostport"
-         did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change
-         makes sure, even such addresses are parsed correctly.
+       * bridges/bridge_softmix: Remove SSRC changes on join/leave; update video source
 
-         ASTERISK-26309
+         WebRTC clients really, really want to know the SSRC of the media they're
+         getting. Changing the SSRC is generally not a good thing.
 
-         Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48
+         bridge_softmix, starting in Asterisk 12, started changing the SSRC of
+         parties as they joined or left the bridge. With most phones, this isn't
+         a problem: phones just play back the stream they're getting. With WebRTC
+         clients, however, the SSRC is tied to a media stream that may be
+         negotiated. When a new SSRC just shows up, the media can be dropped.
 
-2016-08-25 07:06 +0000 [f69f5cd3c4]  Joshua Colp <jcolp@digium.com>
+         As it turns out, the SSRC change shouldn't even be necessary. From the
+         perspective of the client, it's still talking to Asterisk with the same
+         media stream: why indicate that the far party has suddenly changed to a
+         different source of media?
 
-       * app_queue: Ensure member is removed from pending when hanging up.
+         This patch opts to just remove the SSRC changes. With this patch, video
+         clients that join/leave a softmix bridge actually get the video stream
+         instead of freaking out.
 
-         When dialing channels it is possible that they may not ever
-         leave the not in use state (Local channels in particular) by
-         the time we cancel them. If this occurs but we know they were
-         dialed we explicitly remove them from the pending members
-         container so that subsequent call attempts occur.
+         ASTERISK-26555
 
-         ASTERISK-26299 #close
+         Change-Id: I27fec098b32e7c8718b4b65f3fd5fa73527968bf
 
-         Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65
+2016-10-28 15:11 +0000 [bd4d7d8ad0]  Kevin Harwell <kharwell@digium.com>
 
-2016-08-04 20:11 +0000 [5cd583d7a2]  Richard Mudgett <rmudgett@digium.com>
+       * stasis_recording/stored: remove calls to deprecated readdir_r function.
 
-       * res_pjsip: Cache global config options.
+         The readdir_r function has been deprecated and should no longer be used. This
+         patch removes the readdir_r dependency (replaced it with readdir) and also moves
+         the directory search code to a more centralized spot (file.c)
 
-         We may check a global config option hundreds of times a second or more.
-         Asking sorcery for the global configuration from the config files backend
-         involves several allocations and container traversals.  Using realtime
-         without a memory cache is a lot worse because you have to lookup in the
-         realtime database each time to reconstitute the sorcery object.  With a
-         memory cache for realtime, there is about the same amount of overhead as
-         for config files.  Either way, it is still fairly expensive to access the
-         sorcery object that much.
+         Also removed a strict dependency on the dirent structure's d_type field as it
+         is not portable. The code now checks to see if the value is available. If so,
+         it tries to use it, but defaults back to using the stats function if necessary.
 
-         * Cache the global config options so we can access them faster.  You must
-         now always perform a res_pjsip reload to change the global options.
+         Lastly, for most implementations of readdir it *should* be thread-safe to make
+         concurrent calls to it as long as different directory streams are specified.
+         glibc falls into this category. However, since it is possible that there exist
+         some implementations that are not safe, locking has been added for those other
+         than glibc.
 
-         Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7
+         ASTERISK-26412
+         ASTERISK-26509 #close
 
-2016-08-23 11:02 +0000 [8b4b2500ee]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id8f54689b1e2873e82a09d0d0d2faf41964e80ba
 
-       * res_fax: Fix deadlock in ast_channel_get_t38_state().
+2016-11-04 10:57 +0000 [cb30963d22]  Kevin Harwell <kharwell@digium.com>
 
-         ast_channel_get_t38_state() calls ast_channel_queryoption() with
-         AST_OPTION_T38_STATE.  If the passed in channel is a local channel then a
-         deadlock can happen if a channel lock is held when called.
+       * Revert "chan_sip: Fix lastrtprx always updated"
 
-         * Made ast_channel_get_t38_state() callers not hold a channel lock before
-         calling.
+         This reverts commit 93332cb1d0eea18021ea6538237297e627d6e2fc.
 
-         * Update ast_channel_get_t38_state() doxygen to note that no channel locks
-         can be held when calling the function.
+         Unfortunately, the aforementioned commit caused a regression (incoming calls
+         would eventually disconnect). Thus it is being removed.
 
-         ASTERISK-26203 #close
-         Reported by: Etienne Lessard
+         ASTERISK-26523 #close
+         ASTERISK-25270
 
-         ASTERISK-24822 #close
-         Reported by: David Brillert
+         Change-Id: Ibf5586adc303073a8eac667a4cbfdb6be184a64d
 
-         ASTERISK-22732 #close
-         Reported by: Richard Mudgett
+2016-11-02 10:52 +0000 [3a1f9c5dab]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214
+       * res_stasis: Don't unsubscribe from a NULL bridge.
 
-2016-08-23 10:39 +0000 [e8d4f40022]  Richard Mudgett <rmudgett@digium.com>
+         A NULL bridge has special meaning in res_stasis for
+         unsubscribing. It means that a subscription to ALL
+         bridges should be removed. This should not be done
+         as part of the normal subscription management in
+         the res_stasis channel loop.
 
-       * res_fax: Fix deadlock setting FAXMODE channel variable.
+         ASTERISK-26468
 
-         ASTERISK-25980 added the FAXMODE channel variable to res_fax.c.
-         Unfortunately, it also introduced a deadlock potential because
-         set_channel_variables() which sets FAXMODE can be called during a
-         masquerade.  The ast_channel_get_t38_state() which gets the value used to
-         set FAXMODE cannot be called with the channel locked.  As a result, local
-         channels can deadlock because of how they must acquire the locks necessary
-         to operate.
+         Change-Id: I6d5bea8246dd13a22ef86b736aefbf2a39c15af0
 
-         The intent of FAXMODE is for dialplan to know how a fax was transferred
-         after the fax completes.  However, the previous patch sets FAXMODE to the
-         channel's current T.38 state AFTER the fax has completed and where T.38
-         may have already disconnected.
+2016-11-03 13:45 +0000 [eceab15f33]  Alexander Anikin <may213@yandex.ru>
 
-         * Set FAXMODE based upon T.38 negotiations exchanged either with the fax
-         applications or the fax framehooks.
+       * chan_ooh323: Fix infinite loop on read second part of H.225 packet
 
-         ASTERISK-26203
-         Reported by: Etienne Lessard
+         Fix logic on read second part of H.225 packet. There was infinite loop on
+         wrong connections due to read before poll.
 
-         ASTERISK-24822
-         Reported by: David Brillert
+         Change-Id: I42b4bf75c46e4a5c5df5c5ca1f0bd74b8944e7ff
 
-         ASTERISK-22732
-         Reported by: Richard Mudgett
+2016-11-03 11:55 +0000 [a9992da4aa]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Id525747254b64c1efe8b1b5973d52ff9719c2ae1
+       * pjproject_bundled:  Fix issue with libasteriskpj needing libresample
 
-2016-08-22 12:31 +0000 [35cf6c7702]  Richard Mudgett <rmudgett@digium.com>
+         libresample is only needed by pjproject if we're building pjsua, which
+         we only do if TEST_FRAMEWORK is selected.  It's required by pjsua to
+         process audio which is needed by some testsuite tests.  Unfortunately,
+         pjproject relies on a newer version of libresample than the version
+         that ships by most distros so we need to compile the version that's
+         bundled with pjproject.  Since we only need it for pjsua, we DON'T want
+         it's symbols exposed when we actually build asterisk.
 
-       * res_fax.c: Fix deadlock in fax_gateway_indicate_t38().
+         There was a problem however... TEST_FRAMEWORK is only known AFTER we've
+         already run ./configure on both asterisk and pjproject but pjproject's
+         ./configure needs to test it to know whether to set up to build
+         libresample or not.  The previous way of figuring this out was to
+         always tell ./configure "yes" but not actually build the library.  This
+         caused an issue where building libasteriskpj was being told to include
+         libresample but it wasn't actually there.
 
-         fax_gateway_indicate_t38() calls ast_indicate_data() which cannot be
-         called with any channel locks already held.  A deadlock can happen if the
-         function is operating on a local channel.
+         The solution is to still do a default pjproject configure during an
+         asterisk ./configure but if makeopts or menuselect.makeopts changes
+         subsequently, we now reconfigure pjproject, taking into account the
+         current state of TEST_FRAMEWORK.  Previously, if makeopts or
+         menuselect.makeopts changed, only a recompile of pjproject was done.
 
-         * Made fax_gateway_indicate_t38() unlock the channel before calling
-         ast_indicate_data() since fax_gateway_indicate_t38() is always called with
-         the channel locked.
+         Change-Id: I9b5d84c61384a3ae07fe30e85c49698378cc4685
 
-         * Made fax_gateway_indicate_t38() return void since nothing cared about
-         its return value.
+2016-11-01 19:48 +0000 [714412f6c4]  Sebastian Gutierrez <sgutierrez@integraccs.com>
 
-         ASTERISK-26203
-         Reported by: Etienne Lessard
+       * chan_sip: add missing account code
 
-         ASTERISK-24822
-         Reported by: David Brillert
+         Added missing account to AMI event of sip show peers
 
-         ASTERISK-22732
-         Reported by: Richard Mudgett
+         ASTERISK-26176 #close
 
-         Change-Id: I701ff2d26c5fc23e0d5a48a3fd98759a9fd09407
+         Change-Id: Ieb6c2c80a838a1b59c82103eba4c63ba238dc482
 
-2016-08-23 11:16 +0000 [50b2aa506f]  Richard Mudgett <rmudgett@digium.com>
+2016-09-13 04:08 +0000 [0cf1778eed]  Alexander Traud <pabstraud@compuserve.com>
 
-       * res_fax.c: Add chan locked precondition comments.
+       * rtp_engine: Allow more than 32 dynamic payload types.
 
-         Change-Id: Ic10ae434536bbf7fb7055d6ab36cc50b8748a4e7
+         The dynamic range (96-127) allows 32 RTP Payload Types. RFC 3551 section 3
+         allows to reassign other ranges. Consequently, when the dynamic range is
+         exhausted, you can go for "rtp_pt_dynamic = 35" (or 0) in asterisk.conf. This
+         enables the range 35-63 (or 0-63) giving room for another 29 (or 64) payload
+         types.
 
-2016-08-23 10:42 +0000 [038cbc0215]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26311 #close
 
-       * ast_framehook_detach() must be called with the channel locked.
+         Change-Id: I7bc96ab764bc30098a178b841cbf7146f9d64964
+         (cherry picked from commit 9ac53877f688c06acaa7c377f15da8770e4ee88b)
 
-         The framehook container could become corrupted if the channel lock is not
-         held before calling.
+2016-11-02 09:15 +0000 [d971647949]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: If0a1c7ba0484ed3a191106a7516526b905952584
+       * app_dial: Fix incorrect device state when channel is picked up.
 
-2016-08-22 15:01 +0000 [88e9d05ef7]  Richard Mudgett <rmudgett@digium.com>
+         Given the scenario where multiple channels are dialed using Dial()
+         but the caller is picked up using PickupChan() all outgoing channels
+         except the channel specified to PickupChan() would be marked
+         as ringing until the call had been hung up.
 
-       * ast_framehook_attach() must be called with the channel locked.
+         When using the PickupChan application the channel executing the
+         application is swapped into place of another channel. As part
+         of this process the channel is answered. The Dial application
+         has explicit logic which checks if the channel is answered,
+         cancels all other outgoing channels, and bridges. This logic is
+         different than the normal logic that is executed when an outgoing
+         channel is answered. This different logic failed to publish dial
+         events stating that the other outgoing channels had been canceled.
+         As a result references to the outgoing channels were held onto by
+         the dial masquerade process until the call had been ended and
+         the channels had gone away. This would result in the channels
+         appearing in the "core show channels" list despite not being present
+         anymore and would also result in incorrect device state.
 
-         The framehook container could become corrupted if the channel lock is not
-         held before calling.
+         This change makes it so that this logic also publishes
+         dial events stating that the other outgoing channels have been
+         canceled.
 
-         Change-Id: I1a6b957a1f7b899eb29a186915f8cccab886a438
+         ASTERISK-26549
 
-2016-08-24 14:42 +0000 [c9e83f6d0b]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f
 
-       * res_rtp_multicast:  Fix SEGV in ast_multicast_rtp_create_options
+2016-11-01 13:13 +0000 [afecb2cfc0]  Richard Mudgett <rmudgett@digium.com>
 
-         ast_multicast_rtp_create_options now checks for NULL or empty options
+       * bundled pjproject: Fix DNS write to freed memory.
 
-         Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362
+         PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS
+         patch.
 
-2016-08-19 18:19 +0000 [cb8fd610e2]  Corey Farrell <git@cfware.com>
+         The patch below fixes a write to freed memory under cartain DNS lookup
+         conditions.
 
-       * Fix checks for allocation debugging.
+         0006-r5477-svn-backport-Fix-DNS-write-on-freed-memory.patch
 
-         MALLOC_DEBUG should not be used to check if debugging is actually
-         enabled, __AST_DEBUG_MALLOC should be used instead.  MALLOC_DEBUG only
-         indicates that debugging is requested, __AST_DEBUG_MALLOC indicates it
-         is active.
+         ASTERISK-26516
+         Reported by:  Richard Mudgett
 
-         Change-Id: I3ce9cdb6ec91b74ee1302941328462231be1ea53
+         Change-Id: Ifdfae9ecf1e41b53080f33aab44ce1a220f349c5
 
-2016-08-10 15:14 +0000 [b8b5d52b5e]  Mark Michelson <mmichelson@digium.com>
+2016-11-01 06:56 +0000 [5f188bb7a8]  Joshua Colp <jcolp@digium.com>
 
-       * ConfBridge: Rework announcer channel methodology
+       * res_pjsip_sdp_rtp: Limit number of formats to defined maximum.
 
-         NOTE: This patch was submitted earlier and reverted because of a failing
-         test. The test has been patched so that it adjusts for the changes here,
-         so this is being resubmitted for review.
+         The res_pjsip_sdp_rtp module did not restrict the number of
+         formats added to a media stream in the SDP to the defined
+         limit. If allow=all was used with additional loaded codecs this
+         could result in the next media stream being overwritten some.
 
-         One feature that confbridge has is the ability to play sounds to all
-         participants in the conference. Prior to this commit, the algorithm for
-         this was as follows:
+         This change restricts the module to limit it to the defined
+         maximum and also increases the maximum in our bundled pjproject.
 
-         * Grab the playback lock
-         * Push the conference announcer channel into the bridge
-         * Play back the sound
-         * Pull the conference announcer channel from the bridge
-         * Release the playback lock
+         ASTERISK-26541 #close
 
-         The issue here is that the act of adding the playback channel to the
-         bridge and removing it for each announcement is expensive. Amongst the
-         expenses:
+         Change-Id: I0dc5f59d3891246cafa2f3df5ec406f088559ee8
 
-         * The announcer channel is imparted into the bridge, meaning a new
-           thread is spun up for each playback.
-         * When the announcer is added or removed from the bridge, it results
-           in the BRIDGEPEER channel variable being set on all channels in the
-           bridge. This requires keeping the bridge locked and locking each
-           individual channel in order to set it.
-         * There's also just the general overhead of adding the channel and
-           removing it from the bridge. The bridge potentially has to reconfigure
-           every single time
+2016-11-01 04:18 +0000 [94c9496ed5]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         With this commit, the paradigm for playing back announcements has
-         shifted.
+       * netsock.c: fix includes for HURD
 
-         * The announcer channel is now added to the bridge when the conference
-           is allocated, and it is hung up when the conference is destroyed.
-         * A taskprocessor is used to queue playbacks onto the announcer channel.
-           This keeps the behavior from before where playbacks do not overlap.
-         * The announcer channel is no longer placed into the bridge as
-           departable. Since we are not constantly removing the channel from
-           the bridge, it is safe to add the channel using an independent thread
-           and simply hang the channel up when it is time for the conference to
-           be destroyed.
+         ASTERISK-25070
 
-         The use of the taskprocessor for playbacks opens up the interesting
-         possibility of having asynchronous announcements played. In this commit,
-         however, the behavior is still exactly the same as it previously was.
+         Change-Id: I43bf94d2d36d3d8a8d0df40cd6c027d65a462814
 
-         ASTERISK-26289
-         Reported by Mark Michelson
+2016-11-01 04:00 +0000 [c1c9487375]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0
+       * define PATH_MAX for HURD
 
-2016-08-23 05:54 +0000 [d5d7cbfcfb]  Joshua Colp <jcolp@digium.com>
+         PATH_MAX is not guaranteed to be defined. In parctice, all but the HURD
+         define it to a constant. It is indeed not safe to assume there won't be
+         longer paths and Asterisk generally does err safely on such cases.
 
-       * Revert "ConfBridge: Rework announcer channel methodology"
+         So even for HURD we'll just pretend PATH_MAX is 4096.
 
-         This reverts commit 0cdeb2bfb0f4203384c08858951af3c77be8b9b3.
+         ASTERISK-25070 #close
 
-         Change-Id: I18ba73b6d4dc0b994f4ffb01ae0b6cfad36ac636
+         Change-Id: I53d10ba18c34c132bcb640a5fd8e0da1d9b22db3
 
-2016-08-22 17:08 +0000 [c16ef02318]  Mark Michelson <mmichelson@digium.com>
+2016-10-31 17:35 +0000 [50fa868ab8]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip: Default endpoints to the "offline" status.
+       * codecs.conf.sample: Add sample and option descriptions for codec_opus
 
-         A recent change attempted to optimize startup by not updating contact
-         status. Instead, code responsible for qualifying contacts updates the
-         status as it becomes known. The code even accounts for contacts/AORs
-         that are not set to be qualified.
+         codecs.conf.sample was missing codec opus's configuration options, descriptions,
+         and examples. This patch adds the configuration options and examples to
+         codecs.conf.sample that can be used with codec_opus.
 
-         The problem, though, is when there are no contacts associated with an
-         endpoint. A common case is when an endpoint is set to register its
-         contacts but has not done so yet. In this case, prior to registration,
-         the endpoint's device state will appear to be "not in use" and hints
-         associated with that device will appear to be "idle". In actuality, the
-         device state and hint should both appear as "unavailable". The reason
-         for the failure is that the optimization change made all persistent
-         endpoint states set to "unknown".
+         ASTERISK-26538 #close
 
-         The fix here is to change the hard-coded "unknown" to be "offline"
-         instead. The default state will be offline until the qualifying code
-         determines that the contact is actually online. This way, if there are
-         no contacts at all, then the state stays as offline, and device state
-         and hints appear correctly.
+         Change-Id: I1d89bb5e01d3e3b5bd78951b8dd0ff077a83dc8b
 
-         ASTERISK-26269 #close
-         Reported by nappsoft
+2016-11-01 08:32 +0000 [b3f10b7b94]  Grachev Sergey <grachev@mcn.ru>
 
-         Change-Id: Ie99b84169393983453076f5e9c0d35ff313a456a
+       * chan_sip: Incorrect display option Outbound reg. retry 403
 
-2016-08-20 14:51 +0000 [e54dcf4fd5]  David M. Lee <dlee@respoke.io>
+         If in sip.conf (general section) set option register_retry_403=no,
+         the command "sip show settings" return value:
+         Outbound reg. retry 403:0
+         If in sip.conf (general section) set option register_retry_403=yes,
+         the command "sip show settings" return value:
+         Outbound reg. retry 403:-1
 
-       * res_odbc_transaction: add dep on generic_odbc
+         * In static char "sip show settings" for "Outbound.reg. retry 403"
+         option use AST_CLI_YESNO
 
-         When res_odbc_transaction depended on res_odbc, it got the generic_odbc
-         headers and libs implicitly. Now that it no longer depends on res_odbc,
-         its dependency on generic_odbc must be explicit.
+         ASTERISK-26476 #close
 
-         Change-Id: I9db88f7af7388437f49903d3008ba8d4890d5911
+         Change-Id: I3c14272f05f1067bd2aeaa8b3ef9cf8fcb12dcf9
 
-2016-08-20 11:18 +0000 [be38c95def]  Alexander Traud <pabstraud@compuserve.com>
+2016-10-20 07:27 +0000 [29692d4aa4]  Matt Jordan <mjordan@digium.com>
 
-       * pjproject_bundled: Allow IPv4/IPv6 (Dual Stack) configurations.
+       * res/stasis: Add CLI commands for displaying/debugging ARI apps
 
-         PJProject supports a lot of platforms even Windows, some with different defaults
-         when it comes to IPv6. In many Linux platforms like Ubuntu 16.04 LTS,
-         "/proc/sys/net/ipv6/bindv6only" is set to 0 (false). Different than in Windows.
+         This patch adds three new CLI commands:
+          - ari show apps: list the registered ARI applications
+          - ari show app: show detailed information about an ARI application
+          - ari set debug: dump events being sent to an ARI application
 
-         Because of this, if configured with just an IPv6 address/transport, PJProject
-         listens to both IPv4 and IPv6. However, this is not supported by the PJProject
-         team. As consequence, you end-up with IPv4-mapped IPv6 addresses in SDP,
-         incompatible with IPv4-only clients. Technically, you end-up with an IPv6-only
-         server which accepts incoming connections on IPv4.
+         Note that while these CLI commands live in the res_stasis module, we use
+         the 'ari' family for these commands. This was done as most users of
+         Asterisk aren't aware of the semantic differences between ARI and
+         res_stasis, and some 'ari' CLI commands already exist.
 
-         If you try to configure two transports, one with IPv4 and one with IPv6 on the
-         same interface, as expected by the PJProject team, the IPv4 transport is not
-         able to bind because the IPv6 transport listens to both already.
+         ASTERISK-26488 #close
 
-         One solution would be to change "/proc/sys/net/ipv6/bindv6only" system-wide.
-         Then, you are able to configure two transports, one for each IP version on the
-         same interface. That way, you get a server which works with IPv4 clients and
-         IPv6 clients at the same time over the same interface.
+         Change-Id: I51ad6ff0cabee0d69db06858c13f18b1c513c9f5
 
-         Here, this change sets this parameter directly within PJProject to match the
-         expectations of the PJProject team in any case. This allows IPv4/IPv6 Dual Stack
-         servers out of the box like in chan_sip. This change was accepted by the
-         PJProject team as <http://trac.pjsip.org/repos/changeset/5403> and is expected
-         to arrive in the next version, PJProject 2.6.0. Until then, this change is
-         incorporated in the bundled PJProject of Asterisk.
+2016-10-31 16:12 +0000 [a36a7d0cf4]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26309
+       * pjproject_bundled:  Fix compile of pjsua so it handles audio
 
-         Change-Id: I3335d8718f79f4b2feae91b5b005a3ce684a63ae
+         In order for pjsua and its python binding to actually negotiate
+         audio for the testsuite tests, it needs g711 and resample.  The
+         pj* libraries themselves do not.  Unfortunately, pjproject relies
+         on a brand new libresample that most distros don't ship so we need
+         to use the libresample already bundled with pjproject.  Only the pjsua
+         executable and the _pjsua.so python library are linked with it so it
+         shouldn't interfere with asterisk itself.
 
-2016-08-10 15:14 +0000 [0cdeb2bfb0]  Mark Michelson <mmichelson@digium.com>
+         Also it was pointed out that apply_patches couldn't handle multiple
+         patches that depended on each other during the dry-run, so the
+         dry-run was removed.
 
-       * ConfBridge: Rework announcer channel methodology
+         Change-Id: I24f397462b486dcdde0dcafe40e6c55a6593f098
 
-         One feature that confbridge has is the ability to play sounds to all
-         participants in the conference. Prior to this commit, the algorithm for
-         this was as follows:
+2016-10-31 13:46 +0000 [42bd70b29f]  Etienne Lessard <elessard@proformatique.com>
 
-         * Grab the playback lock
-         * Push the conference announcer channel into the bridge
-         * Play back the sound
-         * Pull the conference announcer channel from the bridge
-         * Release the playback lock
+       * manager: Add documentation for NewConnectedLine event.
 
-         The issue here is that the act of adding the playback channel to the
-         bridge and removing it for each announcement is expensive. Amongst the
-         expenses:
+         The NewConnectedLine event has been added by commit fe7671f, but the
+         documentation was missing.
 
-         * The announcer channel is imparted into the bridge, meaning a new
-           thread is spun up for each playback.
-         * When the announcer is added or removed from the bridge, it results
-           in the BRIDGEPEER channel variable being set on all channels in the
-           bridge. This requires keeping the bridge locked and locking each
-           individual channel in order to set it.
-         * There's also just the general overhead of adding the channel and
-           removing it from the bridge. The bridge potentially has to reconfigure
-           every single time
+         ASTERISK-26537 #close
 
-         With this commit, the paradigm for playing back announcements has
-         shifted.
+         Change-Id: I7fc331f18caa28492da9303e576f70884ca8c9e6
 
-         * The announcer channel is now added to the bridge when the conference
-           is allocated, and it is hung up when the conference is destroyed.
-         * A taskprocessor is used to queue playbacks onto the announcer channel.
-           This keeps the behavior from before where playbacks do not overlap.
-         * The announcer channel is no longer placed into the bridge as
-           departable. Since we are not constantly removing the channel from
-           the bridge, it is safe to add the channel using an independent thread
-           and simply hang the channel up when it is time for the conference to
-           be destroyed.
+2016-10-30 13:33 +0000 [30b1bc77d2]  Corey Farrell <git@cfware.com>
 
-         The use of the taskprocessor for playbacks opens up the interesting
-         possibility of having asynchronous announcements played. In this commit,
-         however, the behavior is still exactly the same as it previously was.
+       * vector: Prevent NULL argument to memcpy.
 
-         ASTERISK-26289
-         Reported by Mark Michelson
+         Headers declare that memcpy does not accept NULL argument for the first
+         two parameters.  Add a conditional block to prevent memcpy and ast_free
+         from running on vectors with NULL element array.
 
-         Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5
+         ASTERISK-26526 #close
 
-2016-08-19 10:21 +0000 [b494b9f88c]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I988a476bb5fcfcbd3f6d6c6b3e7769e4f9629b71
 
-       * compilation failed with -Werror=maybe-uninitialized
+2016-10-29 10:31 +0000 [b96f18560b]  Corey Farrell <git@cfware.com>
 
-         The compilation failed for devmode
-         --enable DONT_OPTIMIZE
-         --enable BETTER_BACKTRACES
-         --enable DO_CRASH
-         --enable TEST_FRAMEWORK
+       * astobj2: Declare private variable data_size for AO2_DEBUG only.
 
-         res_pjsip/pjsip_configuration.c: In function dtls_handler:
-         res_pjsip/pjsip_configuration.c:974:20: error:
-         back may be used uninitialized in this function [-Werror=maybe-uninitialized]
-         int size = strlen(front);
-                    ^
-         cc1: all warnings being treated as errors
+         Every ao2 object contains storage for a private variable data_size,
+         though the value is never read if AO2_DEBUG is disabled.  This change
+         makes the variable conditional, reducing memory usage.
 
-         Change-Id: I7f082ead0312792a577ec7c73015ba64dabca580
+         ASTERISK-26524 #close
 
-2016-08-19 03:59 +0000 [a628009eb9]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: If859929e507676ebc58b0f84247a4231e11da07f
 
-       * sip_to_pjsip: Add cert_file.
+2016-10-28 16:59 +0000 [6b1c55dc9b]  gtjoseph <gjoseph@digium.com>
 
-         When using the migration script sip_to_pjsip.py, cert_file was not migrated to
-         pjsip.conf. A previous change regarding this contained a copy/paste error.
+       * pjproject_bundled:  Fix issue where "/version.mak" wasn't found
 
-         ASTERISK-22374
+         main/Makefile includes third-party/pjproject/build.mak but
+         doesn't set PJDIR beforehand so "include $(PJDIR)/version.mak"
+         evaluates to "/version.mak".  Fix is to set PJDIR in main/Makefile
+         before the include.
 
-         Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b
+         Change-Id: I0f7c67d60209049056fe9c4b041bf0463aa95604
 
-2016-08-18 09:21 +0000 [b1fe070d0b]  Alexander Traud <pabstraud@compuserve.com>
+2016-10-28 14:55 +0000 [d7f457e4c1]  Richard Mudgett <rmudgett@digium.com>
 
-       * sip.conf: tlsclientmethod is using sslv23 as default.
+       * bundled pjproject: Crashes while resolving DNS names.
 
-         When 'tlsclientmethod' is not specified in sip.conf, chan_sip uses the OpenSSL
-         SSLv23_method. This was documented incorrectly in the file sip.conf.sample.
+         PJPROJECT 2.5.5 introduced a race condition with the -r5349 IPv6 DNS
+         patch.
 
-         SSLv23_method got its name in the 90s. Today, with OpenSSL 1.0.2, this method
-         enables (just) the secure TLSv1.0 and TLSv1.2. Or stated differently, that
-         function should have been called 'secure_method' or 'automatic_method' back in
-         the 90s.
+         The patches below fix the DNS lookup race condition crash caused by
+         attempting to send the same message twice for the single DNS lookup.
 
-         Consequently please, specify 'tlsclientmethod=tlsv1' in your sip.conf only if
-         you face a server which has problems like not falling back to TLSv1.0
-         automatically.
+         0006-r5471-svn-backport-Various-fixes-for-DNS-IPv6.patch
+         0006-r5473-svn-backport-Fix-pending-query.patch
 
-         ASTERISK-24425
+         The patch below removes a cached DNS response from the hash table when
+         another thread is referencing the old entry.  The table still contained
+         the entry when it was destroyed which can result in inexplicable crashes.
 
-         Change-Id: I502ce6146b4504cadfd3973af8d6ec3994f54fa3
+         0006-r5475-svn-backport-Remove-DNS-cache-entry.patch
 
-2016-08-18 17:16 +0000 [ff2378c735]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-26344 #close
+         Reported by: Ian Gilmour
 
-       * rest-api: Swagger scripts were not replacing format variable in file brief
+         ASTERISK-26387 #close
+         Reported by: Harley Peters
 
-         Given resource paths did not have 'json' substituted in for the '{format}'. For
-         some auto generated documentation/comment strings it resulted in something like
-         the following:
+         Change-Id: I17fde80359e66f65a91341ceca58d914d0f61cc4
 
-         "... REST handler for /api-docs/sounds.{format}"
+2016-10-28 09:50 +0000 [87903a6848]  Rusty Newton <rnewton@digium.com>
 
-         This patch makes sure the resource api's path is properly substituted.
+       * SAC documentation: don't specify transports for endpoints and registrations
 
-         ASTERISK-25472 #close
+         Removing explicit transport definition for endpoints and registrations. It
+         isn't necessary and isn't generally advised.
 
-         Change-Id: Ie3e950a35db4043e284019d6c9061f3b03922e23
+         ASTERISK-26514 #close
 
-2016-08-16 15:57 +0000 [43f400ef95]  Jason Parker (license 4993)
+         Change-Id: Ifdec5e631962438a4683600968dfa4bfd15909fb
 
-       * res_format_attr_g729: Add annexb=no format parameter to SDPs
+2016-10-27 21:49 +0000 [f373de3020]  Corey Farrell <git@cfware.com>
 
-         Historically, Asterisk has always specified annexb=no for the g729 format.
-         However, when using res_pjsip no format attribute was specified. This patch
-         makes it so the SDP now contains a format attribute line with annexb=no.
+       * Fix shutdown crash caused by modules being left open.
 
-         Note, that this means only g729a is negotiated. Even for pass through support.
-         According to rfc7261 the type of annex used (a or b) is dependent upon the
-         answerer. However, Asterisk being a back to back user agent makes this tricky
-         to support at this time, thus we only allow annex 'a' for now.
+         It is only safe to run ast_register_cleanup callbacks when all modules
+         have been unloaded.  Previously these callbacks were run during graceful
+         shutdown, making it possible to crash during shutdown.
 
-         ASTERISK-26228 #close
-         patches:
-           res_format_attr_g729.c submitted by Jason Parker (license 4993)
+         ASTERISK-26513 #close
 
-         Change-Id: I76bc20cc0a01af01536e9915afef319c269c22d0
+         Change-Id: Ibfa635bb688d1227ec54aa211d90d6bd45052e21
 
-2016-08-18 15:15 +0000 [4c1ae07d51]  gtjoseph <gjoseph@digium.com>
+2016-10-26 18:48 +0000 [61a5c3460e]  gtjoseph <gjoseph@digium.com>
 
-       * res_odbc:  Correct the dependency relationship with res_odbc_transaction
+       * pjproject_bundled:  Remove usage of tar's --strip-components option
 
-         The MODULEINFO dependencies between these 2 modules was reversed.
-         res_odbc should depend on res_odbc_transaction, not the other way
-         around.
+         Older versions of tar don't support the --strip-components option so
+         instead of doing 'tar --strip-components=1 -C source', we now just
+         untar to the tarball's root directory (pjproject-<version>) and
+         rename that directory to 'source'.
 
-         ASTERISK-25984 #close
+         Also fixed an issue where the pjproject source directory is a hard
+         coded absolute pathname.
 
-         Change-Id: Ifcfbb49c0b51cf6640a5446d47cd6c48caf1331f
+         ASTERISK-26510 #close
+         ASTERISK-22480 #close
 
-2016-08-18 12:04 +0000 [cab6975b02]  Kevin Harwell <kharwell@digium.com>
+         Change-Id: I9ec92952507a91ff4e4d01e0149e09fd8e8f32b0
 
-       * sip_to_pjsip: Set correct tls transport method
+2016-10-27 08:07 +0000 [675c71ae8c]  Joshua Colp <jcolp@digium.com>
 
-         A recent update had a copy/paste error where the unused variable 'val' was
-         being passed to the set_value function instead of the 'method' value itself.
+       * res_pjsip_caller_id: Fix crash on session timers UPDATE on inbound calls.
 
-         This patch passes in the right variable.
+         The res_pjsip_caller_id module wrongly assumed that a
+         saved From header would always exist on sessions. This
+         is true until an inbound call is received and a session
+         timer causes an UPDATE to be sent. In this case there will
+         be no saved From header and a crash will occur. This change
+         makes it fall back to the From header of the outgoing request
+         if no saved From header is present.
 
-         ASTERISK-22374
+         ASTERISK-26307 #close
 
-         Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06
+         Change-Id: Iccc3bc8d243b5ede9b81abf960292930c908d4fa
 
-2016-08-18 08:19 +0000 [2381ddde63]  Alexander Traud <pabstraud@compuserve.com>
+2016-10-26 07:51 +0000 [14496ce1e5]  Joshua Colp <jcolp@digium.com>
 
-       * sip_to_pjsip: Map the TLS method correctly.
+       * app_voicemail: Clear voice mailbox in MailboxExists and MAILBOX_EXISTS.
 
-         When using the migration script sip_to_pjsip.py and tlsclientmethod is not set
-         in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to
-         overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is
-         offering/using not just TLSv1.0 but TLSv1.2 as well.
+         When executing the MailboxExists dialplan application and
+         MAILBOX_EXISTS dialplan function the passed in temporary voice
+         mailbox was not cleared, causing it to try to free garbage.
 
-         ASTERISK-22374
+         ASTERISK-26503 #close
 
-         Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f
+         Change-Id: Ie21ccfa1b80b9c59318e596f6b8e17da2b5a7cb3
 
-2016-08-18 08:17 +0000 [6500f5e138]  Alexander Traud <pabstraud@compuserve.com>
+2016-10-23 07:38 +0000 [e0bc17edff]  Joshua Colp <jcolp@digium.com>
 
-       * sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent.
+       * pjsip: Fix a few media bugs with reinvites and asymmetric payloads.
 
-         When using the migration script sip_to_pjsip.py, no section of type=system or
-         type=general were created. Therefore the keys compactheaders, timerb, timert1,
-         and useragent were not migrated to pjsip.conf.
+         When channel format changes occurred as a result of an RTP
+         re-negotiation the bridge was not informed this had happened.
+         As a result the bridge technology was not re-evaluated and the
+         channel may have been in a bridge technology that was incompatible
+         with its formats. The bridge is now unbridged and the technology
+         re-evaluated when this occurs.
 
-         ASTERISK-22374
+         The chan_pjsip module also allowed asymmetric codecs for sending
+         and receiving. This did not work with all devices and caused one
+         way audio problems. The default has been changed to NOT do this
+         but to match the sending codec to the receiving codec. For users
+         who want asymmetric codecs an option has been added, asymmetric_rtp_codec,
+         which will return chan_pjsip to the previous behavior.
 
-         Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1
+         The codecs returned by the chan_pjsip module when queried by
+         the bridge_native_rtp module were also not reflective of the
+         actual negotiated codecs. The nativeformats are now returned as
+         they reflect the actual negotiated codecs.
 
-2016-08-18 08:16 +0000 [21e9c69e56]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26423 #close
 
-       * sip_to_pjsip: Map (session-)timers correctly.
+         Change-Id: I6ec88c6e3912f52c334f1a26983ccb8f267020dc
 
-         When using the migration script sip_to_pjsip.py, session-timers=accept and
-         session-timers=refuse were mapped to wrong values.
+2016-10-26 06:32 +0000 [f534f67f52]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-22374
+       * res_pjsip_sdp_rtp: Fix address family of explicit media_address.
 
-         Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092
+         When an explicit media_address is provided the address family
+         in the SDP needs to be set to reflect it.
 
-2016-08-18 08:15 +0000 [c9a97398f7]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26309
 
-       * sip_to_pjsip: Write username even without authname.
+         Change-Id: Ib9350cc91c120eb2f96f0623d3907d12af67eb79
 
-         When using the migration script sip_to_pjsip.py, now the (mandatory) username is
-         written to pjsip.conf, even if there was no (optional) authname in the register
-         string in sip.conf.
+2016-10-25 11:20 +0000 [3a2092b722]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-22374
+       * test_astobj2_thrash:  Fix multithreaded issues
 
-         Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f
+         The test uses 4 threads to grow, count, lookup and shrink 15K objects
+         in a container.  If there's only 1 execution engine available, the test
+         will complete in <50ms.  If each threads gets its own execution engine,
+         the test may timeout after 60 seconds because the count thread does a
+         locked ao2_callback on the whole container in a tight loop with only
+         a sched_yield to give up time.  The lock contention makes the test
+         execution times wildly variable and mostly timeout.  2 execution
+         engines are OK, 3 results in about 33% failure rate and >=4 causes
+         a 80% failure rate.
 
-2016-08-18 08:14 +0000 [60275359bc]  Alexander Traud <pabstraud@compuserve.com>
+         To fix, the sched_yield was changed to a usleep(500).
 
-       * sip_to_pjsip: Parse register even with transport.
+         Also, the number of buckets specified for the container was an even
+         number so that was changed to the next prime number greater than
+         (MAX_HASH_ENTRIES / 100).  That's 151 currently.
 
-         When using the migration script sip_to_pjsip.py and the register string
-         started with a transport in sip.conf - like tls://... - register was not parsed
-         correctly and therefore not migrated correctly to pjsip.conf.
+         Change-Id: I50cd2344161ea61bfe4b96d2a29a6ccf88385c77
 
-         ASTERISK-22374
+2016-10-24 14:13 +0000 [640203802e]  Pascal Cadotte Michaud <pcadotte@proformatique.com>
 
-         Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2
+       * typo: s/paranthesis/parenthesis/ in a comment
 
-2016-08-18 08:13 +0000 [0d479232eb]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I7c1f4eb051177ee22cbe97e063d4a3effe29be30
 
-       * sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit.
+2016-10-24 10:55 +0000 [9b3557e054]  gtjoseph <gjoseph@digium.com>
 
-         When using the migration script sip_to_pjsip.py, those keys got missing. These
-         keys might appear several times and the function "merge_value" tried to collect
-         those. However, because these keys have different names in sip.conf and
-         pjsip.conf, "merge_value" was not able to find the new key name in sip.conf.
-         This change lets "merge_value" search with the old key name in sip.conf and
-         write with the new key name in pjsip.conf.
+       * pjproject_bundled:  Fixed various build issues
 
-         ASTERISK-22374
+         * CFLAGS is now properly set when using older gcc.
+         * All third-party pjproject targets have been removed.  This fixes
+           an issue with older libsrtp in some distros.
+         * Manually removing the source directory now causes a rebuild.
+         * EXTERNALS_CACHE_DIR is now properly checked.
+         * Whitespace fixes.
 
-         Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2
+         Change-Id: I98fec6847efc5602a9f41cb95096fd660a49fa60
 
-2016-08-18 08:11 +0000 [cbc1b2d020]  Alexander Traud <pabstraud@compuserve.com>
+2016-09-19 06:13 +0000 [bb982480d8]  Joshua Colp <jcolp@digium.com>
 
-       * sip_to_pjsip: Map externhost/ip to Transports.
+       * pjsip: Support dual stack automatically.
 
-         When using the migration script sip_to_pjsip.py, the externhost or externip of
-         sip.conf were erroneously written to Endpoints instead to Transports.
+         This change adds support for dual stack automatically. No
+         configuration is required and the IP address and version
+         in the SIP messages and SDP will be automatically changed
+         based on the transport over which the message is being
+         sent. RTP usage has also been changed to listen on both
+         IPv4 and IPv6 simultaneously to allow media to flow, and
+         to allow ICE support on both simultaneously. This also
+         allows failover between IPv6 and IPv4 to work as expected.
 
-         ASTERISK-22374
+         ASTERISK-26309 #close
 
-         Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4
+         Change-Id: I235a421d8f9a326606d861b449fa6fe3a030572d
 
-2016-08-18 08:04 +0000 [5f33e99534]  Alexander Traud <pabstraud@compuserve.com>
+2016-10-17 14:18 +0000 [eff97808fb]  Mark Michelson <mmichelson@digium.com>
 
-       * sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry.
+       * ARI: Detect duplicate channel IDs
 
-         When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and
-         minexpiry were not migrated to pjsip.conf.
+         ARI and AMI allow for an explicit channel ID to be specified
+         when originating channels. Unfortunately, there is nothing in
+         place to prevent someone from using the same ID for multiple
+         channels. Further complicating things, adding ID validation to channel
+         allocation makes it impossible for ARI to discern why channel allocation
+         failed, resulting in a vague error code being returned.
 
-         ASTERISK-22374
+         The fix for this is to institute a new method for channel errors to be
+         discerned. The method mirrors errno, in that when an error occurs, the
+         caller can consult the channel errno value to determine what the error
+         was. This initial iteration of the feature only introduces "unknown" and
+         "channel ID exists" errors. However, it's possible to add more errors as
+         needed.
 
-         Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b
+         ARI uses this feature to determine why channel allocation failed and can
+         return a 409 error during origination to show that a channel with the
+         given ID already exists.
 
-2016-08-18 08:03 +0000 [231ea0350d]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26421
 
-       * sip_to_pjsip: Write media_encryption.
+         Change-Id: Ibba7ae68842dab6df0c2e9c45559208bc89d3d06
 
-         When using the migration script sip_to_pjsip.py, encryption=yes got missing and
-         media_encryption=sdes was not written to pjsip.conf, because of a typo.
+2016-10-19 17:53 +0000 [c2036c827c]  snuffy <snuffy22@gmail.com>
 
-         ASTERISK-22374
+       * Fix issue with CLI not returning to prompt after running "features show"
 
-         Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05
+         ASTERISK-26444 #close
 
-2016-08-18 08:02 +0000 [23eb065121]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I91d645b7e6e5dba35f8c410df2be77a8c0e3acb8
 
-       * sip_to_pjsip: Write cos and tos.
+2016-10-04 18:24 +0000 [3c62b60e56]  Michael Walton <mike@farsouthnet.com>
 
-         When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got
-         missed, because of a typo. Therefore, cos and tos were not written to
-         pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused
-         by a copy-and-paste error.
+       * res_rtp_asterisk: Add ice_blacklist option
 
-         ASTERISK-22374
+         Introduces ice_blacklist configuration in rtp.conf. Subnets listed in the
+         form ice_blacklist = <subnet spec>, e.g. ice_blacklist =
+         192.168.1.0/255.255.255.0, are excluded from ICE host, srflx and relay
+         discovery. This is useful for optimizing the ICE process where a system
+         has multiple host address ranges and/or physical interfaces and certain
+         of them are not expected to be used for RTP. Multiple ice_blacklist
+         configuration lines may be used. If left unconfigured, all discovered
+         host addresses are used, as per previous behavior.
 
-         Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2
+         Documention in rtp.conf.sample.
 
-2016-08-18 07:55 +0000 [0b675a208b]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26418 #close
 
-       * sip_to_pjsip: Add cert_file and ca_list_path.
+         Change-Id: Ibee88f80d7693874fda1cceaef94a03bd86012c9
 
-         When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were
-         not migrated to pjsip.conf.
+2016-10-18 16:30 +0000 [012fda29d2]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-22374
+       * CDR: Alter destruction pattern for CDR chains.
 
-         Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825
+         CDRs form chains. When the root of the chain is destroyed, it then
+         unreferences the next CDR in the chain. That CDR is destroyed, and it
+         then unreferences the next CDR in the chain. This repeats until the end
+         of the chain is reached. While this typically does not cause any sort of
+         problems, it is possible in strange scenarios for the CDR chain to grow
+         way longer than expected. In such a scenario, the destruction pattern
+         can result in a stack overflow.
 
-2016-08-17 14:13 +0000 [1cd12d73a6]  Richard Mudgett <rmudgett@digium.com>
+         This patch fixes the problem by switching from a recursive pattern to an
+         iterative pattern for destruction. When the root CDR is destroyed, it is
+         responsible for iterating over the rest of the CDRs and unreferencing
+         each one. Other CDRs in the chain, since they are not the root, will
+         simply destroy themselves and be done. This causes the stack depth not
+         to increase.
 
-       * res_pjsip_session.c: Fix unbound srv failover tests.
+         ASTERISK-26421 #close
+         Reported by Andrew Nagy
 
-         Commit 1b666549f33d69dc080b212bf92126f3bc3a18b2 broke the srv failover
-         functionality if a TCP connection gets disconnected.  Under these
-         conditions, session_inv_on_state_changed() gets a
-         PJSIP_EVENT_TRANSPORT_ERROR and restarts the INVITE transaction on a new
-         transport.  Unfortunately, session_inv_on_tsx_state_changed() also gets
-         the same PJSIP_EVENT_TRANSPORT_ERROR event and unconditionally terminates
-         the session.
+         Change-Id: I3ca90c2b8051f3b7ead2e0e43f60d2c18fb204b8
 
-         * Made session_inv_on_tsx_state_changed() complete terminating the session
-         on PJSIP_EVENT_TRANSPORT_ERROR only if the session state is still
-         PJSIP_INV_STATE_DISCONNECTED.
+2016-10-18 09:04 +0000 [6d462b9eaf]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-26305 #close
-         Reported by: Richard Mudgett
+       * chan_pjsip: segfault on already disconnected session
 
-         Change-Id: If736e766b5c55b970fa38ca6c8a885caf27b897d
+         On heavy loaded system the TCP/TLS incoming calls could be
+         disconnected by pjproject while these calls are being
+         processed by asterisk.
 
-2016-08-16 15:36 +0000 [329507fe20]  gtjoseph <gjoseph@digium.com>
+         This patch uses functions pjsip_inv_add_ref/pjsip_inv_dec_ref
+         to inform pjproject that an INVITE session is in use.
 
-       * res_pjsip:  Add contact_user to endpoint
+         ASTERISK-26482 #close
 
-         contact_user, when specified on an endpoint, will override the user
-         portion of the Contact header on outgoing requests.
+         Change-Id: Ia2e3e2f75358cdb530252a9ce158af3d5d9fdf33
 
-         Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4
+2016-10-18 03:01 +0000 [662b560c35]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-08-17 08:10 +0000 [6f448f32fe]  Torrey Searle <torrey@voxbone.com>
+       * cli: Auto-complete File not Module for core set debug.
 
-       * res_ari: Add http prefix to generated docs
+         Since Asterisk 1.8, the command "core set debug" on the command-line interface
+         asks not for a file (.c) but a module name. This change shows modules (.so) on
+         the auto-completion via a tabulator or the question mark. Now, when you
+         partially type a module name, TAB or ?, you get the correct candidiates.
 
-         updated the uri handler to include the url prefix of the http server
-         this enables res_ari to add it to the uris when generating docs
+         ASTERISK-26480
 
-         Change-Id: I279335a2625261a8492206c37219698f42591c2e
+         Change-Id: I1213f1dd409bd4ff8de08ad80cb0c73cafb1bae0
 
-2016-08-17 06:12 +0000 [56e0aed177]  Alexander Traud <pabstraud@compuserve.com>
+2016-09-11 10:13 +0000 [6f5880913f]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-       * BuildSystem: Detect ca_list_path capabilities in external PJProject.
+       * menuselect: invalid test for GTK2
 
-         Since Asterisk 13.8, pj_ssl_cert_load_from_files2 got detected only in the
-         bundled PJProject but not in an external PJProject. Therefore, ca_list_path
-         could not be used in pjsip.conf. With this change, pj_ssl_cert_load_from_files2
-         is detected again to enable ca_list_path again.
+         configuire.ac was only checking for the existence of pkg-config
+         and not the gtk2 package itself.  Now it calls AST_PKG_CONFIG_CHECK
+         for gtk+-2.0.
 
-         ASTERISK-26303 #close
+         ASTERISK-26356 #close
 
-         Change-Id: I4a4a0cdc5cdff33730911fb4cfc0498c069043d0
+         Change-Id: I8079d515d6ea99f9ab320a7eaa71c2aaa101ccd5
 
-2016-08-16 12:24 +0000 [2edcfcf1eb]  gtjoseph <gjoseph@digium.com>
+2016-10-17 11:39 +0000 [546ec4b038]  gtjoseph <gjoseph@digium.com>
 
-       * ari:  Add documentation that path parameters are case-sensitive
+       * pjproject_bundled:  Add patch to address SSL crash
 
-         Added to api.wiki.mustache so that the generated object pages
-         have the notation in the table header as well as under each method
-         that has path parameters.
+         Addresses crashes when an attempt is made to operate on an SSL socket
+         after the socket has been closed.
 
-         ASTERISK-25492 #close
+         ASTERISK-26477 #close
 
-         Change-Id: I36c46c6dc0c9ac350470394a999a1b19ef3fcdaf
+         Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002
 
-2016-08-15 15:29 +0000 [f4e28b3a09]  Corey Farrell <git@cfware.com>
+2016-10-13 02:06 +0000 [644fad7477]  Moises Silva <moises.silva@gmail.com>
 
-       * Refactor usage pattern of xmldoc info tag.
+       * chan_rtp: Set a sane default rtp engine for unicast.
 
-         This updates func_channel.c and main/message.c to use a generic xpointer
-         include instead of including info from each channel driver.  Now the
-         name attribute of info is CHANNEL or CHANNEL_EXAMPLES to be included in
-         documentation for func_channel.  Setting the name attribute of info to
-         MessageToInfo or MessageFromInfo causes it to be included in the
-         MessageSend application and AMI action.
+         ASTERISK-26439
 
-         Change-Id: I89fd8276a3250824241a618009714267d3a8d1ea
+         Change-Id: I7f5ee2eeba8906e9ecb3293dbe3a747770bb5011
 
-2016-08-04 20:00 +0000 [a8d9a53bae]  Richard Mudgett <rmudgett@digium.com>
+2016-10-15 20:05 +0000 [42cfdcd1b7]  Matt Jordan <mjordan@digium.com>
 
-       * res_sorcery_config.c: Cleanup ao2 container usage idioms.
+       * res/ari: Add the Asterisk EID field to outgoing events
 
-         Change-Id: Iad24b335fb121a2bc7f1d048ab7420569edcba5a
+         This patch adds the Asterisk EID field to all outgoing ARI events.
+         Because this field should be added to all events as they are
+         transmitted, it is appended to the JSON message just prior to it being
+         handed off to the application message handler. This makes it somewhat
+         resilient to both new events being added to ARI, as well as other
+         potential event transport mechanisms.
 
-2016-08-04 15:57 +0000 [74a91b9ee5]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26470 #close
 
-       * sorcery.c: Minor optimizations.
+         Change-Id: Ieff0ecc24464e83f3f44e9c3e7bd9a5d70b87a1d
 
-         * Remove some unused parameters from internal functions:
-         sorcery_wizard_create()
-         sorcery_wizard_update()
-         sorcery_wizard_delete()
+2016-10-16 17:25 +0000 [74d9385273]  gtjoseph <gjoseph@digium.com>
 
-         * Created the struct sorcery_observer_invocation ao2 object without a lock
-         since it is not needed in sorcery_observer_invocation_alloc().
+       * utils.c:  Fix ast_set_default_eid for multiple platforms
 
-         * Cleanup generic ao2 container sorcery object id hash, sort, and cmp
-         functions.
+         ast_set_default_eid was searching for ethX, emX, enoX, ensX and even
+         pciD#U interface names.  While this was a good attempt, it wasn't
+         inclusive enough to capture interfaces like enp6s0 or ens6d1, etc.
 
-         Change-Id: Iff71d75f52bc1b8cee955456838c149faaa4f92e
+         Rather than relying on interface names, we now simply find the first
+         interface returned by the OS that has a hardware address and that
+         address isn't all 0x00 or all 0xff.  The code IS different for BSD,
+         Solaris and Linux based on what method is available for enumerating
+         interfaces.
 
-2016-08-01 11:04 +0000 [29beb2890c]  Richard Mudgett <rmudgett@digium.com>
+         Tested on:
+         FreeBSD9
+         CentOS6
+         Ubuntu14
+         Fedora24
 
-       * sorcery.c: Tweak some container declaration formatting.
+         I was unable to test on Solaris at this time but the code for Solaris
+         is used elsewhere at Digium.
 
-         * Tweak sorcery_object_type_alloc() formatting.
-         * Tweak ast_sorcery_init() formatting.
+         Change-Id: Iaa6db87ca78a9a375e47d70e043ae08c1448cb72
 
-         Change-Id: Ib02430023f15268cd7a2ea53f2c331213e4d3944
+2016-10-15 04:58 +0000 [f1fd873df0]  Michael Kuron <m.kuron@gmx.de>
 
-2016-08-11 23:30 +0000 [9b822293bd]  Corey Farrell <git@cfware.com>
+       * chan_sip: Only send video on outgoing channel if incoming channel supports it
 
-       * pbx.c: Additional fixes to ast_context_remove_extension_callerid2.
+         Previously, the settings videosupport=always and videosupport=yes behaved
+         identically and unconditionally caused a video offer to be sent in the SDP on
+         an outgoing call. This was a regression introduced with commit
+         5a1d90e1fbfc4b48927aad55311f3b38efbf1f54 in Asterisk 1.6.1.
 
-         Do not check registrar of the first extension head.  We should only check
-         the registrar when we match the priority.
+         This commit restores correct behavior: videosupport=always causes a video offer
+         to be sent unconditionally, while videosupport=yes will only offer video on an
+         outbound channel if the incoming channel it is bridged to also supports video.
+         That way, the device receiving the outgoing call can display the correct user
+         interface elements for audio or video and will not unnecessarily show a blank
+         video window on an audio-only call.
 
-         Additionally fix a couple calls to strcmp which used the input callerid
-         instead of the clean version ex.cidmatch.
+         ASTERISK-17470 #close
 
-         ASTERISK-26233
+         Change-Id: I782f4409d436114dbc97061c3570c0cd24f7c3ae
 
-         Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1
+2016-10-13 14:09 +0000 [0306869399]  Leandro Dardini <ldardini@gmail.com>
 
-2016-08-10 14:41 +0000 [403c794684]  Alexei Gradinari <alex2grad@gmail.com>
+       * app_queue: Added initialization for "context" parameter
 
-       * core: Entity ID is not set or invalid
+         When using Asterisk Realtime Architecture, empty fields are skipped and the
+         default values are used. If the "context" parameter in queue was set and then
+         cleared from the database, the old value remains in memory and it continues
+         to be used. This change initialize the "context" parameter with an empty value,
+         allowing clearing the parameter.
 
-         The Exchanging Device and Mailbox States could not working
-         if the Entity ID (EID) is not set manually and can't be obtained
-         from ethernet interface.
+         ASTERISK-26462 #close
 
-         This patch replaces debug message to warning
-         and addes missing description about option 'entityid' to
-         asterisk.conf.sample.
+         Change-Id: I64be73d5044ce38dd02408bd0e53de965ef65905
 
-         With this patch the asterisk also:
-         (1) decline loading the modules which won't work without EID:
-             res_corosync and res_pjsip_publish_asterisk.
-         (2) warn if EID is empty on loading next modules:
-             pbx_dundi, res_xmpp
+2016-10-14 00:18 +0000 [ce4cfd2eca]  Corey Farrell <git@cfware.com>
 
-         Starting with v197 systemd/udev will automatically assign "predictable"
-         names for all local Ethernet interfaces.
-         This patch also addes some new ethernet prefixes "eno" and "ens".
+       * Fix issues with bundled pjproject cached download.
 
-         ASTERISK-26164 #close
+         Previously when testing I had a preexisting makeopts in ASTTOPDIR.  The
+         ordering of configure.ac causes --with-externals-cache to be processed
+         after third-party configure.  In cases where the Asterisk clone is
+         cleaned it would cause pjproject to be downloaded to /tmp.  This
+         moves processing of the externals cache and sounds cache to happen
+         before third-party configure.
 
-         Change-Id: I72d712f1ad5b6f64571bb179c5cb12461e7c58c6
+         This also addresses a possible issue with the third-party Makefile.  If
+         TMPDIR is set by the environment it would override the path given to
+         --with-externals-cache.
 
-2016-06-15 17:10 +0000 [93332cb1d0]  Evgeniy Tsybra <cjack@yandex.ru>
+         ASTERISK-26416
 
-       * chan_sip: Fix lastrtprx always updated
+         Change-Id: Ifab7f35bfcd5a31a31a3a4353cc26a68c8c6592d
 
-         Packets are read regulary, when there is no data in buffer fr->frametype
-         is AST_FRAME_NULL. There was no check of frametype and lastrtprx always 
-         updated and, therefore, rtptimeout did not work at all.
+2016-10-12 16:24 +0000 [3c54328c57]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25270 #close
+       * Audit ast_json_pack() calls for needed UTF-8 checks.
 
-         Change-Id: If3b5ca0dbb822582a86eb7d01dcae4e83448c41d
+         Added needed UTF-8 checks before constructing json objects in various
+         files for strings obtained outside the system.  In this case string values
+         from a channel driver's peer and not from the user setting channel
+         variables.
 
-2016-08-15 07:17 +0000 [2735ec899a]  Joshua Colp <jcolp@digium.com>
+         * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json
+         object construction.
 
-       * manager: Clarify that dialplan manipulation actions are under system class.
+         ASTERISK-26466
+         Reported by: Richard Mudgett
 
-         ASTERISK-26246 #close
+         Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096
 
-         Change-Id: Id673b9786389f9d2a87f638ce1a25161f5f31657
+2016-10-12 16:20 +0000 [7f8f125738]  Richard Mudgett <rmudgett@digium.com>
 
-2016-08-13 22:02 +0000 [f59bd47ed3]  Matt Jordan <mjordan@digium.com>
+       * json: Check party id name, number, subaddresses for UTF-8.
 
-       * app_dial: Improve documentation
+         * Updated unit test as ast_json_name_number() is now NULL tolerant.
 
-         * Add some helpful <literal> and other embedded paragraph tags
+         ASTERISK-26466 #close
+         Reported by: Richard Mudgett
 
-         * Document some of the lesser known channel variables set by Dial
+         Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6
 
-         * Add examples for some common Dial uses, along with some more
-           challenging but useful options
+2016-10-11 18:14 +0000 [9621c9bcbc]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ib2fb9301e8e044d14fbb2815ec64161f19bbfbc1
+       * json: Add UTF-8 check call.
 
-2016-08-13 20:16 +0000 [4facaac408]  Matt Jordan <mjordan@digium.com>
+         Since the json library does not make the check function public we
+         recreate/copy the function in our interface module.
 
-       * manager: Add <see-also> tags to relate interrelated events/actions together
+         ASTERISK-26466
+         Reported by: Richard Mudgett
 
-         Change-Id: Idbac539205aa732bf786c4f765577d8e9ff28ba4
+         Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99
 
-2016-08-13 20:15 +0000 [232d4fe24f]  Matt Jordan <mjordan@digium.com>
+2016-10-12 17:42 +0000 [e4bb9f9a37]  Richard Mudgett <rmudgett@digium.com>
 
-       * manager: Add <see-also> tags to relate Bridge related events,actions, and apps
+       * aoc.c: Whitespace cleanup
 
-         Change-Id: I67e6b79fa3102e494b5fe6cc7510472249080e85
+         * In s_to_json() removed unnecessary ast_json_ref() to ast_json_null()
+         when creating the type json object.  The ref is a noop.
 
-2016-08-13 20:14 +0000 [63c0b2f7c9]  Matt Jordan <mjordan@digium.com>
+         Change-Id: I2be8b836876fc2e34a27c161f8b1c53b58a3889a
 
-       * manager: Add <see-also> tags to relate AoC events and actions
+2016-10-12 17:27 +0000 [bcac905bd3]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Iea89a36222712148c1775c05ed0ad1049d67a70e
+       * app_queue.c: Fix clearing of pause reason string.
 
-2016-08-13 20:13 +0000 [0422667d6c]  Matt Jordan <mjordan@digium.com>
+         The pause reason is not always cleared when it should be cleared.
 
-       * manager: Add <see-also> tags to relate UserEvent actions/apps/events
+         * Made set_queue_member_pause() always clear pause reason if not pausing
+         with a reason string.
 
-         Change-Id: I80f8a981f62f50e74609c69c49edcaca6c95efa4
+         Change-Id: I993dad19626ec017478a230e980989438b778c53
 
-2016-08-12 15:53 +0000 [f9e734974b]  Matt Jordan <mjordan@digium.com>
+2016-10-12 16:22 +0000 [ee4ae2b648]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_agi: Improve documentation
+       * app_minivm.c: Fix malformed ast_json_pack() call.
 
-         * Groups of AGI commands that have similar functionality now reference
-           each other, and all reference the AGI application for ease of wiki
-           reference.
+         Change-Id: I082b239022fac462666e52a14a44304748908dc0
 
-         * The documentation for the AGI application has been improved, in
-           particular noting the various AGI types and how they are invoked.
+2016-10-12 16:30 +0000 [90ae4e4337]  gtjoseph <gjoseph@digium.com>
 
-         * A warning message has been added to DeadAGI, noting that it is
-           deprecated.
+       * res_config_mysql:  Fix several issues related to recent table changes
 
-         Change-Id: I479ccdee8a7393f01b18692c3d4ab7e6bdd1875d
+         Unlike any of the other database drivers, res_config_mysql checks that
+         the table definition matches the requirements for every insert and
+         update statement.  Since all requirements are forced to 'char', any
+         column that isn't a char, like ps_contacts' expiration_time,
+         qualify_timeout, etc., will throw a warning.  It's kinda harmless but
+         very misleading.  Since no other driver does those checks on insert
+         or update, they've been removed from res_config_mysql.  Also, all
+         the logic that actually attempted to ALTER the table to fix the issue
+         has been removed.  With the move to alembic, the auto-alter
+         functionality is not only unnecessary, it's also dangerous.
 
-2016-08-12 13:53 +0000 [781bb410d0]  Matt Jordan <mjordan@digium.com>
+         The other issue is that res_config_mysql calls the mysql_insert_id
+         function inside store_mysql.  Presumably the intention was to return
+         the number of rows inserted DESPITE A NOTE IN THE CODE THAT THE VALUE
+         IS NON_PORTABLE AND MAY CHANGE.  That value is then returned to
+         config realtime as the number of rows inserted.  Guess what?  The value
+         changed.  It now only returns the number of rows inserted if there's an
+         auto increment column on the table, which ps_contacts doesn't have.
+         Otherwise it returns 0.  So now, the insert worked but we tell config
+         realtime and sorcery that no rows were inserted.  That call to
+         mysql_insert_id was removed and we now always return 1 if the insert
+         succeeded.  We're only inserting 1 row at a time anyway.  If the insert
+         fails, we still return -1.
 
-       * manager: Add <see-also> links between related events
+         ASTERISK-26362 #close
+         Reported-by: Carlos Chavez
 
-         This patch adds some see-also references between related AMI events. It
-         focuses primarily on those events that are guaranteed to come in pairs,
-         such as DTMFBegin/DTMFEnd, as well as those that occur during the life
-         cycle of an Asterisk channel, such as Newchannel/Hangup.
+         Change-Id: I83ce633efdb477b03c8399946994ee16fefceaf4
 
-         Change-Id: Iaab600477052018d0f8c03d0c624c0856e9ff1f3
+2016-09-29 13:08 +0000 [86c15db6a1]  Torrey Searle <torrey@voxbone.com>
 
-2016-08-12 11:15 +0000 [cfd6852d39]  Matt Jordan <mjordan@digium.com>
+       * res_fax: Fix a tight race condition causing fax to crash in audio fallback
 
-       * func_channel: Reorganize documentation
+         When T.38 gets rejected and G711 failback occurs there is a period of
+         time where neither AST_FAX_TECH_T38 nor AST_FAX_TECH_AUDIO is set,
+         leading to a crash.
 
-         * Following the example of the PJSIP channel driver, the channel
-           technology specific documentation has been moved to the respective
-           channel drivers that provide that functionality. This has the benefit
-           of locating the documentation of items with those modules that provide
-           it.
+         Change-Id: Icc3f457b2292d48a9d7843dac0028347420cc982
 
-         * Examples of using the CHANNEL function for both standard items as well
-           as for PJSIP have been added.
+2016-09-30 16:29 +0000 [29b7a5b00f]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
 
-         * The 'max_forwards' standard item has been documented.
+       * Add text of cdr directory into README.md for ast-db-manage
 
-         Change-Id: Ifaa79a232c8ac99cf8da6ef6cc7815d398b1b79b
+         Change-Id: I68321c4bea50730c39fdb486e5f23aeadd1ad636
 
-2016-08-11 22:11 +0000 [cb043249b6]  Corey Farrell <git@cfware.com>
+2016-10-06 09:58 +0000 [f919edc4e2]  gtjoseph <gjoseph@digium.com>
 
-       * Run mandatory cleanup when startup fails.
+       * app_dial:  Add the "Q" option to set the cause on unanswered channels
 
-         Errors during startup result in an exit.  These error branches should be
-         calling ast_run_atexit(0) to ensure mandatory cleanup is run.
+         The "Q" option will set the cause on the unanswered channels when
+         another channel answers.  It overrides the default of
+         ANSWERED_ELSEWHERE.
 
-         ASTERISK-26267 #close
+         NOTE:  chan_sip does not support setting the cause on a CANCEL to
+         anything other than ANSWERED_ELSEWHERE.
 
-         Change-Id: If226f2326ae2df7add20040696132214cf2bb680
+         ASTERISK-26446 #close
 
-2016-08-11 11:24 +0000 [4d5e96ab53]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I71742e0919aaa16784c30a2b2e73fbeed7672e47
 
-       * res_pjsip_caller_id:  Copy header name to short header name
+2016-10-11 06:55 +0000 [a859bcb49c]  Alexander Traud <pabstraud@compuserve.com>
 
-         When compact_headers was set, we were sending a zero-length header name
-         for PAI and RPID because we always forced the short header name length
-         to 0.  We did this because we cloned the header from "From" and wanted
-         to clear "f" from the sname.  By cloning however, we bypass pjproject's
-         automatic logic that sets sname to name if there's no compact form of
-         the header, which there isn't for PAI and RPID.  So now we force sname
-         to be the same as name right after we set name.
+       * chan_sip: Support nat=auto_comedia or nat=force_rport,auto_comedia.
 
-         res_pjsip_diversion needed the same treatment for the Diversion header.
+         In the SIP channel driver chan_sip, auto_comedia was expected to be used in
+         tandem with auto_force_rport. Or stated differently: Only when auto_force_rport
+         was chosen (the default), auto_comedia worked. This change allows auto_comedia
+         to be set independently of the state of (auto_)force_rport. For example,
+         nat=force_rport,auto_comedia is useful for IPv4/IPv6 Dual Stack deployments
+         when IPv6 clients are behind a Firewall.
 
-         ASTERISK-26241 #close
+         ASTERISK-26457 #close
 
-         Change-Id: I633ec139630cd83809aae00336cee4a10077e467
+         Change-Id: Ib29d66c6dbb61648e371e01fc36c6978ddae5bc2
 
-2016-08-11 12:18 +0000 [143df33110]  gtjoseph <gjoseph@digium.com>
+2016-10-10 16:59 +0000 [a884b26392]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-       * res_pjsip:  Fail global load if debug or default_from_user are empty
+       * vector: After remove element recheck index
 
-         If debug was specified in the global configuration but left blank,
-         the logger would treat it as a wildcard and log all hosts.  If
-         default_from_user was empty, a crash would result.
+         Small fix. It is necessary to double-check
+         the index that we just removed because there
+         is a new element.
 
-         The global apply handler now checks for empty strings.
+         ASTERISK-26453 #close
 
-         ASTERISK-26239 #close
-         ASTERISK-26238 #close
+         Change-Id: Ib947fa94dc91dcd9341f357f1084782c64434eb7
 
-         Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336
+2016-09-29 12:52 +0000 [349c34f72a]  Torrey Searle <torrey@voxbone.com>
 
-2016-08-01 15:07 +0000 [1fc5c90014]  Richard Mudgett <rmudgett@digium.com>
+       * res_rtp_asterisk: Fix infinite DTMF issue when switching to P2P bridge
 
-       * res_pjsip res_pjsip_mwi: Misc fixes and cleanups.
+         If a bridge switched to P2P when a DTMF was in progress it
+         was possible for the DTMF to continue being sent indefinitely.
 
-         * Eliminated RAII_VAR() usage in
-         ast_sip_persistent_endpoint_update_state().
+         Change-Id: I7e2a3efe0d59d4b214ed50cd0b5d0317e2d92e29
 
-         * Added a missing allocation failure check to
-         persistent_endpoint_find_or_create().
+2016-10-10 10:59 +0000 [9da3489d24]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-         * Made persistent_endpoint_find_or_create() create the new object without
-         a lock as it isn't needed.
+       * res_pjsip_config_wizard: Memory leak in module_unload
 
-         * Cleaned up some ao2 container allocation idioms.
+         Fixed a memory leak. It removes only the first element.
+         Added a useful feature in vector.h to remove all items
+         under the CMP through a callback function / macro.
 
-         * Reordered res_pjsip_mwi.c load_module() and unload_module()
+         ASTERISK-26453 #close
 
-         Change-Id: If8ce88fbd82a0c72a37a2388f74f77237a6a36a8
+         Change-Id: I84508353463456d2495678f125738e20052da950
 
-2016-08-04 18:03 +0000 [73052e5732]  Richard Mudgett <rmudgett@digium.com>
+2016-10-09 21:53 +0000 [fa2885b3ff]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
 
-       * location.c: Misc fixes and cleanups.
+       * cel_odbc: Fix memory leak on module unload
 
-         * Eliminated most RAII_VAR() usage.
+         Change-Id: Ic7a1236eba2408090fdabb5f717b5fa455ead715
 
-         * Added several missing allocation failure checks.
+2016-10-03 11:30 +0000 [e6b0053d75]  gtjoseph <gjoseph@digium.com>
 
-         * Made ast_sip_for_each_contact() allocate the wrapper ao2 object without
-         a lock as it is not needed.
+       * bundled_pjproject:  Add tests for programs used by the Makefile, et al.
 
-         Change-Id: Ie20913365156c95dd79e5d471cfd25e99ae880bc
+         Added tests for bzip2, tar, patch, sed and nm to configure.ac.
 
-2016-08-02 13:53 +0000 [9d4bd3d763]  Richard Mudgett <rmudgett@digium.com>
+         Set DOWNLOAD_TO_STDOUT to a working command line regardless of
+         whether the download program is wget, curl or fetch.
 
-       * taskprocessor.c: Tweak high water checks.
+         Added a 'configure.m4' file to the third-party directory which takes
+         care of calling any third-party project setup.  Had to move some
+         pjproject_bundled stuff up in configure.ac so it was called before
+         the third-party configure macro.
 
-         * The high water check in ast_taskprocessor_alert_set_levels() would
-         trigger immediately if the new high water level is zero and the queue was
-         empty.
+         The pjproject tarball is now downloaded to the externals_cache_dir if
+         it was specified on the ./configure command line
 
-         * The high water check in taskprocessor_push() was off by one.
+         Removed regeneration of the pjproject aconfigure file.  It was only
+         needed for an old patch that no longer applies.
 
-         Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d
+         Converted the tests for symbols to explicit tests since we know that
+         they're now available in the bundled version.  Saves a little time
+         during configure.
 
-2016-08-03 16:24 +0000 [e1248c3075]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26416 #close
+         Reported-by: Corey Farrell
 
-       * res_pjsip: Make aor named lock a mutex.
+         Change-Id: Id1d94251c0155f8dd41b7de7067f35cfbaafbb9b
 
-         The named aor lock was always being locked for writes so a rwlock adds no
-         benefit and may be slower because rwlocks are biased toward read locking.
+2016-10-05 14:53 +0000 [0dc0356e39]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: I8c5c2c780eb30ce5441832257beeb3506fd12b28
+       * pjproject_bundled:  Add MALLOC_DEBUG capability
 
-2016-07-29 17:41 +0000 [6e40334d89]  Richard Mudgett <rmudgett@digium.com>
+         pjproject_bundled will now use the asterisk memory debugging APIs
+         if MALLOC_DEBUG is turned on in menuselect.
 
-       * pjsip_distributor.c: Add missing allocation failure check.
+         Because this required stubs for the executable programs and the python
+         bindings, some Makefile reorganization was needed to properly handle
+         the dependencies.  As a result, the makefile now individually makes
+         each of the pjproject libraries separately instead of making them all
+         in 1 shot.  The only visible change is that there are separate status
+         lines printed for each library instead oif 1 for all libs.  Also, the
+         making of the pjproject dependency files was eliminated.  They're not
+         needed for building unless you're actively modifying pjproject source
+         files and it makes the build process faster.  Finally, any issues with
+         parallel builds should be resolved again making the build faster.
 
-         Change-Id: I932ab2cea845e534d9ff318035b6de39972d3b28
+         Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0
 
-2016-08-11 11:13 +0000 [a3c5488ff4]  Matt Jordan <mjordan@digium.com>
+2016-10-07 17:32 +0000 [dd873bcada]  Corey Farrell <git@cfware.com>
 
-       * app_queue: Prevent crash when a call is forwarded to an invalid location
+       * astobj2: Add backtrace to log_bad_ao2.
 
-         When a call forward attempt is made from a Queue member, the current
-         code will hang up the forwarding channel in an off-nominal condition
-         prior to raising the Stasis events informing the rest of Asterisk that
-         the call was forwarded. This will result in a slew of dreaded FRACKs,
-         most likely leading to a crash.
+         * Compile __ast_assert_failed unconditionally.
+         * Use __ast_assert_failed to log messages from log_bad_ao2
+         * Remove calls to ast_assert(0) that happen after log_bad_ao2 was run.
 
-         This patch modifies the code such that we don't hang up the forwarding
-         channel even in an off-nominal condition until we've safely raised the
-         Stasis messages.
+         Change-Id: I48f1af44b2718ad74a421ff75cb6397b924a9751
 
-         ASTERISK-25797 #close
+2016-10-04 16:59 +0000 [86550f9c17]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Ife5abed351691fd79105321636eaa8ea8dcdba38
+       * alembic:  Allow cdr, config and voicemail to exist in the same schema
 
-2016-08-11 10:50 +0000 [5913929d31]  Kevin Harwell <kharwell@digium.com>
+         cdr, config and voicemail are all separate alembic trees.  Because
+         alembic's default is to use a table named 'alembic_version' to store
+         the current tree revision, the 3 trees can't exist in the same schema
+         without stepping on each other.
 
-       * alembic: add auth_username to endpoint's identify_by enum
+         Now each tree uses 'alembic_version_<tree_name>' as the version table.
+         Each tree's env.py script now first checks for 'alembic_version'.  If
+         it finds it AND its revision is in the tree's history, the script
+         renames it to 'alembic_version_<tree_name>'.  Regardless, the script
+         then continues with the migration using 'alembic_version_<tree_name>'
+         and creates that table if it's not found.  The result is that if an
+         existing 'alembic_version' table was found but it didn't belong to this
+         tree, it's left alone and 'alembic_version_<tree_name>' is used or
+         created.
 
-         A new identify_by option was added recently, auth_username. However, this
-         setting was not added as an allowable choice in the database enumeration
-         value.
+         WARNING:  If multiple trees are using the same schema, they MUST NOT
+         CRU or D any objects with names that might exist in the other trees.
+         An example would be 'yesno_values' type.  If two trees perform
+         operations on it, one tree could pull it out from under the other.
+         Thankfully we currently don't share any names among cdr, config and
+         voicemail.
 
-         This patch updates the current enumeration, adding in the new setting.
+         NOTE:  Since the env.py scripts in each tree were identical, a common
+         env.py has been placed in the ast-db-manage directory and a symlink
+         to it has been placed in each tree directory.
 
-         ASTERISK-26268 #close
+         ASTERISK-24311 #close
+         Reported-by: Dafi Ni
 
-         Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8
+         Change-Id: I4d593f000350deb5d21a14fa1e9bc3896844d898
 
-2016-08-06 10:57 +0000 [1589452fdc]  Alexei Gradinari <alex2grad@gmail.com>
+2016-10-05 04:25 +0000 [f166681c12]  Alexander Traud <pabstraud@compuserve.com>
 
-       * pjsip: Fix deadlock with suspend taskprocessor on masquerade
+       * chan_sip: Honor support of Symmetric Response (rport) for SIP requests.
 
-         If both channels which should be masqueraded
-         are in the same serializer:
-         1st channel will be locked waiting condition 'complete'
-         2nd channel will be locked waiting condition 'suspended'
+         In the SIP channel driver chan_sip, the default is "auto_force_rport". When no
+         NAT was detected, for example in case of IPv6, Asterisk uses the IP address
+         from the headers within the SIP-REGISTER for subsequent SIP signaling. When
+         the remote party specifies support for Symmetric Response (RFC 3581) via the
+         parameter "rport", Asterisk should not extract the port from the SIP headers
+         but reuse the port of the transport. This did not happen because of a typo.
 
-         On heavy load system a chance that both channels will be in
-         the same serializer 'pjsip/distibutor' is very high.
+         ASTERISK-26438 #close
 
-         To reproduce compile res_pjsip/pjsip_distributor.c with
-         DISTRIBUTOR_POOL_SIZE=1
+         Change-Id: If6e7891848aaf96666dee5305695f7c6667cd5a6
 
-         Steps to reproduce:
-         1. Party A calls Party B (bridged call 'AB')
-         2. Party B places Party A on hold
-         3. Party B calls Voicemail app (non-bridged call 'BV')
-         4. Party B attended transfers Party A to voicemail using REFER.
-         5. When asterisk masquerades calls 'AB' and 'BV',
-            a deadlock is happened.
+2016-10-04 20:46 +0000 [430f6e5388]  Michael Walton <mike@farsouthnet.com>
 
-         This patch adds a suspension indicator to the taskprocessor.
-         When a session suspends/unsuspends the serializer
-         it sets the indicator to the appropriate state.
-         The session checks the suspension indicator before
-         suspend the serializer.
+       * audiohooks: Remove redundant codec translations when using audiohooks
 
-         ASTERISK-26145 #close
+         The main frame read and write handlers in main/channel.c don't use the
+         optimum placement in the processing flow for calling audiohooks
+         callbacks, as far as codec translation is concerned. This change places
+         the audiohooks callback code:
+          * After the channel read translation if the frame is not linear before
+         the translation, thereby increasing the chance that the frame is linear
+         as required by audiohooks
+          * Before the channel write translation if the frame is linear at this
+         point
+         This prevents the audiohooks code from instantiating additional
+         translation paths to/from linear where a linear frame format is already
+         available, saving valuable CPU cycles
 
-         Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b
+         ASTERISK-26419
 
-2016-08-09 12:07 +0000 [f6ec94cca6]  Kevin Harwell <kharwell@digium.com>
+         Change-Id: I6edd5771f0740e758e7eb42558b953f046c01f8f
 
-       * alembic/sqlalchemy: auto increment only allowed on a single column
+2016-09-29 14:02 +0000 [2449d2877c]  Kevin Harwell <kharwell@digium.com>
 
-         The extensions table defined two columns (id and priority) as primary key
-         autoincrement columns. However only one is allowed when defining the primary
-         key.
+       * Remove "format_ogg_opus: New format"
 
-         This patch removes the autoincrement attribute from the priority column since
-         it does not need to be as such and really should not have been on there in the
-         first place.
+         This reverts commit 40aa28131bc30b4516da2b20eb1a1e043920169c.
 
-         This patch also removes 'context', 'exten', and 'priority' from the primary key
-         index and creates a new combined unique contraint index on them.
+         ASTERISK-26426 #close
 
-         ASTERISK-26183 #close
+         Change-Id: I81e55c3c512f1dd6f49896f0c6b97a07d74fd8f5
 
-         Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b
+2016-09-27 16:10 +0000 [f0a2e628d6]  gtjoseph <gjoseph@digium.com>
 
-2016-08-07 09:58 +0000 [5f815f9dba]  Matt Jordan <mjordan@digium.com>
+       * download_externals: Fix issue with re-install
 
-       * channels/chan_pjsip: Add PJSIP_SEND_SESSION_REFRESH
+         Needed to ignore an xmlstarlet return code for optional element.
 
-         This patch adds a new PJSIP specific dialplan function,
-         PJSIP_SEND_SESSION_REFRESH. When invoked on a PJSIP channel, the media
-         session will be refreshed via either an UPDATE or re-INVITE request.
-         When used in conjunction with the PJSIP_MEDIA_OFFER dialplan function,
-         the formats in use on a PJSIP channel can be re-negotiated and changed
-         dynamically after call setup.
+         Change-Id: I6a96f709b4b38c9a3f3dda4e8b07903787e16873
+         Reported-by: Dan Jenkins
 
-         ASTERISK-26277 #close
+2016-09-22 09:49 +0000 [5258c067ae]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: Ib98fe09ba889aafe26d58d32f0fd1323f8fd9b1b
+       * codec_opus: Add download ability to menuselect
 
-2016-08-09 16:19 +0000 [a119bab6a6]  Mark Michelson <mmichelson@digium.com>
+         Updated codecs/codecs.xml to add codec_opus to the external
+         download list.
 
-       * res_rtp_asterisk: Cache local RTCP address.
+         ASTERISK-26409
 
-         When an RTCP packet is sent or received, res_rtp_asterisk generates a
-         Stasis event that contains the RTCP report as well as the local and
-         remote addresses that the report pertains to.
+         Change-Id: Ia07b36539f30e852125fb2b94147dc9774df31a4
 
-         The addresses are determined using ast_find_ourip(). For the local
-         address, this will typically result in a lookup of the hostname of the
-         server, and then a DNS lookup of that hostname. If you do not have the
-         host in /etc/hosts, then this results in a full DNS lookup, which can
-         potentially block for some time.
+2016-07-23 14:50 +0000 [a5af8709c8]  gtjoseph <gjoseph@digium.com>
 
-         This is especially problematic when performing RTCP reads, since those
-         are done on the same thread responsible for reading and writing media.
+       * codec_opus: Replace res_format_attr_opus with the one from codec_opus
 
-         This patch addresses the issue by performing a lookup of the local
-         address when RTCP is allocated. We then use this cached local address
-         for the Stasis events when necessary.
+         Preparation
 
-         ASTERISK-26280 #close
-         Reported by Mark Michelson
+         ASTERISK-26409
 
-         Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556
+         Change-Id: I9f20e7cce00c32464d9a180e81283d49d199d0a3
+         (cherry picked from commit 59f7662a93bf9c07204fb50e1020a0f5bfbbd5c9)
 
-2016-08-08 12:53 +0000 [a06a1af0eb]  Alexei Gradinari <alex2grad@gmail.com>
+2016-07-23 15:56 +0000 [44c0c51cf1]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack
+       * format_ogg_opus: New format
 
-         The PJSIP taskprocessors could be overflowed on startup
-         if there are many (thousands) realtime endpoints
-         configured with unsolicited mwi.
-         The PJSIP stack could be totally unresponsive for a few minutes
-         after boot completed.
+         Add Ogg/Opus playback support.
 
-         This patch creates a separate PJSIP serializers pool for mwi
-         and makes unsolicited mwi use serializers from this pool.
-         This patch also adds 2 new global options to tune taskprocessor
-         alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'.
+         This uses libopusfile in order to be able to read .opus files and play
+         them back.
 
-         This patch also adds new global option 'mwi_disable_initial_unsolicited'
-         to disable sending unsolicited mwi to all endpoints on startup.
-         If disabled then unsolicited mwi will start processing
-         on next endpoint's contact update.
+         Writing/recording support is not present at this time.
 
-         ASTERISK-26230 #close
+         ASTERISK-26409
 
-         Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a
+         Change-Id: I8815d23345108d8ca7c0bd640f6a1ce6b4f56955
 
-2016-08-04 10:16 +0000 [485fd27f7c]  Joshua Colp <jcolp@digium.com>
+2016-09-24 19:05 +0000 [0ab443007b]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip_outbound_publish: Use a serializer shutdown group for unload.
+       * build_tools:  Add ability to download variants to download_externals
 
-         This change replaces the custom unload process for the outbound
-         publish module with the common serializer shutdown group.
+         Some external packages have multiple variants that apply to different
+         builds of asterisk.  The DPMA for instance has a "bundled" variant that
+         needs to be downloaded if asterisk was configured with
+         --with-pjproject-bundled.
 
-         ASTERISK-25217 #close
+         There are 2 ways to specify variants:
 
-         Change-Id: I280a0384d860c486202d87d2d674394cca77ffb6
+         If you need the user to make the decision about which variant to
+         download, simply create multiple menuselect "member" entries like so...
 
-2016-08-03 15:39 +0000 [805f105f88]  Corey Farrell <git@cfware.com>
+         <member name="res_digium_phone" displayname="..snipped..">
+           <support_level>external</support_level>
+           <depend>xmlstarlet</depend>
+           <depend>bash</depend>
+           <defaultenabled>no</defaultenabled>
+         </member>
 
-       * Add missing checks during startup.
+         <member name="res_digium_phone-bundled" displayname="..snipped..">
+           <support_level>external</support_level>
+           <depend>xmlstarlet</depend>
+           <depend>bash</depend>
+           <defaultenabled>no</defaultenabled>
+         </member>
 
-         This ensures startup is canceled due to allocation failures from the
-         following initializations.
-         * channel.c: ast_channels_init
-         * config_options.c: aco_init
+         Note that the second entry has "-<variant>" appended to the name.
+         You can then use the existing menuselect facilities to restrict which
+         members to enable or disable.  Youy probably don't want the user to
+         enable multiple at the same time.
 
-         ASTERISK-26265 #close
+         If you want to hide the details of the variants, the better way to
+         do it is to create 1 member with "variant" elements.
 
-         Change-Id: I911ed08fa2a3be35de55903e0225957bcdbe9611
+         <member name="res_digium_phone" displayname="..snipped..">
+           <support_level>external</support_level>
+           <depend>xmlstarlet</depend>
+           <depend>bash</depend>
+           <defaultenabled>no</defaultenabled>
+           <member_data>
+             <downloader>
+               <variants>
+                 <variant tag="bundled"
+                   condition='[[ "$PJPROJECT_BUNDLED" = "yes" ]]'/>
+               </variants>
+             </downloader>
+           </member_data>
+         </member>
 
-2016-07-22 16:37 +0000 [ea71bd6e3e]  Alexei Gradinari <alex2grad@gmail.com>
+         The condition must be a bash expression suitable for use with an "if"
+         statement.  Any environment variable can be used plus those available
+         in makeopts.
 
-       * app_voicemail: Add taskprocessor alert level options.
+         In this case, if asterisk was configured with --with-pjproject-bundled
+         the bundled variant will be automatically downloaded.  Otherwise the
+         normal version will be downloaded.
 
-         On heavy loaded system with IMAP or DB storage,
-         'app_voicemail' taskprocessor queue could reach 500 scheduled tasks.
-         It could happen when the IMAP or DB server dies or is unreachable.
-         It could happen on startup when there are many (thousands)
-         realtime endpoints configured with unsolicited mwi.
-         If the taskprocessor queue reaches the high water level
-         then the alert is triggered and pjsip stops processing new requests
-         until the queue reaches the low water level to clear the alert.
+         Change-Id: I4de23e06d4492b0a65e105c8369966547d0faa3e
 
-         This patch adds 2 new 'general' configuration options
-         to tune taskprocessor alert levels:
-         'tps_queue_high' - Taskprocessor high water alert trigger level.
-         'tps_queue_low' - Taskprocessor low water clear alert level
+2016-09-22 01:40 +0000 [a0a17a8c6f]  Aaron An <anjb@ti-net.com.cn>
 
-         ASTERISK-26229 #close
+       * channels/chan_pjsip: fix HANGUPCAUSE function bug.
 
-         Change-Id: I766294fbffedf64053c0d9ac0bedd3109f043ee8
+         HANGUPCAUSE not return 'SIP 200 Ok' when dialed channel answered.
+         This patch change the call order of ast_queue_control_data
+         and ast_queue_control in chan_pjsip_incoming_response.
 
-2016-08-03 09:47 +0000 [9dc8cfabd5]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26396 #close
+         Reported by: AaronAn
+         Tested by: AaronAn
 
-       * astconfigparser: Really handle case where line is simply a comment.
+         Change-Id: Ide2d31723d8d425961e985de7de625694580be61
 
-         The regular expression would match causing the code that handled
-         the line if it was merely a comment to never get executed.
+2016-09-23 09:54 +0000 [0502675e5c]  Alessandro Crespi
 
-         Change-Id: I3e4022481037ebcba9905587fe8c764b4ce21819
+       * chan_sip: Resolve externhost not to IPv6; instead go for IPv4.
 
-2016-07-23 08:51 +0000 [ad3e65433c]  gtjoseph <gjoseph@digium.com>
+         For the channel driver chan_sip, you specify externhost=example.com in sip.conf
+         when your Asterisk is behind a NAT and your IP address is assigned dynamically.
+         Or stated differently: You do not have a static IP address to use "externaddr"
+         directly. This NAT support is quite handy but just about IPv4. Previously,
+         Asterisk resolved "externhost" to any IP version. When the first DNS answer
+         resolved to an IPv6, Asterisk sent an IPv6 in SIP/SDP for origin (o=) and
+         connection (c=). This happened in outgoing SIP-REGISTER and while answering
+         SIP-INVITE. If the remote peer is IPv4-only, it might not handle o=/c= with an
+         IPv6. This change makes sure, no IPv6 is resolved anymore for "externhost".
 
-       * asterisk.c:  Add auto generation and persistence of UUID
+         ASTERISK-18232 #close
+         Reported by: Jacek Kowalski
+         Tested by: Alexander Traud
+         patches:
+          changes.patch submitted by Alessandro Crespi
 
-         Upcoming features will require the generation and persistence
-         of a UUID.
+         Change-Id: If68eedbeff65bd1c1d8a9ed921c02ba464b32dac
 
-         Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d
+2016-09-20 09:42 +0000 [0056bcaebd]  gtjoseph <gjoseph@digium.com>
 
-2016-08-02 12:55 +0000 [efc4034d72]  Kevin Harwell <kharwell@digium.com>
+       * chan_sip:  Address runaway when realtime peers subscribe to mailboxes
 
-       * rest-api: Code out of sync with the model
+         Users upgrading from asterisk 13.5 to a later version and who use
+         realtime with peers that have mailboxes were experiencing runaway
+         situations that manifested as a continuous stream of taskprocessor
+         congestion errors, memory leaks and an unresponsive chan_sip.
 
-         Change-Id: Idccaa26fd4a423d47d013ee592b8fa6a0349c006
+         A related issue was that setting rtcachefriends=no NEVER worked in
+         asterisk 13 (since the move to stasis).  In 13.5 and earlier, when a
+         peer tried to register, all of the stasis threads would block and
+         chan_sip would again become unresponsive.  After 13.5, the runaway
+         would happen.
 
-2016-07-29 13:13 +0000 [f6821fbaec]  Mark Michelson <mmichelson@digium.com>
+         There were a number of causes...
+         * mwi_event_cb was (indirectly) calling build_peer even though calls to
+           mwi_event_cb are often caused by build_peer.
+         * In an effort to prevent chan_sip from being unloaded while messages
+           were still in flight, destroy_mailboxes was calling
+           stasis_unsubscribe_and_join but in some cases waited forever for the
+           final message.
+         * add_peer_mailboxes wasn't properly marking the existing mailboxes
+           on a peer as "keep" so build_peer would always delete them all.
+         * add_peer_mwi_subs was unsubscribing existing mailbox subscriptions
+           then just creating them again.
 
-       * Remove SILK payload mappings from Asterisk core.
+         All of this was causing a flood of subscribes and unsubscribes on
+         multiple threads all for the same peer and mailbox.
 
-         SILK is a bit of a hog when it comes to using up our limited number of
-         dynamic payload types in the RTP engine. By freeing up four slots, it
-         allows for other codecs to potentially take the place.
+         Fixes...
+         * add_peer_mailboxes now marks mailboxes correctly and build_peer only
+           deletes the ones that really are no longer needed by the peer.
+         * add_peer_mwi_subs now only adds subscriptions marked as "new" instead
+           of unsubscribing and resubscribing everything.  It also adds the peer
+           object's address to the mailbox instead of its name to the subscription
+           userdata so mwi_event_cb doesn't have to call build_peer.
 
-         Now, codec_silk.so will dynamically use the payload slots in the RTP
-         engine when it loads.
+         With these changes, with rtcachefriends=yes (the most common setting),
+         there are no leaks, locks, loops or crashes at shutdown.
 
-         A better fix would be make RTP dynamic payload types actually
-         dynamic. However, at this stage of Asterisk 14 development, this is a
-         risky move that would be imprudent.
+         rtcachefriends=no still causes leaks but at least it doesn't lock, loop
+         or crash.  Since making rtcachefriends=no work wasnt in scope for this
+         issue, further work will have to be deferred to a separate patch.
 
-         Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612
-         (cherry picked from commit d50895c7b04036aeaad58990089399e46db4c817)
+         Side fixes...
+          * The ast_lock_track structure had a member named "thread" which gdb
+            doesn't like since it conflicts with it's "thread" command.  That
+            member was renamed to "thread_id".
 
-2016-08-01 11:08 +0000 [102d28c11a]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25468 #close
 
-       * sorcery: Use more compatible regex for local expressions.
+         Change-Id: I07519ef7f092629e1e844f855abd279d6475cdd0
 
-         This changes the use of an empty regex for both res_sorcery_config
-         and res_sorcery_memory to "." instead. This is a more compatible
-         regular expression which also works on FreeBSD.
+2016-09-21 15:03 +0000 [323aff3a09]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-26206 #close
+       * core: Ensure presencestate subtype and message are NULL.
 
-         Change-Id: Ia9166dd176f1597555ba22b6931180d0626c1388
+         When retrieving presence state information there is no
+         guarantee that the subtype and message passed in are
+         set to NULL. This change ensures they are.
 
-2016-08-02 03:08 +0000 [b78d10a2df]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26397 #close
 
-       * res_pjsip: SIP/SDP origin (o=) contained square brackets on IP6 transports.
+         Change-Id: I61f8187972d5d8bbd7d6b7f4daa4f4f7e8237b23
 
-         ASTERISK-26256 #close
+2016-09-21 10:48 +0000 [10c180760c]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I3fd68df561f81fdb8c6c497d465b50c12422f058
+       * res_odbc: Make pooling option deprecation notice more useful.
 
-2016-08-01 16:13 +0000 [1f95c011c7]  gtjoseph <gjoseph@digium.com>
+         This changes the notice for the deprecation of the old
+         pooling options to point to the new option for doing
+         pooling. This gives a clearer direction as to what to
+         look into.
 
-       * menuselect:  Add an opaque "member_data" string to the acceptable xml
+         ASTERISK-26389 #close
 
-         Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe
+         Change-Id: I2ca9cdfdcd75aec170a7db9d5ff69a4cd25b7c10
 
-2016-07-27 09:56 +0000 [df42f64d62]  David M. Lee <dlee@respoke.io>
+2016-09-12 07:37 +0000 [42cc267016]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-       * Replace strdupa with more portable ast_strdupa
+       * cdr_mysql: fix UTC support
 
-         The strdupa function is a GNU extension, and not widely portable. We
-         have an ast_strdupa function used within Asterisk which is preferred.
-         I pulled the definition up from menuselect.c into the menuselect.h
-         header file so it can be shared across menuselect.
+         * Make 'cdrzone=UTC' work properly.
+         * Fix the documentation of cdr_mysql.conf: it's cdrzone and not timezone
 
-         Change-Id: I9593c97f78386b47dc1e83201e80cb2f62b36c2e
+         ASTERISK-26359 #close
 
-2016-07-24 18:27 +0000 [56a07fbab9]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I2a6f67b71bbbe77cac31a34d0bbfb1d67c933778
 
-       * menuselect:  Various menuselect enhancements
+2016-09-21 08:46 +0000 [f16ab19292]  Joshua Colp <jcolp@digium.com>
 
-         * Add 'external' as a support level.
-         * Add ability for module directories to add entries to the menu
-           by adding members to the <module_prefix>/<module_prefix>.xml file.
-         * Expand the description field to 3 lines in the ncurses implementation.
-         * Allow the description field to wrap in the newt implementation.
-         * Add description field to the gtk implementation.
+       * odbc: Remove options that are no longer applicable.
 
-         Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808
-         (cherry picked from commit 90f445729d5d86050d9d379485ff0a99f4a006c1)
+         The pooling, shared_connection, limit, and idlecheck options
+         are no longer used in res_odbc.
 
-2016-07-29 04:48 +0000 [7f9369c1b6]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26389
 
-       * astconfigparser: Handle case where line is simply a comment.
+         Change-Id: I2fde7b467d01f9d1c82cc0a339bb4f7e1dd6bbe6
 
-         Change-Id: I2dea5815363f4d787d709228a04f33baee383ef5
+2016-09-20 15:17 +0000 [c9ce299b64]  Corey Farrell <git@cfware.com>
 
-2016-07-28 14:10 +0000 [57e9c66819]  Corey Farrell <git@cfware.com>
+       * core: Fix LOW_MEMORY missing symbol ast_pbx_uuid_get.
 
-       * pbx.c: Fix handling of '-' in extension name and callerid
+         Move the function outside the conditional block that excludes
+         LOW_MEMORY.
 
-         This adds a two strings to ast_exten.  name to go with exten and
-         cidmatch_display to go with cidmatch.  The new fields contain input used
-         to add the extension in the first place.  The existing fields now
-         contain stripped input that excludes insignificant spaces and dashes.
-         These stripped fields should always be used for comparisons.  The
-         unstripped fields should normally be used for display, but displaying
-         stripped values will not cause runtime errors.
+         ASTERISK-26273 #close
 
-         Note the actual string is only stored twice if it contains dashes.  If
-         no dashes are found then both 'char *' fields point to the same memory.
-         So this change has a minimum effect on memory usage.
+         Change-Id: Ic290fa128222c410c3531107e30efacabc8493b4
 
-         The existing functions ast_get_extension_name and
-         ast_get_extension_cidmatch return unstripped values as they did before
-         this change.  Other similar bugs likely still exist where unstripped
-         extensions are saved outside pbx.c then passed back in.
+2016-09-20 10:05 +0000 [610eb4c189]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-26233 #close
+       * logger: Fix default console settings.
 
-         Change-Id: I6cd61ce57acc1570ca6cc14960c4c3b0a9eb837f
+         When logger.conf is missing or invalid we should be printing notices,
+         warnings and errors to the console.  The logmask was incorrectly
+         calculated.
 
-2016-07-27 17:17 +0000 [873fc0fda5]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ibaa9465a8682854bc1a5e9ba07079bea1bfb6bb3
 
-       * pbx.c: Allow dangerous functions when adding a hint to dialplan.
+2016-06-27 14:26 +0000 [36092ee3a0]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         We can allow dangerous functions when adding a hint since altering
-         dialplan is itself a privileged activity.  Otherwise, we could never
-         execute dangerous functions.
+       * sd_notify (systemd status notifications) support
 
-         ASTERISK-25996 #close
-         Reported by: Andrew Nagy
+         sd_notify() is used to notify systemd of changes to the status of the
+         process. This allows the systemd daemon to know when the process
+         finished loading (and thus only start another program after Asterisk has
+         finished loading).
 
-         Change-Id: I4929ff100ad1200a0198262d069a34f2296e77ba
+         To use this, use a systemd unit with 'Type=notify' for Asterisk.
 
-2016-07-21 10:36 +0000 [f00525a6f6]  Alexei Gradinari <alex2grad@gmail.com>
+         This commit also adds the function ast_sd_notify(), a wrapper around
+         sd_notify that does nothing if not built with systemd support.
 
-       * pjproject: fixed a few bugs
+         Also adds support for libsystemd detection in the configure script.
 
-         This patch fixes the issue in pjsip_tx_data_dec_ref()
-         when tx_data_destroy can be called more than once,
-         and checks if invalid value (e.g. NULL) is passed to.
+         Change-Id: Ied6a59dafd5ef331c5c7ae8f3ccd2dfc94be7811
+         (cherry picked from commit 07b95f7c65b7c083724f1af2b26f93cc22cad58c)
 
-         This patch updates array limit checks and docs
-         in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability().
+2016-09-19 14:21 +0000 [9372d32100]  Walter Doekes <walter+github@wjd.nu>
 
-         Change-Id: I4c7a132b9664afaecbd6bf5ea4c951e43e273e40
+       * asterisk.c: Non-root users also get the astcanary after core restart.
 
-2016-07-17 18:28 +0000 [972cee2e4c]  gtjoseph <gjoseph@digium.com>
+         Without this change, a 'core restart' would kill the astcanary forever
+         if you're not running as root. Both with and without this patch, the
+         scheduling priority was still SCHED_RR after restart.
 
-       * pjproject_bundled:  Update for pjproject 2.5.5
+         Additionally, the astcanary is now spawned if you start with high
+         priority and Asterisk doesn't get a chance to lower it. For example
+         through: `chrt -r 10 sudo -u asterisk asterisk -c`
 
-         Add more --disable-* switches to Makefile.rules including
-         --disable-opus which was causing bundled pjproject to fail with
-         "undefined reference" errors in libasteriskpj.
+         Also reap killed astcanary processes on core restart.
 
-         Changed PJ_ENABLE_EXTRA_CHECK to 1.
+         ASTERISK-26352 #close
 
-         Removed 2 obsolete patches and added a new one.
-         The new one was merged by Teluu on 6/27/2016.
+         Change-Id: Iacb49f26491a0717084ad46ed96b0bea5f627a55
 
-         ASTERISK-26148 #close
+2016-09-19 09:40 +0000 [e96448e991]  Walter Doekes <walter+github@wjd.nu>
 
-         Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063
+       * asterisk.c: When astcanary dies on linux, reset priority on all threads.
 
-2016-07-27 10:33 +0000 [8902a51d59]  David M. Lee <dlee@respoke.io>
+         Previously only the canary checking thread itself had its priority set
+         to SCHED_OTHER. Now all threads are traversed and adjusted.
 
-       * Portably sscanf tv_usec
+         ASTERISK-19867 #close
+         Reported by: Xavier Hienne
 
-         In a timeval, tv_usec is defined as a suseconds_t, which could be
-         different underlying types on different platforms. Instead of trying to
-         scanf directly into the timeval, scanf into a long int, then copy that
-         into the timeval.
+         Change-Id: Ie0dd02a3ec42f66a78303e9c1aac28f7ed9aae39
 
-         Change-Id: I29f22d049d3f7746b6c0cc23fbf4293bdaa5eb95
+2016-09-09 06:35 +0000 [01884a7af6]  Timo Teräs <timo.teras@iki.fi>
 
-2016-07-27 12:36 +0000 [852e763571]  Kevin Harwell <kharwell@digium.com>
+       * Fix showing of swap details when sysinfo() is available
 
-       * rtp_engine: Failed assertion and wrong name given for codec
+         If sysinfo() is available, but not sysctl() or swapctl() the
+         printing code for swap buffer sizes is incorrectly omitted.
+         The above condition happens with musl c-library.
 
-         Fixed an assert check that would trigger when the passed in value was negative.
-         The negative value was being cast to an unsigned value. This resulted in the
-         check failing.
+         Fix #if rule to consider defined(HAVE_SYSINFO). And also
+         remove the redundant || defined(HAVE_SYSCTL) which was
+         incorrectly there to start with. Now swap information is
+         displayed only if an actual libc function to get it is
+         available.
 
-         Also fixed another problem when loading formats in the engine. When setting the
-         mime type the format's name was being passed in instead of the codec's name.
+         This also fixes warnings previously seen with musl libc:
 
-         Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c
+            [CC] asterisk.c -> asterisk.o
+         asterisk.c: In function 'handle_show_sysinfo':
+         asterisk.c:773:6: warning: variable 'totalswap' set but not used
+          [-Wunused-but-set-variable]
+           int totalswap = 0;
+               ^~~~~~~~~
+         asterisk.c:770:11: warning: variable 'freeswap' set but not used
+          [-Wunused-but-set-variable]
+           uint64_t freeswap = 0;
+                    ^~~~~~~~
 
-2016-07-21 22:44 +0000 [e8c34680ca]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I1fb21dad8f27e416c60f138c6f2bff03fb626eca
 
-       * dsp.c: Add fax and DTMF detection unit tests.
+2016-09-12 18:00 +0000 [cdbad152c7]  Richard Mudgett <rmudgett@digium.com>
 
-         * Add fax amplitude and frequency sweep tests.
-         * Add DTMF amplitude and twist unit tests.
+       * res_config_odbc.c: Fix buffer size limitation creating invalid SQL.
 
-         Change-Id: I8d77c9a1eec89e440d715f998c928687e870c3f7
+         Creating ODBC SQL queries resulted in queries too large to fit into the
+         supplied buffer.  The resulting truncated buffer contained an invalid SQL
+         query.
 
-2016-07-21 11:56 +0000 [c1f240b818]  Richard Mudgett <rmudgett@digium.com>
+         * Made SQL query generation code use a thread storage buffer that can
+         increase in size as needed.
 
-       * dsp.c: Added descriptive comments to Goertzel calculations.
+         * Fixed bad multi-line warning messages.
 
-         * Added doxygen to describe some struct members and what is going on in
-         the code.
+         ASTERISK-26263 #close
+         Reported by: Jeppe Ryskov Larsen
 
-         Change-Id: I2ec706a33b52aee42b16dcc356c2bd916a45190d
+         Change-Id: I23f3cdd43c2dac80bed3ded4dd77d18cb17f21ae
 
-2016-07-13 13:48 +0000 [003a52fd62]  Richard Mudgett <rmudgett@digium.com>
+2016-09-14 08:42 +0000 [449719be00]  Joshua Colp <jcolp@digium.com>
 
-       * dsp.c: Fix incorrect format reference typo.
+       * res_pjsip_multihomed: Change Contact port to listening port.
 
-         Change-Id: Ia131da3ec29acf385cb43a586a29ecc975eb3896
+         The res_pjsip_multihomed module determines what interface and transport
+         a request is going out on and updates the SIP message accordingly with
+         the address information. This currently incorrectly updates the Contact
+         header for connectionful protocols to the ephemeral connection port,
+         instead of the bound address for the listening socket which can actually
+         accept the connection back. If the remote side attempts to connect back on
+         the epehemeral port it will fail.
 
-2016-07-25 21:18 +0000 [4c0a0cbe02]  Richard Mudgett <rmudgett@digium.com>
+         This change makes it so the port is updated to the bound port on
+         connectionful protocols and is maintained on UDP (as there can be
+         multiple of those).
 
-       * dsp.c: Correct DTMF twist dsp.conf documentation.
+         ASTERISK-26374 #close
 
-         Change-Id: Idf97e3a72f1edc5fca58f2fa7b20785922be0cae
+         Change-Id: I50f8dab65b9f75117d73ba5f6bbcf6c9871854ab
 
-2016-07-22 04:43 +0000 [87433c2566]  Joshua Colp <jcolp@digium.com>
+2016-09-07 14:48 +0000 [4d64b176eb]  gtjoseph <gjoseph@digium.com>
 
-       * astconfigparser.py: Update with realtime fixes.
+       * pjproject_bundled:  Prevent SERVFAIL from marking name server bad
 
-         When configuring SIP URIs in the pjsip.conf file it is
-         necessary to escape the semicolon so the parser does not
-         treat it as a comment. This change allows this to work in
-         the astconfigparser implementation.
+         A name server that returns "Server Failure" is indicating only that
+         the server couldn't process that particular request.  We should NOT
+         assume that the name server is incapable of serving other requests.
 
-         A secondary bug where some data was lost if a configuration
-         option included a "=" in its value was also fixed.
+         Here's the scenario we've been encountering...
 
-         A bug where sections would be considered equal despite
-         being different has also been fixed.
+         * 2 local name servers configured in resolv.conf.
+         * An OPTIONS request causes a request for A and AAAA records to go out
+           to both nameservers.
+         * The A responses both come back successfully resolved.
+         * Because of an issue at some upstream nameserver, the AAAA responses
+           for that particular query come back as "SERVFAIL" from both local
+           name servers.
+         * Both local servers are marked as bad and no further queries can be
+           sent until the 60 second ttl expires.  Only previously cached results
+           can be used.
+         * In this case, 60 seconds is just enough time for another OPTIONS
+           request to go out to the same host so the cycle repeats.
 
-         Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8
+         We could set the bad ttl really low but that also affects REFUSED and
+         NOTAUTH which probably DO signal a real server issue.  Besides, even
+         a really low bad ttl would be an issue on a pbx.
 
-2016-07-28 14:32 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         Although we use our own resolver in 14 and master and don't have this
+         issue there, Teluu has merged this patch upstream so it's appropriate
+         to cherry-pick to 14 and master to keep pjproject consistent.
 
-       * asterisk 13.11.0-rc1 Released.
 
-2016-07-28 09:29 +0000 [3bfaf6b172]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Ie03ba902288e274aff23f9b9bb2786e1e8be09e0
 
-       * Release summaries: Add summaries for 13.11.0-rc1
+2016-09-14 07:59 +0000 [1cac856e17]  Joshua Colp <jcolp@digium.com>
 
-2016-07-28 09:27 +0000 [ca145e1807]  Mark Michelson <mmichelson@digium.com>
+       * rtp: Preserve timestamps on video frames.
 
-       * .version: Update for 13.11.0-rc1
+         Currently when receiving video over RTP we store only
+         a calculated samples on the frame. When starting the video
+         it can take some time for this calculation to actually yield
+         a value as it requires constant changing timestamps. As well
+         if a video frame passes over multiple RTP packets this calculation
+         will fail as the timestamp is the same as the previous RTP
+         packet and the number of samples calculated will be 0.
 
-2016-07-28 09:27 +0000 [918ebf79ff]  Mark Michelson <mmichelson@digium.com>
+         This change preserves the timestamp on the frame and allows
+         it to pass through the core. When sending the video this timestamp
+         is used instead of a new one being calculated.
 
-       * .lastclean: Update for 13.11.0-rc1
+         ASTERISK-26367 #close
 
-2016-07-28 09:27 +0000 [d7afc1cf9d]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Iba8179fb5c14c9443aee4baf670d2185da3ecfbd
 
-       * realtime: Add database scripts for 13.11.0-rc1
+2016-09-14 09:51 +0000 [9df4056d70]  Joshua Colp <jcolp@digium.com>
 
-2016-07-21 22:28 +0000 [159e437e5a]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_transport_management: Convert time in log message to seconds.
 
-       * dsp.c: Fix erroneous fax tone detection.
+         ASTERISK-26375 #close
 
-         The Goertzel calculations get less accurate the lower the signal level
-         being worked with becomes because there is less resolution remaining.
-         If it is too low we can erroneously detect a tone where none really
-         exists.  The searched for fax frequencies not only need to be so much
-         stronger than the background noise they must also be a minimum strength.
+         Change-Id: I46496af5cae41413e76d44d2068a7431279f09dc
 
-         * Add needed minimum threshold test to tone_detect().
+2016-09-13 05:34 +0000 [98e42cc662]  Steve Davies <steve@one47.co.uk>
 
-         * Set TONE_THRESHOLD to allow low volume frequency spread detection.
+       * chan_sip: Fix session timeout on retransmit of non-UDP packets
 
-         ASTERISK-26237 #close
-         Reported by: Richard Mudgett
+         Change-Id I1cd33453c77c56c8e1394cd60a6f17bb61c1d957 Enable Session-Timers for
+         SIP over TCP (and TLS) also disables SIP retransmits in chan_sip for non-UDP
+         connections, allowing the TCP layer to handle the retransmits. Unfortunately,
+         this caused sessions to be terminated with a retransmit timeout becasue it
+         stopped at the point of the first retrans call.
 
-         Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc
+         This patch waits for the 64*T1 timer to expire instead.
 
-2016-07-22 14:44 +0000 [eda95236d1]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-19968
 
-       * Fix sqlalchemy error regarding identifier length.
+         Change-Id: I844f26801aada10bc94e9bebe6e151f0a8443204
 
-         sqlalchemy was complaining:
+2016-09-12 12:25 +0000 [0388882cdb]  Richard Mudgett <rmudgett@digium.com>
 
-         sqlalchemy.exc.IdentifierError: Identifier
-         'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30
-         characters
+       * app_queue: Fix CLI "queue show" and AMI Queues action output truncation.
 
-         This fixes the problem by changing the index name to be
-         "ps_contacts_qualifyfreq_exp" instead.
+         The output of CLI "queue show" and AMI Queues action is truncated and
+         "failed to extend from 240 to 327" messages are generated if the queue
+         member and interface names are lengthy.
 
-         ASTERISK-26227 #close
-         Reported by Mark Michelson
+         * Increase the string buffer size from 240 to 512 in order to accommodate
+         for more information fields added to the output since v1.8.
 
-         Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9
+         ASTERISK-26360 #close
+         Reported by: Richard Mudgett
 
-2016-07-22 05:46 +0000 [66c9dfb272]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: Id99c03cf5362453b80491a4b3b0434cb67aa966d
 
-       * chan_sip: Enable Session-Timers for SIP over TCP (and TLS).
+2016-09-12 03:28 +0000 [da8ba990d1]  Walter Doekes <walter+github@wjd.nu>
 
-         Asterisk defaults to timers=accept/refresher=uas. In that scenario, only in that
-         scenario, Sessions-Timers (RFC 4028) had no effect via TCP. This change enables
-         Session-Timers for SIP over TCP (and for SIP over TLS).
+       * chan_sip: Allow target refresh (Contact update) on re-INVITE.
 
-         However with longer international calls via TCP, the SIP channel might break,
-         because all hops on the Internet route must stay online (have not a single power
-         outage, for example). Therefore with Session-Timers enabled (which are enabled
-         at default), you might see dropped calls. Consequently even with this change,
-         you might be better-off going for session-timers=refuse in your sip.conf.
-
-         ASTERISK-19968 #close
+         Previously, the Contact was stored only on initial INVITE and on any
+         18X and 200. That meant that after re-INVITEs from *us* the Contact
+         could get updated, but after re-INVITEs from the *peer*, it did not.
 
-         Change-Id: I1cd33453c77c56c8e1394cd60a6f17bb61c1d957
+         This changeset fixes this inconsistency, properly allowing target
+         refreshes through re-INVITES (RFC3261, 12.2).
 
-2016-07-15 16:16 +0000 [33716106e0]  Richard Mudgett <rmudgett@digium.com>
+         If your strictrtp setting allows it, this change allows you to switch
+         the source IP of a connected/calling device mid-call with a simple
+         re-INVITE from the new IP.
 
-       * res_pjsip: Whitespace and comment cleanup.
+         ASTERISK-26358 #close
 
-         Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38
+         Change-Id: Ibb8512054ab27c8c3d2514022568fde943bf2435
 
-2016-07-21 09:05 +0000 [52ab0bf258]  gtjoseph <gjoseph@digium.com>
+2016-08-31 15:22 +0000 [e9ddab4685]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_sip: Prevent deadlock when issuing "sip show channels"
+       * sip_to_pjsip.py: Map legacy_useroption_parsing.
 
-         sip_show_channels locks the dialogs container first then locks each
-         sip_pvt so it can spit out the details.  The rest of sip dialog
-         processing locks the sip_pvt first then locks the dialogs container
-         if it needs to.  Both lock in the order they need but deadlocks can
-         result.  To fix, sip_show_channels and sip_show_channelstats have
-         been converted to use an iterator rather than ao2_callback.  This way
-         the container is locked only while getting the next entry and is
-         unlocked when the callback is called.
+         Map the sip.conf general section legacy_useroption_parsing to the
+         new pjsip.conf global ignore_uri_user_options.
 
-         ASTERISK-23013 #close
+         ASTERISK-26316
+         Reported by: Kevin Harwell
 
-         Change-Id: Id9980419909e811f89484950ed46ef117b9eb990
+         Change-Id: I78108a31995db19d41f4e1a07b3324692c5363fc
 
-2016-07-19 15:22 +0000 [5997ec7c9e]  Alexei Gradinari <alex2grad@gmail.com>
+2016-08-29 18:08 +0000 [30af92e78d]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice.
+       * res_pjsip: Add ignore_uri_user_options option.
 
-         This patch removed call of pjsip_tx_data_dec_ref in send_notify
-         if send_request failed.
-         The pjsip_dlg_send_request deletes the message on error by itself.
+         This implements the chan_sip legacy_useroption_parsing option but with a
+         better name.
 
-         It seems this patch fixes next issues:
-         ASTERISK-26199
-         ASTERISK-26166
-         ASTERISK-26174
+         * Made the caller-id number and redirecting number strings obtained from
+         incoming SIP URI user fields always truncated at the first semicolon.
+         People don't care about anything after the semicolon showing up on their
+         displays even though the RFC allows the semicolon.
 
-         Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a
+         ASTERISK-26316 #close
+         Reported by: Kevin Harwell
 
-2016-07-18 22:46 +0000 [7fdf7c3d4c]  Corey Farrell <git@cfware.com>
+         Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62
 
-       * Add conditional support for noreturn functions.
+2016-09-09 06:26 +0000 [7ed5dc2c58]  Walter Doekes <walter+github@wjd.nu>
 
-         This adds support for tagging functions with the noreturn attribute.
-         If DO_CRASH is enabled then ast_do_crash never returns.  If AST_DEVMODE
-         and DO_CRASH are enabled then failed assertions never return.  This can
-         resolve a large number of false positives with static analyzers.
+       * contrib: Let safe_asterisk script continue without /dev/tty9.
 
-         ASTERISK-26220 #close
+         If you use the safe_asterisk script, it uses hardcoded defaults before
+         running configurable values from /etc/asterisk/startup.d. The hardcoded
+         default has TTY=9. Some containerized environments don't have such a
+         TTY, and safe_asterisk would stop.
 
-         Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753
+         The custom configuration from /etc/asterisk/startup.d/* isn't read until
+         after it stopped, so changing TTY in a custom config did not help.
 
-2016-07-19 13:18 +0000 [dcb8aa8c1c]  Richard Mudgett <rmudgett@digium.com>
+         This changeset changes safe_asterisk to continue if the TTY setting was
+         untouched and /dev/tty9 and /dev/vc/9 aren't found.
 
-       * chan_dahdi.c: Fix deadlock potential in fax redirection.
+         Change-Id: I2c7cdba549b77f418a0af4cb1227e8e6fe4148fc
 
-         The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to
-         deadlock if an incoming fax happens during the Playback or similar
-         application.
+2016-09-09 05:39 +0000 [7580a736bb]  Joshua Colp <jcolp@digium.com>
 
-         * Fixed the potential deadlock by not calling ast_async_goto() with the
-         channel lock held.
+       * res_pjsip: Only invoke unidentified endpoint logic when unidentified.
 
-         ASTERISK-26216 #close
-         Reported by: Richard Mudgett
+         The code was incorrectly invoking the unidentified logic when
+         an endpoint had actually been identified, causing log messages
+         to be output.
 
-         Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa
+         ASTERISK-26349 #close
 
-2016-07-13 18:49 +0000 [fa91cf3eec]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id8104fc9e3d138d5e8b6f6977ecc08765fd17d4f
 
-       * chan_sip.c: Fix deadlock potential in fax redirection.
+2016-08-23 06:35 +0000 [efcfc4c1ee]  Corey Farrell <git@cfware.com> (license 5909)
 
-         The sip_read() has the potential to deadlock if an incoming fax happens
-         during the Playback or similar application.
+       * chan_sip: Don't allocate new RTP instances on top of old ones.
 
-         * Fixed the potential deadlock by not calling ast_async_goto() with the
-         channel lock held.
+         In some scenarios dialog_initialize_rtp can be called multiple times on
+         the same dialog.  This can cause RTP instances to be leaked along with
+         multiple file descriptors for each instance.
 
-         * Made always eat the fax detection frame whether there is a fax extension
-         or not.
+         This change makes it so the existing RTP instances are destroyed and
+         not overwritten, stopping the memory leak.
 
-         ASTERISK-26216
-         Reported by: Richard Mudgett
+         ASTERISK-26272 #close
+         patches:
+           ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909)
 
-         Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e
+         Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73
 
-2016-07-13 18:48 +0000 [2e1bdc3775]  Richard Mudgett <rmudgett@digium.com>
+2016-08-16 15:34 +0000 [f1ffc22933]  Mark Michelson <mmichelson@digium.com>
 
-       * chan_pjsip.c: Fix deadlock potential in fax redirection.
+       * res_pjsip: Do not crash on ACKs from unknown endpoints.
 
-         The chan_pjsip_cng_tone_detected() has the potential to deadlock if an
-         incoming fax happens during the Playback or similar application.
+         The endpoint identification PJSIP module is intended to identify which
+         endpoint an incoming request is from. If an endpoint is not identified,
+         then an artificial endpoint is used in its place when proceeding.
 
-         * Fixed the potential deadlock by not calling ast_async_goto() with the
-         channel lock held.
+         The problem is that the ACK request type is an exception to the rule.
+         The artificial endpoint is not used when processing an ACK. This results
+         in the possibility of having a NULL endpoint being used further on.
 
-         * Made always eat the fax detection frame whether there is a fax extension
-         or not.
+         The reason ACK is an exception is an attempt not to spam security logs
+         with unidentified requests. Presumably, you've already logged the
+         unidentified request on the preceeding INVITE.
 
-         ASTERISK-26216
-         Reported by: Richard Mudgett
+         Up until Asterisk 13.10, retrieving a NULL endpoint in this fashion
+         didn't cause an issue. A new change in 13.10 added endpoint ACL checking
+         shortly after endpoint identification. Because we are accessing a NULL
+         endpoint, this ACL check resulted in a crash.
 
-         Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5
+         The fix here is to be sure to retrieve the artificial endpoint for all
+         request types. ACKs still do not generate unidentified request security
+         events.
 
-2016-07-12 17:33 +0000 [628e8c91d5]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26264 #close
+         Reported by nappsoft
 
-       * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook.
+         AST-2016-006
 
-         The fax_detect_framehook() has the potential to deadlock if an incoming
-         fax happens during the Playback or similar application.
+         Change-Id: Ie0c795ae2d72273decb972dd74b6a1489fb6b703
 
-         * Fixed the potential deadlock by not calling ast_async_goto() with the
-         channel lock held.
+2016-09-06 11:46 +0000 [23d6ec7417]  Richard Mudgett <rmudgett@digium.com>
 
-         * Made always eat the fax detection frame whether there is a fax extension
-         or not.
+       * res_pjsip_messaging.c: Misc cleanups and fixes.
 
-         * Made only detach the framehook if we detected a fax and not on other
-         possible frames.
+         * Eliminated RAII_VAR in get_outbound_endpoint().
 
-         ASTERISK-26216
-         Reported by: Richard Mudgett
+         * Simplify update_to() coding.  However, this function can only be a NoOp
+         because the To string can only be a URI and not a name-address formatted
+         string.
 
-         Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d
+         * Simplify update_from() coding.  Also fixed a code path modifying the
+         from string when the caller could still want to use the original string.
 
-2016-07-12 17:24 +0000 [676aeede36]  Richard Mudgett <rmudgett@digium.com>
+         * Fixed msg_data_create() incompletely removing the "pjsip:" to then add
+         back the "sip:" string if needed.  The code didn't handle the "pjsip:sip:"
+         case because it left the colon after pjsip in the string.
 
-       * res_fax: Fix FAXOPT(faxdetect) timeout option.
+         Change-Id: I68a09a665f6d4daa9eaa59069045ab69122e28db
 
-         The fax detection timeout option did not work because basically the wrong
-         variable was checked in fax_detect_framehook().  As a result, the timer
-         would timeout immediately and disable fax detection.
+2016-09-07 16:00 +0000 [5f19657710]  Joshua Colp <jcolp@digium.com>
 
-         * Fixed ignoring negative timeout values.  We'd complain and then go right
-         on using the negative value.
+       * res_pjsip: Allow global headers to be overridden.
 
-         * Fixed destroy_faxdetect() in the off-nominal case of an incomplete
-         object creation.
+         Currently when you add global headers from the dialplan both
+         the header in the dialplan and the globally configured header
+         are added to the resulting SIP INVITE. This change makes it
+         so the headers in the dialplan take precedence and are the
+         only ones added.
 
-         * Added more range checking to FAXOPT(gateway) timeout parameter.
+         Change-Id: I36f864298f38db3632ad503edc11267cb8ffb3ad
 
-         ASTERISK-26214 #close
-         Reported by: Richard Mudgett
+2016-08-11 12:10 +0000 [206d4f57dc]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976
+       * followme: initialize all config items on reload
 
-2016-07-18 16:16 +0000 [652130feb2]  Richard Mudgett <rmudgett@digium.com>
+         Some configuration directives were not initialized on reload, and hence
+         were not reset to default if they were removed from followme.conf.
 
-       * chan_dahdi: Add faxdetect_timeout option.
+         ASTERISK-26288 #close
 
-         The new option allows the channel driver's faxdetect option to timeout on
-         a call after the specified number of seconds into a call.  The new feature
-         is disabled if the timeout is set to zero.  The option is disabled by
-         default.
+         Change-Id: Ief829e16374ad1e0ecfd63e6ee4923b5a1d1c150
 
-         * Don't clear dsp_features after passing them to the dsp code in
-         my_pri_ss7_open_media().  We should still remember them especially for the
-         new faxdetect_timeout option.
+2016-08-01 20:55 +0000 [117a7741c8]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26214
-         Reported by: Richard Mudgett
+       * build: Add download capability for external packages
 
-         Change-Id: Ieffd3fe788788d56282844774365546dce8ac810
+         The DPMA and g729a, silk, siren7 and siren14 codecs hosted at
+         http://downloads.digium.com/pub/telephony/ are now listed in the
+         "External" sections of the "Resource Modules" and "Codec Translators"
+         pages in menuselect.  Any that are selected will automatically be
+         downloaded and installed when "make install" is run.  Their LICENSE and
+         README (if avaialble) files will be installed to
+         ASTVARLIBDIR/documentation/thirdparty/<product_name>.
 
-2016-07-15 20:44 +0000 [851b1c3a17]  Richard Mudgett <rmudgett@digium.com>
+         Example use with codecs:
 
-       * res_pjsip: Add fax_detect_timeout endpoint option.
+         The codecs/codecs.xml file is a menuselect style xml file that lists
+         the codecs to be included.  Their support levels are 'external', which
+         triggers the download and install, and defaultenabled is no.  Also
+         because codec_g729a is actually in a directory named codec_g729 on the
+         download server, the newly added 'member_data' element is used to
+         override the default of the directory name being the package name.  You
+         can use the 'directory_name' attribute to keep default base URL
+         (http://downloads.digium.com/pub/telephony/) but use the new directory,
+         or you use the 'remote_url' attribute to specify a full URL to the
+         download directory.  In this case, you must still follow the same
+         subdirectory naming conventions as that used for the packages located
+         at 'http://downloads.digium.com/pub/telephony'.
 
-         The new endpoint option allows the PJSIP channel driver's fax_detect
-         endpoint option to timeout on a call after the specified number of
-         seconds into a call.  The new feature is disabled if the timeout is set
-         to zero.  The option is disabled by default.
+         A new configure option '--with-externals-cache' was added and like
+         '--with-sounds-cache' it allows the installer to cache tarballs so
+         they're not downloaded every time.
 
-         ASTERISK-26214
-         Reported by: Richard Mudgett
+         To assist with the download and install process, each external package
+         now has a manifest.xml file that, among other things, contains a package
+         version and checksums for each file in the tarball.  The manifest is
+         saved to both the cache directory and ASTMODDIR and together with the
+         manifest.xml on the downloads site, tells the install scripts whether
+         a download and/or update is needed.
 
-         Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d
+         bash and xmlstarlet are required for downloader operation.  If they're
+         not installed, the external items in menuselect will be unavailable.
 
-2016-07-19 04:48 +0000 [021d4892cd]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: Id3dcf1289ffd3cb0bbd7dfab3cafbb87be60323a
 
-       * Makefile: Retain XML Declaration and DTD in docs.
+2016-09-06 02:41 +0000 [d04ae7d1d8]  Walter Doekes <walter+github@wjd.nu>
 
-         Since Asterisk 12, the documentation got an XML Stylesheet. Because of a typo,
-         the XML Declaration and DTD were overwritten by this.
+       * chan_sip: Don't refuse calls with "optional crypto"; fall back to RTP.
 
-         ASTERISK-26212 #close
+         Certain SNOM phones send so-called "optional crypto" in their SDP body.
+         Regular SRTP setup looks like this:
 
-         Change-Id: If5ee4625068042e98ab3fcb22a25e2f15d0c68bd
+             m=audio 64620 RTP/SAVP 8 0 9 99 3 18 4 101
+             a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:...
 
-2016-07-18 18:39 +0000 [c8e41d14a1]  Corey Farrell <git@cfware.com>
+         SNOM-style "optional crypto" looks like this:
 
-       * Unit tests: Use AST_TEST_DEFINE in conditional code only.
+             m=audio 61438 RTP/AVP 8 0 9 99 3 18 4 101
+             a=crypto:1 AES_CM_128_HMAC_SHA1_32 inline:...
 
-         If AST_TEST_DEFINE is not conditional to TEST_FRAMEWORK it produces dead
-         code.  This places all existing unit tests into a conditional block if
-         they weren't already.
+         A crypto line is supplied, but the m-line does not have SAVP.
 
-         ASTERISK-26211 #close
+         When res_srtp.so is *not* loaded, then chan_sip.so treats the optional
+         crypto as regular RTP, but when res_srtp.so *is* loaded, it refuses the
+         incoming call with the following message:
 
-         Change-Id: I8ef83ee11cbc991b07b7a37ecb41433e8c734686
+             WARNING: process_sdp: Failed to receive SDP offer/answer with
+             required SRTP crypto attributes for audio
 
-2016-07-18 05:13 +0000 [e404f51b42]  Alexander Traud <pabstraud@compuserve.com>
+         For platforms that want to start providing SRTP this presents a
+         compatibility problem.
 
-       * res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets.
+         This changeset lets chan_sip handle the SDP as if no crypto-line was
+         supplied: i.e. accept the call as regular RTP, just like it did before
+         res_srtp was loaded.
 
-         With this change, the initial RTP sequence number is randomly chosen not between
-         0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over
-         counter (ROC) synchronization is not lost for sRTP, when the very first RTP
-         packets get lost; see http://srtp.sourceforge.net/faq.html#Q6
+         Now you'll get this informative warning instead:
 
-         ASTERISK-26207 #close
+             WARNING: Ignoring crypto attribute in SDP because RTP transport is
+             insecure
 
-         Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464
+         ASTERISK-23989 #close
+         Reported by: Olle Johansson
 
-2016-07-18 04:14 +0000 [5f24874ebb]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I91a15ae05a0296e398d6b65f53bb11afde1d80e2
 
-       * Makefile: Suppress echoing of target 'config' again.
+2016-09-03 16:04 +0000 [df3d0188e4]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-26038 #close
+       * apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option
 
-         Change-Id: I5746cf639f3fdc6332e8a97cf01f979e30bf403f
+         In any scenario in which the callee is not connected to the caller, the
+         current code in app_dial will crash due to raising a Dial End Stasis
+         Message after the callee channel has been hung up. This patch corrects
+         the error by simply moving the explicit hangup of the callee (peer)
+         channel until after the dial end message.
 
-2016-07-14 03:25 +0000 [76d4983c15]  Corey Farrell <git@cfware.com>
+         ASTERISK-25691 #close
 
-       * features.c: Remove unneeded adsi.h include.
+         Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d
 
-         adsi.h is no longer used by features.c since parking was moved to a
-         module.
+2016-09-03 16:02 +0000 [a64063cc97]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I2248b8a455225a17cb6ddaafd6c20c511a1eaf59
+       * apps/app_dial: Set the DIALSTATUS to NOANSWER on privacy option 5
 
-2016-07-14 18:06 +0000 [cb58f853e1]  Alexei Gradinari <alex2grad@gmail.com>
+         If the callee selects option '5' using the Dial application's privacy
+         (P) option, the DIALSTATUS is erroneously set to ANSWER. This option
+         reflects the callee sending the caller to VoiceMail one time; the call
+         is definitely *not* ANSWERed in such a scenario. With this patch, the
+         DIALSTATUS is instead set to NOANSWER, which is the same DIALSTATUS that
+         is set when the 'send to VoiceMail every time' option is set.
 
-       * res_pjsip_mwi: remove unneeded check on endpoint's contacts.
+         ASTERISK-25691
 
-         The function create_mwi_subscriptions_for_endpoint checks
-         if there is active contacts by retrieving aors and contacts.
+         Change-Id: Iaf0c9f0fa00545e7366443875e2bb7d9a89a1358
 
-         This function is used to create all unsolicited mwi subscriptions
-         on startup and is used when contact added.
+2016-08-30 16:40 +0000 [03fc438f6e]  Richard Mudgett <rmudgett@digium.com>
 
-         In both cases it's not necessary to check if there are contacts.
-         The contacts are needed when asterisk sends mwi.
+       * res_pjsip_registrar.c: Reduce stack usage in find_aor_name().
 
-         ASTERISK-26200 #close
+         Change-Id: I8aebad1fdcf303bd115b59a4b57fbbd5b2267f09
 
-         Change-Id: I98e43bdc97f3c0829951cd9bf5f3c6348c6ac1fa
+2016-08-29 18:06 +0000 [b5e753227d]  Richard Mudgett <rmudgett@digium.com>
 
-2016-06-30 15:58 +0000 [28501051b4]  Mark Michelson <mmichelson@digium.com>
+       * pjsip_configuration.c: Ignore repeated identify by methods.
 
-       * Update support for SILK format.
+         Change-Id: Ied0c06043d1dfef8fdc9c9a808cf89b118119838
 
-         This commit adds scaffolding in order to support the SILK audio format
-         on calls. Roughly, this is what is added:
+2016-08-30 17:26 +0000 [9b7501b6ad]  Richard Mudgett <rmudgett@digium.com>
 
-         * Cached silk formats. One for each possible sample rate.
-         * ast_codec structures for each possible sample rate.
-         * RTP payload mappings for "SILK".
+       * config_global.c: Comments and a default expression adjustment.
 
-         In addition, this change overhauls the res_format_attr_silk file in the
-         following ways:
+         Change-Id: Ia6a58f8c73a30da6874b3f94364dce162d6f1ad3
 
-         * The "samplerate" attribute is scrapped. That's native to the format.
-         * There are far more checks to ensure that attributes have been
-           allocated before attempting to reference them.
-         * We do not SDP fmtp lines for attributes set to 0.
+2016-08-31 15:14 +0000 [3314e1cec2]  Richard Mudgett <rmudgett@digium.com>
 
-         These changes make way to be able to install a codec_silk module and
-         have it actually work. It also should allow for passthrough silk calls
-         in Asterisk.
+       * sip_to_pjsip.py: Map canreinvite as directmedia alias.
 
-         Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e
+         Change-Id: I48b8e150f96a3d2a24d8fc25fbe4f5aff9f4a6b2
 
-2016-07-14 07:45 +0000 [43b5f8d57b]  Richard Miller (license 5685)
+2016-08-31 15:37 +0000 [6372f40ba0]  Richard Mudgett <rmudgett@digium.com>
 
-       * app_queue: Only remove queue member from pending when state changes.
+       * sip_to_pjsip.py: Fix typo converting outboundproxy registration.
 
-         It is possible for a not in use state change to occur multiple
-         times causing a queue member to be removed from the pending call
-         container prematurely.
+         Change-Id: I6f30e5f9fcf8469ba0079fbf884047d54c2c0b15
 
-         The first not in use state change will remove the queue member
-         from the container. At this moment the member may be called and
-         placed in the pending container. After this another not in use
-         state change can be received which will remove it from the
-         container. Despite being called at this point the code will
-         incorrectly see that there are no pending calls to it.
+2016-08-31 15:13 +0000 [11eb1afd2d]  Richard Mudgett <rmudgett@digium.com>
 
-         This change only removes it from the pending container if the
-         state has actually changed.
+       * sip_to_pjsip.py: Fix comment typo and tabs.
 
-         ASTERISK-26133 #close
-         patches:
-           app_queue.diff submitted by Richard Miller (license 5685)
+         Change-Id: If35174614545727817d329c60ba4456c028941b5
 
-         Change-Id: Ie5a7f17a44f98e9159e9b85009ce3f8393aa78c0
+2016-08-31 15:56 +0000 [0f9b144c1a]  Richard Mudgett <rmudgett@digium.com>
 
-2016-07-14 02:40 +0000 [a17b071e36]  Corey Farrell <git@cfware.com>
+       * Sample configs: Eliminate false multiline comment block starts.
 
-       * pbx: Fix leak of timezone for time based includes.
+         Change-Id: Ie627def9604ae30abd80754f9e6f09874825aec6
 
-         Create include_free to run ast_destroy_timing and ast_free, use that in
-         all places that freed an ast_include structure.  This fixes a couple of
-         paths that previously did not run ast_destroy_timing.
+2016-09-02 11:36 +0000 [8d1c535bd6]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26196 #close
+       * format_cap.c: Fix CLI "core show channeltype Surrogate" crash.
 
-         Change-Id: I1671bd111bef0dc113e8bf8f77f89fcfc395d838
+         * Make ast_format_cap_get_names() NULL tolerant.
 
-2016-07-13 17:45 +0000 [8cef8f35e7]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-26331 #close
+         Reported by: CGI.NET
 
-       * translate: explicit format destination not properly set
+         Change-Id: Id67e93936dc8ec2a33a9d33655843d43b59285a3
 
-         If the destination format's name differed from the codec name then the
-         translator's explict_dst field would be improperly set. In some circumstances
-         it would end up setting it to a newly created format that has the same name
-         as the codec when it actually needed to be the given destination codec.
+2016-08-18 14:45 +0000 [9bca895469]  Alexei Gradinari <alex2grad@gmail.com>
 
-         This could cause the translation path to use the wrong format. For instance,
-         if an endpoint had specified 'myulaw' as a format the translator could end up
-         using a 'ulaw' format (with whatever/default settings) instead. If the format
-         attribute settings differed between the two then there may unexpected results
-         during processing.
+       * res_pjsip_session: segfault on already disconnected session
 
-         This patch removes the name check when building the translation path. This
-         should make it always set the translator's explicit_dst to the given destination
-         format as long as the sample rate and types match.
+         On heavy loaded system the TCP/TLS incoming calls could be
+         disconnected by pjproject while these calls are being
+         processed by asterisk which could use the session's memory pools.
+         If the session in the disconnected state then the session memory
+         pools were already freed, so we get segfault.
 
-         Change-Id: Iaf8a03831d68e657d89569d54b505074efbefab5
+         This patch adds a lifetime control on an INVITE session to pjproject.
+         The lifetime of the session is manipulated by calling
+         pjsip_inv_add_ref/pjsip_inv_dec_ref.
+         This patch uses these functions to inform pjproject that the
+         session is in use.
 
-2016-07-08 11:46 +0000 [afbd10b0c5]  Richard Mudgett <rmudgett@digium.com>
+         This patch adds check if the session state is not disconnected
+         and also checks if the memory pool is not NULL.
 
-       * stasis_endpoint.c: Fix contactstatus_to_json().
+         This patch also places tasks 'session_end' and 'session_end_completion'
+         into session's serializer to avoid race condition.
 
-         The roundtrip_usec json member is optional.  If it isn't present then
-         don't put it into the converted json structure where ast_json_pack()
-         will choke on it.
+         ASTERISK-26291 #close
 
-         Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0
+         Change-Id: I4d28b1fb3b91f0492a911d110049d670fdc3c8d7
 
-2016-07-13 13:45 +0000 [2be13d62fd]  Corey Farrell <git@cfware.com>
+2016-08-10 15:14 +0000 [63feffa126]  Mark Michelson <mmichelson@digium.com>
 
-       * chan_sip: Fix reference leak in mwi_event_cb
+       * ConfBridge: Make some announcements asynchronous.
 
-         Cleanup the peer reference when stasis_subscription_final_message is
-         true.  Also free peer_name even if peer exists, after reload a new
-         peer_name will be allocated.
+         Confbridge announcements tend to block a channel while they are being
+         played. In some circumstances, this is warranted since you want that
+         particular channel not to hear the announcement (Example: "John Doe has
+         entered the conference"). For others it makes less sense.
 
-         ASTERISK-26193 #close
+         This change first introduces methods for playing sounds asynchronously
+         into the conference. This is very similar to how synchronous sounds are
+         played, except the channel initiating the playback does not wait for the
+         sound to complete before moving on.
 
-         Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69
+         Asynchronous announcements are used for two circumstances:
+         * Sounds played for a user after they have left the bridge
+         * Sounds that play first to a single user and then the rest of the
+           conference (if the channel and conference use the same language)
 
-2016-06-22 07:13 +0000 [332beb27d8]  Eugene Voityuk <eugene@thirdlane.com>,Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26289 #close
+         Reported by Mark Michelson
 
-       * res_rtp_asterisk: Enable Forward Secrecy (PFS) for DTLS.
+         Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a
 
-         Since July 2014, TLS based protocols (SIP over TLS, Secure WebSockets, HTTPS)
-         support PFS thanks to ASTERISK-23905. In July 2015, the same feature was added
-         for DTLS. The source code from main/tcptls.c should have been re-used to ease
-         security audits. Therefore, this change rolls back the change from July 2015 and
-         re-uses the code from July 2014. This has the additional benefits to work under
-         CentOS 7 and enabling not just ECDHE but DHE based cipher suites as well.
+2016-08-31 12:23 +0000 [a002a4d2db]  Michael Kuron <m.kuron@gmx.de>
 
-         ASTERISK-25659 #close
-         Reported by: StefanEng86, urbaniak, pay123
-         Tested by: sarumjanuch, traud
-         patches:
-         res_rtp_asterisk.patch submitted by sarumjanuch
-         dtls_centos_step_1.patch submitted by traud
-         dtls_centos_step_2.patch submitted by traud
+       * app_mp3: Use correct buffer size and the same sample rate as the channel
 
-         Change-Id: I537cadf4421f092a613146b230f2c0ee1be28d5c
+         Previously, the buffer used for MP3 streamed from HTTP servers had a size of
+         1 MB. For 8 kHz mono audio at 16 bit resolution, such a buffer covers about 1
+         minute. Only when the buffer is full does audio start to play.
+         For MP3 files streamed from a server, that is usually not a big deal as long as
+         the connection to the server is fast enough to supply that much data within a
+         second or two. For MP3 live streams however, it takes 1 minute to download 1
+         minute of audio, so without this change, app_mp3 wasn't really usable for MP3
+         live streams.
+         This commit changes the buffer size so that it covers 6 seconds of an MP3 file
+         streamed from a server and 0.5 seconds of an MP3 live stream. The latter is
+         identified by the use of a .m3u file extension.
 
-2016-07-13 11:30 +0000 [672a64bda3]  Corey Farrell <git@cfware.com>
+         app_mp3 so far only supported 8 kHz audio.
+         Now it always runs at the sample rate of the channel.
 
-       * threadpool: Fix leak in ast_threadpool_serializer_group error path.
+         ASTERISK-26085 #close
 
-         ast_threadpool_serializer_group leaks a reference to ser when listener
-         is allocated but tps is not.  Although listener takes the reference to
-         ser cleanup functions are not run without tps.
+         Change-Id: Id1ee274733cd804a0edecf7450329b72f1235af0
 
-         ASTERISK-26191 #close
+2016-08-26 10:39 +0000 [308a65fe6c]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Change-Id: Ie3ccf69a3f1e676c2ef62a77067c0cb57dc9a585
+       * res_pjsip: qualify/unqualify added/deleted realtime endpoints
 
-2016-07-11 10:22 +0000 [fea201f7e6]  Richard Mudgett <rmudgett@digium.com>
+         If the PJSIP endpoint's AOR with the permanent contact
+         was deleted from the realtime storage the res_pjsip module
+         continues trying to qualify this contact.
+         The error 'Unable to find an endpoint to qualify contact'
+         appeares every 'qualify_frequency' seconds.
+         This patch deletes this contact in this case.
 
-       * pjsip_options.c: Fix container operation.
+         The PJSIP endpoint's AOR with the permanent contact
+         is never qualified if it is added to realtime storage
+         after asterisk started.
+         This patch adds qualifying for the AOR's permanent contacts
+         on the first handling of this AOR.
 
-         aor_observer_deleted() needs to operate on all contacts found for the
-         deleted AOR instead of only the first one found.  This is really only a
-         problem if there is more than one contact for the AOR.
+         ASTERISK-26319 #close
 
-         Change-Id: Id24ac0d5e8c931330231fb45dd2a331a84339dc1
+         Change-Id: Ib93dded9121edb113076903d1aa95402f799f8fe
 
-2016-07-11 10:21 +0000 [02877b4b4f]  Richard Mudgett <rmudgett@digium.com>
+2016-08-17 02:51 +0000 [2fa168348e]  chris de rock <chris@derock.de>
 
-       * pjsip_configuration.c: Misc cleanups.
+       * app_macro: Consider '~~s~~' as a macro start extension.
 
-         * Fix some whitespace in various routines.
+         As described in issue ASTERISK-26282 the AEL parser creates macros with
+         extension '~~s~~'.  app_macro searches only for extension 's' so the
+         created extension cannot be found.  with this patch app_macro searches for
+         both extensions and performs the right extension.
 
-         * Rename i to iter in persistent_endpoint_update_state().
+         ASTERISK-26282 #close
 
-         * Fix off-nominal copy/paste message wording in
-         persistent_endpoint_contact_deleted_observer()
+         Change-Id: I939aa2a694148cc1054dd75ec0c47c47f47c90fb
 
-         Change-Id: Id8e34f5d09e7eebac3af22501c44c1110a3e29d8
+2016-08-29 07:10 +0000 [27951792c4]  Etienne Lessard <elessard@proformatique.com>
 
-2016-07-13 08:57 +0000 [148cd1b319]  Alexander Traud <pabstraud@compuserve.com>
+       * pbx.c: Prevent infinite recursion in manager_show_dialplan_helper.
 
-       * BuildSystem: Avoid obsolete warning with pthread.m4 on autoconf.
+         Previously, if context A was including context B and context B was including
+         context A, i.e. if there was a circular dependency between contexts, then
+         calling manager_show_dialplan_helper could lead to an infinite recursion,
+         resulting in a crash.
 
-         Updated the macro-set autoconf/ax_pthread.m4 to its latest upstream version.
+         This commit applies the same solution as the one implemented in the
+         show_dialplan_helper function. The manager_show_dialplan_helper and
+         show_dialplan_helper functions contain lots of code in common, but the former
+         was missing the "infinite recursion avoidance" code.
 
-         ASTERISK-26046 #close
+         ASTERISK-26226 #close
 
-         Change-Id: I11abc11d17acd2b6a8a5a5be8ae8e0949dab9cc7
+         Change-Id: I1aea85133c21787226f4f8442253a93000aa0897
 
-2016-07-11 10:25 +0000 [97b4c7a5b4]  Richard Mudgett <rmudgett@digium.com>
+2016-08-26 14:34 +0000 [fb82fdb013]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip: Fix statsd regression.
+       * pjproject_bundled:  Disable srtp use by pjmedia
 
-         The ASTERISK-25904 change-id I8fad8aae9305481469c38d2146e1ba3a56d3108f
-         patch introduced several regressions when the newly created "Updated"
-         state goes out for each endpoint registration refresh.
+         The reason for the disable is that while Asterisk works fine with older
+         libsrtp versions, newer versions of pjproject won't compile with them.
+         Debian 6 for instance, has libsrtp 1.4.4 which is older than what
+         pjproject is expecting.
 
-         1) It restarted any OPTIONS RTT ping cycle.
+         We don't use most of pjmedia but we DO use it for SDP negotiation.
+         Luckily disabling srtp in pjmedia doesn't interfere with it's ability
+         to negitiate a secure channel.  The proper crypto attributes are
+         negotiated in both directions.
 
-         2) It would interfere with a currently active ping and throw off that
-         ping's resulting RTT calculation.
+         ASTERISK-26279 #close
 
-         3) It cleared the RTT time each time the endpoint was refreshed.
+         Change-Id: Id25a92cdf3df97a26c53cffae65b6b82de33c8e2
 
-         4) The cleared RTT time was sent out as a statsd update each time.
+2016-08-26 08:41 +0000 [847bd47ff0]  Alexander Traud <pabstraud@compuserve.com>
 
-         5) It created two AMI events for each update.
+       * channel: No hung-up on failing security requirements.
 
-         * Revert the original patch and reimplement it.  Now the current contact
-         status state is re-sent instead of the state being momentarily toggled
-         every time the endpoint refreshes its registration.  The statsd events are
-         not created for the re-sent refresh because they are sent after every
-         OPTIONS ping.
+         In your Diaplan, if you specify
+          same => n,Set(CHANNEL(secure_bridge_media)=1)
+          same => n,Set(CHANNEL(secure_bridge_signaling)=1)
+         only the SIP channel driver chan_sip supports this. All other channels drivers
+         like res_pjsip fail. In case of failure, the original sRTP source code released
+         the whole channel, even if not hung-up, yet. This change does not release the
+         channel but instead hangs-up the channel.
 
-         ASTERISK-26160 #close
-         Reported by: Matt Jordan
+         ASTERISK-26306
 
-         Change-Id: Ie072be790fbb2a8f5c1c874266e4143fa31f66d1
+         Change-Id: I0489f0cb660fab6673b0db8af027d116e70a66db
 
-2016-07-12 03:50 +0000 [3be6fa1e4b]  Alexander Traud <pabstraud@compuserve.com>
+2016-08-20 09:04 +0000 [b59d3b48d0]  Alexander Traud <pabstraud@compuserve.com>
 
-       * BuildSystem: Allow own CFLAGS on ./configure.
+       * sip_to_pjsip: Migrate IPv4/IPv6 (Dual Stack) configurations.
 
-         Before this change, make failed with the error
-         Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH
-         when CFLAGS were supplied to the configure script. This was introduced with
-         <https://reviewboard.asterisk.org/r/1852/> which disabled BUILD_NATIVE when
-         CFLAGS were supplied. Those who need different -march= values, please, go for
-         ./configure
-         make menuselect.makeopts or make menuselect
-         ./menuselect/menuselect --disable BUILD_NATIVE
+         When using the migration script sip_to_pjsip.py, and your sip.conf is
+         configured with bindaddr=::, two transports are written to pjsip.conf, one for
+         0.0.0.0 (IPv4) and one for [::] (IPv6). That way, PJProject listens on the IPv4
+         and IPv6 wildcards; a IPv4/IPv6 Dual Stack configuration on a single interface
+         like in chan_sip.
 
-         ASTERISK-25289 #close
+         Furthermore, the script internal functions "build_host" and "split_hostport"
+         did not parse Literal IPv6 addresses as expected (like [::1]:5060). This change
+         makes sure, even such addresses are parsed correctly.
 
-         Change-Id: Ic6365d5a97bb9b3556858f06432a8d1cfa83eebc
+         ASTERISK-26309
 
-2016-07-11 13:42 +0000 [5ee205d8bb]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ia4799a0f80fc30c0550fc373efc207c3330aeb48
 
-       * ast_expr2: Fix off-nominal memory leak.
+2016-08-25 07:06 +0000 [f69f5cd3c4]  Joshua Colp <jcolp@digium.com>
 
-         Thanks to ibercom for pointing out a memory leak that was missed
-         in the earlier patch for the issue.
+       * app_queue: Ensure member is removed from pending when hanging up.
 
-         ASTERISK-26119
-         Reported by: Alexei Gradinari
+         When dialing channels it is possible that they may not ever
+         leave the not in use state (Local channels in particular) by
+         the time we cancel them. If this occurs but we know they were
+         dialed we explicitly remove them from the pending members
+         container so that subsequent call attempts occur.
 
-         Change-Id: I9a151f5c4725d97fb82a9e938bc73dc659532b71
+         ASTERISK-26299 #close
 
-2016-07-11 10:17 +0000 [f5e9872016]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I6ad0d17c36480c92cebf840626228ce3f7e4bd65
 
-       * install_prereq: Checkout of libSRTP 1.5.x.
+2016-08-04 20:11 +0000 [5cd583d7a2]  Richard Mudgett <rmudgett@digium.com>
 
-         Since 5th November 2014, the master branch of libSRTP changed the prefix of
-         several member names and is not compatible with the source code in Asterisk
-         anymore. Therefore instead, this change checks out the latest version of the
-         libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as
-         backend. This makes AES-GCM and AES-IN possible.
+       * res_pjsip: Cache global config options.
 
-         ASTERISK-22131 #close
+         We may check a global config option hundreds of times a second or more.
+         Asking sorcery for the global configuration from the config files backend
+         involves several allocations and container traversals.  Using realtime
+         without a memory cache is a lot worse because you have to lookup in the
+         realtime database each time to reconstitute the sorcery object.  With a
+         memory cache for realtime, there is about the same amount of overhead as
+         for config files.  Either way, it is still fairly expensive to access the
+         sorcery object that much.
 
-         Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6
+         * Cache the global config options so we can access them faster.  You must
+         now always perform a res_pjsip reload to change the global options.
 
-2016-07-10 19:08 +0000 [17efed6cf7]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ice16c7a4cbca4614da344aaea21a072b86263ef7
 
-       * func_odbc: Fix connection deadlock.
+2016-08-23 11:02 +0000 [8b4b2500ee]  Richard Mudgett <rmudgett@digium.com>
 
-         The func_odbc module was modified to ensure that the
-         previous behavior of using a single database connection
-         was maintained. This was done by getting a single database
-         connection and holding on to it. With the new multiple
-         connection support in res_odbc this will actually starve
-         every other thread from getting access to the database as
-         it also maintains the previous behavior of having only
-         a single database connection.
+       * res_fax: Fix deadlock in ast_channel_get_t38_state().
 
-         This change disables the func_odbc specific behavior if
-         the res_odbc module is running with only a single database
-         connection active. The connection is only kept for the
-         duration of the request.
+         ast_channel_get_t38_state() calls ast_channel_queryoption() with
+         AST_OPTION_T38_STATE.  If the passed in channel is a local channel then a
+         deadlock can happen if a channel lock is held when called.
 
-         ASTERISK-26177 #close
+         * Made ast_channel_get_t38_state() callers not hold a channel lock before
+         calling.
 
-         Change-Id: I9bdbd8a300fb3233877735ad3fd07bce38115b7f
+         * Update ast_channel_get_t38_state() doxygen to note that no channel locks
+         can be held when calling the function.
 
-2016-07-09 13:32 +0000 [06ba533bc7]  Corey Farrell <git@cfware.com>
+         ASTERISK-26203 #close
+         Reported by: Etienne Lessard
 
-       * chan_sip: Fix reference leaks in error paths.
+         ASTERISK-24822 #close
+         Reported by: David Brillert
 
-         * get_sip_pvt_from_replaces leaks sip_pvt_ptr on any error.
-         * build_peer leaks peer on failure to allocate the endpoint.
+         ASTERISK-22732 #close
+         Reported by: Richard Mudgett
 
-         This patch fixes get_sip_pvt by using an RAII_VAR, build_peer is fixed
-         with an unref in the appropriate place.
+         Change-Id: I49fd76fa9af628b4198009b5c0b82c8b03681214
 
-         ASTERISK-26184 #close
+2016-08-23 10:39 +0000 [e8d4f40022]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I728b424648ad041409f7d90880f4c28b3ce2ca12
+       * res_fax: Fix deadlock setting FAXMODE channel variable.
 
-2016-07-07 12:41 +0000 [9d4e664f62]  Corey Farrell <git@cfware.com>
+         ASTERISK-25980 added the FAXMODE channel variable to res_fax.c.
+         Unfortunately, it also introduced a deadlock potential because
+         set_channel_variables() which sets FAXMODE can be called during a
+         masquerade.  The ast_channel_get_t38_state() which gets the value used to
+         set FAXMODE cannot be called with the channel locked.  As a result, local
+         channels can deadlock because of how they must acquire the locks necessary
+         to operate.
 
-       * REF_DEBUG: Prevent logging of container node objects.
+         The intent of FAXMODE is for dialplan to know how a fax was transferred
+         after the fax completes.  However, the previous patch sets FAXMODE to the
+         channel's current T.38 state AFTER the fax has completed and where T.38
+         may have already disconnected.
 
-         Using AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE can result in an unref being
-         recorded to the refs log for the node being replaced.  This prevents
-         logging of those unrefs since they would produce errors in
-         refcounter.py.
+         * Set FAXMODE based upon T.38 negotiations exchanged either with the fax
+         applications or the fax framehooks.
 
-         ASTERISK-26181 #close
+         ASTERISK-26203
+         Reported by: Etienne Lessard
 
-         Change-Id: Ie4fded84e8a1a58b3a59ce59dfd7eb0da3ddc5d4
+         ASTERISK-24822
+         Reported by: David Brillert
 
-2016-07-07 10:55 +0000 [e26bd15e7a]  Scott Griepentrog <scott@griepentrog.com>
+         ASTERISK-22732
+         Reported by: Richard Mudgett
 
-       * PJSIP: provide valid tcp nodelay option for reuse
+         Change-Id: Id525747254b64c1efe8b1b5973d52ff9719c2ae1
 
-         When using TCP transport with chan_pjsip, the TCP_NODELAY
-         option value was allocated on the stack, then passed as a
-         pointer to the tcp transport configuration structure, and
-         later re-used on subsequently created sockets when it was
-         no longer valid.  This patch changes the allocation to be
-         a static.
+2016-08-22 12:31 +0000 [35cf6c7702]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26180 #close
-         Reported by: Scott Griepentrog
+       * res_fax.c: Fix deadlock in fax_gateway_indicate_t38().
 
-         Change-Id: I3251164c7f710dbdab031282f00e30a9770626a0
+         fax_gateway_indicate_t38() calls ast_indicate_data() which cannot be
+         called with any channel locks already held.  A deadlock can happen if the
+         function is operating on a local channel.
 
-2016-07-07 10:38 +0000 [77b0145a25]  Joshua Colp <jcolp@digium.com>
+         * Made fax_gateway_indicate_t38() unlock the channel before calling
+         ast_indicate_data() since fax_gateway_indicate_t38() is always called with
+         the channel locked.
 
-       * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled.
+         * Made fax_gateway_indicate_t38() return void since nothing cared about
+         its return value.
 
-         Some T.38 implementations may send another re-invite after the initial
-         one which adds additional negotiation details (such as the max bitrate).
-         Currently this will fail when passthrough is being done in chan_sip as we
-         do nothing if T.38 is already active.
+         ASTERISK-26203
+         Reported by: Etienne Lessard
 
-         Other handlers of T.38 inside of Asterisk (such as res_fax) handle this
-         scenario so this change adds support for it to chan_sip and res_pjsip_t38.
-         If a request to negotiate is received while T.38 is already enabled a
-         new re-INVITE is sent and negotiation is done again.
+         ASTERISK-24822
+         Reported by: David Brillert
 
-         ASTERISK-26179 #close
+         ASTERISK-22732
+         Reported by: Richard Mudgett
 
-         Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c
+         Change-Id: I701ff2d26c5fc23e0d5a48a3fd98759a9fd09407
 
-2016-07-04 16:38 +0000 [b4a9fa2c9e]  Alexei Gradinari <alex2grad@gmail.com>
+2016-08-23 11:16 +0000 [50b2aa506f]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_sorcery_realtime: fix bug when successful UPDATE is treated as failed
+       * res_fax.c: Add chan locked precondition comments.
 
-         If the SQL UPDATE statement changes nothing then SQLRowCount returns 0.
-         This value should be treated as success.
-         But the function sorcery_realtime_update treats it as failed.
+         Change-Id: Ic10ae434536bbf7fb7055d6ab36cc50b8748a4e7
 
-         This bug was found using stress tests on PJSIP.
-         If there are 2 consecutive SIP REGISTER requests with the same contact data
-         during 1 second then res_pjsip_registrar adds contact location on 1st request
-         and tries to update contact location on 2nd.
-         The update fails and res_pjsip_registrar even removes correct contact location.
+2016-08-23 10:42 +0000 [038cbc0215]  Richard Mudgett <rmudgett@digium.com>
 
-         The test "object_update_uncreated" was removed from test_sorcery_realtime.c
-         because it's now a valid situation.
+       * ast_framehook_detach() must be called with the channel locked.
 
-         This patch also adds missing debug of extra SQL parameter.
+         The framehook container could become corrupted if the channel lock is not
+         held before calling.
 
-         ASTERISK-26172 #close
+         Change-Id: If0a1c7ba0484ed3a191106a7516526b905952584
 
-         Change-Id: I05a7f3051455336c9dda29efc229decf86071303
+2016-08-22 15:01 +0000 [88e9d05ef7]  Richard Mudgett <rmudgett@digium.com>
 
-2016-06-24 19:55 +0000 [1dfd3fc995]  Matt Jordan <mjordan@digium.com>
+       * ast_framehook_attach() must be called with the channel locked.
 
-       * res/res_pjsip_session: Check for presence of an active negotiator
+         The framehook container could become corrupted if the channel lock is not
+         held before calling.
 
-         It is possible in a hypothetical situation for a session refresh to be
-         invoked on a PJSIP when the negotiatior on the INVITE session has not
-         yet been established. While this shouldn't occur with existing uses of
-         ast_sip_session_refresh, the crashes that occur due to improperly
-         calling PJSIP functions that expect a non-NULL negotiatior are
-         avoidable. PJSIP will create the negotiator in pjsip_inv_reinvite; this
-         means that simply checking for the presence of the negotiator before
-         passing it to other PJSIP functions that use it is allowable. As such,
-         this patch adds checks for the presence of the negotiator before calling
-         PJSIP functions that assume it is non-NULL.
+         Change-Id: I1a6b957a1f7b899eb29a186915f8cccab886a438
 
-         Change-Id: I1028323e7e01b0a531865e5412a71b6f6ec4276d
+2016-08-24 14:42 +0000 [c9e83f6d0b]  gtjoseph <gjoseph@digium.com>
 
-2015-10-19 18:55 +0000 [9dd0aeeb44]  Matt Jordan <mjordan@digium.com>
+       * res_rtp_multicast:  Fix SEGV in ast_multicast_rtp_create_options
 
-       * res/res_pjsip_pubsub: Add additional debug statements
+         ast_multicast_rtp_create_options now checks for NULL or empty options
 
-         When something very sad and wrong occurs, it's challenging sometimes to
-         figure out why. This patch adds some additional debug statements on
-         off-nominal paths to try and make debugging easier.
+         Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362
 
-         Change-Id: I7bffb73cc733b6f80193a23340881db4a102b640
+2016-08-19 18:19 +0000 [cb8fd610e2]  Corey Farrell <git@cfware.com>
 
-2015-10-19 18:55 +0000 [1ec4f8dd00]  Matt Jordan <mjordan@digium.com>
+       * Fix checks for allocation debugging.
 
-       * res/res_corosync: Raise a Stasis message on node join/leave events
+         MALLOC_DEBUG should not be used to check if debugging is actually
+         enabled, __AST_DEBUG_MALLOC should be used instead.  MALLOC_DEBUG only
+         indicates that debugging is requested, __AST_DEBUG_MALLOC indicates it
+         is active.
 
-         When res_corosync detects that a node leaves or joins, it currently is
-         informed of this via Corosync callbacks. However, there are a few
-         limitations with the information presented:
-         (1) While we have information that Corosync is aware of - such as the
-             Corosync nodeid - that information is really only useful inside of
-             Corosync or res_corosync. There's no way to translate a Corosync
-             nodeid to some other internally useful unique identifier for the
-             Asterisk instance that just joined or left the cluster.
-         (2) While res_corosync is notified of the instance joining or leaving
-             the cluster, it has no mechanism to inform the Asterisk core or
-             other modules of this event. This limits the usefulness of res_corosync
-             as a heartbeat mechanism for other modules.
+         Change-Id: I3ce9cdb6ec91b74ee1302941328462231be1ea53
 
-         This patch addresses both issues.
+2016-08-10 15:14 +0000 [b8b5d52b5e]  Mark Michelson <mmichelson@digium.com>
 
-         First, it adds the notion of a cluster discovery message both within the
-         Stasis message bus, as well as the binary event messages that
-         res_corosync uses to transmit data back and forth within the cluster.
-         When Asterisk joins the cluster, it sends a discovery message to the other
-         nodes in the cluster, which correlates the Corosync nodeid along with
-         the Asterisk EID. res_corosync now maintains a hash of Corosync nodeids
-         to Asterisk EIDs, such that it can map changes in cluster state with the
-         Asterisk instance that has that nodeid. Likewise, when an Asterisk
-         instance receives a discovery message from a node in the cluster, it now
-         sends its own discovery message back to the originating node with the
-         local Asterisk EID. This lets Asterisk instances within the cluster
-         build a complete picture of the other Asterisk instances within the
-         cluster.
+       * ConfBridge: Rework announcer channel methodology
 
-         Second, it publishes the discovery messages onto the Stasis message bus.
-         Said messages are published whenever a node joins or leaves the cluster.
-         Interested modules can subscribe for the ast_cluster_discovery_type()
-         message under the ast_system_topic() and be notified when changes in
-         cluster state occur.
+         NOTE: This patch was submitted earlier and reverted because of a failing
+         test. The test has been patched so that it adjusts for the changes here,
+         so this is being resubmitted for review.
 
-         Change-Id: I9015f418d6ae7f47e4994e04e18948df4d49b465
+         One feature that confbridge has is the ability to play sounds to all
+         participants in the conference. Prior to this commit, the algorithm for
+         this was as follows:
 
-2016-07-04 13:54 +0000 [2c16a81dd5]  Alexei Gradinari <alex2grad@gmail.com>
+         * Grab the playback lock
+         * Push the conference announcer channel into the bridge
+         * Play back the sound
+         * Pull the conference announcer channel from the bridge
+         * Release the playback lock
 
-       * res_pjsip: Added "subscribe_context" to endpoint
+         The issue here is that the act of adding the playback channel to the
+         bridge and removing it for each announcement is expensive. Amongst the
+         expenses:
 
-         If specified, incoming SUBSCRIBE requests will be searched for the matching
-         extension in the indicated context. If no "subscribe_context" is specified,
-         then the "context" setting is used.
+         * The announcer channel is imparted into the bridge, meaning a new
+           thread is spun up for each playback.
+         * When the announcer is added or removed from the bridge, it results
+           in the BRIDGEPEER channel variable being set on all channels in the
+           bridge. This requires keeping the bridge locked and locking each
+           individual channel in order to set it.
+         * There's also just the general overhead of adding the channel and
+           removing it from the bridge. The bridge potentially has to reconfigure
+           every single time
 
-         ASTERISK-25471 #close
+         With this commit, the paradigm for playing back announcements has
+         shifted.
 
-         Change-Id: I3fb7a15f5bc154079bd348c08b7ad1cdd2d5e514
+         * The announcer channel is now added to the bridge when the conference
+           is allocated, and it is hung up when the conference is destroyed.
+         * A taskprocessor is used to queue playbacks onto the announcer channel.
+           This keeps the behavior from before where playbacks do not overlap.
+         * The announcer channel is no longer placed into the bridge as
+           departable. Since we are not constantly removing the channel from
+           the bridge, it is safe to add the channel using an independent thread
+           and simply hang the channel up when it is time for the conference to
+           be destroyed.
 
-2016-07-04 05:58 +0000 [a1bd57884d]  Alexander Traud <pabstraud@compuserve.com>
+         The use of the taskprocessor for playbacks opens up the interesting
+         possibility of having asynchronous announcements played. In this commit,
+         however, the behavior is still exactly the same as it previously was.
 
-       * BuildSystem: Avoid obsolete warning with libcurl.m4 on autoconf.
+         ASTERISK-26289
+         Reported by Mark Michelson
 
-         Updated the macro-set autoconf/libcurl.m4 to its latest upstream version. This
-         avoids a warning about an obsolete macro on AC_HELP_STRING, because Asterisk is
-         using AS_HELP_STRING everywhere else already.
+         Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0
 
-         ASTERISK-26046
+2016-08-23 05:54 +0000 [d5d7cbfcfb]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I8299faf504ceaeee3e39930c59293809e116c631
+       * Revert "ConfBridge: Rework announcer channel methodology"
 
-2016-06-30 15:17 +0000 [640fbbbe28]  Richard Mudgett <rmudgett@digium.com>
+         This reverts commit 0cdeb2bfb0f4203384c08858951af3c77be8b9b3.
 
-       * features: Fix channel datastore access.
+         Change-Id: I18ba73b6d4dc0b994f4ffb01ae0b6cfad36ac636
 
-         Found as a result of the testsuite tests/callparking test crashing.
+2016-08-22 17:08 +0000 [c16ef02318]  Mark Michelson <mmichelson@digium.com>
 
-         Several calls to ast_get_chan_featuremap_config() and
-         ast_get_chan_features_xfer_config() did not lock the channel before
-         calling so the channel's datastore list was accessed without the lock's
-         protection.  Apparently another thread deleted a datastore on the
-         channel's list while the crashing thread was walking the list.  Crash at
-         0xdeaddead due to MALLOC_DEBUG's memory filler value as a result.
+       * res_pjsip: Default endpoints to the "offline" status.
 
-         * Add missing channel locks to calls that were not already protected
-         as the doxygen for those calls indicates.
+         A recent change attempted to optimize startup by not updating contact
+         status. Instead, code responsible for qualifying contacts updates the
+         status as it becomes known. The code even accounts for contacts/AORs
+         that are not set to be qualified.
 
-         Change-Id: Id273b3d305cc616406c353cbc841b2b7655efaa1
+         The problem, though, is when there are no contacts associated with an
+         endpoint. A common case is when an endpoint is set to register its
+         contacts but has not done so yet. In this case, prior to registration,
+         the endpoint's device state will appear to be "not in use" and hints
+         associated with that device will appear to be "idle". In actuality, the
+         device state and hint should both appear as "unavailable". The reason
+         for the failure is that the optimization change made all persistent
+         endpoint states set to "unknown".
 
-2016-06-22 17:26 +0000 [359134c8d3]  Richard Mudgett <rmudgett@digium.com>
+         The fix here is to change the hard-coded "unknown" to be "offline"
+         instead. The default state will be offline until the qualifying code
+         determines that the contact is actually online. This way, if there are
+         no contacts at all, then the state stays as offline, and device state
+         and hints appear correctly.
 
-       * res_pjsip_session.c: Don't send extra BYE if SDP invalid.
+         ASTERISK-26269 #close
+         Reported by nappsoft
 
-         When an answer SDP is invalid we were disconnecting the outgoing call and
-         sending two BYE requests.  The first BYE was sent by PJPROJECT because of
-         the invalid SDP answer.  The second BYE was sent by Asterisk because it
-         thought the canceled call was the result of the RFC5407 section 3.1.2 race
-         condition.
+         Change-Id: Ie99b84169393983453076f5e9c0d35ff313a456a
 
-         * Made not send the BYE on a canceled session if the SDP negotiation is
-         incomplete because PJPROJECT has already sent a BYE for the failed
-         negotiation.
+2016-08-20 14:51 +0000 [e54dcf4fd5]  David M. Lee <dlee@respoke.io>
 
-         ASTERISK-25772 #close
-         Reported by:  Dmitriy Serov
+       * res_odbc_transaction: add dep on generic_odbc
 
-         Change-Id: I44ad0bd0605e8eeb7035c890d6f97a1331f1a836
+         When res_odbc_transaction depended on res_odbc, it got the generic_odbc
+         headers and libs implicitly. Now that it no longer depends on res_odbc,
+         its dependency on generic_odbc must be explicit.
 
-2016-06-27 17:19 +0000 [5fabcf2ca1]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I9db88f7af7388437f49903d3008ba8d4890d5911
 
-       * res_pjsip_session.c: End call on initial invalid SDP negotiation.
+2016-08-20 11:18 +0000 [be38c95def]  Alexander Traud <pabstraud@compuserve.com>
 
-         When an incoming call defers SDP negotiation and then sends us an invalid
-         SDP in the ACK, we need to send a BYE to disconnect the call.  In this
-         case SDP negotiation has failed and we don't have valid media streams
-         negotiated.
+       * pjproject_bundled: Allow IPv4/IPv6 (Dual Stack) configurations.
 
-         ASTERISK-25772
+         PJProject supports a lot of platforms even Windows, some with different defaults
+         when it comes to IPv6. In many Linux platforms like Ubuntu 16.04 LTS,
+         "/proc/sys/net/ipv6/bindv6only" is set to 0 (false). Different than in Windows.
 
-         Change-Id: Ia358516b0fc1e6c4c139b78246f10b9da7a2dfb8
+         Because of this, if configured with just an IPv6 address/transport, PJProject
+         listens to both IPv4 and IPv6. However, this is not supported by the PJProject
+         team. As consequence, you end-up with IPv4-mapped IPv6 addresses in SDP,
+         incompatible with IPv4-only clients. Technically, you end-up with an IPv6-only
+         server which accepts incoming connections on IPv4.
 
-2016-06-23 15:13 +0000 [38a4e983dc]  Richard Mudgett <rmudgett@digium.com>
+         If you try to configure two transports, one with IPv4 and one with IPv6 on the
+         same interface, as expected by the PJProject team, the IPv4 transport is not
+         able to bind because the IPv6 transport listens to both already.
 
-       * res_pjsip.c: Register PJMEDIA error code decoder.
+         One solution would be to change "/proc/sys/net/ipv6/bindv6only" system-wide.
+         Then, you are able to configure two transports, one for each IP version on the
+         same interface. That way, you get a server which works with IPv4 clients and
+         IPv6 clients at the same time over the same interface.
 
-         Registering the PJMEDIA error codes allows errors found when parsing an
-         incoming SDP to be easier to figure out.
+         Here, this change sets this parameter directly within PJProject to match the
+         expectations of the PJProject team in any case. This allows IPv4/IPv6 Dual Stack
+         servers out of the box like in chan_sip. This change was accepted by the
+         PJProject team as <http://trac.pjsip.org/repos/changeset/5403> and is expected
+         to arrive in the next version, PJProject 2.6.0. Until then, this change is
+         incorporated in the bundled PJProject of Asterisk.
 
-         "Missing SDP rtpmap for dynamic payload type (PJMEDIA_SDP_EMISSINGRTPMAP)"
-         is much easier to understand than "Unknown error 220030".
+         ASTERISK-26309
 
-         ASTERISK-25772
+         Change-Id: I3335d8718f79f4b2feae91b5b005a3ce684a63ae
 
-         Change-Id: I44b2dcea656fedd7593171be9e845880a2c70ca0
+2016-08-10 15:14 +0000 [0cdeb2bfb0]  Mark Michelson <mmichelson@digium.com>
 
-2016-06-27 16:56 +0000 [1952434df5]  Richard Mudgett <rmudgett@digium.com>
+       * ConfBridge: Rework announcer channel methodology
 
-       * res_pjsip_session.c: Remove unused parameter from handle_incoming().
+         One feature that confbridge has is the ability to play sounds to all
+         participants in the conference. Prior to this commit, the algorithm for
+         this was as follows:
 
-         Change-Id: Iedd182d189ec947c42edc2c66c4bda3c22060daa
+         * Grab the playback lock
+         * Push the conference announcer channel into the bridge
+         * Play back the sound
+         * Pull the conference announcer channel from the bridge
+         * Release the playback lock
 
-2016-06-22 18:02 +0000 [28928ba5c4]  Richard Mudgett <rmudgett@digium.com>
+         The issue here is that the act of adding the playback channel to the
+         bridge and removing it for each announcement is expensive. Amongst the
+         expenses:
 
-       * res_pjsip: Add missing NULL checks when using pjsip_inv_end_session().
+         * The announcer channel is imparted into the bridge, meaning a new
+           thread is spun up for each playback.
+         * When the announcer is added or removed from the bridge, it results
+           in the BRIDGEPEER channel variable being set on all channels in the
+           bridge. This requires keeping the bridge locked and locking each
+           individual channel in order to set it.
+         * There's also just the general overhead of adding the channel and
+           removing it from the bridge. The bridge potentially has to reconfigure
+           every single time
 
-         pjsip_inv_end_session() is documented as being able to return the
-         passed in tdata parameter set to NULL on success.
+         With this commit, the paradigm for playing back announcements has
+         shifted.
 
-         Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047
+         * The announcer channel is now added to the bridge when the conference
+           is allocated, and it is hung up when the conference is destroyed.
+         * A taskprocessor is used to queue playbacks onto the announcer channel.
+           This keeps the behavior from before where playbacks do not overlap.
+         * The announcer channel is no longer placed into the bridge as
+           departable. Since we are not constantly removing the channel from
+           the bridge, it is safe to add the channel using an independent thread
+           and simply hang the channel up when it is time for the conference to
+           be destroyed.
 
-2016-06-30 08:25 +0000 [43a78100c0]  gtjoseph <gjoseph@digium.com>
+         The use of the taskprocessor for playbacks opens up the interesting
+         possibility of having asynchronous announcements played. In this commit,
+         however, the behavior is still exactly the same as it previously was.
 
-       * configure:  Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject
+         ASTERISK-26289
+         Reported by Mark Michelson
 
-         There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK
-         from getting set when using an external pjproject.
+         Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5
 
-         ASTERISK-26099 #close
-         Reported-by: Ross Beer
+2016-08-19 10:21 +0000 [b494b9f88c]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae
+       * compilation failed with -Werror=maybe-uninitialized
 
-2016-06-29 15:31 +0000 [99eff80e76]  Matt Jordan <mjordan@digium.com>
+         The compilation failed for devmode
+         --enable DONT_OPTIMIZE
+         --enable BETTER_BACKTRACES
+         --enable DO_CRASH
+         --enable TEST_FRAMEWORK
 
-       * hep.conf.sample: Default 'enabled' to 'no'
+         res_pjsip/pjsip_configuration.c: In function dtls_handler:
+         res_pjsip/pjsip_configuration.c:974:20: error:
+         back may be used uninitialized in this function [-Werror=maybe-uninitialized]
+         int size = strlen(front);
+                    ^
+         cc1: all warnings being treated as errors
 
-         Following the principle of least surprise, we should not be sending
-         massive numbers of PJSIP and RTCP HEP packets out into the ether to some
-         only-slightly-random IP address. Having 'enabled' set to 'no' in the
-         sample configuration file should prevent this from happening for those
-         who run 'make samples'.
+         Change-Id: I7f082ead0312792a577ec7c73015ba64dabca580
 
-         ASTERISK-26159 #close
+2016-08-19 03:59 +0000 [a628009eb9]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I1753a64ca83a3442a6ebdc31061f8185c062d9b1
+       * sip_to_pjsip: Add cert_file.
 
-2016-06-29 15:09 +0000 [78960975f2]  Matt Jordan <mjordan@digium.com>
+         When using the migration script sip_to_pjsip.py, cert_file was not migrated to
+         pjsip.conf. A previous change regarding this contained a copy/paste error.
 
-       * pjproject/patches/config_site: Increase the max number of ICE candidates
+         ASTERISK-22374
 
-         When negotiating ICE candidates with WebRTC capable endpoints, many
-         networks will result in a browser offering ICE candidates that exceeds
-         the default number of max candidates, 16. This patch bumps the max
-         candidates to 32, with the max checks at twice the number of candidates.
-         In practice, this has shown to be sufficient for browser/WebRTC
-         negotiation.
+         Change-Id: I0fa72e9412117d53b4284fc6b83fa5b2b95ba03b
 
-         Change-Id: Ifd8da8b315f5ae14814d4ce20e10d2e6355020e5
+2016-08-18 09:21 +0000 [b1fe070d0b]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-28 09:00 +0000 [d07c8a0504]  gtjoseph <gjoseph@digium.com>
+       * sip.conf: tlsclientmethod is using sslv23 as default.
 
-       * codecs:  Fix ABI incompatibility created by adding format_name to ast_codec
+         When 'tlsclientmethod' is not specified in sip.conf, chan_sip uses the OpenSSL
+         SSLv23_method. This was documented incorrectly in the file sip.conf.sample.
 
-         Adding format_name even to the end of ast_codec caused issued with
-         binary codec modules because the pointer would be garbage in asterisk
-         when they registered.  So, the ast_codec structure was reverted and an
-         internal_ast_codec structure was created just for use in codec.c.  A new
-         internal-only API was also added (__ast_codec_register_with_format) so
-         that codec_builtin could register codecs with the format_name in a
-         separate parameter rather than in the ast_codec structure.
+         SSLv23_method got its name in the 90s. Today, with OpenSSL 1.0.2, this method
+         enables (just) the secure TLSv1.0 and TLSv1.2. Or stated differently, that
+         function should have been called 'secure_method' or 'automatic_method' back in
+         the 90s.
 
-         ASTERISK-26144 #close
-         Reported-by: Alexei Gradinari
+         Consequently please, specify 'tlsclientmethod=tlsv1' in your sip.conf only if
+         you face a server which has problems like not falling back to TLSv1.0
+         automatically.
 
-         Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba
+         ASTERISK-24425
 
-2016-06-28 08:22 +0000 [f3d236ca7f]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I502ce6146b4504cadfd3973af8d6ec3994f54fa3
 
-       * BuildSystem:  Fix a few issues hightlighted by gcc 6.x
+2016-08-18 17:16 +0000 [ff2378c735]  Kevin Harwell <kharwell@digium.com>
 
-         gcc 6.1.1 caught a few more issues.
-         Made sure the unit tests still pass for the func_env and stdtime
-         issues.
+       * rest-api: Swagger scripts were not replacing format variable in file brief
 
-         ASTERISK-26157 #close
+         Given resource paths did not have 'json' substituted in for the '{format}'. For
+         some auto generated documentation/comment strings it resulted in something like
+         the following:
 
-         Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e
+         "... REST handler for /api-docs/sounds.{format}"
 
-2016-06-28 10:33 +0000 [9d5b0934d9]  Matt Jordan <mjordan@digium.com>
+         This patch makes sure the resource api's path is properly substituted.
 
-       * configs/basic-pbx/modules.conf: Remove 'bad' modules
+         ASTERISK-25472 #close
 
-         This patch removes the following modules:
-          - pbx_functions: It never existed.
-          - res_pjsip_log_forwarder: It no longer exists.
-          - res_hep_pjsip: The base HEP module wasn't loaded, and most basic PBXs
-                           aren't going to be installing HOMER
-          - res_pjsip_phoneprov_provider: The basic res_phoneprov module isn't
-                           loaded, and we aren't configured to make use of the
-                           module
+         Change-Id: Ie3e950a35db4043e284019d6c9061f3b03922e23
 
-         Change-Id: Id91f68cae7c9c8c3d370029fe1268cb51e4ff5a5
+2016-08-16 15:57 +0000 [43f400ef95]  Jason Parker (license 4993)
 
-2016-06-22 11:19 +0000 [1dfc286418]  Joshua Colp <jcolp@digium.com>
+       * res_format_attr_g729: Add annexb=no format parameter to SDPs
 
-       * siren: Add format attribute modules for Siren7 and Siren14.
+         Historically, Asterisk has always specified annexb=no for the g729 format.
+         However, when using res_pjsip no format attribute was specified. This patch
+         makes it so the SDP now contains a format attribute line with annexb=no.
 
-         This change removes hardcoded SDP parsing and generation for
-         Siren7 and Siren14 from chan_sip and moves it to format attribute
-         modules so it can also be used by chan_pjsip.
+         Note, that this means only g729a is negotiated. Even for pass through support.
+         According to rfc7261 the type of annex used (a or b) is dependent upon the
+         answerer. However, Asterisk being a back to back user agent makes this tricky
+         to support at this time, thus we only allow annex 'a' for now.
 
-         With this the fmtp lines for both are added with the bitrate
-         information.
+         ASTERISK-26228 #close
+         patches:
+           res_format_attr_g729.c submitted by Jason Parker (license 4993)
 
-         ASTERISK-26021
+         Change-Id: I76bc20cc0a01af01536e9915afef319c269c22d0
 
-         Change-Id: Ibb004eda37a14c0a35ef0613f6237977fc800037
+2016-08-18 15:15 +0000 [4c1ae07d51]  gtjoseph <gjoseph@digium.com>
 
-2016-06-23 04:33 +0000 [5f0a098243]  Alexander Traud <pabstraud@compuserve.com>
+       * res_odbc:  Correct the dependency relationship with res_odbc_transaction
 
-       * BuildSystem: Avoid obsolete warning with AC_TYPE_SIGNAL on autoconf.
+         The MODULEINFO dependencies between these 2 modules was reversed.
+         res_odbc should depend on res_odbc_transaction, not the other way
+         around.
 
-         Removed the obsolete macro AC_TYPE_SIGNAL because Asterisk does not use K&R C
-         but requires ANSI C anyway.
+         ASTERISK-25984 #close
 
-         ASTERISK-26046
+         Change-Id: Ifcfbb49c0b51cf6640a5446d47cd6c48caf1331f
 
-         Change-Id: I914c014385e1862102d90fe7650621def78db02e
+2016-08-18 12:04 +0000 [cab6975b02]  Kevin Harwell <kharwell@digium.com>
 
-2016-06-02 17:26 +0000 [b3c787d1dd]  Alexei Gradinari <alex2grad@gmail.com>
+       * sip_to_pjsip: Set correct tls transport method
 
-       * res_pjsip: improve realtime performance #2
+         A recent update had a copy/paste error where the unused variable 'val' was
+         being passed to the set_value function instead of the 'method' value itself.
 
-         The patch removes updating all Endpoints' status on startup.
-         Instead, only non-qualified aors with static contact
-         and non-qualified non-expired contacts are retrieved from the realtime to
-         update the endpoint status to ONLINE.
-         The endpoint name was added to the contact object to simply find the endpoint
-         that created this contact.
+         This patch passes in the right variable.
 
-         The status of endpoints with qualified aors will be updated by 'qualify'
-         functions.
+         ASTERISK-22374
 
-         ASTERISK-26061 #close
+         Change-Id: I895b7b3779ce4442bc58b8ec40d59dd29bb43f06
 
-         Change-Id: Id324c1776fa55d3741e0c5457ecac0304cb1a0df
+2016-08-18 08:19 +0000 [2381ddde63]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-23 13:47 +0000  Asterisk Development Team <asteriskteam@digium.com>
+       * sip_to_pjsip: Map the TLS method correctly.
 
-       * asterisk 13.10.0-rc1 Released.
+         When using the migration script sip_to_pjsip.py and tlsclientmethod is not set
+         in sip.conf, the default value of chan_sip (sslv23) is copied to pjsip.conf, to
+         overwrite the default of the PJProject (tlsv1). This makes sure, res_pjsip is
+         offering/using not just TLSv1.0 but TLSv1.2 as well.
 
-2016-06-23 08:42 +0000 [62349ac1b4]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-22374
 
-       * Release summaries: Add summaries for 13.10.0-rc1
+         Change-Id: Ie530a3dae9926ae14f3920a21be1e2edb15bda4f
 
-2016-06-23 08:38 +0000 [8da6ba4328]  Mark Michelson <mmichelson@digium.com>
+2016-08-18 08:17 +0000 [6500f5e138]  Alexander Traud <pabstraud@compuserve.com>
 
-       * .version: Update for 13.10.0-rc1
+       * sip_to_pjsip: Add compactheaders, timerb, timert1, and useragent.
 
-2016-06-23 08:38 +0000 [170b85e3ae]  Mark Michelson <mmichelson@digium.com>
+         When using the migration script sip_to_pjsip.py, no section of type=system or
+         type=general were created. Therefore the keys compactheaders, timerb, timert1,
+         and useragent were not migrated to pjsip.conf.
 
-       * .lastclean: Update for 13.10.0-rc1
+         ASTERISK-22374
 
-2016-06-23 08:38 +0000 [4af7049b8f]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I318a453843227ea36bf130d392d4abd7bd26b5a1
 
-       * realtime: Add database scripts for 13.10.0-rc1
+2016-08-18 08:16 +0000 [21e9c69e56]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-22 15:04 +0000 [3d904659ec]  Corey Farrell <git@cfware.com>
+       * sip_to_pjsip: Map (session-)timers correctly.
 
-       * res_fax: Fix reference leak in fax_v21_session_new.
+         When using the migration script sip_to_pjsip.py, session-timers=accept and
+         session-timers=refuse were mapped to wrong values.
 
-         fax_v21_session_new created a session details object but only released
-         the allocation reference during error conditions.  fax_session_new adds
-         it's own reference to details if needed so the caller is always
-         responsible for cleaning it's own reference.
+         ASTERISK-22374
 
-         ASTERISK-26141 #close
+         Change-Id: Ie4e90d5f6a29aff07837b7fe5bc8aea5fb6fc092
 
-         Change-Id: Ie7fc52a83b6596ce9ce2d5a2bd9f3e204f48fc88
+2016-08-18 08:15 +0000 [c9a97398f7]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-22 13:41 +0000 [48db4c2159]  gtjoseph <gjoseph@digium.com>
+       * sip_to_pjsip: Write username even without authname.
 
-       * res_rtp_asterisk:  Fix a self-comparison identified by gcc 6
+         When using the migration script sip_to_pjsip.py, now the (mandatory) username is
+         written to pjsip.conf, even if there was no (optional) authname in the register
+         string in sip.conf.
 
-         gcc 6 caught a previously unidentified self-comparison in
-         ice_candidate_cmp.  Fixed it and re-ordered the predicates for better
-         short-circuiting.
+         ASTERISK-22374
 
-         ASTERISK-26140 #close
+         Change-Id: Ie53e1997104cd2674821688b8a8247249f5e156f
 
-         Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7
+2016-08-18 08:14 +0000 [60275359bc]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-22 10:37 +0000 [bc69b03316]  gtjoseph <gjoseph@digium.com>
+       * sip_to_pjsip: Parse register even with transport.
 
-       * chan_unistim:  Fix memcpy in get_to_address
+         When using the migration script sip_to_pjsip.py and the register string
+         started with a transport in sip.conf - like tls://... - register was not parsed
+         correctly and therefore not migrated correctly to pjsip.conf.
 
-         A code block only enabled when HAVE_PKTINFO is not defined (FreeBSD)
-         was using a pointer to a pointer as the destination of a memcpy and a
-         '&' instead of '*' in the sizeof.
+         ASTERISK-22374
 
-         ASTERISK-26138 #close
+         Change-Id: I44c12104eea2bd8558ada6d25d77edfecd92edd2
 
-         Change-Id: Id4927ff256c0e470bdf7bcfc025146a2f656e708
+2016-08-18 08:13 +0000 [0d479232eb]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-20 13:18 +0000 [1b79e2deff]  Mark Michelson <mmichelson@digium.com>
+       * sip_to_pjsip: Write local_net, contact_acl, contact_deny, and contact_permit.
 
-       * Fix Alembic upgrades.
+         When using the migration script sip_to_pjsip.py, those keys got missing. These
+         keys might appear several times and the function "merge_value" tried to collect
+         those. However, because these keys have different names in sip.conf and
+         pjsip.conf, "merge_value" was not able to find the new key name in sip.conf.
+         This change lets "merge_value" search with the old key name in sip.conf and
+         write with the new key name in pjsip.conf.
 
-         A non-existent constraint was being referenced in the upgrade script.
-         This patch corrects the problem by removing the reference.
+         ASTERISK-22374
 
-         This patch fixes another realtime problem as well. Our Alembic scripts
-         store booleans as yes or no values. However, Sorcery tries to insert
-         "true" or "false" instead. This patch updates Sorcery to use "yes" and
-         "no"
+         Change-Id: Ie53c5278ae6f1cb8fa7e96c5289877d46981d9d2
 
-         ASTERISK-26128 #close
+2016-08-18 08:11 +0000 [cbc1b2d020]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I366dbbf91418a9cb160b3ca74b0e59b5ac284bec
+       * sip_to_pjsip: Map externhost/ip to Transports.
 
-2016-06-22 10:55 +0000 [e30602587c]  Alexander Traud <pabstraud@compuserve.com>
+         When using the migration script sip_to_pjsip.py, the externhost or externip of
+         sip.conf were erroneously written to Endpoints instead to Transports.
 
-       * BuildSystem: Avoid obsolete warning with AC_FUNC_SETVBUF_REVERSED on autoconf.
+         ASTERISK-22374
 
-         Removed the obsolete macro AC_FUNC_SETVBUF_REVERSED because Asterisk does not
-         support the platform SVR2 from the year 1987 anymore.
+         Change-Id: I2c5873386cfc388899fa9cf2368639dd12f1b8e4
 
-         ASTERISK-26046
+2016-08-18 08:04 +0000 [5f33e99534]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I28161b037feb2d29ab46ed20e785928460226c22
+       * sip_to_pjsip: Add defaultexpiry, maxexpiry, and minexpiry.
 
-2016-06-22 10:51 +0000 [77da168e58]  gtjoseph <gjoseph@digium.com>
+         When using the migration script sip_to_pjsip.py, defaultexpiry, maxexpiry, and
+         minexpiry were not migrated to pjsip.conf.
 
-       * test_res_pjsip_scheduler: Add 'depends' on pjproject in MODULEINFO
+         ASTERISK-22374
 
-         Since the file was missing the depends on pjproject, it wasn't
-         picking up the pjproject related include path.  If there was no
-         system installed pjproject and pjproject-bundled was used, a compile
-         would fail because pjsip.h wasn't found.
+         Change-Id: I007fbf543dcadc96fc3ed71c54da502bcb209b7b
 
-         ASTERISK-26139 #close
+2016-08-18 08:03 +0000 [231ea0350d]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I2ee64a999051452bc198c4e2c168c70769cd3757
+       * sip_to_pjsip: Write media_encryption.
 
-2016-06-21 06:52 +0000 [dfcd466bf0]  Torrey Searle <torrey@voxbone.com>
+         When using the migration script sip_to_pjsip.py, encryption=yes got missing and
+         media_encryption=sdes was not written to pjsip.conf, because of a typo.
 
-       * res_rtp_asterisk: fix memory leak in dtls
+         ASTERISK-22374
 
-         ensure that cert bios get freed after creating the fingerprint
+         Change-Id: I0fc3e55dc512a57603ae0fef41baacccf2a35c05
 
-         ASTERISK-26129 #close
+2016-08-18 08:02 +0000 [23eb065121]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I44d23aea07dce80176ca1ff877c5ace9452ef451
+       * sip_to_pjsip: Write cos and tos.
 
-2016-06-21 17:42 +0000 [c982da0641]  Richard Mudgett <rmudgett@digium.com>
+         When using the migration script sip_to_pjsip.py, both tos_sip and cos_sip got
+         missed, because of a typo. Therefore, cos and tos were not written to
+         pjsip.conf. Furthermore, that revealed a misuse of an internal function, caused
+         by a copy-and-paste error.
 
-       * res_pjproject.c: Replace inlined DEBUG_ATLEAST() with macro.
+         ASTERISK-22374
 
-         Change-Id: I8799fb0a347ad76e747dafd0eacf1ea1086b9a8c
+         Change-Id: Id245ebadf70ab9776eb280c026288540af3af5c2
 
-2016-06-12 11:19 +0000 [6a568bcc66]  gtjoseph <gjoseph@digium.com>
+2016-08-18 07:55 +0000 [0b675a208b]  Alexander Traud <pabstraud@compuserve.com>
 
-       * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription
+       * sip_to_pjsip: Add cert_file and ca_list_path.
 
-         Occasionally under load we'll attempt to send a final NOTIFY on a
-         subscription that's already been terminated and a SEGV will occur
-         down in pjproject's evsub_destroy function.  This is a result of a
-         race condition between all the paths that can generate a notify
-         and/or destroy the underlying pjproject evsub object:
+         When using the migration script sip_to_pjsip.py, cert_file and ca_list_path were
+         not migrated to pjsip.conf.
 
-          * The client can send a SUBSCRIBE with Expires: 0.
-          * The client can send a SUBSCRIBE/refresh.
-          * The subscription timer can expire.
-          * An extension state can change.
-          * An MWI event can be generated.
-          * The pjproject transaction timer (timer_b) can expire.
+         ASTERISK-22374
 
-         Normally when our pubsub_on_evsub_state is called with a terminate,
-         we push a task to the serializer and return at which point the dialog
-         is unlocked.  This is usually not a problem because the task runs
-         immediately and locks the dialog again.  When the system is heavily
-         loaded though, there may be a delay between the unlock and relock
-         during which another event may occur such as the subscription timer
-         or timer_b expiring, an extension state change, etc.  These may also
-         cause a terminate to be processed and if so, we could cause pjproject
-         to try to destroy the evsub structure twice.  There's no way for us to
-         tell that the evsub was already destroyed and the evsub's group lock
-         can't tolerate this and SEGVs.
+         Change-Id: I4612877d190b7f86a48698cefbf5c4db6c265825
 
-         The remedy is twofold.
+2016-08-17 14:13 +0000 [1cd12d73a6]  Richard Mudgett <rmudgett@digium.com>
 
-          * A patch has been submitted to Teluu and added to the bundled
-            pjproject which adds add/decrement operations on evsub's group lock.
+       * res_pjsip_session.c: Fix unbound srv failover tests.
 
-          * In res_pjsip_pubsub:
-            * configure.ac and pjproject-bundled's configure.m4 were updated
-              to check for the new evsub group lock APIs.
-            * We now add a reference to the evsub group lock when we create
-              the subscription and remove the reference when we clean up the
-              subscription.  This prevents evsub from being destroyed before
-              we're done with it.
-            * A state has been added to the subscription tree structure so
-              termination progress can be tracked through the asyncronous tasks.
-            * The pubsub_on_evsub_state callback has been split so it's not doing
-              double duty.  It now only handles the final cleanup of the
-              subscription tree.  pubsub_on_rx_refresh now handles both client
-              refreshes and client terminates.  It was always being called for
-              both anyway.
-            * The serialized_on_server_timeout task was removed since
-              serialized_pubsub_on_rx_refresh was almost identical.
-            * Missing state checks and ao2_cleanups were added.
-            * Some debug levels were adjusted to make seeing only off-nominal
-              things at level 1 and nominal or progress things at level 2+.
+         Commit 1b666549f33d69dc080b212bf92126f3bc3a18b2 broke the srv failover
+         functionality if a TCP connection gets disconnected.  Under these
+         conditions, session_inv_on_state_changed() gets a
+         PJSIP_EVENT_TRANSPORT_ERROR and restarts the INVITE transaction on a new
+         transport.  Unfortunately, session_inv_on_tsx_state_changed() also gets
+         the same PJSIP_EVENT_TRANSPORT_ERROR event and unconditionally terminates
+         the session.
 
-         ASTERISK-26099 #close
-         Reported-by: Ross Beer.
+         * Made session_inv_on_tsx_state_changed() complete terminating the session
+         on PJSIP_EVENT_TRANSPORT_ERROR only if the session state is still
+         PJSIP_INV_STATE_DISCONNECTED.
 
-         Change-Id: I779d11802cf672a51392e62a74a1216596075ba1
+         ASTERISK-26305 #close
+         Reported by: Richard Mudgett
 
-2016-06-21 07:05 +0000 [ef97911a1c]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: If736e766b5c55b970fa38ca6c8a885caf27b897d
 
-       * res_rtp_asterisk: Use latest DTLS version available by underlying platform.
+2016-08-16 15:36 +0000 [329507fe20]  gtjoseph <gjoseph@digium.com>
 
-         Do not use DTLSv1_method() but DTLS_method() when available in OpenSSL of the
-         underlying platform. This change enables DTLS 1.2 since OpenSSL 1.0.2, for
-         WebRTC (DTLS-SRTP via SIP-over-WebSockets). This change enables AEAD-based
-         cipher-suites.
+       * res_pjsip:  Add contact_user to endpoint
 
-         ASTERISK-26130 #close
+         contact_user, when specified on an endpoint, will override the user
+         portion of the Contact header on outgoing requests.
 
-         Change-Id: I41f24448d6d2953e8bdb97c9f4a6bc8a8f055fd0
+         Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4
 
-2016-06-21 10:53 +0000 [69d58a1e37]  Scott Griepentrog <scott@griepentrog.com>
+2016-08-17 08:10 +0000 [6f448f32fe]  Torrey Searle <torrey@voxbone.com>
 
-       * PJSIP: provide transport type with received messages
+       * res_ari: Add http prefix to generated docs
 
-         The receipt of a SIP MESSAGE may occur over any transport including TCP
-         and TLS. When the message is received, the original URI is added to the
-         message in the field PJSIP_RECVADDR, but this is insufficient to ensure
-         a reply message can reach the originating endpoint. This patch adds the
-         PJSIP_TRANSPORT field populated with the transport type.
+         updated the uri handler to include the url prefix of the http server
+         this enables res_ari to add it to the uris when generating docs
 
-         ASTERISK-26132 #close
+         Change-Id: I279335a2625261a8492206c37219698f42591c2e
 
-         Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e
+2016-08-17 06:12 +0000 [56e0aed177]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-06-21 08:01 +0000 [cbfa9f771e]  Alexander Traud <pabstraud@compuserve.com>
+       * BuildSystem: Detect ca_list_path capabilities in external PJProject.
 
-       * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf.
+         Since Asterisk 13.8, pj_ssl_cert_load_from_files2 got detected only in the
+         bundled PJProject but not in an external PJProject. Therefore, ca_list_path
+         could not be used in pjsip.conf. With this change, pj_ssl_cert_load_from_files2
+         is detected again to enable ca_list_path again.
 
-         Some configure scripts used both AC_HELP_STRING and its replacement
-         AS_HELP_STRING. For consistency and to avoid obsolete warnings, those were
-         changed to AS_HELP_STRING.
+         ASTERISK-26303 #close
 
-         ASTERISK-26046
+         Change-Id: I4a4a0cdc5cdff33730911fb4cfc0498c069043d0
 
-         Change-Id: I8aad4fd2bdee40aa2a31ce3339a1eb33ff4f5b0f
+2016-08-16 12:24 +0000 [2edcfcf1eb]  gtjoseph <gjoseph@digium.com>
 
-2016-06-20 10:29 +0000 [ba0d9e7f7a]  Joshua Colp <jcolp@digium.com>
+       * ari:  Add documentation that path parameters are case-sensitive
 
-       * res_pjsip_session: Handle race condition at shutdown with timer.
+         Added to api.wiki.mustache so that the generated object pages
+         have the notation in the table header as well as under each method
+         that has path parameters.
 
-         When shutting down res_pjsip_session will get unloaded before res_pjsip.
-         The act of unloading unregisters all the PJSIP services and sets
-         their module IDs to -1. In some cases it is possible for a timer to
-         occur after this happens which calls into res_pjsip_session. The
-         res_pjsip_session module can then try to get the session from the
-         INVITE session using the module ID. Since the module ID is now -1
-         this fails.
+         ASTERISK-25492 #close
 
-         This change stores a copy of the module ID and uses it for the timer
-         callback scenario. If the module ID is -1 the callback immediately
-         returns but if the module ID is valid then it continues as normal.
+         Change-Id: I36c46c6dc0c9ac350470394a999a1b19ef3fcdaf
 
-         This works as the original ID of the module is guaranteed to still
-         be valid when used with the INVITE session.
+2016-08-15 15:29 +0000 [f4e28b3a09]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-26127 #close
+       * Refactor usage pattern of xmldoc info tag.
 
-         Change-Id: I88df72525c4e9ef9f19c13aedddd3ac4a335c573
+         This updates func_channel.c and main/message.c to use a generic xpointer
+         include instead of including info from each channel driver.  Now the
+         name attribute of info is CHANNEL or CHANNEL_EXAMPLES to be included in
+         documentation for func_channel.  Setting the name attribute of info to
+         MessageToInfo or MessageFromInfo causes it to be included in the
+         MessageSend application and AMI action.
 
-2016-06-20 12:13 +0000 [c1512f4108]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I89fd8276a3250824241a618009714267d3a8d1ea
 
-       * app_voicemail.c: Fix IMAP compile error.
+2016-08-04 20:00 +0000 [a8d9a53bae]  Richard Mudgett <rmudgett@digium.com>
 
-         Fix compile error introduced by the patch for
-         ASTERISK-26045
+       * res_sorcery_config.c: Cleanup ao2 container usage idioms.
 
-         Change-Id: I5b02876266f2824f4cec2b54d6ff4db5de5778d3
+         Change-Id: Iad24b335fb121a2bc7f1d048ab7420569edcba5a
 
-2016-06-16 15:56 +0000 [5134a8043a]  Alexei Gradinari <alex2grad@gmail.com>
+2016-08-04 15:57 +0000 [74a91b9ee5]  Richard Mudgett <rmudgett@digium.com>
 
-       * fix: memory leaks, resource leaks, out of bounds and bugs
+       * sorcery.c: Minor optimizations.
 
-         ASTERISK-26119 #close
+         * Remove some unused parameters from internal functions:
+         sorcery_wizard_create()
+         sorcery_wizard_update()
+         sorcery_wizard_delete()
 
-         Change-Id: Iecbf7d0f360a021147344c4e83ab242fd1e7512c
+         * Created the struct sorcery_observer_invocation ao2 object without a lock
+         since it is not needed in sorcery_observer_invocation_alloc().
 
-2016-06-13 17:40 +0000 [cfebe3b94a]  Mark Michelson <mmichelson@digium.com>
+         * Cleanup generic ao2 container sorcery object id hash, sort, and cmp
+         functions.
 
-       * ARI: Ensure announcer channels are destroyed.
+         Change-Id: Iff71d75f52bc1b8cee955456838c149faaa4f92e
 
-         Announcer channels were not being destroyed because the
-         stasis_app_control structure that referenced them was not being
-         destroyed. The control structure was not being destroyed because it was
-         not being unlinked from its container. It was not being unlinked from
-         its container because the after bridge callback for the announcer
-         channel was not being run. The after bridge callback was not being run
-         because the after bridge datastore was not being removed from the
-         channel on destruction. The channel was not being destroyed because the
-         hangup that used to destroy the channel was now only reducing the
-         reference count to one. The reference count of the channel was only
-         being reduced to one because the stasis_app_control structure was
-         holding the final reference...
+2016-08-01 11:04 +0000 [29beb2890c]  Richard Mudgett <rmudgett@digium.com>
 
-         The control structure used to not keep a reference to the channel, so
-         that loop described above did not happen.
+       * sorcery.c: Tweak some container declaration formatting.
 
-         The solution is to manually remove the control structure from its
-         container when the playback on a bridge is complete.
+         * Tweak sorcery_object_type_alloc() formatting.
+         * Tweak ast_sorcery_init() formatting.
 
-         ASTERISK-26083 #close
-         Reported by Joshua Colp
+         Change-Id: Ib02430023f15268cd7a2ea53f2c331213e4d3944
 
-         Change-Id: I0ddc0f64484ea0016245800b409b567dfe85cfb4
+2016-08-11 23:30 +0000 [9b822293bd]  Corey Farrell <git@cfware.com>
 
-2016-06-20 08:05 +0000 [76516bd79d]  Alexander Traud <pabstraud@compuserve.com>
+       * pbx.c: Additional fixes to ast_context_remove_extension_callerid2.
 
-       * http: leverage 'bindaddr' for TLS in http.conf
+         Do not check registrar of the first extension head.  We should only check
+         the registrar when we match the priority.
 
-         The internal HTTP/WebSocket server supports both TCP and TLS, which can be
-         activated separately via the file http.conf. The source code intends to re-use
-         the TCP parameter 'bindaddr' for TLS, even if 'tlsbindaddr' is not specified
-         explicitly. This did not work because of a typo. This change resolves this typo.
+         Additionally fix a couple calls to strcmp which used the input callerid
+         instead of the clean version ex.cidmatch.
 
-         ASTERISK-26126 #close
+         ASTERISK-26233
 
-         Change-Id: I5efb0409ae12044dfb3495b6b97b6d40a8c9c51f
+         Change-Id: I17ea6881a18f40840ae9c1f5394aab1fbb3769f1
 
-2016-05-31 09:10 +0000 [89cc86fc38]  Vasil Kolev <vasil.kolev@securax.org>
+2016-08-10 14:41 +0000 [403c794684]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * chan_sip: bigger buffers for headers, better failure mode
+       * core: Entity ID is not set or invalid
 
-         Currently chan_sip can give weird messages if the contacts don't
-         fit in the From: or To: headers. This fix changes the from,to and
-         invite variables to use ast_str, allocates and deallocates them and
-         resizes them if needed.
+         The Exchanging Device and Mailbox States could not working
+         if the Entity ID (EID) is not set manually and can't be obtained
+         from ethernet interface.
 
-         ASTERISK-26069 #close
+         This patch replaces debug message to warning
+         and addes missing description about option 'entityid' to
+         asterisk.conf.sample.
 
-         Change-Id: I1b68fcbddca6f6cc7d7a92fe1cb0d5430282b2b3
+         With this patch the asterisk also:
+         (1) decline loading the modules which won't work without EID:
+             res_corosync and res_pjsip_publish_asterisk.
+         (2) warn if EID is empty on loading next modules:
+             pbx_dundi, res_xmpp
 
-2016-05-18 17:37 +0000 [d53a36ff33]  Richard Mudgett <rmudgett@digium.com>
+         Starting with v197 systemd/udev will automatically assign "predictable"
+         names for all local Ethernet interfaces.
+         This patch also addes some new ethernet prefixes "eno" and "ens".
 
-       * res_pjsip_transport_management.c: Misc cleanups to survive shutdown.
+         ASTERISK-26164 #close
 
-         * In unload_module(), reordered destroying things to minimize the window
-         that the global transports container could be used by other threads on
-         shutdown.  When shutting down you need to stop things in the opposite
-         order of creation.
+         Change-Id: I72d712f1ad5b6f64571bb179c5cb12461e7c58c6
 
-         * Put the global transports container into an AO2_GLOBAL_OBJ_STATIC to
-         eliminate the crash potential by other threads using the container on
-         shutdown.
+2016-06-15 17:10 +0000 [93332cb1d0]  Evgeniy Tsybra <cjack@yandex.ru>
 
-         * Made struct monitored_transport.sip_received not use
-         ast_atomic_fetchadd_int() since it is used as a boolean value that is only
-         set TRUE.  It was previously incremented for every received SIP message
-         and could theoretically overflow.
+       * chan_sip: Fix lastrtprx always updated
 
-         * In monitored_transport_state_callback(), allocated the monitored
-         transport object without a lock since the lock was unused.
+         Packets are read regulary, when there is no data in buffer fr->frametype
+         is AST_FRAME_NULL. There was no check of frametype and lastrtprx always 
+         updated and, therefore, rtptimeout did not work at all.
 
-         * In keepalive_global_loaded(), removed releasing the transports container
-         if the keepalive_thread could not be started.  I set it up to be tried
-         again if the user reloads the configuration.
+         ASTERISK-25270 #close
 
-         Change-Id: I8d12d16ef564290fa6d25a32334bb5ce8fdf87ff
+         Change-Id: If3b5ca0dbb822582a86eb7d01dcae4e83448c41d
 
-2016-01-05 19:08 +0000 [03953d8034]  Richard Mudgett <rmudgett@digium.com>
+2016-08-15 07:17 +0000 [2735ec899a]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip.c: Add check that timer actually got scheduled.
+       * manager: Clarify that dialplan manipulation actions are under system class.
 
-         Change-Id: Iabaa2e5dccf0762c258101ea0eb1487cf6959ad1
+         ASTERISK-26246 #close
 
-2016-06-13 13:33 +0000 [32ab98116e]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id673b9786389f9d2a87f638ce1a25161f5f31657
 
-       * res_rtp_multicast.c: Fix warning message typo.
+2016-08-13 22:02 +0000 [f59bd47ed3]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3
+       * app_dial: Improve documentation
 
-2016-02-11 18:15 +0000 [0429c53368]  Richard Mudgett <rmudgett@digium.com>
+         * Add some helpful <literal> and other embedded paragraph tags
 
-       * res_pjsip_session.c: Reorganize ast_sip_session_terminate().
+         * Document some of the lesser known channel variables set by Dial
 
-         Change-Id: I68a2128bcba4830985d2d441e70dfd1ac5bd712b
+         * Add examples for some common Dial uses, along with some more
+           challenging but useful options
 
-2016-06-10 12:35 +0000 [5823f279f3]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ib2fb9301e8e044d14fbb2815ec64161f19bbfbc1
 
-       * chan_rtp: Backport changes from master.
+2016-08-13 20:16 +0000 [4facaac408]  Matt Jordan <mjordan@digium.com>
 
-         * Deprecate chan_multicast_rtp.
+       * manager: Add <see-also> tags to relate interrelated events/actions together
 
-         Change-Id: Ib5a45e58c75ee8abd0b4f9575379b5321feb853e
+         Change-Id: Idbac539205aa732bf786c4f765577d8e9ff28ba4
 
-2016-06-10 16:13 +0000 [dde58df318]  Richard Mudgett <rmudgett@digium.com>
+2016-08-13 20:15 +0000 [232d4fe24f]  Matt Jordan <mjordan@digium.com>
 
-       * chan_rtp.c: Copy file from chan_multicast_rtp.c
+       * manager: Add <see-also> tags to relate Bridge related events,actions, and apps
 
-         Change-Id: I1119b53f2152ab1cbec74b5be7ea44844dbda8ef
+         Change-Id: I67e6b79fa3102e494b5fe6cc7510472249080e85
 
-2016-06-08 06:15 +0000 [ca38a3cbb4]  Alexander Traud <pabstraud@compuserve.com>
+2016-08-13 20:14 +0000 [63c0b2f7c9]  Matt Jordan <mjordan@digium.com>
 
-       * core: Not the configured but granted number of possible file descriptors.
+       * manager: Add <see-also> tags to relate AoC events and actions
 
-         With CLI "core show settings", simply the parameter maxfiles of the file
-         asterisk.conf was shown. If that parameter was not set, nothing was displayed
-         although the environment might have set a default number itself. Or if maxfiles
-         were not granted (completely), still maxfiles was shown. Now, the maximum number
-         of possible file descriptors in the environment is shown.
+         Change-Id: Iea89a36222712148c1775c05ed0ad1049d67a70e
 
-         ASTERISK-26097
+2016-08-13 20:13 +0000 [0422667d6c]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I2df5c58863b5007b34b77adbe28b885dfcdf7e0b
+       * manager: Add <see-also> tags to relate UserEvent actions/apps/events
 
-2016-06-07 18:45 +0000 [caf6cccc5c]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I80f8a981f62f50e74609c69c49edcaca6c95efa4
 
-       * cel: Ensure only one dial status per channel exists.
+2016-08-12 15:53 +0000 [f9e734974b]  Matt Jordan <mjordan@digium.com>
 
-         CEL wrongly assumed that a channel would only have a single dial
-         event on it. This is incorrect. Particularly in a queue each
-         call attempt to a member will result in a dial event, adding
-         a new dial status in CEL without removing the old one. This
-         would cause the container to grow with only one dial status
-         being removed when the channel went away. The other dial status
-         entries would remain leaking memory.
+       * res_agi: Improve documentation
 
-         This change fixes the memory leak by ensuring that only one dial
-         status will only ever exist for each channel.
+         * Groups of AGI commands that have similar functionality now reference
+           each other, and all reference the AGI application for ease of wiki
+           reference.
 
-         The behavior during the scenario where multiple events are received
-         has also been improved. For failure cases the first failure will
-         be the dial status. If an answer dial status is received, though,
-         it will take priority and the dial status for the channel will be
-         answer.
+         * The documentation for the AGI application has been improved, in
+           particular noting the various AGI types and how they are invoked.
 
-         Memory usage has also been decreased by storing the minimal
-         amount of information and the code has been cleaned up slightly.
+         * A warning message has been added to DeadAGI, noting that it is
+           deprecated.
 
-         ASTERISK-25262 #close
+         Change-Id: I479ccdee8a7393f01b18692c3d4ab7e6bdd1875d
 
-         Change-Id: I5944eb923db17b6a0faa7317ff6abc9307c009fe
+2016-08-12 13:53 +0000 [781bb410d0]  Matt Jordan <mjordan@digium.com>
 
-2016-06-09 10:37 +0000 [715ef071a1]  Mark Michelson <mmichelson@digium.com>
+       * manager: Add <see-also> links between related events
 
-       * chan_pjsip: Lock channel when checking for RTP changes.
+         This patch adds some see-also references between related AMI events. It
+         focuses primarily on those events that are guaranteed to come in pairs,
+         such as DTMFBegin/DTMFEnd, as well as those that occur during the life
+         cycle of an Asterisk channel, such as Newchannel/Hangup.
 
-         bridge_native_rtp can call into an RTP-capable channel driver in order
-         for the driver to update information about who the channel is
-         communicating with. For SIP channel drivers, this means deactivating
-         RTCP and sending a reinvite so that the endpoints can communicate
-         directly.
+         Change-Id: Iaab600477052018d0f8c03d0c624c0856e9ff1f3
 
-         bridge_native_rtp does the right thing and has the channel locked when
-         calling into the channel driver. chan_pjsip can't alter session
-         properties in this thread, though. chan_pjsip queues a task on the
-         session serializer in order to update properties there.
+2016-08-12 11:15 +0000 [cfd6852d39]  Matt Jordan <mjordan@digium.com>
 
-         The problem is that this queued task was not locking the channel. This
-         meant that the queued task could attempt to deactivate RTCP at the same
-         time that the channel thread was attempting to process an incoming RTCP
-         packet. This could lead to a crash.
+       * func_channel: Reorganize documentation
 
-         This patch fixes the issue by locking the channel in the queued task
-         when altering RTP properties.
+         * Following the example of the PJSIP channel driver, the channel
+           technology specific documentation has been moved to the respective
+           channel drivers that provide that functionality. This has the benefit
+           of locating the documentation of items with those modules that provide
+           it.
 
-         ASTERISK-26092 #close
-         Reported by Niklas Larsson
+         * Examples of using the CHANNEL function for both standard items as well
+           as for PJSIP have been added.
 
-         Change-Id: I3464e226a3c41f6b915f97891e07fa1599e2a159
+         * The 'max_forwards' standard item has been documented.
 
-2016-06-09 09:20 +0000 [a99ddc6a0d]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ifaa79a232c8ac99cf8da6ef6cc7815d398b1b79b
 
-       * build:  Fix ast_sockaddr initialization to be more portable
+2016-08-11 22:11 +0000 [cb043249b6]  Corey Farrell <git@cfware.com>
 
-         A change to glibc 2.22 changed the order of the sockadddr_storage
-         members which caused the places where we do an initialization of
-         ast_sockaddr with '{ { 0, 0, } }' to fail compilation.  Those
-         initializers (which we shouldn't have been using anyway) have been
-         replaced with memsets.
+       * Run mandatory cleanup when startup fails.
 
-         Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
+         Errors during startup result in an exit.  These error branches should be
+         calling ast_run_atexit(0) to ensure mandatory cleanup is run.
 
-2016-06-08 12:26 +0000 [eabb398d71]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-26267 #close
 
-       * res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded
+         Change-Id: If226f2326ae2df7add20040696132214cf2bb680
 
-         A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not
-         loaded and does not have a configuration file. Previously when this
-         occurred, checks were put in to see if the configuration was loaded
-         successfully. While this is a good idea - and has been added to the
-         offending function in res_hep - the reality is res_hep_pjsip and
-         res_hep_rtcp have no business running if res_hep isn't also running.
+2016-08-11 11:24 +0000 [4d5e96ab53]  gtjoseph <gjoseph@digium.com>
 
-         As such, this patch also adds a function to res_hep that returns whether
-         or not it successfully loaded. Oddly enough, ast_module_check returns
-         "everything is peachy" even if a module declined its load - so it cannot
-         be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this
-         function to see if they should continue to load; if it fails, they
-         decline their load as well.
+       * res_pjsip_caller_id:  Copy header name to short header name
 
-         ASTERISK-26096 #close
+         When compact_headers was set, we were sending a zero-length header name
+         for PAI and RPID because we always forced the short header name length
+         to 0.  We did this because we cloned the header from "From" and wanted
+         to clear "f" from the sname.  By cloning however, we bypass pjproject's
+         automatic logic that sets sname to name if there's no compact form of
+         the header, which there isn't for PAI and RPID.  So now we force sname
+         to be the same as name right after we set name.
 
-         Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea
+         res_pjsip_diversion needed the same treatment for the Diversion header.
 
-2016-06-08 05:58 +0000 [0d84421f93]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-26241 #close
 
-       * astfd: Not maximum size of a single file but maximum file descriptors.
+         Change-Id: I633ec139630cd83809aae00336cee4a10077e467
 
-         With menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", the maximum size of a
-         single file was shown. Now, the maximum number of possible file descriptors is
-         shown.
+2016-08-11 12:18 +0000 [143df33110]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26097
+       * res_pjsip:  Fail global load if debug or default_from_user are empty
 
-         Change-Id: Icf98d145774b38cac144ca76d19eaef42ce659a3
+         If debug was specified in the global configuration but left blank,
+         the logger would treat it as a wildcard and log all hosts.  If
+         default_from_user was empty, a crash would result.
 
-2016-06-02 14:53 +0000 [9c5a0b814b]  Timo Teräs <timo.teras@iki.fi>
+         The global apply handler now checks for empty strings.
 
-       * Fix #include poll.h and sys/cdefs.h
+         ASTERISK-26239 #close
+         ASTERISK-26238 #close
 
-         POSIX defines poll.h, sys/poll.h should not be used at is c-library
-         internal header which may or may not exist. Notable in musl it
-         generates warning of being incorrect. And add explict include of
-         sys/cdefs.h where needed.
+         Change-Id: Ie75727f5cd5808845d92cc81f5713842fb203336
 
-         Change-Id: I142930df53fe7585a06b854b6faddc5301e024be
+2016-08-01 15:07 +0000 [1fc5c90014]  Richard Mudgett <rmudgett@digium.com>
 
-2016-06-03 22:44 +0000 [9c35f34301]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip res_pjsip_mwi: Misc fixes and cleanups.
 
-       * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition.
+         * Eliminated RAII_VAR() usage in
+         ast_sip_persistent_endpoint_update_state().
 
-         This patch fixes a race condition processing received REGISTER requests
-         and their retransmissions caused by REGISTER requests being processed by
-         two threads.  The "sip_transaction Unable to register REGISTER transaction
-         (key exists)" message is a notable symptom of this issue.
+         * Added a missing allocation failure check to
+         persistent_endpoint_find_or_create().
 
-         This issue was more likely to happen before the pjsip/distributor
-         serializers were created.  Instead of steps one and two below placing the
-         REGISTER messages into the same pjsip/distributor they were placed in
-         random pjsip/default serializers.
+         * Made persistent_endpoint_find_or_create() create the new object without
+         a lock as it isn't needed.
 
-         1) REGISTER requests come in and get placed on the pjsip/distributor
-         serializer.
+         * Cleaned up some ao2 container allocation idioms.
 
-         2) Before the first request is processed a retransmission comes in and is
-         placed on the same pjsip/distributor serializer.
+         * Reordered res_pjsip_mwi.c load_module() and unload_module()
 
-         3) The first request goes up the pjsip stack and is then shunted off to
-         the pjsip/aor/<aor> serializer.
+         Change-Id: If8ce88fbd82a0c72a37a2388f74f77237a6a36a8
 
-         4) Before the first request is completed processing in the pjsip/aor/<aor>
-         serializer, the second request goes up the pjsip stack and is also shunted
-         off to the pjsip/aor/<aor> serializer.
+2016-08-04 18:03 +0000 [73052e5732]  Richard Mudgett <rmudgett@digium.com>
 
-         5) The first request completes processing and sends out its response.
+       * location.c: Misc fixes and cleanups.
 
-         6) The second request completes processing and tries to send out its
-         response but pjlib complains that the REGISTER transaction key already
-         exists.
+         * Eliminated most RAII_VAR() usage.
 
-         7) Sadness ensues.
+         * Added several missing allocation failure checks.
 
-         * The race is eliminated by removing the pjsip/aor/<aor> serializer and
-         continuing the processing in the pjsip/distributor serializer.  Now any
-         retransmissions queued in the pjsip/distributor serializer will be
-         processed after the first message is completely processed.
+         * Made ast_sip_for_each_contact() allocate the wrapper ao2 object without
+         a lock as it is not needed.
 
-         ASTERISK-26088 #close
-         Reported by:  Richard Mudgett
+         Change-Id: Ie20913365156c95dd79e5d471cfd25e99ae880bc
 
-         Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a
+2016-08-02 13:53 +0000 [9d4bd3d763]  Richard Mudgett <rmudgett@digium.com>
 
-2016-06-03 11:35 +0000 [557333ea4c]  Richard Mudgett <rmudgett@digium.com>
+       * taskprocessor.c: Tweak high water checks.
 
-       * stasis: Add setting subscription congestion levels.
+         * The high water check in ast_taskprocessor_alert_set_levels() would
+         trigger immediately if the new high water level is zero and the queue was
+         empty.
 
-         Stasis subscriptions and message routers create taskprocessors to process
-         the event messages.  API calls are needed to be able to set the congestion
-         levels of these taskprocessors for selected subscriptions and message
-         routers.
+         * The high water check in taskprocessor_push() was off by one.
 
-         * Updated CDR, CEL, and manager's stasis subscription congestion levels
-         based upon stress testing.  Increased the congestion levels to reduce the
-         potential for bursty call setup/teardown activity from triggering the
-         taskprocessor overload alert.  CDRs in particular need an extra high
-         congestion level because they can take awhile to process the stasis
-         messages.
+         Change-Id: I687729fb4efa6a0ba38ec9c1c133c4d407bc3d5d
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+2016-08-03 16:24 +0000 [e1248c3075]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Id0a716394b4eee746dd158acc63d703902450244
+       * res_pjsip: Make aor named lock a mutex.
 
-2016-06-02 18:19 +0000 [110d772467]  Richard Mudgett <rmudgett@digium.com>
+         The named aor lock was always being locked for writes so a rwlock adds no
+         benefit and may be slower because rwlocks are biased toward read locking.
 
-       * sorcery: Add setting object type congestion levels.
+         Change-Id: I8c5c2c780eb30ce5441832257beeb3506fd12b28
 
-         Sorcery creates taskprocessors for object types to process object observer
-         callbacks.  An API call is needed to be able to set the congestion levels
-         of these taskprocessors for selected object types.
+2016-07-29 17:41 +0000 [6e40334d89]  Richard Mudgett <rmudgett@digium.com>
 
-         * Updated PJSIP's contact and contact_status sorcery object type observer
-         default congestion levels based upon stress testing.  Increased the
-         congestion levels to reduce the potential for bursty register/unregister
-         and subscribe/unsubscribe activity from triggering the taskprocessor
-         overload alert.
+       * pjsip_distributor.c: Add missing allocation failure check.
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         Change-Id: I932ab2cea845e534d9ff318035b6de39972d3b28
 
-         Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6
+2016-08-11 11:13 +0000 [a3c5488ff4]  Matt Jordan <mjordan@digium.com>
 
-2016-06-02 16:08 +0000 [610eee2a36]  Richard Mudgett <rmudgett@digium.com>
+       * app_queue: Prevent crash when a call is forwarded to an invalid location
 
-       * taskprocessors: Implement high/low water mark alerts.
+         When a call forward attempt is made from a Queue member, the current
+         code will hang up the forwarding channel in an off-nominal condition
+         prior to raising the Stasis events informing the rest of Asterisk that
+         the call was forwarded. This will result in a slew of dreaded FRACKs,
+         most likely leading to a crash.
 
-         When taskprocessors get backed up, there is a good chance that we are
-         being overloaded and need to defer adding new work to the system.
+         This patch modifies the code such that we don't hang up the forwarding
+         channel even in an off-nominal condition until we've safely raised the
+         Stasis messages.
 
-         * Implemented a high/low water alert mechanism for modules to check if the
-         system is being overloaded and take appropriate action.  When a
-         taskprocessor is created it has default congestion levels set.  A
-         taskprocessor can later have those congestion levels altered for specific
-         needs if stress testing shows that the taskprocessor is a symptom of
-         overloading or needs to handle bursty activity without triggering an
-         overload alert.
+         ASTERISK-25797 #close
 
-         * Add CLI "core show taskprocessor" low/high water columns.
+         Change-Id: Ife5abed351691fd79105321636eaa8ea8dcdba38
 
-         * Fixed __allocate_taskprocessor() to not use RAII_VAR().  RAII_VAR() was
-         never a good thing to use when creating a taskprocessor because of the
-         nature of how its references needed to be cleaned up on a partial
-         creation.
+2016-08-11 10:50 +0000 [5913929d31]  Kevin Harwell <kharwell@digium.com>
 
-         * Made res_pjsip's distributor check if the taskprocessor overload alert
-         is active before placing a message representing brand new work onto a
-         distributor serializer.
+       * alembic: add auth_username to endpoint's identify_by enum
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         A new identify_by option was added recently, auth_username. However, this
+         setting was not added as an allowable choice in the database enumeration
+         value.
 
-         Change-Id: I182f1be603529cd665958661c4c05ff9901825fa
+         This patch updates the current enumeration, adding in the new setting.
 
-2016-05-27 17:31 +0000 [26e3492246]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26268 #close
 
-       * res_pjsip_session: Use distributor serializer for incoming calls.
+         Change-Id: Ib4788e8485e4cd40172ec0abbf5810a147ab8bf8
 
-         We must continue using the serializer that the original INVITE came in on
-         for the dialog.  There may be retransmissions already enqueued in the
-         original serializer that can result in reentrancy and message sequencing
-         problems.
+2016-08-06 10:57 +0000 [1589452fdc]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Outgoing call legs create the pjsip/outsess/<endpoint> serializers for
-         their dialogs.
+       * pjsip: Fix deadlock with suspend taskprocessor on masquerade
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         If both channels which should be masqueraded
+         are in the same serializer:
+         1st channel will be locked waiting condition 'complete'
+         2nd channel will be locked waiting condition 'suspended'
 
-         Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc
+         On heavy load system a chance that both channels will be in
+         the same serializer 'pjsip/distibutor' is very high.
 
-2016-05-27 16:28 +0000 [ceb1007ed7]  Richard Mudgett <rmudgett@digium.com>
+         To reproduce compile res_pjsip/pjsip_distributor.c with
+         DISTRIBUTOR_POOL_SIZE=1
 
-       * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer.
+         Steps to reproduce:
+         1. Party A calls Party B (bridged call 'AB')
+         2. Party B places Party A on hold
+         3. Party B calls Voicemail app (non-bridged call 'BV')
+         4. Party B attended transfers Party A to voicemail using REFER.
+         5. When asterisk masquerades calls 'AB' and 'BV',
+            a deadlock is happened.
 
-         * Resolves potential reentrancy problems if system restarted in the middle
-         of subscription message transactions.
+         This patch adds a suspension indicator to the taskprocessor.
+         When a session suspends/unsuspends the serializer
+         it sets the indicator to the appropriate state.
+         The session checks the suspension indicator before
+         suspend the serializer.
 
-         * Fixes memory leak recreating persistent subscriptions when the
-         subscription resource tree could not be created.
+         ASTERISK-26145 #close
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b
 
-         Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be
+2016-08-09 12:07 +0000 [f6ec94cca6]  Kevin Harwell <kharwell@digium.com>
 
-2016-05-27 12:50 +0000 [27bafc3a8b]  Richard Mudgett <rmudgett@digium.com>
+       * alembic/sqlalchemy: auto increment only allowed on a single column
 
-       * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions.
+         The extensions table defined two columns (id and priority) as primary key
+         autoincrement columns. However only one is allowed when defining the primary
+         key.
 
-         We must continue using the serializer that the original SUBSCRIBE came in
-         on for the dialog.  There may be retransmissions already enqueued in the
-         original serializer that can result in reentrancy and message sequencing
-         problems.  The "sip_transaction Unable to register SUBSCRIBE transaction
-         (key exists)" message is a notable symptom of this issue.
+         This patch removes the autoincrement attribute from the priority column since
+         it does not need to be as such and really should not have been on there in the
+         first place.
 
-         Outgoing subscriptions still create the pjsip/pubsub/<endpoint>
-         serializers for their dialogs.
+         This patch also removes 'context', 'exten', and 'priority' from the primary key
+         index and creates a new combined unique contraint index on them.
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         ASTERISK-26183 #close
 
-         Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0
+         Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b
 
-2016-05-26 17:35 +0000 [16b08444da]  Richard Mudgett <rmudgett@digium.com>
+2016-08-07 09:58 +0000 [5f815f9dba]  Matt Jordan <mjordan@digium.com>
 
-       * pjsip_distributor.c: Consistently pick a serializer for messages.
+       * channels/chan_pjsip: Add PJSIP_SEND_SESSION_REFRESH
 
-         Incoming messages that are not part of a dialog or a recognized response
-         to one of our requests need to be sent to a consistent serializer.  Under
-         load we may be queueing retransmissions before we can process the original
-         message.  We don't need to throw these messages onto random serializers
-         and cause reentrancy and message sequencing problems.
+         This patch adds a new PJSIP specific dialplan function,
+         PJSIP_SEND_SESSION_REFRESH. When invoked on a PJSIP channel, the media
+         session will be refreshed via either an UPDATE or re-INVITE request.
+         When used in conjunction with the PJSIP_MEDIA_OFFER dialplan function,
+         the formats in use on a PJSIP channel can be re-negotiated and changed
+         dynamically after call setup.
 
-         * Created a pool of pjsip/distributor serializers that get picked by
-         hashing the call-id and remote tag strings of the received messages.
+         ASTERISK-26277 #close
 
-         * Made ast_sip_destroy_distributor() destroy items in the reverse order of
-         creation.
+         Change-Id: Ib98fe09ba889aafe26d58d32f0fd1323f8fd9b1b
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+2016-08-09 16:19 +0000 [a119bab6a6]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I2ce769389fc060d9f379977f559026fbcb632407
+       * res_rtp_asterisk: Cache local RTCP address.
 
-2016-06-02 12:51 +0000 [993b769524]  Richard Mudgett <rmudgett@digium.com>
+         When an RTCP packet is sent or received, res_rtp_asterisk generates a
+         Stasis event that contains the RTCP report as well as the local and
+         remote addresses that the report pertains to.
 
-       * pjsip_distributor.c: Ignore messages until fully booted.
+         The addresses are determined using ast_find_ourip(). For the local
+         address, this will typically result in a lookup of the hostname of the
+         server, and then a DNS lookup of that hostname. If you do not have the
+         host in /etc/hosts, then this results in a full DNS lookup, which can
+         potentially block for some time.
 
-         We should not be processing any incoming messages until we are fully
-         booted.  We may not have dialplan or other needed configuration loaded
-         yet.
+         This is especially problematic when performing RTCP reads, since those
+         are done on the same thread responsible for reading and writing media.
 
-         ASTERISK-26089 #close
-         Reported by: Scott Griepentrog
+         This patch addresses the issue by performing a lookup of the local
+         address when RTCP is allocated. We then use this cached local address
+         for the Stasis events when necessary.
 
-         ASTERISK-26088
-         Reported by:  Richard Mudgett
+         ASTERISK-26280 #close
+         Reported by Mark Michelson
 
-         Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264
+         Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556
 
-2016-06-02 12:04 +0000 [321a9b128f]  Joshua Colp <jcolp@digium.com>
+2016-08-08 12:53 +0000 [a06a1af0eb]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * res_odbc: Implement a connection pool.
+       * res_pjsip_mwi: fix unsolicited mwi blocks PJSIP stack
 
-         Testing has shown that our usage of UnixODBC is problematic
-         due to bugs within UnixODBC itself as well as the heavy weight
-         cost of connecting and disconnecting database connections, even
-         when pooling is enabled.
-
-         For users of UnixODBC 2.3.1 and earlier crashes would occur due
-         to insufficient protection of the disconnect operation. This was
-         fixed in UnixODBC 2.3.2 and above.
+         The PJSIP taskprocessors could be overflowed on startup
+         if there are many (thousands) realtime endpoints
+         configured with unsolicited mwi.
+         The PJSIP stack could be totally unresponsive for a few minutes
+         after boot completed.
 
-         For users of UnixODBC 2.3.3 and higher a slow-down would occur
-         under heavy database use due to repeated connection establishment.
-         A regression is present where on each connection the database
-         configuration is cached again, with the cache growing out of
-         control.
+         This patch creates a separate PJSIP serializers pool for mwi
+         and makes unsolicited mwi use serializers from this pool.
+         This patch also adds 2 new global options to tune taskprocessor
+         alert levels: 'mwi_tps_queue_high' and 'mwi_tps_queue_low'.
 
-         The connection pool implementation present in this change helps
-         to mitigate these issues by reducing how much we connect and
-         disconnect database connections. We also solve the issue of
-         crashes under UnixODBC 2.3.1 by defaulting the maximum number of
-         connections to 1, returning us to the previous working behavior.
-         For users who may have a fixed version the maximum concurrent
-         connection limit can be increased helping with performance.
+         This patch also adds new global option 'mwi_disable_initial_unsolicited'
+         to disable sending unsolicited mwi to all endpoints on startup.
+         If disabled then unsolicited mwi will start processing
+         on next endpoint's contact update.
 
-         The connection pool works by keeping a list of active connections.
-         If the connection limit has not been reached a new connection is
-         established. If the connection limit has been reached then the
-         request waits until a connection becomes available before
-         continuing.
+         ASTERISK-26230 #close
 
-         ASTERISK-26074 #close
-         ASTERISK-26054 #close
+         Change-Id: I4c8ecb82c249eb887930980a800c9f87f28f861a
 
-         Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff
+2016-08-04 10:16 +0000 [485fd27f7c]  Joshua Colp <jcolp@digium.com>
 
-2016-06-07 05:45 +0000 [c6ee4a0f44]  Alexander Traud <pabstraud@compuserve.com>
+       * res_pjsip_outbound_publish: Use a serializer shutdown group for unload.
 
-       * res_srtp: Instead of libSRTP use OpenSSL as random source.
+         This change replaces the custom unload process for the outbound
+         publish module with the common serializer shutdown group.
 
-         Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore.
-         Therefore, the symbol RAND_bytes is used instead of crypto_get_random.
+         ASTERISK-25217 #close
 
-         ASTERISK-24436 #close
+         Change-Id: I280a0384d860c486202d87d2d674394cca77ffb6
 
-         Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96
+2016-08-03 15:39 +0000 [805f105f88]  Corey Farrell <git@cfware.com>
 
-2016-06-07 02:16 +0000 [d38b8e6399]  Alexander Traud <pabstraud@compuserve.com>
+       * Add missing checks during startup.
 
-       * BuildSystem: Avoid 'ar cru' and use 'ar cr' instead.
+         This ensures startup is canceled due to allocation failures from the
+         following initializations.
+         * channel.c: ast_channels_init
+         * config_options.c: aco_init
 
-         In several internal library projects, the files are archived with the help of
-         'ar cr'. Only the projects editline and the Objective Open H.323 stack
-         implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms
-         changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier
-         ignored since `D' is the default (see `U')". For consistency and to avoid this
-         message all projects use 'ar cr' now.
+         ASTERISK-26265 #close
 
-         ASTERISK-26091 #close
+         Change-Id: I911ed08fa2a3be35de55903e0225957bcdbe9611
 
-         Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40
+2016-07-22 16:37 +0000 [ea71bd6e3e]  Alexei Gradinari <alex2grad@gmail.com>
 
-2016-05-27 14:49 +0000 [c27c232057]  gtjoseph <gjoseph@digium.com>
+       * app_voicemail: Add taskprocessor alert level options.
 
-       * ari/resource_channels:  Add 'formats' to channel create/originate
+         On heavy loaded system with IMAP or DB storage,
+         'app_voicemail' taskprocessor queue could reach 500 scheduled tasks.
+         It could happen when the IMAP or DB server dies or is unreachable.
+         It could happen on startup when there are many (thousands)
+         realtime endpoints configured with unsolicited mwi.
+         If the taskprocessor queue reaches the high water level
+         then the alert is triggered and pjsip stops processing new requests
+         until the queue reaches the low water level to clear the alert.
 
-         If you create a local channel and don't specify an originator channel
-         to take capabilities from, we automatically add all audio formats to
-         the new channel's capabilities. When we try to make the channel
-         compatible with another, the "best format" functions pick the best
-         format available, which in this case will be slin192.  While this is
-         great for preserving quality, it's the worst for performance and
-         overkill for the vast majority of applications.
+         This patch adds 2 new 'general' configuration options
+         to tune taskprocessor alert levels:
+         'tps_queue_high' - Taskprocessor high water alert trigger level.
+         'tps_queue_low' - Taskprocessor low water clear alert level
 
-         In the absense of any other information, adding all formats is the
-         correct thing to do and it's not always possible to supply an
-         originator so a new parameter 'formats' has been added to the channel
-         create/originate functions. It's just a comma separated list of formats
-         to make availalble for the channel. Example: "ulaw,slin,slin16".
-         'formats' and 'originator' are mutually exclusive.
+         ASTERISK-26229 #close
 
-         To facilitate determination of format names, the format name has been
-         added to "core show codecs".
+         Change-Id: I766294fbffedf64053c0d9ac0bedd3109f043ee8
 
-         ASTERISK-26070 #close
+2016-08-03 09:47 +0000 [9dc8cfabd5]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b
+       * astconfigparser: Really handle case where line is simply a comment.
 
-2016-06-02 04:59 +0000 [cda3385409]  Joshua Colp <jcolp@digium.com>
+         The regular expression would match causing the code that handled
+         the line if it was merely a comment to never get executed.
 
-       * alembic: Fix migration.
+         Change-Id: I3e4022481037ebcba9905587fe8c764b4ce21819
 
-         The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting
-         to use UniqueConstraint and failing. It was not imported and after
-         importing it also continued to fail.
+2016-07-23 08:51 +0000 [ad3e65433c]  gtjoseph <gjoseph@digium.com>
 
-         I've changed the script to use the explicit name of the constraint
-         instead.
+       * asterisk.c:  Add auto generation and persistence of UUID
 
-         Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9
+         Upcoming features will require the generation and persistence
+         of a UUID.
 
-2016-06-01 13:57 +0000 [e2132dd358]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I3ec0062427e133217db6ef496a4216f427c3b92d
 
-       * logging,cdr,cel: Fix stringfield memory leak.
+2016-08-02 12:55 +0000 [efc4034d72]  Kevin Harwell <kharwell@digium.com>
 
-         The stringfields refactor to allow adding stringfields to the end of a
-         structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some
-         incomplete cleanup code by some stringfield users.
+       * rest-api: Code out of sync with the model
 
-         The most noticeable leaker is the logging system where there is a leak for
-         every log message generated.
+         Change-Id: Idccaa26fd4a423d47d013ee592b8fa6a0349c006
 
-         ASTERISK-26078 #close
-         Reported by:  Etienne Lessard
-         Patches:
-               jira_asterisk_26078_v13.patch (license #5621) patch uploaded
-               by Richard Mudgett
+2016-07-29 13:13 +0000 [f6821fbaec]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
+       * Remove SILK payload mappings from Asterisk core.
 
-2016-05-25 10:34 +0000 [2de58c6d01]  Alexei Gradinari <alex2grad@gmail.com>
+         SILK is a bit of a hog when it comes to using up our limited number of
+         dynamic payload types in the RTP engine. By freeing up four slots, it
+         allows for other codecs to potentially take the place.
 
-       * core/dial: New channel variable FORWARDERNAME
+         Now, codec_silk.so will dynamically use the payload slots in the RTP
+         engine when it loads.
 
-         Added a new channel variable FORWARDERNAME which indicates which
-         channel was responsible for a forwarding requests received on dial attempt.
+         A better fix would be make RTP dynamic payload types actually
+         dynamic. However, at this stage of Asterisk 14 development, this is a
+         risky move that would be imprudent.
 
-         Fixed a bug in the app_queue: FORWARD_CONTEXT is not used.
+         Change-Id: I5774e09408f9a203db189529eabdc0d3f4c1e612
+         (cherry picked from commit d50895c7b04036aeaad58990089399e46db4c817)
 
-         ASTERISK-26059 #close
+2016-08-01 11:08 +0000 [102d28c11a]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2
+       * sorcery: Use more compatible regex for local expressions.
 
-2016-05-31 13:02 +0000 [b2ce0e354b]  Richard Mudgett <rmudgett@digium.com>
+         This changes the use of an empty regex for both res_sorcery_config
+         and res_sorcery_memory to "." instead. This is a more compatible
+         regular expression which also works on FreeBSD.
 
-       * pjsip_distributor.c: Use correct rdata info access method (Part 2).
+         ASTERISK-26206 #close
 
-         The pjproject doxygen for rdata->msg_info.info says to call
-         pjsip_rx_data_get_info() instead of accessing the struct member directly.
-         You need to call the function mostly because the function will generate
-         the struct member value if it is not already setup.
+         Change-Id: Ia9166dd176f1597555ba22b6931180d0626c1388
 
-         Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799
+2016-08-02 03:08 +0000 [b78d10a2df]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-05-30 19:27 +0000 [fe305ccf01]  gtjoseph <gjoseph@digium.com>
+       * res_pjsip: SIP/SDP origin (o=) contained square brackets on IP6 transports.
 
-       * res_pjsip_mwi_body_generator:  Re-order the body items
+         ASTERISK-26256 #close
 
-         Re-ordered the body items so Message-Account is second.
+         Change-Id: I3fd68df561f81fdb8c6c497d465b50c12422f058
 
-         Messages-Waiting: no
-         Message-Account: sip:1571@<IP Removed>:5060
-         Voice-Message: 0/0 (0/0)
+2016-08-01 16:13 +0000 [1f95c011c7]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26065 #close
-         Reported-by: Ross Beer
+       * menuselect:  Add an opaque "member_data" string to the acceptable xml
 
-         Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3
+         Change-Id: Id5ac43b95c8d7395f3be37f983632169db3d1afe
 
-2016-05-30 10:58 +0000 [e8abfdcdc5]  gtjoseph <gjoseph@digium.com>
+2016-07-27 09:56 +0000 [df42f64d62]  David M. Lee <dlee@respoke.io>
 
-       * pjproject_bundled:  Move to pjproject 2.5
+       * Replace strdupa with more portable ast_strdupa
 
-         Although all the patches we had against 2.4.5 were applied by Teluu,
-         a new bug was introduced preventing re-use of tcp and tls transports
-         This patch removes all the previous patches against 2.4.5, updates
-         the version to 2.5, and adds a new patch to correct the transport
-         re-use problem.
+         The strdupa function is a GNU extension, and not widely portable. We
+         have an ast_strdupa function used within Asterisk which is preferred.
+         I pulled the definition up from menuselect.c into the menuselect.h
+         header file so it can be shared across menuselect.
 
-         Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068
+         Change-Id: I9593c97f78386b47dc1e83201e80cb2f62b36c2e
 
-2016-05-27 12:25 +0000 [37d039fdf3]  Rusty Newton <rnewton@digium.com>
+2016-07-24 18:27 +0000 [56a07fbab9]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip: Add clarifying documentation to PJSIP_HEADER help text
+       * menuselect:  Various menuselect enhancements
 
-         Added notes about when you can read or write headers. Specifically
-         about being able to read on the inbound channel and write on an
-         outbound channel.
+         * Add 'external' as a support level.
+         * Add ability for module directories to add entries to the menu
+           by adding members to the <module_prefix>/<module_prefix>.xml file.
+         * Expand the description field to 3 lines in the ncurses implementation.
+         * Allow the description field to wrap in the newt implementation.
+         * Add description field to the gtk implementation.
 
-         ASTERISK-26063 #close
-         Reported by: Private Name
-         Tested by: Rusty Newton
+         Change-Id: I7f9600a1984a42ce0696db574c1051bc9ad7c808
+         (cherry picked from commit 90f445729d5d86050d9d379485ff0a99f4a006c1)
 
-         Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5
+2016-07-29 04:48 +0000 [7f9369c1b6]  Joshua Colp <jcolp@digium.com>
 
-2016-05-25 18:30 +0000 [03d5b3ce5c]  Richard Mudgett <rmudgett@digium.com>
+       * astconfigparser: Handle case where line is simply a comment.
 
-       * pjsip_distributor.c: Use correct rdata info access method.
+         Change-Id: I2dea5815363f4d787d709228a04f33baee383ef5
 
-         The pjproject doxygen for rdata->msg_info.info says to call
-         pjsip_rx_data_get_info() instead of accessing the struct member directly.
-         You need to call the function mostly because the function will generate
-         the struct member value if it is not already setup.
+2016-07-28 14:10 +0000 [57e9c66819]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Iafe8b01242b7deb0ebfdc36685e21374a43936d2
+       * pbx.c: Fix handling of '-' in extension name and callerid
 
-2016-05-20 13:56 +0000 [859bbec09b]  Alexei Gradinari <alex2grad@gmail.com>
+         This adds a two strings to ast_exten.  name to go with exten and
+         cidmatch_display to go with cidmatch.  The new fields contain input used
+         to add the extension in the first place.  The existing fields now
+         contain stripped input that excludes insignificant spaces and dashes.
+         These stripped fields should always be used for comparisons.  The
+         unstripped fields should normally be used for display, but displaying
+         stripped values will not cause runtime errors.
 
-       * app_voicemail: fix bugs, imap mm_status log change to debug
+         Note the actual string is only stored twice if it contains dashes.  If
+         no dashes are found then both 'char *' fields point to the same memory.
+         So this change has a minimum effect on memory usage.
 
-         Fixed some bugs:
-         - create dirpath when save downloading message from IMAP storage.
-         - create IMAP folder if not exists when saving to IMAP storage
-         - check if file successfully opened before write to it
-         - some IMAP checks
-         - remove non-standard flag 'Unseen'
-         etc
+         The existing functions ast_get_extension_name and
+         ast_get_extension_cidmatch return unstripped values as they did before
+         this change.  Other similar bugs likely still exist where unstripped
+         extensions are saved outside pbx.c then passed back in.
 
-         Change to debug IMAP mm_status log instead of verbose.
+         ASTERISK-26233 #close
 
-         Remove unused X-Asterisk-VM-Caller-channel message header
-         for security reason. The clients should not know name of peer/endpoint.
+         Change-Id: I6cd61ce57acc1570ca6cc14960c4c3b0a9eb837f
 
-         ASTERISK-26045 #close
+2016-07-27 17:17 +0000 [873fc0fda5]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I7f83d88b69b36934e2539c114b9fb612deed971b
+       * pbx.c: Allow dangerous functions when adding a hint to dialplan.
 
-2016-05-19 14:56 +0000 [230686f4ec]  Alexei Gradinari <alex2grad@gmail.com>
+         We can allow dangerous functions when adding a hint since altering
+         dialplan is itself a privileged activity.  Otherwise, we could never
+         execute dangerous functions.
 
-       * res_pjsip: add "via_addr", "via_port", "call_id" to contact
+         ASTERISK-25996 #close
+         Reported by: Andrew Nagy
 
-         As res_pjsip_nat rewrites contact's address, only the last Via header
-         can contain the source address of registered endpoint.
-         Also Call-Id header may contain the source address of registered
-         endpoint.
+         Change-Id: I4929ff100ad1200a0198262d069a34f2296e77ba
 
-         Added "via_addr", "via_port", "call_id" to contact.
-         Added new fields ViaAddress, CallID to AMI event ContactStatus.
+2016-07-21 10:36 +0000 [f00525a6f6]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-26011
+       * pjproject: fixed a few bugs
 
-         Change-Id: I36bcc0bf422b3e0623680152d80486aeafe4c576
+         This patch fixes the issue in pjsip_tx_data_dec_ref()
+         when tx_data_destroy can be called more than once,
+         and checks if invalid value (e.g. NULL) is passed to.
 
-2016-05-24 16:56 +0000 [04c12561a7]  Alexei Gradinari <alex2grad@gmail.com>
+         This patch updates array limit checks and docs
+         in pjsip_evsub_register_pkg() and pjsip_endpt_add_capability().
 
-       * res_pjsip: chatty verbose messages
+         Change-Id: I4c7a132b9664afaecbd6bf5ea4c951e43e273e40
 
-         There are a lot of verbose messages about Endpoint and Contact status
-         changes if there are many dynamic endpoints.
-         The patch sets verbose level 2 for Endpoint status changes
-         and verbose level 3 for Contact status changes.
+2016-07-17 18:28 +0000 [972cee2e4c]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26055 #close
+       * pjproject_bundled:  Update for pjproject 2.5.5
 
-         Change-Id: Ie64e261ddbbc41bfff0f0190241152cc123fe6d7
+         Add more --disable-* switches to Makefile.rules including
+         --disable-opus which was causing bundled pjproject to fail with
+         "undefined reference" errors in libasteriskpj.
 
-2016-02-12 09:59 +0000 [a42bea3314]  Corey Farrell <git@cfware.com>
+         Changed PJ_ENABLE_EXTRA_CHECK to 1.
 
-       * threadpool: Fix potential data race.
+         Removed 2 obsolete patches and added a new one.
+         The new one was merged by Teluu on 6/27/2016.
 
-         worker_start checked for ZOMBIE status without holding a lock.  All
-         other read/write of worker status are performed with a lock, so this
-         check should do the same.
+         ASTERISK-26148 #close
 
-         ASTERISK-25777 #close
+         Change-Id: Ib8af6c6a9d31f7238ce65b336134c2efdc855063
 
-         Change-Id: I5e33685a5c26fdb300851989a3b82be8c4e03781
+2016-07-27 10:33 +0000 [8902a51d59]  David M. Lee <dlee@respoke.io>
 
-2016-05-18 10:58 +0000 [a32616d60c]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * Portably sscanf tv_usec
 
-       * Makefile: remove OSARCH check for init install
+         In a timeval, tv_usec is defined as a suseconds_t, which could be
+         different underlying types on different platforms. Instead of trying to
+         scanf directly into the timeval, scanf into a long int, then copy that
+         into the timeval.
 
-         There are more specific checks for the platform.
+         Change-Id: I29f22d049d3f7746b6c0cc23fbf4293bdaa5eb95
 
-         Specifically this allows installing OS/X init scripts.
+2016-07-27 12:36 +0000 [852e763571]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-26038 #close
+       * rtp_engine: Failed assertion and wrong name given for codec
 
-         Change-Id: If08933621145b10362a0cfe73c079301d9c13f50
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Fixed an assert check that would trigger when the passed in value was negative.
+         The negative value was being cast to an unsigned value. This resulted in the
+         check failing.
 
-2016-05-21 05:42 +0000 [9ddaab789e]  Jesper (License 5518)
+         Also fixed another problem when loading formats in the engine. When setting the
+         mime type the format's name was being passed in instead of the codec's name.
 
-       * func_curl: Don't trim response text on non-ASCII characters
+         Change-Id: I1a201cd419ba4d8e9a40d337e36b6fbe1737192c
 
-         The characters 0x80-0xFF were trimmed as well as 0x00-0x20 because of
-         a signed comparison.
+2016-07-21 22:44 +0000 [e8c34680ca]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25669 #close
-         Reported by: Jesper
-         patches:
-           strings.curl.trim.patch submitted by Jesper (License 5518)
+       * dsp.c: Add fax and DTMF detection unit tests.
 
-         Change-Id: Ia51e169f24e3252a7ebbaab3728630138ec6f60a
+         * Add fax amplitude and frequency sweep tests.
+         * Add DTMF amplitude and twist unit tests.
 
-2016-05-20 16:59 +0000 [9453d1187a]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I8d77c9a1eec89e440d715f998c928687e870c3f7
 
-       * parking.h: Update ast_parking_park_call() doxygen to reality.
+2016-07-21 11:56 +0000 [c1f240b818]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26029
+       * dsp.c: Added descriptive comments to Goertzel calculations.
 
-         Change-Id: I2db14d102a48d3224010e6d1c69e856373cc1260
+         * Added doxygen to describe some struct members and what is going on in
+         the code.
 
-2016-05-10 14:30 +0000 [cd89501d48]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I2ec706a33b52aee42b16dcc356c2bd916a45190d
 
-       * func_odbc: single database connection should be optional
+2016-07-13 13:48 +0000 [003a52fd62]  Richard Mudgett <rmudgett@digium.com>
 
-         func_odbc was changed in Asterisk 13.9.0
-         to make func_odbc use a single database connection per DSN
-         because of reported bug ASTERISK-25938
-         with MySQL/MariaDB LAST_INSERT_ID().
+       * dsp.c: Fix incorrect format reference typo.
 
-         This is drawback in performance when func_odbc is used
-         very often in dialplan.
+         Change-Id: Ia131da3ec29acf385cb43a586a29ecc975eb3896
 
-         Single database connection should be optional.
+2016-07-25 21:18 +0000 [4c0a0cbe02]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-26010
+       * dsp.c: Correct DTMF twist dsp.conf documentation.
 
-         Change-Id: I57d990616c957dabf7597dea5d5c3148f459dfb6
+         Change-Id: Idf97e3a72f1edc5fca58f2fa7b20785922be0cae
 
-2016-05-20 09:39 +0000 [c0b190dd9a]  Mark Michelson <mmichelson@digium.com>
+2016-07-22 04:43 +0000 [87433c2566]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip: Match dialogs on responses better.
+       * astconfigparser.py: Update with realtime fixes.
 
-         When receiving an incoming response to a dialog-starting INVITE, we were
-         not matching the response to the INVITE dialog. Since we had not
-         recorded the to-tag to the dialog structure, the PJSIP-provided method
-         to find the dialog did not match.
+         When configuring SIP URIs in the pjsip.conf file it is
+         necessary to escape the semicolon so the parser does not
+         treat it as a comment. This change allows this to work in
+         the astconfigparser implementation.
 
-         Most of the time, this was not a problem, because there is a fall-back
-         that makes the response get routed to the same serializer that the
-         request was sent on. However, in cases where an asynchronous DNS lookup
-         occurs in the PJSIP core, the thread that sends the INVITE is not
-         actually a threadpool serializer thread. This means we are unable to
-         record a serializer to handle the incoming response.
+         A secondary bug where some data was lost if a configuration
+         option included a "=" in its value was also fixed.
 
-         Now, imagine what happens when an INVITE is sent on a non-serialized
-         thread, and an error response (such as a 486) arrives. The 486 ends up
-         getting put on some random threadpool thread. Eventually, a hangup task
-         gets queued on the INVITE dialog serializer. Since the 486 is being
-         handled on a different thread, the hangup task can execute at the same
-         time that the 486 is being handled. The hangup task assumes that it is
-         the sole owner of the INVITE session and channel, so it ends up
-         potentially freeing the channel and NULLing the session's channel
-         pointer. The thread handling the 486 can crash as a result.
+         A bug where sections would be considered equal despite
+         being different has also been fixed.
 
-         This change has the incoming response match the INVITE transaction, and
-         then get the dialog from that transaction. It's the same method we had
-         been using for matching incoming CANCEL requests. By doing this, we get
-         the INVITE dialog and can ensure that the 486 response ends up being
-         handled by the same thread as the hangup, ensuring that the hangup runs
-         after the 486 has been completely handled.
+         Change-Id: If229f656ef22050b50e7b34e90c4bffe796431f8
 
-         ASTERISK-25941 #close
-         Reported by Javier Riveros
+2016-07-21 22:28 +0000 [159e437e5a]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0d4cc5d07e2a8d03e9db704d34bdef2ba60794a0
+       * dsp.c: Fix erroneous fax tone detection.
 
-2016-05-19 11:41 +0000 [ddcf983e39]  Joshua Colp <jcolp@digium.com>
+         The Goertzel calculations get less accurate the lower the signal level
+         being worked with becomes because there is less resolution remaining.
+         If it is too low we can erroneously detect a tone where none really
+         exists.  The searched for fax frequencies not only need to be so much
+         stronger than the background noise they must also be a minimum strength.
 
-       * res_sorcery_astdb: Filter fields to only the registered ones.
+         * Add needed minimum threshold test to tone_detect().
 
-         This change introduces the same filtering that is done in res_sorcery_realtime
-         to the res_sorcery_astdb module. This allows persisted sorcery objects
-         that may contain unknown fields to still be read in from the AstDB
-         and used. This is particularly useful when switching between different
-         versions of Asterisk that may have introduced additional fields.
+         * Set TONE_THRESHOLD to allow low volume frequency spread detection.
 
-         ASTERISK-26014 #close
+         ASTERISK-26237 #close
+         Reported by: Richard Mudgett
 
-         Change-Id: Ib655130485a3ccfd635b7ed5546010ca14690fb2
+         Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc
 
-2016-05-09 21:40 +0000 [39fedfa423]  snuffy <snuffy22@gmail.com>
+2016-07-22 14:44 +0000 [eda95236d1]  Mark Michelson <mmichelson@digium.com>
 
-       * res_pjsip_empty_info: Respond to empty SIP INFO packets
+       * Fix sqlalchemy error regarding identifier length.
 
-         Some SBCs require responses to empty SIP INFO packets
-         after establishing call via INVITE, if not responded to
-         they may drop your call after unspecified timeout of X minutes.
+         sqlalchemy was complaining:
 
-         They are identified by having no Content-Type, check for this
-         and respond with 200 - OK message.
+         sqlalchemy.exc.IdentifierError: Identifier
+         'ps_contacts_qualifyfreq_exptime' exceeds maximum length of 30
+         characters
 
-         ASTERISK-24986 #close
-         Reported-by: Ilya Trikoz, Federico Santulli
+         This fixes the problem by changing the index name to be
+         "ps_contacts_qualifyfreq_exp" instead.
 
-         Change-Id: Ib27e4f07151e5aef28fa587e4ead36c5b87c43e0
+         ASTERISK-26227 #close
+         Reported by Mark Michelson
 
-2016-05-18 07:54 +0000 [935e0496c4]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I0ed784f87504be2a59ee8d3242ef6f625d5ed1a9
 
-       * udptl:  Don't eat sequence numbers until OK is received
+2016-07-22 05:46 +0000 [66c9dfb272]  Alexander Traud <pabstraud@compuserve.com>
 
-         Scenario:
-         Local fax -> Asterisk w/ firewall -> Provider -> Remote fax
+       * chan_sip: Enable Session-Timers for SIP over TCP (and TLS).
 
-         * Local fax starts rtp call to remote fax
-         * Remote fax starts t38 call back to local fax.
-         * Local fax sends t38 no-signal to Asterisk before sending an OK.
-         * udptl processes the frame and increments the expected sequence number.
-         * chan_sip drops the frame because the call isn't up so nothing goes out
-           the external interface to open the port for incoming packets.
-         * Local fax sends OK and Asterisk sends OK to the remote fax.
-         * Remote fax sends t38 packets which are dropped by the firewall.
-         * Local fax re-sends t38 no-signal with the same sequence number.
-         * udptl drops the frame because it thinks it's a dup.
-         * Still no outgoing packets to open the firewall.
-         * t38 negotiation fails.
+         Asterisk defaults to timers=accept/refresher=uas. In that scenario, only in that
+         scenario, Sessions-Timers (RFC 4028) had no effect via TCP. This change enables
+         Session-Timers for SIP over TCP (and for SIP over TLS).
 
-         The patch drops frames t38 received before udptl sequence processing
-         when the call hasn't been answered yet.  The second no-signal frame
-         is then seen as new and is relayed out the external interface which
-         opens the port and allows negotiation to continue.
+         However with longer international calls via TCP, the SIP channel might break,
+         because all hops on the Internet route must stay online (have not a single power
+         outage, for example). Therefore with Session-Timers enabled (which are enabled
+         at default), you might see dropped calls. Consequently even with this change,
+         you might be better-off going for session-timers=refuse in your sip.conf.
 
-         ASTERISK-26034 #close
+         ASTERISK-19968 #close
 
-         Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9
+         Change-Id: I1cd33453c77c56c8e1394cd60a6f17bb61c1d957
 
-2016-05-17 11:14 +0000 [77e8ec162b]  gtjoseph <gjoseph@digium.com>
+2016-07-15 16:16 +0000 [33716106e0]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_sip:  Prevent extra Session-Expires headers from being added
+       * res_pjsip: Whitespace and comment cleanup.
 
-         When chan_sip does a re-INVITE to refresh a session and authentication
-         is required, the INVITE with the Authorization header containes a
-         second Session-Expires header without the ";refersher=" parameter.
-         This is causing some proxies to return a 400.  Also, when Asterisk is
-         the uas and the refresher, it is including the Session-Expires and
-         Min-SE headers in OPTIONS messages which is not allowed per RFC4028.
+         Change-Id: I11139a4a95df34e223ba622aa6227e33ab8f6c38
 
-         This patch (based on the reporter's) Checks to see if a Session-Expires
-         header is already in the message before adding another one.  It also
-         checks that the method is INVITE or UPDATE.
+2016-07-21 09:05 +0000 [52ab0bf258]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-26030 #close
+       * chan_sip: Prevent deadlock when issuing "sip show channels"
 
-         Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9
+         sip_show_channels locks the dialogs container first then locks each
+         sip_pvt so it can spit out the details.  The rest of sip dialog
+         processing locks the sip_pvt first then locks the dialogs container
+         if it needs to.  Both lock in the order they need but deadlocks can
+         result.  To fix, sip_show_channels and sip_show_channelstats have
+         been converted to use an iterator rather than ao2_callback.  This way
+         the container is locked only while getting the next entry and is
+         unlocked when the callback is called.
 
-2016-05-16 15:29 +0000 [3f6ef63099]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-23013 #close
 
-       * res_pjsip_outbound_registration:  Clean up state when registration is deleted
+         Change-Id: Id9980419909e811f89484950ed46ef117b9eb990
 
-         Nothing was cleaning up the registration state object when ast_sorcery_delete
-         was called on a registration.  So, the registration was deleted from sorcery
-         but the state object went right on refreshing the registration (or failing
-         to refresh the registration) with the peer.
+2016-07-19 15:22 +0000 [5997ec7c9e]  Alexei Gradinari <alex2grad@gmail.com>
 
-         * Added a 'deleted' observer on registration that removes the state object.
+       * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice.
 
-         ASTERISK-25964 #close
-         Reported-by Matt Jordan
+         This patch removed call of pjsip_tx_data_dec_ref in send_notify
+         if send_request failed.
+         The pjsip_dlg_send_request deletes the message on error by itself.
 
-         Change-Id: I2db792145cdb1f72ebbf57dd9099596dbbf12c23
+         It seems this patch fixes next issues:
+         ASTERISK-26199
+         ASTERISK-26166
+         ASTERISK-26174
 
-2016-05-15 19:05 +0000 [b6f9392a12]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a
 
-       * res_pjsip:  Set TCP_NODELAY on TCP transports
+2016-07-18 22:46 +0000 [7fdf7c3d4c]  Corey Farrell <git@cfware.com>
 
-         Although it's perfectly legal to place multiple SIP messages in the same packet,
-         it can cause problems because the Linux default is to enable Path MTU Discovery
-         which sets the Don't Fragment bit on the packets. If adding a second message to
-         the packet causes the MTU to be exceeded, and the destination isn't equipped to
-         send a FRAGMENTATION NEEDED response to a large packet, the packet will just be
-         dropped.
+       * Add conditional support for noreturn functions.
 
-         We can't specifically tell the stack to send only 1 message per packet, but we
-         can turn on TCP_NODELAY when we create the transport. This will at least tell
-         the stack to send packets as soon as possible.
+         This adds support for tagging functions with the noreturn attribute.
+         If DO_CRASH is enabled then ast_do_crash never returns.  If AST_DEVMODE
+         and DO_CRASH are enabled then failed assertions never return.  This can
+         resolve a large number of false positives with static analyzers.
 
-         ASTERISK-26005 #close
-         Reported-by: Ross Beer
+         ASTERISK-26220 #close
 
-         Change-Id: I820f23227183f2416ca5e393bec510e8fe1c8fbd
+         Change-Id: Icfb61e5fe54574eced4c3e88b317244f467ec753
 
-2016-05-14 21:48 +0000 [361a16f316]  Matt Jordan <mjordan@digium.com>
+2016-07-19 13:18 +0000 [dcb8aa8c1c]  Richard Mudgett <rmudgett@digium.com>
 
-       * configs/samples/pjsip.conf.sample: Fix typo
+       * chan_dahdi.c: Fix deadlock potential in fax redirection.
 
-         A ':' is not a valid token for starting a comment.
+         The dahdi_handle_dtmf() and my_handle_dtmf() have the potential to
+         deadlock if an incoming fax happens during the Playback or similar
+         application.
 
-         Change-Id: I123592d93a83d1bdde3e352822881eb9da85e5ad
+         * Fixed the potential deadlock by not calling ast_async_goto() with the
+         channel lock held.
 
-2016-05-12 07:08 +0000 [f91a7dc993]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-26216 #close
+         Reported by: Richard Mudgett
 
-       * res/res_hep_pjsip: Fix reported local IP address when bound to 'any'
+         Change-Id: I9144b84ade5f96690996624ec8a2d40c56af40aa
 
-         When bound to an 'any' address, e.g., 0.0.0.0, PJSIP reports as its
-         local address the 'any' address, as opposed to the IP address we
-         actually received the packet on. This can cause some confusion in Homer,
-         as it will dutifully report what we send it.
+2016-07-13 18:49 +0000 [fa91cf3eec]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch uses the PJSIP inspection routines to determine which IP
-         address we probably received the packet on based on the remote party's
-         IP address. In the event that this fails, it falls back to the IP
-         address natively reported by the transport.
+       * chan_sip.c: Fix deadlock potential in fax redirection.
 
-         Change-Id: I076f835d2aef489e1ee1d01595b211eb2ce62da3
+         The sip_read() has the potential to deadlock if an incoming fax happens
+         during the Playback or similar application.
 
-2016-05-14 12:29 +0000 [9de5cd209e]  Sean Bright <sean.bright@gmail.com>
+         * Fixed the potential deadlock by not calling ast_async_goto() with the
+         channel lock held.
 
-       * res_ari: Correct Location headers returned by some ARI resources
+         * Made always eat the fax detection frame whether there is a fax extension
+         or not.
 
-         The Location headers returned by:
+         ASTERISK-26216
+         Reported by: Richard Mudgett
 
-          * /bridges/{bridgeId}/play
-          * /bridges/{bridgeId}/record
-          * /channels/{channelId}/play
-          * /channels/{channelId}/record
+         Change-Id: I6d3f5cccd4b77c3aa6ffc1a54c0f6bde61c9278e
 
-         Did not have the '/ari' prefix, and in the case of the 'play' resources, were
-         using 'playback' instead of 'playbacks.'
+2016-07-13 18:48 +0000 [2e1bdc3775]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I957c58a3a1471bf477dae7c67faa1b74fcd9241c
+       * chan_pjsip.c: Fix deadlock potential in fax redirection.
 
-2016-05-13 11:38 +0000 [524a302974]  Alexei Gradinari <alex2grad@gmail.com>
+         The chan_pjsip_cng_tone_detected() has the potential to deadlock if an
+         incoming fax happens during the Playback or similar application.
 
-       * res_pjsip: Endpoint IP Access Controls
+         * Fixed the potential deadlock by not calling ast_async_goto() with the
+         channel lock held.
 
-         With the old SIP module we can use IP access controls per peer.
-         PJSIP module missing this feature.
+         * Made always eat the fax detection frame whether there is a fax extension
+         or not.
 
-         This patch added next configuration Endpoint options:
-             "acl" - list of IP ACL section names in acl.conf
-             "deny" - List of IP addresses to deny access from
-             "permit" - List of IP addresses to permit access from
-             "contact_acl" - List of Contact ACL section names in acl.conf
-             "contact_deny" - List of Contact header addresses to deny
-             "contact_permit" - List of Contact header addresses to permit
+         ASTERISK-26216
+         Reported by: Richard Mudgett
 
-         This patch also better logging failed request:
-             add custom message instead of "No matching endpoint found"
-             add SIP method to logging
+         Change-Id: I32aecbb4818af646dc5a619f0dc040e9b1f222e5
 
-         ASTERISK-25900
+2016-07-12 17:33 +0000 [628e8c91d5]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I456dea3909d929d413864fb347d28578415ebf02
+       * res_fax.c: Fix deadlock potential in FAXOPT(faxdetect) framehook.
 
-2016-05-11 20:17 +0000 [89ae4466ea]  Matt Jordan <mjordan@digium.com>
+         The fax_detect_framehook() has the potential to deadlock if an incoming
+         fax happens during the Playback or similar application.
 
-       * res_hep: Provide an option to pick the UUID type
+         * Fixed the potential deadlock by not calling ast_async_goto() with the
+         channel lock held.
 
-         At one point in time, it seemed like a good idea to use the Asterisk
-         channel name as the HEP correlation UUID. In particular, it felt like
-         this would be a useful identifier to tie PJSIP messages and RTCP
-         messages together, along with whatever other data we may eventually send
-         to Homer. This also had the benefit of keeping the correlation UUID
-         channel technology agnostic.
+         * Made always eat the fax detection frame whether there is a fax extension
+         or not.
 
-         In practice, it isn't as useful as hoped, for two reasons:
-         1) The first INVITE request received doesn't have a channel. As a
-            result, there is always an 'odd message out', leading it to be
-            potentially uncorrelated in Homer.
-         2) Other systems sending capture packets (Kamailio) use the SIP Call-ID.
-            This causes RTCP information to be uncorrelated to the SIP message
-            traffic seen by those capture nodes.
+         * Made only detach the framehook if we detected a fax and not on other
+         possible frames.
 
-         In order to support both (in case someone is trying to use res_hep_rtcp
-         with a non-PJSIP channel), this patch adds a new option, uuid_type, with
-         two valid values - 'call-id' and 'channel'. The uuid_type option is used
-         by a module to determine the preferred UUID type. When available, that
-         source of a correlation UUID is used; when not, the more readily available
-         source is used.
+         ASTERISK-26216
+         Reported by: Richard Mudgett
 
-         For res_hep_pjsip:
-          - uuid_type = call-id: the module uses the SIP Call-ID header value
-          - uuid_type = channel: the module uses the channel name if available,
-                                 falling back to SIP Call-ID if not
-         For res_hep_rtcp:
-          - uuid_type = call-id: the module uses the SIP Call-ID header if the
-                                 channel type is PJSIP and we have a channel,
-                                 falling back to the Stasis event provided
-                                 channel name if not
-          - uuid_type = channel: the module uses the channel name
+         Change-Id: I99da35c26d1cd802626ffb4c1b4eb5b015581b6d
 
-         ASTERISK-25352 #close
+2016-07-12 17:24 +0000 [676aeede36]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c
+       * res_fax: Fix FAXOPT(faxdetect) timeout option.
 
-2016-05-10 02:56 +0000 [a73d79c22f]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         The fax detection timeout option did not work because basically the wrong
+         variable was checked in fax_detect_framehook().  As a result, the timer
+         would timeout immediately and disable fax detection.
 
-       * basic-cfg: asterisk.conf: remove [directories]
+         * Fixed ignoring negative timeout values.  We'd complain and then go right
+         on using the negative value.
 
-         A minimal configuration does not need to explicitly spell out the
-         directories. The built-in defaults will do just fine. In many cases
-         they are wrong.
+         * Fixed destroy_faxdetect() in the off-nominal case of an incomplete
+         object creation.
 
-         Change-Id: Id1a671e5c5e9923765a4156b57f9f7e263fdd26c
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         * Added more range checking to FAXOPT(gateway) timeout parameter.
 
-2016-05-10 03:06 +0000 [1c56de9453]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         ASTERISK-26214 #close
+         Reported by: Richard Mudgett
 
-       * basic-cfg: asterisk.conf: defaults of options
+         Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976
 
-         Note the default of remmed-out options. To clarify that those values are
-         not the defaults.
+2016-07-18 16:16 +0000 [652130feb2]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I849c29b7a710f0abc37355fcb5bfee335ae30738
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+       * chan_dahdi: Add faxdetect_timeout option.
 
-2016-05-10 03:08 +0000 [d7af591c59]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         The new option allows the channel driver's faxdetect option to timeout on
+         a call after the specified number of seconds into a call.  The new feature
+         is disabled if the timeout is set to zero.  The option is disabled by
+         default.
 
-       * basic-cfg: asterisk.conf: debug level 5 spams
+         * Don't clear dsp_features after passing them to the dsp code in
+         my_pri_ss7_open_media().  We should still remember them especially for the
+         new faxdetect_timeout option.
 
-         Don't suggest users to use debug level 5, which spews (usually
-         non-useful) debug information. Reduce the suggestion to (an
-         arbitrarily-selected) level 2.
+         ASTERISK-26214
+         Reported by: Richard Mudgett
 
-         Change-Id: Ib53195f78945970956ff59ef13fa89b90e0fcd60
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: Ieffd3fe788788d56282844774365546dce8ac810
 
-2016-05-10 03:10 +0000 [9b7db18fc1]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+2016-07-15 20:44 +0000 [851b1c3a17]  Richard Mudgett <rmudgett@digium.com>
 
-       * basic-cfg: asterisk.conf: don't set languages
+       * res_pjsip: Add fax_detect_timeout endpoint option.
 
-         * No need to set language in a miniml configuration. 'en' will do just
-           fine.
-         * It would be useful to have an example of setting it to a different
-           language.
-         * Setting the documentation language explicitly is likewise not
-           required. Setting it to a different value is not common. At least
-           until there is a set of translated documentation.
+         The new endpoint option allows the PJSIP channel driver's fax_detect
+         endpoint option to timeout on a call after the specified number of
+         seconds into a call.  The new feature is disabled if the timeout is set
+         to zero.  The option is disabled by default.
 
-         Change-Id: I94d91ea34e129925f25af81ef8dc0906fb568cb7
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         ASTERISK-26214
+         Reported by: Richard Mudgett
 
-2016-05-10 08:17 +0000 [eec539a46e]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d
 
-       * followme: delete the right recorded name file
+2016-07-19 04:48 +0000 [021d4892cd]  Alexander Traud <pabstraud@compuserve.com>
 
-         FollowMe with the option a records the name of the caller and plays it
-         to the callee. However it has failed to clean up that recorded file
-         as it tried to delete the file name without the '.sln' extension.
+       * Makefile: Retain XML Declaration and DTD in docs.
 
-         ASTERISK-26008 #close
+         Since Asterisk 12, the documentation got an XML Stylesheet. Because of a typo,
+         the XML Declaration and DTD were overwritten by this.
 
-         Change-Id: I79d7b1be7d5cde57bf076d9389e2a8a4422776ec
-         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
+         ASTERISK-26212 #close
 
-2016-05-12 14:36 +0000 [02d30e171e]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: If5ee4625068042e98ab3fcb22a25e2f15d0c68bd
 
-       * Use doubles instead of floats for conversions when comparing strings.
+2016-07-18 18:39 +0000 [c8e41d14a1]  Corey Farrell <git@cfware.com>
 
-         In 13.9.0, there was an issue where PJSIP contacts added to an AOR would
-         be deleted at seemingly random times.
+       * Unit tests: Use AST_TEST_DEFINE in conditional code only.
 
-         One reason this was happening was because of an operation to retrieve
-         the contacts whose expiration time was less than or equal to the current
-         time. When retrieving existing contacts, the contact's expiration time
-         and the current time were converted from a string to a float, and those
-         two floats were compared.
+         If AST_TEST_DEFINE is not conditional to TEST_FRAMEWORK it produces dead
+         code.  This places all existing unit tests into a conditional block if
+         they weren't already.
 
-         On some systems, including mine, this conversion was horribly off. For
-         instance, I could regularly see the string "1463079214" get converted
-         into 1463079168.000000. When switching from using a float to using a
-         double, the conversion was as expected.
+         ASTERISK-26211 #close
 
-         Why was the conversion to float off? My best guess is that the
-         conversion to float was attempting to store the entire value in the 23
-         bit significand of the IEEE-754 floating point number. In particular, if
-         you take only the 23 most significant bits of 1463079214, you get the
-         messed up 1463079168 that we were seeing in the conversion. It likely
-         was possible to get a more precise value by composing the number using
-         an exponent, but the conversion did not work that way. With a double,
-         you have a 52 bit significand, allowing the entire value to fit there,
-         and thereby allowing an accurate conversion.
+         Change-Id: I8ef83ee11cbc991b07b7a37ecb41433e8c734686
 
-         ASTERISK-26007 #close
-         Reported by Greg Siemon
+2016-07-18 05:13 +0000 [e404f51b42]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I83ca7944aae8b7cd994b254c78ec02411d321070
+       * res_rtp_asterisk: Count a roll-over of the sequence number even on lost packets.
 
-2016-05-12 09:13 +0000 [e2df15bae9]  gtjoseph <gjoseph@digium.com>
+         With this change, the initial RTP sequence number is randomly chosen not between
+         0 and 65535 (0xffff) but 0 and 32767 (0x7fff). This assures, the roll-over
+         counter (ROC) synchronization is not lost for sRTP, when the very first RTP
+         packets get lost; see http://srtp.sourceforge.net/faq.html#Q6
 
-       * pjsip_distributor:  Add missing newline to NOTICE
+         ASTERISK-26207 #close
 
-         There was a newline missing from the end of the "no matching endpoint" notice.
+         Change-Id: I9a527e3aa3ce8f3becc5131d7ba32b57b5845464
 
-         Change-Id: Idc11fe5bc0354072291663dbffe648c471e39181
+2016-07-18 04:14 +0000 [5f24874ebb]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-05-10 10:19 +0000 [a94a12bbf7]  Sebastian Damm <damm@sipgate.de>
+       * Makefile: Suppress echoing of target 'config' again.
 
-       * res_pjsip_outbound_registration: generate correct Contact URI for TLS
+         ASTERISK-26038 #close
 
-         There are two types of SIP URIs indicating a secure transport:
-         * sips:user@example.org
-         * sip:user@example.org;transport=tls
+         Change-Id: I5746cf639f3fdc6332e8a97cf01f979e30bf403f
 
-         When using a sips URI, Asterisk checks incoming INVITEs and answers from
-         the other side for sips URIs, and rejects the packet if there are only
-         sip URIs. So Asterisk should only generate a sips Contact URI if the
-         other side supports it.
+2016-07-14 03:25 +0000 [76d4983c15]  Corey Farrell <git@cfware.com>
 
-         This patch makes Asterisk generate either a sip or sips Contact URI
-         depending on the format of the server URI.
+       * features.c: Remove unneeded adsi.h include.
 
-         If you want a sip URI, use:
-         server_uri=sip:example.org\;transport=tls
+         adsi.h is no longer used by features.c since parking was moved to a
+         module.
 
-         If you want a sips URI, use:
-         server_uri=sips:example.org
+         Change-Id: I2248b8a455225a17cb6ddaafd6c20c511a1eaf59
 
-         ASTERISK-25990 #close
-         Reported-by: Sebastian Damm
+2016-07-14 18:06 +0000 [cb58f853e1]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2
+       * res_pjsip_mwi: remove unneeded check on endpoint's contacts.
 
-2016-05-05 16:41 +0000 [36d66a23e0]  Alexei Gradinari <alex2grad@gmail.com>
+         The function create_mwi_subscriptions_for_endpoint checks
+         if there is active contacts by retrieving aors and contacts.
 
-       * logger: Add PID to syslog messages.
+         This function is used to create all unsolicited mwi subscriptions
+         on startup and is used when contact added.
 
-         During refactoring of this support the addition of
-         the PID to messages was removed. This change adds it
-         back in.
+         In both cases it's not necessary to check if there are contacts.
+         The contacts are needed when asterisk sends mwi.
 
-         ASTERISK-25538 #close
+         ASTERISK-26200 #close
 
-         Change-Id: Ie2d43b0652e59b7ac319a7dba94501540d70ba36
+         Change-Id: I98e43bdc97f3c0829951cd9bf5f3c6348c6ac1fa
 
-2016-05-11 14:07 +0000 [37214b0bdf]  Matt Jordan <mjordan@digium.com>
+2016-06-30 15:58 +0000 [28501051b4]  Mark Michelson <mmichelson@digium.com>
 
-       * configure: Fix errors with AST_UNDEFINED_SANITIZER/AST_LEAK_SANITIZER
+       * Update support for SILK format.
 
-         When running on a system that does not support or use AST_UNDEFINED_SANITIZER
-         or AST_LEAK_SANITIZER, the configure script would incorrectly set those
-         constants to a blank value, e.g., 'AST_UNDEFINED_SANITIZER='. This would
-         cause menuselect to error out, complaining that a blank value is not a
-         valid option. This patch corrects the issue by setting the value to 0 if
-         the options that those constants enable/disable is not found.
+         This commit adds scaffolding in order to support the SILK audio format
+         on calls. Roughly, this is what is added:
 
-         Change-Id: Ib39814aaf940f308d500c1e026edb3d70de47fba
+         * Cached silk formats. One for each possible sample rate.
+         * ast_codec structures for each possible sample rate.
+         * RTP payload mappings for "SILK".
 
-2016-05-03 15:43 +0000 [49b25a0956]  Kevin Harwell <kharwell@digium.com>
+         In addition, this change overhauls the res_format_attr_silk file in the
+         following ways:
 
-       * res_pjsip_outbound_publish: state potential dropped on reloads/realtime fetches
+         * The "samplerate" attribute is scrapped. That's native to the format.
+         * There are far more checks to ensure that attributes have been
+           allocated before attempting to reference them.
+         * We do not SDP fmtp lines for attributes set to 0.
 
-         When reloading, or fetching realtime data, if the "apply" failed for any
-         numerous reasons the current state object would not be maintained. This
-         potentially resulted in publishes being stopped for some states/clients when
-         they should not have been.
+         These changes make way to be able to install a codec_silk module and
+         have it actually work. It also should allow for passthrough silk calls
+         in Asterisk.
 
-         This patch makes it so the current state object is kept upon any type of reload/
-         fetch failures.
+         Change-Id: Ieeb39c95a9fecc9246bcfd3c45a6c9b51c59380e
 
-         Change-Id: Iab6020c116d628ed2ae81183e987e2eaa3c90b30
+2016-07-14 07:45 +0000 [43b5f8d57b]  Richard Miller (license 5685)
 
-2016-05-03 15:31 +0000 [1b5c91b7be]  Kevin Harwell <kharwell@digium.com>
+       * app_queue: Only remove queue member from pending when state changes.
 
-       * res_pjsip_outbound_publish: Potential crash due to off nominal path
+         It is possible for a not in use state change to occur multiple
+         times causing a queue member to be removed from the pending call
+         container prematurely.
 
-         It was possible for the explicit publish destroy function to be called without
-         the pjsip client ever being initialized. This fix checks to make sure there is
-         a client to destroy before attempting.
+         The first not in use state change will remove the queue member
+         from the container. At this moment the member may be called and
+         placed in the pending container. After this another not in use
+         state change can be received which will remove it from the
+         container. Despite being called at this point the code will
+         incorrectly see that there are no pending calls to it.
 
-         Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c
+         This change only removes it from the pending container if the
+         state has actually changed.
 
-2016-05-03 15:35 +0000 [10de553c9d]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-26133 #close
+         patches:
+           app_queue.diff submitted by Richard Miller (license 5685)
 
-       * res_pjsip_outbound_publishing: After unloading the library won't load again
+         Change-Id: Ie5a7f17a44f98e9159e9b85009ce3f8393aa78c0
 
-         The same thing was happening in res_pjsip_publish_asterisk. When the library
-         was unloaded it did not unregister the object type from sorcery. Subsequent
-         loads resulted in a failed load due to the sorcery type already existing.
+2016-07-14 02:40 +0000 [a17b071e36]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Ifdc25e94e4cd40bc5a19eb4d0a00b86c2e9fedc9
+       * pbx: Fix leak of timezone for time based includes.
 
-2016-05-03 14:59 +0000 [1a833b9739]  Kevin Harwell <kharwell@digium.com>
+         Create include_free to run ast_destroy_timing and ast_free, use that in
+         all places that freed an ast_include structure.  This fixes a couple of
+         paths that previously did not run ast_destroy_timing.
 
-       * res_pjsip_outbound_publish: Ref leak in off nominal callback paths
+         ASTERISK-26196 #close
 
-         There were a few spots where the client object's reference was being leaked in
-         sip_outbound_publish_callback. This patch cleans up those leaks.
+         Change-Id: I1671bd111bef0dc113e8bf8f77f89fcfc395d838
 
-         Change-Id: I485d0bc9335090f373026f77c548042e258461df
+2016-07-13 17:45 +0000 [8cef8f35e7]  Kevin Harwell <kharwell@digium.com>
 
-2016-05-03 15:39 +0000 [4752ef02e0]  Kevin Harwell <kharwell@digium.com>
+       * translate: explicit format destination not properly set
 
-       * res_pjsip_outbound_publish: Won't unload if condition wait times out
+         If the destination format's name differed from the codec name then the
+         translator's explict_dst field would be improperly set. In some circumstances
+         it would end up setting it to a newly created format that has the same name
+         as the codec when it actually needed to be the given destination codec.
 
-         When res_pjsip_outbound_publish unloads it has to wait for all current
-         publishing objects to get done. However if the wait condition times out
-         then it does not fail the unload. This sometimes results in an infinite
-         loop check while unloading. This patch now fails the unload operation if
-         the condition times out.
+         This could cause the translation path to use the wrong format. For instance,
+         if an endpoint had specified 'myulaw' as a format the translator could end up
+         using a 'ulaw' format (with whatever/default settings) instead. If the format
+         attribute settings differed between the two then there may unexpected results
+         during processing.
 
-         Change-Id: Id57b8cbed9d61222690fcba1e4f18e259df4c7ec
+         This patch removes the name check when building the translation path. This
+         should make it always set the translator's explicit_dst to the given destination
+         format as long as the sample rate and types match.
 
-2016-05-05 11:37 +0000 [4d063814ba]  Kevin Harwell <kharwell@digium.com>
+         Change-Id: Iaf8a03831d68e657d89569d54b505074efbefab5
 
-       * res_pjsip_authenticator_digest: Don't use source port in nonce verification
+2016-07-08 11:46 +0000 [afbd10b0c5]  Richard Mudgett <rmudgett@digium.com>
 
-         From the issue reporter:
-         "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of
-         the timestamp, the source address, the source port, a server UUID that is
-         calculated at startup, and the authentication realm.
+       * stasis_endpoint.c: Fix contactstatus_to_json().
 
-         Rather than caching nonces that we create, we instead attempt to re-calculate
-         the nonce when receiving an incoming request with authentication. We then
-         compare the re-calculated nonce to the incoming nonce, and if they don't match,
-         then authentication has failed early.
+         The roundtrip_usec json member is optional.  If it isn't present then
+         don't put it into the converted json structure where ast_json_pack()
+         will choke on it.
 
-         The problem is that it is possible, especially when using TCP, to receive two
-         requests from the same endpoint but have differing source ports for those
-         requests. Asterisk itself commonly will use different source ports for
-         outbound TCP requests."
+         Change-Id: I39bb2f86154ef54591270c58bfda8635070f9ea0
 
-         This patch removes the source port dependency when building the nonce.
+2016-07-13 13:45 +0000 [2be13d62fd]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-25978 #close
+       * chan_sip: Fix reference leak in mwi_event_cb
 
-         Change-Id: I871b5f4adce102df1c4988066283095ec509dffe
+         Cleanup the peer reference when stasis_subscription_final_message is
+         true.  Also free peer_name even if peer exists, after reload a new
+         peer_name will be allocated.
 
-2016-05-07 14:39 +0000 [fb6227a372]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26193 #close
 
-       * config_transport:  Tell pjproject to allow all SSL/TLS protocols
+         Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69
 
-         The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2.
-         SSL is not allowed.   So, even if you specify "sslv3" for a transport method,
-         it's silently ignored and one of the TLS protocols is used.  This was a new
-         behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that
-         we never caught.
+2016-06-22 07:13 +0000 [332beb27d8]  Eugene Voityuk <eugene@thirdlane.com>,Alexander Traud <pabstraud@compuserve.com>
 
-         Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default().
-         This tells pjproject to set the socket protocol to match the method.
+       * res_rtp_asterisk: Enable Forward Secrecy (PFS) for DTLS.
 
-         ASTERISK-26004 #close
+         Since July 2014, TLS based protocols (SIP over TLS, Secure WebSockets, HTTPS)
+         support PFS thanks to ASTERISK-23905. In July 2015, the same feature was added
+         for DTLS. The source code from main/tcptls.c should have been re-used to ease
+         security audits. Therefore, this change rolls back the change from July 2015 and
+         re-uses the code from July 2014. This has the additional benefits to work under
+         CentOS 7 and enabling not just ECDHE but DHE based cipher suites as well.
 
-         Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078
+         ASTERISK-25659 #close
+         Reported by: StefanEng86, urbaniak, pay123
+         Tested by: sarumjanuch, traud
+         patches:
+         res_rtp_asterisk.patch submitted by sarumjanuch
+         dtls_centos_step_1.patch submitted by traud
+         dtls_centos_step_2.patch submitted by traud
 
-2016-05-04 02:40 +0000 [2db17a793c]  Jaco Kroon <jaco@uls.co.za>
+         Change-Id: I537cadf4421f092a613146b230f2c0ee1be28d5c
 
-       * app_confbridge: Add a regcontext option for confbridge bridge profiles.
+2016-07-13 11:30 +0000 [672a64bda3]  Corey Farrell <git@cfware.com>
 
-         This patch allows for having app_confbridge register the name of the
-         conference as an extension into a specific context, similar to
-         regcontext for chan_sip.  This variant is not quite as involved as the
-         one in chan_sip and doesn't allow for multiple contexts or custom
-         extensions, you can only specify the context and the conference name
-         will always be used as the extension to register.
+       * threadpool: Fix leak in ast_threadpool_serializer_group error path.
 
-         ASTERISK-25989 #close
+         ast_threadpool_serializer_group leaks a reference to ser when listener
+         is allocated but tps is not.  Although listener takes the reference to
+         ser cleanup functions are not run without tps.
 
-         Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f
+         ASTERISK-26191 #close
 
-2016-05-08 20:19 +0000 [2a7130b8b0]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ie3ccf69a3f1e676c2ef62a77067c0cb57dc9a585
 
-       * pjproject_bundled:  Check for python-dev and TEST_FRAMEWORK
+2016-07-11 10:22 +0000 [fea201f7e6]  Richard Mudgett <rmudgett@digium.com>
 
-         The pjsua and pjsystest apps are now built only if TEST_FRAMEWORK is set.
-         The python bindings are now built only if TEST_FRAMEWORK is set and a
-         python development package is installed.
+       * pjsip_options.c: Fix container operation.
 
-         libresample was also disabled.
+         aor_observer_deleted() needs to operate on all contacts found for the
+         deleted AOR instead of only the first one found.  This is really only a
+         problem if there is more than one contact for the AOR.
 
-         ASTERISK-25993 #close
-         Reported-by: Joshua Colp
+         Change-Id: Id24ac0d5e8c931330231fb45dd2a331a84339dc1
 
-         Change-Id: If4e91c503a02f113d5b71bc8b972081fa3ff6f03
+2016-07-11 10:21 +0000 [02877b4b4f]  Richard Mudgett <rmudgett@digium.com>
 
-2016-05-04 15:16 +0000 [72eb7c8301]  Alexei Gradinari <alex2grad@gmail.com>
+       * pjsip_configuration.c: Misc cleanups.
 
-       * res_pjsip: module load priority
+         * Fix some whitespace in various routines.
 
-         The res_pjsip_authenticator_digest, res_pjsip_endpoint_identifier_*
-         and res_pjsip_registrar modules should load ASAP
-         to avoid "No matching endpoint found" for legitimate endpoint.
+         * Rename i to iter in persistent_endpoint_update_state().
 
-         ASTERISK-25994
+         * Fix off-nominal copy/paste message wording in
+         persistent_endpoint_contact_deleted_observer()
 
-         Change-Id: Iac95d95ad031e0be104189d29e923a2ad7c24a1b
+         Change-Id: Id8e34f5d09e7eebac3af22501c44c1110a3e29d8
 
-2016-05-04 03:17 +0000 [dd00c71aae]  Chris Trobridge <christ.trobridge@ultra-aep.com>
+2016-07-13 08:57 +0000 [148cd1b319]  Alexander Traud <pabstraud@compuserve.com>
 
-       * config_options.c: Expand #ifdef to contain whole if statement.
+       * BuildSystem: Avoid obsolete warning with pthread.m4 on autoconf.
 
-         ASTERISK-25956 #close
+         Updated the macro-set autoconf/ax_pthread.m4 to its latest upstream version.
 
-         Change-Id: If6961ec54be276d5ab4f012ee7e7b420cb45de38
+         ASTERISK-26046 #close
 
-2016-05-05 15:16 +0000 [e6eb17efd9]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I11abc11d17acd2b6a8a5a5be8ae8e0949dab9cc7
 
-       * stasis_endpoints: Add new Status and Headers to ContactStatus
+2016-07-11 10:25 +0000 [97b4c7a5b4]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25903 added a new headers to AMI Event ContactStatusDetail.
-         ASTERISK-25904 added a new Status to AMI Event ContactStatusDetail.
-         These additions should be also in stasis_endpoints
-         to include in command "manager show event ContactStatus"
+       * res_pjsip: Fix statsd regression.
 
-         Change-Id: I7610ad02a998e1f26c20caa27aa50279d0164f6a
+         The ASTERISK-25904 change-id I8fad8aae9305481469c38d2146e1ba3a56d3108f
+         patch introduced several regressions when the newly created "Updated"
+         state goes out for each endpoint registration refresh.
 
-2016-05-05 05:07 +0000 [fa11f4c920]  Joshua Colp <jcolp@digium.com>
+         1) It restarted any OPTIONS RTT ping cycle.
 
-       * file: Ensure nativeformats remains valid for lifetime of use.
+         2) It would interfere with a currently active ping and throw off that
+         ping's resulting RTT calculation.
 
-         It is possible for the nativeformats of a channel to change
-         throughout its lifetime. As a result a user of it needs to either
-         ensure the channel is locked when accessing the formats or keep
-         a reference to the nativeformats themselves.
+         3) It cleared the RTT time each time the endpoint was refreshed.
 
-         This change fixes the file playback support so it keeps a
-         reference to the nativeformats when accessing things.
+         4) The cleared RTT time was sent out as a statsd update each time.
 
-         ASTERISK-25998 #close
+         5) It created two AMI events for each update.
 
-         Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915
+         * Revert the original patch and reimplement it.  Now the current contact
+         status state is re-sent instead of the state being momentarily toggled
+         every time the endpoint refreshes its registration.  The statsd events are
+         not created for the re-sent refresh because they are sent after every
+         OPTIONS ping.
 
-2016-04-15 09:32 +0000 [9c2032240e]  Alexei Gradinari <alex2grad@gmail.com>
+         ASTERISK-26160 #close
+         Reported by: Matt Jordan
 
-       * res_pjsip: improve realtime performance
+         Change-Id: Ie072be790fbb2a8f5c1c874266e4143fa31f66d1
 
-         This patch modified pjsip_options to retrieve only
-         permament contacts for aor if the qualify_frequency is > 0
-         and persisted contacts if the qualify_frequency is > 0.
+2016-07-12 03:50 +0000 [3be6fa1e4b]  Alexander Traud <pabstraud@compuserve.com>
 
-         This patch also fixed a bug in res_sorcery_astdb.
-         res_sorcery_astdb doesn't save object data retrived from astdb.
+       * BuildSystem: Allow own CFLAGS on ./configure.
 
-         ASTERISK-25826
+         Before this change, make failed with the error
+         Unknown value '' found in build_tools/menuselect-deps for NATIVE_ARCH
+         when CFLAGS were supplied to the configure script. This was introduced with
+         <https://reviewboard.asterisk.org/r/1852/> which disabled BUILD_NATIVE when
+         CFLAGS were supplied. Those who need different -march= values, please, go for
+         ./configure
+         make menuselect.makeopts or make menuselect
+         ./menuselect/menuselect --disable BUILD_NATIVE
 
-         Change-Id: I1831fa46c4578eae5a3e574ee3362fddf08a1f05
+         ASTERISK-25289 #close
 
-2016-05-04 16:11 +0000 [fe38d21c2a]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: Ic6365d5a97bb9b3556858f06432a8d1cfa83eebc
 
-       * pjsip: Added "reg_server" to contacts (fixed alembic)
+2016-07-11 13:42 +0000 [5ee205d8bb]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25931
+       * ast_expr2: Fix off-nominal memory leak.
 
-         Change-Id: Icc4321a88f5c93ff809da3f372eebbf69c6a8549
+         Thanks to ibercom for pointing out a memory leak that was missed
+         in the earlier patch for the issue.
 
-2016-04-07 16:33 +0000 [7a14e669f0]  Alexei Gradinari <alex2grad@gmail.com>
+         ASTERISK-26119
+         Reported by: Alexei Gradinari
 
-       * res_pjsip/AMI: add contact.updated event
+         Change-Id: I9a151f5c4725d97fb82a9e938bc73dc659532b71
 
-         With the old SIP module AMI sends PeerStatus event on every
-         successfully REGISTER requests, ie, on start registration,
-         update registration and stop registration.
+2016-07-11 10:17 +0000 [f5e9872016]  Alexander Traud <pabstraud@compuserve.com>
 
-         With PJSIP AMI sends ContactStatus only when status is changed.
-         Regarding registration:
-         on start registration - Created
-         on stop registration - Removed
-         but on update registration nothing
+       * install_prereq: Checkout of libSRTP 1.5.x.
 
-         This patch added contact.updated event.
+         Since 5th November 2014, the master branch of libSRTP changed the prefix of
+         several member names and is not compatible with the source code in Asterisk
+         anymore. Therefore instead, this change checks out the latest version of the
+         libSRTP 1.5.x branch. Furthermore now, libSRTP is compiled with OpenSSL as
+         backend. This makes AES-GCM and AES-IN possible.
 
-         ASTERISK-25904
+         ASTERISK-22131 #close
 
-         Change-Id: I8fad8aae9305481469c38d2146e1ba3a56d3108f
+         Change-Id: I2e396cdc01da0ff610686e398ed210ca7408f7d6
 
-2016-05-02 16:08 +0000 [06d4ac0355]  Alexei Gradinari <alex2grad@gmail.com>
+2016-07-10 19:08 +0000 [17efed6cf7]  Joshua Colp <jcolp@digium.com>
 
-       * res_fax: add FAXMODE variable
+       * func_odbc: Fix connection deadlock.
 
-         The app_fax set FAXMODE variable, but res_fax missing this feature.
-         This patch add FAXMODE variable which is set to either "audio" or "T38".
+         The func_odbc module was modified to ensure that the
+         previous behavior of using a single database connection
+         was maintained. This was done by getting a single database
+         connection and holding on to it. With the new multiple
+         connection support in res_odbc this will actually starve
+         every other thread from getting access to the database as
+         it also maintains the previous behavior of having only
+         a single database connection.
 
-         ASTERISK-25980
+         This change disables the func_odbc specific behavior if
+         the res_odbc module is running with only a single database
+         connection active. The connection is only kept for the
+         duration of the request.
 
-         Change-Id: Ie3dcbfb72cc681e9e267a60202f7fb8723a51b6b
+         ASTERISK-26177 #close
 
-2016-05-02 16:52 +0000 [2d17fe06c5]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I9bdbd8a300fb3233877735ad3fd07bce38115b7f
 
-       * res_fax/t38_gateway: Peer V.21 session is created on wrong channel
+2016-07-09 13:32 +0000 [06ba533bc7]  Corey Farrell <git@cfware.com>
 
-         The channel and peer V.21 sessions are created on the same channel now.
-         The peer V.21 session should be created only on peer channel
-         when one of channel can handle T.38.
+       * chan_sip: Fix reference leaks in error paths.
 
-         Also this patch enable debug for T.38 gateway session
-         if global fax debug enabled.
+         * get_sip_pvt_from_replaces leaks sip_pvt_ptr on any error.
+         * build_peer leaks peer on failure to allocate the endpoint.
 
-         ASTERISK-25982
+         This patch fixes get_sip_pvt by using an RAII_VAR, build_peer is fixed
+         with an unref in the appropriate place.
 
-         Change-Id: I78387156ea521a77eb0faf170179ddd37a50430e
+         ASTERISK-26184 #close
 
-2016-05-01 02:21 +0000 [a2f19d82a8]  Diederik de Groot <dkgroot@talon.nl>
+         Change-Id: I728b424648ad041409f7d90880f4c28b3ce2ca12
 
-       * configs/basic-pbx/asterisk.conf: contains incorrect path separator
+2016-07-07 12:41 +0000 [9d4e664f62]  Corey Farrell <git@cfware.com>
 
-         Note: When packagers use these files (as an example) the paths are never
-         really used when they are split using '='.
+       * REF_DEBUG: Prevent logging of container node objects.
 
-         Note: Thirdparty applications will also have trouble parsing the file when
-         expecting '=>'.
+         Using AO2_CONTAINER_ALLOC_OPT_DUPS_REPLACE can result in an unref being
+         recorded to the refs log for the node being replaced.  This prevents
+         logging of those unrefs since they would produce errors in
+         refcounter.py.
 
-         Change-Id: I0ada647f588e81f023fb1333ca15a1a333fd6004
+         ASTERISK-26181 #close
 
-2016-04-30 17:52 +0000 [f39089f17c]  gtjoseph <gjoseph@digium.com>
+         Change-Id: Ie4fded84e8a1a58b3a59ce59dfd7eb0da3ddc5d4
 
-       * pjproject_bundled:  Various fixes discovered during testing of OSes
+2016-07-07 10:55 +0000 [e26bd15e7a]  Scott Griepentrog <scott@griepentrog.com>
 
-         For all OSes:
-         * Disabled third-party codecs in pjproject and added
-           '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the
-           configure options since we don't use the pjsip codec capability.
+       * PJSIP: provide valid tcp nodelay option for reuse
 
-         FreeBSD:
-         * Added FreeBSD support to install_prereq.
-         * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make".
-         * Added __progname and environ to asterisk.exports.in.
-         * Reverted the use of ldconfig to create shared library symlinks to ln.
-         * Only enable epoll in pjproject if `uname -s` is Linux.
-         * Added a patch to pjproject to take the name of the 'make' command from
-           an environment variable if supplied.  This is needed for the python bindings.
-           (merged by Teluu into pjproject trunk 5/3/2016)
-         FreeBSD support isn't complete.  Still some general issues regarding
-         make/gmake having nothing to do with pjproject.  With some handholding it DOES
-         build successfully.
+         When using TCP transport with chan_pjsip, the TCP_NODELAY
+         option value was allocated on the stack, then passed as a
+         pointer to the tcp transport configuration structure, and
+         later re-used on subsequently created sockets when it was
+         no longer valid.  This patch changes the allocation to be
+         a static.
 
-         CentOS:
-         Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH.
-         CentOS 6/7 32/64 build and run the pjsip testsuite successfully.
+         ASTERISK-26180 #close
+         Reported by: Scott Griepentrog
 
-         Ubuntu:
-         No changes required.
-         Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully.
+         Change-Id: I3251164c7f710dbdab031282f00e30a9770626a0
 
-         Debian:
-         No changes required.
-         Debian 6/7/8 32/64 build and run the pjsip testsuite successfully.
+2016-07-07 10:38 +0000 [77b0145a25]  Joshua Colp <jcolp@digium.com>
 
-         There will utimately be a follow-up patch to create an install_prereq for
-         the testsuite as I've discovered a few missing requirements.
+       * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled.
 
-         ASTERISK-25968 #close
+         Some T.38 implementations may send another re-invite after the initial
+         one which adds additional negotiation details (such as the max bitrate).
+         Currently this will fail when passthrough is being done in chan_sip as we
+         do nothing if T.38 is already active.
 
-         Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c
+         Other handlers of T.38 inside of Asterisk (such as res_fax) handle this
+         scenario so this change adds support for it to chan_sip and res_pjsip_t38.
+         If a request to negotiate is received while T.38 is already enabled a
+         new re-INVITE is sent and negotiation is done again.
 
-2016-03-17 14:29 +0000 [8028fc7585]  Andrew Nagy <andrew.nagy@the159.com>
+         ASTERISK-26179 #close
 
-       * app_voicemail: always copy dynamic struct to avoid race condition
+         Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c
 
-         Voicemail email addresses can be corrupt or voicemail
-         emails can end up being sent to the wrong email address if asterisk is
-         reading voicemail.conf during a reload and processing an email at the
-         same time. This patch always copies the struct that would otherwise only
-         be copied once.
+2016-07-04 16:38 +0000 [b4a9fa2c9e]  Alexei Gradinari <alex2grad@gmail.com>
 
-         ASTERISK-24463 #close
-         Reported by: John Campbell
-         Tested by: Etienne Lessard
-         Tested by: Andrew Nagy
-         Change-Id: I3a0643813116da84e2617291903d0d489b7425fb
+       * res_sorcery_realtime: fix bug when successful UPDATE is treated as failed
 
-2016-04-15 14:26 +0000 [3cb8934de0]  Alexei Gradinari <alex2grad@gmail.com>
+         If the SQL UPDATE statement changes nothing then SQLRowCount returns 0.
+         This value should be treated as success.
+         But the function sorcery_realtime_update treats it as failed.
 
-       * pjsip: Added "reg_server" to contacts.
+         This bug was found using stress tests on PJSIP.
+         If there are 2 consecutive SIP REGISTER requests with the same contact data
+         during 1 second then res_pjsip_registrar adds contact location on 1st request
+         and tries to update contact location on 2nd.
+         The update fails and res_pjsip_registrar even removes correct contact location.
 
-         If the Asterisk system name is set in asterisk.conf, it will be stored
-         into the "reg_server" field in the ps_contacts table to facilitate
-         multi-server setups.
+         The test "object_update_uncreated" was removed from test_sorcery_realtime.c
+         because it's now a valid situation.
 
-         ASTERISK-25931
+         This patch also adds missing debug of extra SQL parameter.
 
-         Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8
+         ASTERISK-26172 #close
 
-2016-04-28 11:35 +0000 [7992923c70]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I05a7f3051455336c9dda29efc229decf86071303
 
-       * res_pjsip: Start body generator users after suppliers.
+2016-06-24 19:55 +0000 [1dfd3fc995]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I8f0b57841feaab56c8a4e821b5ccb4e05e5fbadb
+       * res/res_pjsip_session: Check for presence of an active negotiator
 
-2016-04-28 16:06 +0000 [5dc0e082b2]  Richard Mudgett <rmudgett@digium.com>
+         It is possible in a hypothetical situation for a session refresh to be
+         invoked on a PJSIP when the negotiatior on the INVITE session has not
+         yet been established. While this shouldn't occur with existing uses of
+         ast_sip_session_refresh, the crashes that occur due to improperly
+         calling PJSIP functions that expect a non-NULL negotiatior are
+         avoidable. PJSIP will create the negotiator in pjsip_inv_reinvite; this
+         means that simply checking for the presence of the negotiator before
+         passing it to other PJSIP functions that use it is allowable. As such,
+         this patch adds checks for the presence of the negotiator before calling
+         PJSIP functions that assume it is non-NULL.
 
-       * res_pjsip_pubsub.c: Add useful information to some messages.
+         Change-Id: I1028323e7e01b0a531865e5412a71b6f6ec4276d
 
-         Change-Id: Ia0b2e15773894c599e5c5748bbc70e99f434192a
+2015-10-19 18:55 +0000 [9dd0aeeb44]  Matt Jordan <mjordan@digium.com>
 
-2016-04-26 15:58 +0000 [f9e416f053]  Richard Mudgett <rmudgett@digium.com>
+       * res/res_pjsip_pubsub: Add additional debug statements
 
-       * res_pjsip_pubsub.c: Fix body generator registration race.
+         When something very sad and wrong occurs, it's challenging sometimes to
+         figure out why. This patch adds some additional debug statements on
+         off-nominal paths to try and make debugging easier.
 
-         Change-Id: Id8752073ef06472a2fd96080f4009fac42843e67
+         Change-Id: I7bffb73cc733b6f80193a23340881db4a102b640
 
-2016-04-26 15:13 +0000 [b1b2019046]  Richard Mudgett <rmudgett@digium.com>
+2015-10-19 18:55 +0000 [1ec4f8dd00]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip_pubsub.h: Fix doxygen association.
+       * res/res_corosync: Raise a Stasis message on node join/leave events
 
-         Change-Id: I110d3e3572598289fcd4215d966cf0c858f98632
+         When res_corosync detects that a node leaves or joins, it currently is
+         informed of this via Corosync callbacks. However, there are a few
+         limitations with the information presented:
+         (1) While we have information that Corosync is aware of - such as the
+             Corosync nodeid - that information is really only useful inside of
+             Corosync or res_corosync. There's no way to translate a Corosync
+             nodeid to some other internally useful unique identifier for the
+             Asterisk instance that just joined or left the cluster.
+         (2) While res_corosync is notified of the instance joining or leaving
+             the cluster, it has no mechanism to inform the Asterisk core or
+             other modules of this event. This limits the usefulness of res_corosync
+             as a heartbeat mechanism for other modules.
 
-2016-04-25 16:00 +0000 [b7f07fdff5]  Richard Mudgett <rmudgett@digium.com>
+         This patch addresses both issues.
 
-       * res_pjsip_outbound_publish.c: Remove redundant flag check.
+         First, it adds the notion of a cluster discovery message both within the
+         Stasis message bus, as well as the binary event messages that
+         res_corosync uses to transmit data back and forth within the cluster.
+         When Asterisk joins the cluster, it sends a discovery message to the other
+         nodes in the cluster, which correlates the Corosync nodeid along with
+         the Asterisk EID. res_corosync now maintains a hash of Corosync nodeids
+         to Asterisk EIDs, such that it can map changes in cluster state with the
+         Asterisk instance that has that nodeid. Likewise, when an Asterisk
+         instance receives a discovery message from a node in the cluster, it now
+         sends its own discovery message back to the originating node with the
+         local Asterisk EID. This lets Asterisk instances within the cluster
+         build a complete picture of the other Asterisk instances within the
+         cluster.
 
-         Change-Id: I0da80a3c3e0eae0c52ff27e7412ba027d6f52353
+         Second, it publishes the discovery messages onto the Stasis message bus.
+         Said messages are published whenever a node joins or leaves the cluster.
+         Interested modules can subscribe for the ast_cluster_discovery_type()
+         message under the ast_system_topic() and be notified when changes in
+         cluster state occur.
 
-2016-04-28 16:54 +0000 [719ece5659]  gtjoseph <gjoseph@digium.com>
+         Change-Id: I9015f418d6ae7f47e4994e04e18948df4d49b465
 
-       * pjproject_bundled:  Disable PJSIP_UNESCAPE_IN_PLACE
+2016-07-04 13:54 +0000 [2c16a81dd5]  Alexei Gradinari <alex2grad@gmail.com>
 
-         When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled,
-         the input uri string will become corrupted if it contains escape sequences.
-         It's not possible to automatically strdup or strdupa the input string because
-         the output uri pj_str_t's will have pointers to chunks of the input string.
-         Getting around this would require more memory management code and wouldn't
-         be worth the savings of doing the unescape in place.
+       * res_pjsip: Added "subscribe_context" to endpoint
 
-         ASTERISK-25970 #close
-         Reported-by: Dmitriy Serov
+         If specified, incoming SUBSCRIBE requests will be searched for the matching
+         extension in the indicated context. If no "subscribe_context" is specified,
+         then the "context" setting is used.
 
-         Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88
+         ASTERISK-25471 #close
 
-2016-03-07 18:34 +0000 [38bed4515d]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I3fb7a15f5bc154079bd348c08b7ad1cdd2d5e514
 
-       * res_pjsip:  Add ability to identify by Authorization username
+2016-07-04 05:58 +0000 [a1bd57884d]  Alexander Traud <pabstraud@compuserve.com>
 
-         A feature of chan_sip that service providers relied upon was the ability to
-         identify by the Authorization username.  This is most often used when customers
-         have a PBX that needs to register rather than identify by IP address.  From my
-         own experiance, this is pretty common with small businesses who otherwise
-         don't need a static IP.
+       * BuildSystem: Avoid obsolete warning with libcurl.m4 on autoconf.
 
-         In this scenario, a register from the customer's PBX may succeed because From
-         will usually contain the PBXs account id but an INVITE will contain the caller
-         id.  With nothing recognizable in From, the service provider's Asterisk can
-         never match to an endpoint and the INVITE just stays unauthorized.
+         Updated the macro-set autoconf/libcurl.m4 to its latest upstream version. This
+         avoids a warning about an obsolete macro on AC_HELP_STRING, because Asterisk is
+         using AS_HELP_STRING everywhere else already.
 
-         The fixes:
+         ASTERISK-26046
 
-         A new value "auth_username" has been added to endpoint/identify_by that
-         will use the username and digest fields in the Authorization header
-         instead of username and domain in the the From header to match an endpoint,
-         or the To header to match an aor.  This code as added to
-         res_pjsip_endpoint_identifier_user rather than creating a new module.
+         Change-Id: I8299faf504ceaeee3e39930c59293809e116c631
 
-         Although identify_by was always a comma-separated list, there was only
-         1 choice so order wasn't preserved.  So to keep the order, a vector was added
-         to the end of ast_sip_endpoint.  This is only used by res_pjsip_registrar
-         to find the aor.  The res_pjsip_endpoint_identifier_* modules are called in
-         globals/endpoint_identifier_order.
+2016-06-30 15:17 +0000 [640fbbbe28]  Richard Mudgett <rmudgett@digium.com>
 
-         Along the way, the logic in res_pjsip_registrar was corrected to match
-         most-specific to least-specific as res_pjsip_endpoint_identifier_user does.
+       * features: Fix channel datastore access.
 
-         The order is:
+         Found as a result of the testsuite tests/callparking test crashing.
 
-         username@domain
-         username@domain_alias
-         username
+         Several calls to ast_get_chan_featuremap_config() and
+         ast_get_chan_features_xfer_config() did not lock the channel before
+         calling so the channel's datastore list was accessed without the lock's
+         protection.  Apparently another thread deleted a datastore on the
+         channel's list while the crashing thread was walking the list.  Crash at
+         0xdeaddead due to MALLOC_DEBUG's memory filler value as a result.
 
-         Auth by username does present 1 problem however, the first INVITE won't have
-         an Authorization header so the distributor, not finding a match on anything,
-         sends a securty_alert.  It still sends a 401 with a challenge so the next
-         INVITE will have the Authorization header and presumably succeed.  As a result
-         though, that first security alert is actually a false alarm.
+         * Add missing channel locks to calls that were not already protected
+         as the doxygen for those calls indicates.
 
-         To address this, a new feature has been added to pjsip_distributor that keeps
-         track of unidentified requests and only sends the security alert if a
-         configurable number of unidentified requests come from the same IP in a
-         configurable amout of time.  Those configuration options have been added to
-         the global config object.  This feature is only used when auth_username
-         is enabled.
+         Change-Id: Id273b3d305cc616406c353cbc841b2b7655efaa1
 
-         Finally, default_realm was added to the globals object to replace the hard
-         coded "asterisk" used when an endpoint is not yet identified.
+2016-06-22 17:26 +0000 [359134c8d3]  Richard Mudgett <rmudgett@digium.com>
 
-         The testsuite tests all pass but new tests are forthcoming for this new
-         feature.
+       * res_pjsip_session.c: Don't send extra BYE if SDP invalid.
 
-         ASTERISK-25835 #close
-         Reported-by: Ross Beer
+         When an answer SDP is invalid we were disconnecting the outgoing call and
+         sending two BYE requests.  The first BYE was sent by PJPROJECT because of
+         the invalid SDP answer.  The second BYE was sent by Asterisk because it
+         thought the canceled call was the result of the RFC5407 section 3.1.2 race
+         condition.
 
-         Change-Id: I30ba62d208e6f63439600916fcd1c08a365ed69d
+         * Made not send the BYE on a canceled session if the SDP negotiation is
+         incomplete because PJPROJECT has already sent a BYE for the failed
+         negotiation.
 
-2016-04-27 13:23 +0000 [677d5b5151]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-25772 #close
+         Reported by:  Dmitriy Serov
 
-       * func_odbc: Check connection status before executing queries.
+         Change-Id: I44ad0bd0605e8eeb7035c890d6f97a1331f1a836
 
-         A recent change to func_odbc made it so that a single connection was
-         maintained per DSN. The problem was that the code was optimistic about
-         the health of the connection after initially opening it and did nothing
-         to re-connect in case the connection had died.
+2016-06-27 17:19 +0000 [5fabcf2ca1]  Richard Mudgett <rmudgett@digium.com>
 
-         This change adds a check before executing a query to ensure that the
-         connection to the database is still up and running.
+       * res_pjsip_session.c: End call on initial invalid SDP negotiation.
 
-         ASTERISK-25963 #close
-         Reported by Ross Beer
+         When an incoming call defers SDP negotiation and then sends us an invalid
+         SDP in the ACK, we need to send a BYE to disconnect the call.  In this
+         case SDP negotiation has failed and we don't have valid media streams
+         negotiated.
 
-         Change-Id: Id33c86eb04ff48ca088bb2e3086c27b3b683491d
+         ASTERISK-25772
 
-2016-04-15 11:59 +0000 [df3639700a]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: Ia358516b0fc1e6c4c139b78246f10b9da7a2dfb8
 
-       * res_pjsip: disable multi domain to improve realtime performace
+2016-06-23 15:13 +0000 [38a4e983dc]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch added new global pjsip option 'disable_multi_domain'.
-         Disabling Multi Domain can improve Realtime performance by reducing
-         number of database requests.
+       * res_pjsip.c: Register PJMEDIA error code decoder.
 
-         ASTERISK-25930 #close
+         Registering the PJMEDIA error codes allows errors found when parsing an
+         incoming SDP to be easier to figure out.
 
-         Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7
+         "Missing SDP rtpmap for dynamic payload type (PJMEDIA_SDP_EMISSINGRTPMAP)"
+         is much easier to understand than "Unknown error 220030".
 
-2016-04-26 11:13 +0000 [949bf6b282]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25772
 
-       * chan_sip: Give more time for TCP/TLS threads to stop.
+         Change-Id: I44b2dcea656fedd7593171be9e845880a2c70ca0
 
-         The unload process currently tells each TCP/TLS to terminate but
-         does not wait for them to do so. This introduces a race condition
-         where the container holding the threads may be destroyed before
-         the threads are able to remove themselves from it. When they
-         finally do the container is invalid and can't be used causing a
-         crash.
+2016-06-27 16:56 +0000 [1952434df5]  Richard Mudgett <rmudgett@digium.com>
 
-         A previous change existed which waited a bit to wait for any
-         stranglers to finish. This change extends this and waits longer.
+       * res_pjsip_session.c: Remove unused parameter from handle_incoming().
 
-         ASTERISK-25961 #close
+         Change-Id: Iedd182d189ec947c42edc2c66c4bda3c22060daa
 
-         Change-Id: Idc6262b670ca49ede32061159e323b7b63c6f3c6
+2016-06-22 18:02 +0000 [28928ba5c4]  Richard Mudgett <rmudgett@digium.com>
 
-2016-04-26 05:48 +0000 [6959f5484b]  Joshua Colp <jcolp@digium.com>
+       * res_pjsip: Add missing NULL checks when using pjsip_inv_end_session().
 
-       * app_queue: Fix crash when unloading module.
+         pjsip_inv_end_session() is documented as being able to return the
+         passed in tdata parameter set to NULL on success.
 
-         When unloading the app_queue module the members in each queue are
-         destroyed and as part of this they are removed from the pending
-         members container. Unfortunately a crash would occur as the container
-         was destroyed before the members were removed.
+         Change-Id: I09d53725c49b7183c41bfa1be3ff225f3a8d3047
 
-         This change tweaks ordering so the container destruction occurs
-         after the members are destroyed.
+2016-06-30 08:25 +0000 [43a78100c0]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-16115
+       * configure:  Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject
 
-         Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b
+         There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK
+         from getting set when using an external pjproject.
 
-2016-04-24 22:51 +0000 [b38f1146e5]  gtjoseph <gjoseph@digium.com>
+         ASTERISK-26099 #close
+         Reported-by: Ross Beer
 
-       * config:  Fix ast_config_text_file_save2 writability check for missing files
+         Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae
 
-         A patch I did back in 2014 modified ast_config_text_file_save2 to check the
-         writability of the main file and include files before truncating and re-writing
-         them.  An unintended side-effect of this was that if a file doesn't exist,
-         the check fails and the write is aborted.
+2016-06-29 15:31 +0000 [99eff80e76]  Matt Jordan <mjordan@digium.com>
 
-         This patch causes ast_config_text_file_save2 to check the writability of the
-         parent directory of missing files instead of checking the file itself.  This
-         allows missing files to be created again.  A unit test was also added to
-         test_config to test saving of config files.
+       * hep.conf.sample: Default 'enabled' to 'no'
 
-         The regression was discovered when app_voicemail's passwordlocation=spooldir
-         feature stopped working.
+         Following the principle of least surprise, we should not be sending
+         massive numbers of PJSIP and RTCP HEP packets out into the ether to some
+         only-slightly-random IP address. Having 'enabled' set to 'no' in the
+         sample configuration file should prevent this from happening for those
+         who run 'make samples'.
 
-         ASTERISK-25917 #close
-         Reported-by: Jonathan Rose
+         ASTERISK-26159 #close
 
-         Change-Id: Ic4dbe58c277a47b674679e49daed5fc6de349f80
+         Change-Id: I1753a64ca83a3442a6ebdc31061f8185c062d9b1
 
-2016-04-21 23:53 +0000 [29bab0d1a4]  Kirill Katsnelson <kkm@smartaction.com>
+2016-06-29 15:09 +0000 [78960975f2]  Matt Jordan <mjordan@digium.com>
 
-       * chan_sip: Make autocreated peers send PeerStatus events
+       * pjproject/patches/config_site: Increase the max number of ICE candidates
 
-         Since Stasis has been introduced, an attempt to send AMI messages by an
-         autocreated peer caused a crash, and all events from autocreated peers were
-         semi-inadvertently disabled altogether in 0b83761. This change restores the
-         disabled functionality.
+         When negotiating ICE candidates with WebRTC capable endpoints, many
+         networks will result in a browser offering ICE candidates that exceeds
+         the default number of max candidates, 16. This patch bumps the max
+         candidates to 32, with the max checks at twice the number of candidates.
+         In practice, this has shown to be sufficient for browser/WebRTC
+         negotiation.
 
-         ASTERISK-25950
+         Change-Id: Ifd8da8b315f5ae14814d4ce20e10d2e6355020e5
 
-         Change-Id: Iecc350f23db603fadb2f302064643ebe9664e974
+2016-06-28 09:00 +0000 [d07c8a0504]  gtjoseph <gjoseph@digium.com>
 
-2016-04-21 14:23 +0000 [c345e530f4]  Kevin Harwell <kharwell@digium.com>
+       * codecs:  Fix ABI incompatibility created by adding format_name to ast_codec
 
-       * app_queue: queue members can receive multiple calls
+         Adding format_name even to the end of ast_codec caused issued with
+         binary codec modules because the pointer would be garbage in asterisk
+         when they registered.  So, the ast_codec structure was reverted and an
+         internal_ast_codec structure was created just for use in codec.c.  A new
+         internal-only API was also added (__ast_codec_register_with_format) so
+         that codec_builtin could register codecs with the format_name in a
+         separate parameter rather than in the ast_codec structure.
 
-         It was possible for a queue member that is a member of at least 2 or more
-         queues to receive mulitiple calls at the same time. This happened because
-         of a race between when a member was being rung and when the device state
-         notified the other queue(s) member object of the state change.
+         ASTERISK-26144 #close
+         Reported-by: Alexei Gradinari
 
-         This patch makes it so when a queue member is being rung it gets added to
-         a global pool of queue members. If that same member is tried again, e.g.
-         from another queue, and it is found to already exist in the pending member
-         container then it will not ring that member.
+         Change-Id: I6df1b08f6a6ae089db23adfe1ebc8636330265ba
 
-         ASTERISK-16115 #close
+2016-06-28 08:22 +0000 [f3d236ca7f]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48
+       * BuildSystem:  Fix a few issues hightlighted by gcc 6.x
 
-2016-04-25 08:11 +0000 [c0688a6398]  Javier Acosta <javier.acosta@beeonline.es>
+         gcc 6.1.1 caught a few more issues.
+         Made sure the unit tests still pass for the func_env and stdtime
+         issues.
 
-       * Fix case sensitive actions in AMI QueueSummary and QueueStatus
+         ASTERISK-26157 #close
 
-         ASTERISK-25954 #close
-         Reported by: Javier Acosta
+         Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e
 
-         Change-Id: I00be83d45cc7e8385de2523012bd196aafeeb256
+2016-06-28 10:33 +0000 [9d5b0934d9]  Matt Jordan <mjordan@digium.com>
 
-2016-04-22 15:25 +0000 [ebf0724a83]  Richard Mudgett <rmudgett@digium.com>
+       * configs/basic-pbx/modules.conf: Remove 'bad' modules
 
-       * test_message.c: Wait longer in case dialplan also processes the test message.
+         This patch removes the following modules:
+          - pbx_functions: It never existed.
+          - res_pjsip_log_forwarder: It no longer exists.
+          - res_hep_pjsip: The base HEP module wasn't loaded, and most basic PBXs
+                           aren't going to be installing HOMER
+          - res_pjsip_phoneprov_provider: The basic res_phoneprov module isn't
+                           loaded, and we aren't configured to make use of the
+                           module
 
-         Bumped the wait from 1 second to 5 seconds.  The test message was hitting my
-         default call handler and failing the test because it took longer.
+         Change-Id: Id91f68cae7c9c8c3d370029fe1268cb51e4ff5a5
 
-         Change-Id: I3a03737f25e92983de00548fcc7bbc50dd7544ba
+2016-06-22 11:19 +0000 [1dfc286418]  Joshua Colp <jcolp@digium.com>
 
-2016-04-12 15:29 +0000 [ba63aa7c9e]  Richard Mudgett <rmudgett@digium.com>
+       * siren: Add format attribute modules for Siren7 and Siren14.
 
-       * Manager: Short circuit AMI message processing.
+         This change removes hardcoded SDP parsing and generation for
+         Siren7 and Siren14 from chan_sip and moves it to format attribute
+         modules so it can also be used by chan_pjsip.
 
-         Improve AMI message processing performance if there are no consumers
-         listening for the messages.  We now skip creating the AMI event message
-         text strings.
+         With this the fmtp lines for both are added with the bitrate
+         information.
 
-         Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3
+         ASTERISK-26021
 
-2016-04-13 17:54 +0000 [d5ee6acf28]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ibb004eda37a14c0a35ef0613f6237977fc800037
 
-       * manager.c: Eliminate most RAII_VAR usage.
+2016-06-23 04:33 +0000 [5f0a098243]  Alexander Traud <pabstraud@compuserve.com>
 
-         * Made ast_manager_event_blob_create() not allocate the ao2 event object
-         with a lock as it is not needed.
+       * BuildSystem: Avoid obsolete warning with AC_TYPE_SIGNAL on autoconf.
 
-         Change-Id: I8e11bfedd22c21316012e0b9dd79f5918f644b7c
+         Removed the obsolete macro AC_TYPE_SIGNAL because Asterisk does not use K&R C
+         but requires ANSI C anyway.
 
-2016-04-13 17:09 +0000 [7303e3dc96]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26046
 
-       * manager_channels.c: Fix allocation failure crash.
+         Change-Id: I914c014385e1862102d90fe7650621def78db02e
 
-         An earlier allocation failure failed to create a channel snapshot for the
-         AMI HangupRequest/SoftHangupRequest event which resulted in a crash in
-         channel_hangup_request_cb().  Where the stasis message gets generated
-         cannot tell if the NULL snapshot returned was because of an allocation
-         failure or the channel was a dummy channel.
+2016-06-22 15:04 +0000 [3d904659ec]  Corey Farrell <git@cfware.com>
 
-         * Made channel_hangup_request_cb() check if the channel blob has a
-         snapshot and exit if it doesn't.
+       * res_fax: Fix reference leak in fax_v21_session_new.
 
-         * Eliminated the RAII_VAR usage in channel_hangup_request_cb().
+         fax_v21_session_new created a session details object but only released
+         the allocation reference during error conditions.  fax_session_new adds
+         it's own reference to details if needed so the caller is always
+         responsible for cleaning it's own reference.
 
-         Change-Id: I0b6a1c4e95cbb7d80b2a7054c6eadecc169dfd24
+         ASTERISK-26141 #close
 
-2016-04-13 13:50 +0000 [1e93f3d723]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ie7fc52a83b6596ce9ce2d5a2bd9f3e204f48fc88
 
-       * Bridge system: Fix memory leaks and double frees on impart failure.
+2016-06-22 13:41 +0000 [48db4c2159]  gtjoseph <gjoseph@digium.com>
 
-         You cannot reference the passed in features struct after calling
-         ast_bridge_impart().  Even if the call fails.
+       * res_rtp_asterisk:  Fix a self-comparison identified by gcc 6
 
-         Change-Id: I902b88ba0d5d39520e670fb635078a367268ea21
+         gcc 6 caught a previously unidentified self-comparison in
+         ice_candidate_cmp.  Fixed it and re-ordered the predicates for better
+         short-circuiting.
 
-2016-04-13 13:20 +0000 [5e388d4188]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26140 #close
 
-       * bridge_softmix.c: Fix crash if channel fails to join mixing tech.
+         Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7
 
-         softmix_bridge_join() failed because of an allocation failure.  To address
-         this, the softmix bridge technology now checks if the channel failed to
-         join softmix successfully.  In addition, the bridge now begins the process
-         of kicking the channel out of the bridge so we don't have channels
-         partially in the bridge for very long.
+2016-06-22 10:37 +0000 [bc69b03316]  gtjoseph <gjoseph@digium.com>
 
-         * Fix the test_channel_feature_hooks.c unit tests.  The test channel must
-         have a valid codec to join the simple_bridge technology.  This patch makes
-         joining a bridge more strict by not allowing partially joined channels to
-         remain in the bridge.
+       * chan_unistim:  Fix memcpy in get_to_address
 
-         Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b
+         A code block only enabled when HAVE_PKTINFO is not defined (FreeBSD)
+         was using a pointer to a pointer as the destination of a memcpy and a
+         '&' instead of '*' in the sizeof.
 
-2016-03-17 12:28 +0000 [9740277713]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-26138 #close
 
-       * res_pjsip:  Add serialized scheduler (res_pjsip/pjsip_scheduler.c)
+         Change-Id: Id4927ff256c0e470bdf7bcfc025146a2f656e708
 
-         There are several places that do scheduled tasks or periodic housecleaning,
-         each with its own implementation:
+2016-06-20 13:18 +0000 [1b79e2deff]  Mark Michelson <mmichelson@digium.com>
 
-         * res_pjsip_keepalive has a thread that sends keepalives.
-         * pjsip_distributor has a thread that cleans up expired unidentified requests.
-         * res_pjsip_registrar_expire has a thread that cleans up expired contacts.
-         * res_pjsip_pubsub uses ast_sched directly and then calls ast_sip_push_task.
-         * res_pjsip_sdp_rtp also uses ast_sched to send keepalives.
+       * Fix Alembic upgrades.
 
-         There are also places where we should be doing scheduled work but aren't.
-         A good example are the places we have sorcery observers to start registration
-         or qualify.  These don't work when changes are made to a backend database
-         without a pjsip reload.  We need to check periodically.
+         A non-existent constraint was being referenced in the upgrade script.
+         This patch corrects the problem by removing the reference.
 
-         As a first step to solving these issues, a new ast_sip_sched facility has
-         been created.
+         This patch fixes another realtime problem as well. Our Alembic scripts
+         store booleans as yes or no values. However, Sorcery tries to insert
+         "true" or "false" instead. This patch updates Sorcery to use "yes" and
+         "no"
 
-         ast_sip_sched wraps ast_sched but only uses ast_sched as a scheduled queue.
-         When a task is ready to run, ast_sip_task_pusk is called for it. This ensures
-         that the task is executed in a PJLIB registered thread and doesn't hold up the
-         ast_sched thread so it can immediately continue processing the queue.  The
-         serializer used by ast_sip_sched is one of your choosing or a random one from
-         the res_pjsip pool if you don't choose one.
+         ASTERISK-26128 #close
 
-         Another feature is the ability to automatically clean up the task_data when the
-         task expires (if ever).  If it's an ao2 object, it will be dereferenced, if
-         it's a malloc'd object it will be freed.  This is selectable when the task is
-         scheduled.  Even if you choose to not auto dereference an ao2 task data object,
-         the scheduler itself maintains a reference to it while the task is under it's
-         control.  This prevents the data from disappearing out from under the task.
+         Change-Id: I366dbbf91418a9cb160b3ca74b0e59b5ac284bec
 
-         There are two scheduling models.
+2016-06-22 10:55 +0000 [e30602587c]  Alexander Traud <pabstraud@compuserve.com>
 
-         AST_SIP_SCHED_TASK_PERIODIC specifies that the invocations of the task occur at
-         the specific interval.  That is, every "interval" milliseconds, regardless of
-         how long the task takes.  If the task takes longer than the interval, it will
-         be scheduled at the next available multiple of interval.  For exmaple: If the
-         task has an interval of 60 secs and the task takes 70 secs (it better not),
-         the next invocation will happen at 120 seconds.
+       * BuildSystem: Avoid obsolete warning with AC_FUNC_SETVBUF_REVERSED on autoconf.
 
-         AST_SIP_SCHED_TASK_DELAY specifies that the next invocation of the task should
-         start "interval" milliseconds after the current invocation has finished.
+         Removed the obsolete macro AC_FUNC_SETVBUF_REVERSED because Asterisk does not
+         support the platform SVR2 from the year 1987 anymore.
 
-         Also, the same ast_sched facility for fixed or variable intervals exists.  The
-         task's return code in conjunction with the AST_SIP_SCHED_TASK_FIXED or
-         AST_SIP_SCHED_TASK_VARIABLE flags controls the next invocation start time.
+         ASTERISK-26046
 
-         One res_pjsip.h housekeeping change was made.  The pjsip header files were
-         added to the top.  There have been a few cases lately where I've needed
-         res_pjsip.h just for ast_sip calls and had compiles fail spectacularly because
-         I didn't add the pjsip header files to my source even though I never referenced
-         any pjsip calls.
+         Change-Id: I28161b037feb2d29ab46ed20e785928460226c22
 
-         Finally, a few new convenience APIs were added to astobj2 to make things a
-         little easier in the scheduler.  ao2_ref_and_lock() calls ao2_ref() and
-         ao2_lock() in one go.  ao2_unlock_and_unref() does the reverse. A few macros
-         were also copied from res_phoneprov because I got tired of having to duplicate
-         the same hash, sort and compare functions over and over again. The
-         AO2_STRING_FIELD_(HASH|SORT|CMP)_FN macros will insert functions suitable for
-         aor_container_alloc into your source.
+2016-06-22 10:51 +0000 [77da168e58]  gtjoseph <gjoseph@digium.com>
 
-         This facility can be used immediately for the situations where we already have
-         a thread that wakes up periodically or do some scheduled work.  For the
-         registration and qualify issues, additional sorcery and schema changes would
-         need to be made so that we can easily detect changed objects on a periodic
-         basis without having to pull the entire database back to check.  I'm thinking
-         of a last-updated timestamp on the rows but more on this later.
+       * test_res_pjsip_scheduler: Add 'depends' on pjproject in MODULEINFO
 
-         Change-Id: I7af6ad2b2d896ea68e478aa1ae201d6dd016ba1c
+         Since the file was missing the depends on pjproject, it wasn't
+         picking up the pjproject related include path.  If there was no
+         system installed pjproject and pjproject-bundled was used, a compile
+         would fail because pjsip.h wasn't found.
 
-2016-04-25 21:43 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         ASTERISK-26139 #close
 
-       * asterisk 13.9.0-rc1 Released.
+         Change-Id: I2ee64a999051452bc198c4e2c168c70769cd3757
 
-2016-04-25 16:42 +0000 [5237b7cd47]  Joshua Colp <jcolp@digium.com>
+2016-06-02 17:26 +0000 [b3c787d1dd]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * Release summaries: Add summaries for 13.9.0-rc1
+       * res_pjsip: improve realtime performance #2
 
-2016-04-25 16:40 +0000 [5a3850ecba]  Joshua Colp <jcolp@digium.com>
+         The patch removes updating all Endpoints' status on startup.
+         Instead, only non-qualified aors with static contact
+         and non-qualified non-expired contacts are retrieved from the realtime to
+         update the endpoint status to ONLINE.
+         The endpoint name was added to the contact object to simply find the endpoint
+         that created this contact.
 
-       * .version: Update for 13.9.0-rc1
+         The status of endpoints with qualified aors will be updated by 'qualify'
+         functions.
 
-2016-04-25 16:40 +0000 [60b39040e4]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-26061 #close
 
-       * .lastclean: Update for 13.9.0-rc1
+         Change-Id: Id324c1776fa55d3741e0c5457ecac0304cb1a0df
 
-2016-04-25 16:40 +0000 [5078454464]  Joshua Colp <jcolp@digium.com>
+2016-06-21 06:52 +0000 [dfcd466bf0]  Torrey Searle <torrey@voxbone.com>
 
-       * realtime: Add database scripts for 13.9.0-rc1
+       * res_rtp_asterisk: fix memory leak in dtls
 
-2016-04-22 17:53 +0000 [eb7c581806]  gtjoseph <gjoseph@digium.com>
+         ensure that cert bios get freed after creating the fingerprint
 
-       * res_agi:  Prevent run_agi from eating frames it shouldn't
+         ASTERISK-26129 #close
 
-         The run_agi function is eating control frames when it shouldn't be. This is
-         causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond
-         transfer.
+         Change-Id: I44d23aea07dce80176ca1ff877c5ace9452ef451
 
-         Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie
-         answers.
+2016-06-21 17:42 +0000 [c982da0641]  Richard Mudgett <rmudgett@digium.com>
 
-         Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE
-         and is left thinking he's connected to Bob.
+       * res_pjproject.c: Replace inlined DEBUG_ATLEAST() with macro.
 
-         In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls
-         an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on
-         Charlie's channel.
+         Change-Id: I8799fb0a347ad76e747dafd0eacf1ea1086b9a8c
 
-         The fix was to accumulate deferrable frames in the "forever" loop instead of
-         dropping them, and re-queue them just before running the actual agi command
-         or exiting.
+2016-06-12 11:19 +0000 [6a568bcc66]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-25951 #close
+       * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription
 
-         Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645
+         Occasionally under load we'll attempt to send a final NOTIFY on a
+         subscription that's already been terminated and a SEGV will occur
+         down in pjproject's evsub_destroy function.  This is a result of a
+         race condition between all the paths that can generate a notify
+         and/or destroy the underlying pjproject evsub object:
 
-2016-04-22 13:49 +0000 [068ae54c76]  Mark Michelson <mmichelson@digium.com>
+          * The client can send a SUBSCRIBE with Expires: 0.
+          * The client can send a SUBSCRIBE/refresh.
+          * The subscription timer can expire.
+          * An extension state can change.
+          * An MWI event can be generated.
+          * The pjproject transaction timer (timer_b) can expire.
 
-       * func_odbc: Use one connection per DSN.
+         Normally when our pubsub_on_evsub_state is called with a terminate,
+         we push a task to the serializer and return at which point the dialog
+         is unlocked.  This is usually not a problem because the task runs
+         immediately and locks the dialog again.  When the system is heavily
+         loaded though, there may be a delay between the unlock and relock
+         during which another event may occur such as the subscription timer
+         or timer_b expiring, an extension state change, etc.  These may also
+         cause a terminate to be processed and if so, we could cause pjproject
+         to try to destroy the evsub structure twice.  There's no way for us to
+         tell that the evsub was already destroyed and the evsub's group lock
+         can't tolerate this and SEGVs.
 
-         res_odbc was changed in Asterisk 13.8.0 to remove connection management,
-         opting instead to let unixodbc maintain open connections and return
-         those to Asterisk as requested.
+         The remedy is twofold.
 
-         This was a boon for realtime, since it meant that multiple threads could
-         potentially run parallel queries since they could each be using their
-         own database connections.
+          * A patch has been submitted to Teluu and added to the bundled
+            pjproject which adds add/decrement operations on evsub's group lock.
 
-         However, on the user-facing side, func_odbc, there were some inherent
-         behaviors being relied on that no longer hold true after the change.
-         One such reported behavior was that MySQL's LAST_INSERTED_ID() works
-         per-connection. This means that if Asterisk uses separate connections
-         for every database operation, whereas before it used one connection for
-         everything, we have broken expectations and functionality.
+          * In res_pjsip_pubsub:
+            * configure.ac and pjproject-bundled's configure.m4 were updated
+              to check for the new evsub group lock APIs.
+            * We now add a reference to the evsub group lock when we create
+              the subscription and remove the reference when we clean up the
+              subscription.  This prevents evsub from being destroyed before
+              we're done with it.
+            * A state has been added to the subscription tree structure so
+              termination progress can be tracked through the asyncronous tasks.
+            * The pubsub_on_evsub_state callback has been split so it's not doing
+              double duty.  It now only handles the final cleanup of the
+              subscription tree.  pubsub_on_rx_refresh now handles both client
+              refreshes and client terminates.  It was always being called for
+              both anyway.
+            * The serialized_on_server_timeout task was removed since
+              serialized_pubsub_on_rx_refresh was almost identical.
+            * Missing state checks and ao2_cleanups were added.
+            * Some debug levels were adjusted to make seeing only off-nominal
+              things at level 1 and nominal or progress things at level 2+.
 
-         The fix provided in this patch is to make func_odbc use a single
-         database connection per DSN. This way, user-facing database usage will
-         have the same behavior as it did pre-13.8.0. However, realtime, which is
-         the real workhorse of database interaction, will continue to let
-         unixodbc manage connections.
+         ASTERISK-26099 #close
+         Reported-by: Ross Beer.
 
-         ASTERISK-25938 #close
-         Reported by Edwin Vandamme
+         Change-Id: I779d11802cf672a51392e62a74a1216596075ba1
 
-         Change-Id: Iac961fe79154c6211569afcdfec843c0c24c46dc
+2016-06-21 07:05 +0000 [ef97911a1c]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-04-22 13:02 +0000 [6aeefa89bc]  Leif Madsen <leif@leifmadsen.com>
+       * res_rtp_asterisk: Use latest DTLS version available by underlying platform.
 
-       * Remove reference to non-existent sip.conf option
+         Do not use DTLSv1_method() but DTLS_method() when available in OpenSSL of the
+         underlying platform. This change enables DTLS 1.2 since OpenSSL 1.0.2, for
+         WebRTC (DTLS-SRTP via SIP-over-WebSockets). This change enables AEAD-based
+         cipher-suites.
 
-         Option was removed in commit 7f883ef495b57ae9182e47213d01d5e8009dbf3f
+         ASTERISK-26130 #close
 
-         ASTERISK-25927 #close
+         Change-Id: I41f24448d6d2953e8bdb97c9f4a6bc8a8f055fd0
 
-         Change-Id: I92f9b0196d9fc41d1d58354c07340c465ef1fcf8
+2016-06-21 10:53 +0000 [69d58a1e37]  Scott Griepentrog <scott@griepentrog.com>
 
-2016-04-21 08:26 +0000 [e750ea9b5b]  Diederik de Groot <dkgroot@talon.nl>
+       * PJSIP: provide transport type with received messages
 
-       * lock.c: Check *lt before dereferencing it
+         The receipt of a SIP MESSAGE may occur over any transport including TCP
+         and TLS. When the message is received, the original URI is added to the
+         message in the field PJSIP_RECVADDR, but this is insufficient to ensure
+         a reply message can reach the originating endpoint. This patch adds the
+         PJSIP_TRANSPORT field populated with the transport type.
 
-         *lt is NULL if t->tracking == 0
+         ASTERISK-26132 #close
 
-         ASTERISK-25948 #close
+         Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e
 
-         Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba
+2016-06-21 08:01 +0000 [cbfa9f771e]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-04-15 14:36 +0000 [a036c35903]  Richard Mudgett <rmudgett@digium.com>
+       * BuildSystem: Avoid obsolete warning with HELP_STRING on autoconf.
 
-       * res_stasis: Handle re-enter stasis bridge with swap channel.
+         Some configure scripts used both AC_HELP_STRING and its replacement
+         AS_HELP_STRING. For consistency and to avoid obsolete warnings, those were
+         changed to AS_HELP_STRING.
 
-         We lose the fact that there is a swap channel if there is one.  We
-         currently wind up rejoining the stasis bridge as a normal join after the
-         swap channel has already been kicked from the bridge.
+         ASTERISK-26046
 
-         This patch preserves the swap channel so the AMI/ARI events can note that
-         the channel joining the bridge is swapping with another channel.  Another
-         benefit to swaqpping in one operation is if there are any channels that
-         get lonely (MOH, bridge playback, and bridge record channels).  The lonely
-         channels won't leave before the joining channel has a chance to come back
-         in under stasis if the swap channel is the only reason the lonely channels
-         are staying in the bridge.
+         Change-Id: I8aad4fd2bdee40aa2a31ce3339a1eb33ff4f5b0f
 
-         ASTERISK-25947 #close
-         Reported by: Richard Mudgett
+2016-06-20 10:29 +0000 [ba0d9e7f7a]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-24649
-         Reported by: John Bigelow
+       * res_pjsip_session: Handle race condition at shutdown with timer.
 
-         ASTERISK-24782
-         Reported by: John Bigelow
+         When shutting down res_pjsip_session will get unloaded before res_pjsip.
+         The act of unloading unregisters all the PJSIP services and sets
+         their module IDs to -1. In some cases it is possible for a timer to
+         occur after this happens which calls into res_pjsip_session. The
+         res_pjsip_session module can then try to get the session from the
+         INVITE session using the module ID. Since the module ID is now -1
+         this fails.
 
-         Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee
+         This change stores a copy of the module ID and uses it for the timer
+         callback scenario. If the module ID is -1 the callback immediately
+         returns but if the module ID is valid then it continues as normal.
 
-2016-04-19 16:58 +0000 [9942d50aa5]  Richard Mudgett <rmudgett@digium.com>
+         This works as the original ID of the module is guaranteed to still
+         be valid when used with the INVITE session.
 
-       * bridge: Hold off more than one imparting channel at a time.
+         ASTERISK-26127 #close
 
-         An earlier patch blocked the ast_bridge_impart() call until the channel
-         either entered the target bridge or it failed.  Unfortuantely, if the
-         target bridge is stasis and the imprted channel is not a stasis channel,
-         stasis bounces the channel out of the bridge to come back into the bridge
-         as a proper stasis channel.  When the channel is bounced out, that
-         released the block on ast_bridge_impart() to continue.  If the impart was
-         a result of a transfer, then it became a race to see if the swap channel
-         would get hung up before the imparted channel could come back into the
-         stasis bridge.  If the imparted channel won then everything is fine.  If
-         the swap channel gets hung up first then the transfer will fail because
-         the swap channel is leaving the bridge.
+         Change-Id: I88df72525c4e9ef9f19c13aedddd3ac4a335c573
 
-         * Allow a chain of ast_bridge_impart()'s to happen before any are
-         unblocked to prevent the race condition described above.  When the channel
-         finally joins the bridge or completely fails to join the bridge then the
-         ast_bridge_impart() instances are unblocked.
+2016-06-20 12:13 +0000 [c1512f4108]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25947
-         Reported by: Richard Mudgett
+       * app_voicemail.c: Fix IMAP compile error.
 
-         ASTERISK-24649
-         Reported by: John Bigelow
+         Fix compile error introduced by the patch for
+         ASTERISK-26045
 
-         ASTERISK-24782
-         Reported by: John Bigelow
+         Change-Id: I5b02876266f2824f4cec2b54d6ff4db5de5778d3
 
-         Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1
+2016-06-16 15:56 +0000 [5134a8043a]  Alexei Gradinari <alex2grad@gmail.com>
 
-2016-04-19 17:52 +0000 [516c626a7d]  gtjoseph <george.joseph@fairview5.com>
+       * fix: memory leaks, resource leaks, out of bounds and bugs
 
-       * res_pjsip_callerid:  Clear out display name if id->name is not valid
+         ASTERISK-26119 #close
 
-         When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
-         the From header, then it overwrites the display name and uri from the channel's
-         connected.id.  If the connected.id.name wasn't valid, create_new_id_hdr was
-         leaving the display name from the From header in the new RPID or PAI header.
-         On an attended transfer where the originator had a caller id number set but not
-         a display name, the re-INVITE to the final transferee had the number of the
-         originator but the display name of the transferer.
+         Change-Id: Iecbf7d0f360a021147344c4e83ab242fd1e7512c
 
-         Added a check to clear out the display name in the new header if
-         connected.id.name was invalid.
+2016-06-13 17:40 +0000 [cfebe3b94a]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25942 #close
+       * ARI: Ensure announcer channels are destroyed.
 
-         Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
+         Announcer channels were not being destroyed because the
+         stasis_app_control structure that referenced them was not being
+         destroyed. The control structure was not being destroyed because it was
+         not being unlinked from its container. It was not being unlinked from
+         its container because the after bridge callback for the announcer
+         channel was not being run. The after bridge callback was not being run
+         because the after bridge datastore was not being removed from the
+         channel on destruction. The channel was not being destroyed because the
+         hangup that used to destroy the channel was now only reducing the
+         reference count to one. The reference count of the channel was only
+         being reduced to one because the stasis_app_control structure was
+         holding the final reference...
 
-2016-04-19 13:02 +0000 [ded3794fc6]  Joshua Colp <jcolp@digium.com>
+         The control structure used to not keep a reference to the channel, so
+         that loop described above did not happen.
 
-       * app_talkdetect: Make the module core supported.
+         The solution is to manually remove the control structure from its
+         container when the playback on a bridge is complete.
 
-         This module is used as part of testsuite tests to confirm
-         stuff works. I'm accordingly marking it as core as it is
-         required by those tests.
+         ASTERISK-26083 #close
+         Reported by Joshua Colp
 
-         Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88
+         Change-Id: I0ddc0f64484ea0016245800b409b567dfe85cfb4
 
-2016-04-18 12:12 +0000 [efae187217]  Mark Michelson <mmichelson@digium.com>
+2016-06-20 08:05 +0000 [76516bd79d]  Alexander Traud <pabstraud@compuserve.com>
 
-       * PJSIP: Remove PJSIP parsing functions from uri length validation.
+       * http: leverage 'bindaddr' for TLS in http.conf
 
-         The PJSIP parsing functions provide a nice concise way to check the
-         length of a hostname in a SIP URI. The problem is that in order to use
-         those parsing functions, it's required to use them from a thread that
-         has registered with PJLib.
+         The internal HTTP/WebSocket server supports both TCP and TLS, which can be
+         activated separately via the file http.conf. The source code intends to re-use
+         the TCP parameter 'bindaddr' for TLS, even if 'tlsbindaddr' is not specified
+         explicitly. This did not work because of a typo. This change resolves this typo.
 
-         On startup, when parsing AOR configuration, the permanent URI handler
-         may not be run from a PJLib-registered thread. Specifically, this could
-         happen when Asterisk was started in daemon mode rather than
-         console-mode. If PJProject were compiled with assertions enabled, then
-         this would cause Asterisk to crash on startup.
+         ASTERISK-26126 #close
 
-         The solution presented here is to do our own parsing of the contact URI
-         in order to ensure that the hostname in the URI is not too long. The
-         parsing does not attempt to perform a full SIP URI parse/validation,
-         since the hostname in the URI is what is important.
+         Change-Id: I5efb0409ae12044dfb3495b6b97b6d40a8c9c51f
 
-         ASTERISK-25928 #close
-         Reported by Joshua Colp
+2016-05-31 09:10 +0000 [89cc86fc38]  Vasil Kolev <vasil.kolev@securax.org>
 
-         Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
+       * chan_sip: bigger buffers for headers, better failure mode
 
-2016-04-18 17:00 +0000 [f436b9ab11]  Mark Michelson <mmichelson@digium.com>
+         Currently chan_sip can give weird messages if the contacts don't
+         fit in the From: or To: headers. This fix changes the from,to and
+         invite variables to use ast_str, allocates and deallocates them and
+         resizes them if needed.
 
-       * res_pjsip_registrar: Fix bad memory-ness with user_agent.
+         ASTERISK-26069 #close
 
-         Recent changes to the PJSIP registrar resulted in tests failing due to
-         missing AOR_CONTACT_ADDED test events. The reason for this was that the
-         user_agent string had junk values in it, resulting in being unable to
-         generate the event.
+         Change-Id: I1b68fcbddca6f6cc7d7a92fe1cb0d5430282b2b3
 
-         I'm going to be honest here, I have no idea why this was happening. Here
-         are the steps needed for the user_agent variable to get messed up:
-         * REGISTER is received
-         * First contact in the REGISTER results in a contact being removed
-         * Second contact in the REGISTER results in a contact being added
-         * The contact, AOR, expiration, and user agent all have to be passed as
-           format parameters to the creation of a string. Any subset of those
-           parameters would not be enough to cause the problem.
+2016-05-18 17:37 +0000 [d53a36ff33]  Richard Mudgett <rmudgett@digium.com>
 
-         Looking into what was happening, the thing that struck me as odd was
-         that the user_agent variable was meant to be set to the value of the
-         User-Agent SIP header in the incoming REGISTER. However, when removing a
-         contact, the user_agent variable would be set (via ast_strdupa inside a
-         loop) to the stored contact's user_agent. This means that the
-         user_agent's value would be incorrect when attempting to process further
-         contacts in the incoming REGISTER.
+       * res_pjsip_transport_management.c: Misc cleanups to survive shutdown.
 
-         The fix here is to use a different variable for the stored user agent
-         when removing a contact. Correcting the behavior to be correct also
-         means the memory usage is less weird, and the issue no longer occurs.
+         * In unload_module(), reordered destroying things to minimize the window
+         that the global transports container could be used by other threads on
+         shutdown.  When shutting down you need to stop things in the opposite
+         order of creation.
 
-         ASTERISK-25929 #close
-         Reported by Joshua Colp
+         * Put the global transports container into an AO2_GLOBAL_OBJ_STATIC to
+         eliminate the crash potential by other threads using the container on
+         shutdown.
 
-         Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
+         * Made struct monitored_transport.sip_received not use
+         ast_atomic_fetchadd_int() since it is used as a boolean value that is only
+         set TRUE.  It was previously incremented for every received SIP message
+         and could theoretically overflow.
 
-2016-04-18 13:41 +0000 [49bfdc9ac0]  Joshua Colp <jcolp@digium.com>
+         * In monitored_transport_state_callback(), allocated the monitored
+         transport object without a lock since the lock was unused.
 
-       * res_pjsip_transport_management: Allow unload to occur.
+         * In keepalive_global_loaded(), removed releasing the transports container
+         if the keepalive_thread could not be started.  I set it up to be tried
+         again if the user reloads the configuration.
 
-         At shutdown it is possible for modules to be unloaded that wouldn't
-         normally be unloaded. This allows the environment to be cleaned up.
+         Change-Id: I8d12d16ef564290fa6d25a32334bb5ce8fdf87ff
 
-         The res_pjsip_transport_management module did not have the unload
-         logic in it to clean itself up causing the res_pjsip module to not
-         get unloaded. As a result the res_pjsip monitor thread kept going
-         processing traffic and timers when it shouldn't.
+2016-01-05 19:08 +0000 [03953d8034]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
+       * res_pjsip.c: Add check that timer actually got scheduled.
 
-2016-04-15 11:41 +0000 [f4693d1897]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Iabaa2e5dccf0762c258101ea0eb1487cf6959ad1
 
-       * bridge_channel.c: Ignore role setup failure in channel push.
+2016-06-13 13:33 +0000 [32ab98116e]  Richard Mudgett <rmudgett@digium.com>
 
-         We have to setup the channel roles after the bridge class push is called
-         because the bridge class push callback may have set roles on the incoming
-         channel.  Since we have already partially pushed the channel into the
-         bridge and reversing what we have already done could be problematic, the
-         only thing we can do is press on to complete pushing the channel into the
-         bridge.
+       * res_rtp_multicast.c: Fix warning message typo.
 
-         * Ignore any channel role setup errors after pushing the channel into a
-         bridge.  The channel may behave incorrectly in the bridge but we can no
-         longer abort the push at this time.
+         Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3
 
-         Change-Id: I08a97082b729052ee65cdca6bb730cf1289ede00
+2016-02-11 18:15 +0000 [0429c53368]  Richard Mudgett <rmudgett@digium.com>
 
-2016-04-17 15:37 +0000 [22335fe18a]  Jaco Kroon <jaco@uls.co.za>
+       * res_pjsip_session.c: Reorganize ast_sip_session_terminate().
 
-       * chan_sip: Don't verify table if rtupdate=no
+         Change-Id: I68a2128bcba4830985d2d441e70dfd1ac5bd712b
 
-         If rtupdate=no do not verify sipregs/peers table has updatable fields.
+2016-06-10 12:35 +0000 [5823f279f3]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25934 #close
+       * chan_rtp: Backport changes from master.
 
-         Change-Id: Iaa2c53037b93daccc7e7333c40d61861847b856d
+         * Deprecate chan_multicast_rtp.
 
-2016-04-18 04:53 +0000 [3b9d8b60b2]  ibercom <ibercom123@gmail.com>
+         Change-Id: Ib5a45e58c75ee8abd0b4f9575379b5321feb853e
 
-       * app_queue: Frequent segfaults in function can_ring_entry()
+2016-06-10 16:13 +0000 [dde58df318]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25888 #close
+       * chan_rtp.c: Copy file from chan_multicast_rtp.c
 
-         Change-Id: I007a2f2dd99823e04fb5be3ff01f02b0a2956117
+         Change-Id: I1119b53f2152ab1cbec74b5be7ea44844dbda8ef
 
-2016-04-15 16:51 +0000 [724acb6ce7]  Richard Mudgett <rmudgett@digium.com>
+2016-06-08 06:15 +0000 [ca38a3cbb4]  Alexander Traud <pabstraud@compuserve.com>
 
-       * stasis_bridge.c: Update stasis bridge push diagnostic messages.
+       * core: Not the configured but granted number of possible file descriptors.
 
-         Change-Id: I195b14994c9dcccb9452491ca20a885d2a54605a
+         With CLI "core show settings", simply the parameter maxfiles of the file
+         asterisk.conf was shown. If that parameter was not set, nothing was displayed
+         although the environment might have set a default number itself. Or if maxfiles
+         were not granted (completely), still maxfiles was shown. Now, the maximum number
+         of possible file descriptors in the environment is shown.
 
-2016-04-14 13:49 +0000 [5f78801859]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-26097
 
-       * transport management: Register thread with PJProject.
+         Change-Id: I2df5c58863b5007b34b77adbe28b885dfcdf7e0b
 
-         The scheduler thread that kills idle TCP connections was not registering
-         with PJProject properly and causing assertions if PJProject was built in
-         debug mode.
+2016-06-07 18:45 +0000 [caf6cccc5c]  Joshua Colp <jcolp@digium.com>
 
-         This change registers the thread with PJProject the first time that the
-         scheduler callback executes.
+       * cel: Ensure only one dial status per channel exists.
 
-         AST-2016-005
+         CEL wrongly assumed that a channel would only have a single dial
+         event on it. This is incorrect. Particularly in a queue each
+         call attempt to a member will result in a dial event, adding
+         a new dial status in CEL without removing the old one. This
+         would cause the container to grow with only one dial status
+         being removed when the channel went away. The other dial status
+         entries would remain leaking memory.
 
-         Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
+         This change fixes the memory leak by ensuring that only one dial
+         status will only ever exist for each channel.
 
-2016-03-08 12:12 +0000 [7fb3724a77]  Mark Michelson <mmichelson@digium.com>
+         The behavior during the scenario where multiple events are received
+         has also been improved. For failure cases the first failure will
+         be the dial status. If an answer dial status is received, though,
+         it will take priority and the dial status for the channel will be
+         answer.
 
-       * res_pjsip_transport_management: Kill idle TCP connections.
+         Memory usage has also been decreased by storing the minimal
+         amount of information and the code has been cleaned up slightly.
 
-         "Idle" here means that someone connects to us and does not send a SIP
-         request. PJProject will not automatically time out such connections, so
-         it's up to Asterisk to do it instead.
+         ASTERISK-25262 #close
 
-         When we receive an incoming TCP connection, we will start a timer
-         (equivalent to transaction timer D) waiting to receive an incoming
-         request. If we do not receive a request in that timeframe, then we will
-         shut down the TCP connection.
+         Change-Id: I5944eb923db17b6a0faa7317ff6abc9307c009fe
 
-         ASTERISK-25796 #close
-         Reported by George Joseph
+2016-06-09 10:37 +0000 [715ef071a1]  Mark Michelson <mmichelson@digium.com>
 
-         AST-2016-005
+       * chan_pjsip: Lock channel when checking for RTP changes.
 
-         Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
+         bridge_native_rtp can call into an RTP-capable channel driver in order
+         for the driver to update information about who the channel is
+         communicating with. For SIP channel drivers, this means deactivating
+         RTCP and sending a reinvite so that the endpoints can communicate
+         directly.
 
-2016-03-08 10:52 +0000 [707fd4dcd0]  Mark Michelson <mmichelson@digium.com>
+         bridge_native_rtp does the right thing and has the channel locked when
+         calling into the channel driver. chan_pjsip can't alter session
+         properties in this thread, though. chan_pjsip queues a task on the
+         session serializer in order to update properties there.
 
-       * Rename res_pjsip_keepalive res_pjsip_transport_management
+         The problem is that this queued task was not locking the channel. This
+         meant that the queued task could attempt to deactivate RTCP at the same
+         time that the channel thread was attempting to process an incoming RTCP
+         packet. This could lead to a crash.
 
-         ASTERISK-25796
-         Reported by George Joseph
+         This patch fixes the issue by locking the channel in the queued task
+         when altering RTP properties.
 
-         AST-2016-005
+         ASTERISK-26092 #close
+         Reported by Niklas Larsson
 
-         Change-Id: Id322a05f927392293570599730050bc677d99433
+         Change-Id: I3464e226a3c41f6b915f97891e07fa1599e2a159
 
-2016-04-14 07:15 +0000 [0b4bb19e0b]  Mark Michelson <mmichelson@digium.com>
+2016-06-09 09:20 +0000 [a99ddc6a0d]  gtjoseph <gjoseph@digium.com>
 
-       * AST-2016-004: Fix crash on REGISTER with long URI.
+       * build:  Fix ast_sockaddr initialization to be more portable
 
-         Due to some ignored return values, Asterisk could crash if processing an
-         incoming REGISTER whose contact URI was above a certain length.
+         A change to glibc 2.22 changed the order of the sockadddr_storage
+         members which caused the places where we do an initialization of
+         ast_sockaddr with '{ { 0, 0, } }' to fail compilation.  Those
+         initializers (which we shouldn't have been using anyway) have been
+         replaced with memsets.
 
-         ASTERISK-25707 #close
-         Reported by George Joseph
+         Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
 
-         Patches:
-               0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
+2016-06-08 12:26 +0000 [eabb398d71]  Matt Jordan <mjordan@digium.com>
 
-         AST-2016-004
+       * res_hep_{pjsip|rtcp}: Decline module loads if res_hep had not loaded
 
-         Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55
+         A crash can occur in res_hep_pjsip or res_hep_rtcp if res_hep has not
+         loaded and does not have a configuration file. Previously when this
+         occurred, checks were put in to see if the configuration was loaded
+         successfully. While this is a good idea - and has been added to the
+         offending function in res_hep - the reality is res_hep_pjsip and
+         res_hep_rtcp have no business running if res_hep isn't also running.
 
-2016-04-12 13:10 +0000 [f6e080c6a4]  Richard Mudgett <rmudgett@digium.com>
+         As such, this patch also adds a function to res_hep that returns whether
+         or not it successfully loaded. Oddly enough, ast_module_check returns
+         "everything is peachy" even if a module declined its load - so it cannot
+         be solely relied on. res_hep_pjsip and res_hep_rtcp now also check this
+         function to see if they should continue to load; if it fails, they
+         decline their load as well.
 
-       * bridge_softmix.c: Fix crash if could not allocate the dsp.
+         ASTERISK-26096 #close
 
-         Fix off nominal crash where we could not setup the channel to process
-         frames for the softmix bridge technology because of allocation failure.
+         Change-Id: I007e535fcc2e51c2ca48534f48c5fc2ac38935ea
 
-         Change-Id: Ic307a8386e46bf551e48fcd1eb97276714d56372
+2016-06-08 05:58 +0000 [0d84421f93]  Alexander Traud <pabstraud@compuserve.com>
 
-2016-04-12 15:41 +0000 [cf15a2f2d3]  gtjoseph <george.joseph@fairview5.com>
+       * astfd: Not maximum size of a single file but maximum file descriptors.
 
-       * pjproject:  Add patch for removing strip of '[]' from header params
+         With menuselect "DEBUG_FD_LEAKS" and CLI "core show fd", the maximum size of a
+         single file was shown. Now, the maximum number of possible file descriptors is
+         shown.
 
-         From the patch submitted to Teluu on 4/12/2016
-         <<<<<<<<<
-         The wholesale stripping of '[]' from header parameters causes issues if
-         something (like a port) occurs after the final ']'.
+         ASTERISK-26097
 
-         '[2001:a::b]' will correctly parse to '2001:a::b'
-         '[2001:a::b]:8080' will correctly parse to '2001:a::b' but the scanner is left
-         with ':8080' and parsing stops with a syntax error.
+         Change-Id: Icf98d145774b38cac144ca76d19eaef42ce659a3
 
-         I can't even find a case where stripping the '[]' is a good thing anyway.  Even
-         if you continued to parse and resulted in a string that looks like this...
-         '2001:a::b:8080', it's not valid.
+2016-06-02 14:53 +0000 [9c5a0b814b]  Timo Teräs <timo.teras@iki.fi>
 
-         This came up in Asterisk because Kamailio sends us a Contact with an alias
-         URI parameter that has an IPv6 address in it like this:
-         Contact: <sip:1171@127.0.0.1:5080;alias=[2001:1:2::3]~43691~6>
-         which should be legal but causes a syntax error because of the characters
-         after the final ']'.  Even if it didn't, the '[]' should still not be stripped.
+       * Fix #include poll.h and sys/cdefs.h
 
-         I've run the Asterisk Test Suite for PJSIP (252 tests) many of which are IPv6
-         enabled.  No issues were caused by removing the code that strips the '[]'.
-         >>>>>>>>>>>
+         POSIX defines poll.h, sys/poll.h should not be used at is c-library
+         internal header which may or may not exist. Notable in musl it
+         generates warning of being incorrect. And add explict include of
+         sys/cdefs.h where needed.
 
-         ASTERISK-25123 #close
-         Reported-by: Anthony Messina
+         Change-Id: I142930df53fe7585a06b854b6faddc5301e024be
 
-         Change-Id: I5cb33f4ebf07ee1f2b26d07caae715e2ec65595a
+2016-06-03 22:44 +0000 [9c35f34301]  Richard Mudgett <rmudgett@digium.com>
 
-2016-04-12 09:10 +0000 [daa086fae4]  Joshua Colp <jcolp@digium.com>
+       * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition.
 
-       * app_voicemail: Fix test_voicemail_notify_endl test.
+         This patch fixes a race condition processing received REGISTER requests
+         and their retransmissions caused by REGISTER requests being processed by
+         two threads.  The "sip_transaction Unable to register REGISTER transaction
+         (key exists)" message is a notable symptom of this issue.
 
-         The test_voicemail_notify_endl test checks the end-of-line
-         characters of an email message to confirm that they are consistent.
-         The test wrongfully assumed that reading from the email message
-         into a buffer will always result in more than 1 character being
-         read. This is incorrect. If only 1 character was read the test
-         would go outside of the buffer and access other memory causing
-         a crash.
+         This issue was more likely to happen before the pjsip/distributor
+         serializers were created.  Instead of steps one and two below placing the
+         REGISTER messages into the same pjsip/distributor they were placed in
+         random pjsip/default serializers.
 
-         The test now checks to ensure that 2 or more characters are read
-         in ensuring the test stays within the buffer.
+         1) REGISTER requests come in and get placed on the pjsip/distributor
+         serializer.
 
-         ASTERISK-25874 #close
+         2) Before the first request is processed a retransmission comes in and is
+         placed on the same pjsip/distributor serializer.
 
-         Change-Id: Ic2c89cea6e90f2c0bc2d8138306ebbffd4f8b710
+         3) The first request goes up the pjsip stack and is then shunted off to
+         the pjsip/aor/<aor> serializer.
 
-2016-04-07 12:02 +0000 [f896136460]  Alexei Gradinari <alex2grad@gmail.com>
+         4) Before the first request is completed processing in the pjsip/aor/<aor>
+         serializer, the second request goes up the pjsip stack and is also shunted
+         off to the pjsip/aor/<aor> serializer.
 
-       * app_voicemail/IMAP: function 'save_to_folder' creates wrong folder
+         5) The first request completes processing and sends out its response.
 
-         If try to move message to Cust1 (number 5)
-         the function 'save_to_folder' tries to create Greeting folder instead of Cust1.
+         6) The second request completes processing and tries to send out its
+         response but pjlib complains that the REGISTER transaction key already
+         exists.
 
-         This patch fixed it by setting GREETINGS_FOLDER = -1
+         7) Sadness ensues.
 
-         ASTERISK-24927 #close
+         * The race is eliminated by removing the pjsip/aor/<aor> serializer and
+         continuing the processing in the pjsip/distributor serializer.  Now any
+         retransmissions queued in the pjsip/distributor serializer will be
+         processed after the first message is completely processed.
 
-         Change-Id: I03d1a761894bcc2d130ec9b003bbcddc28e25c51
+         ASTERISK-26088 #close
+         Reported by:  Richard Mudgett
 
-2016-04-07 16:18 +0000 [70b7673f09]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a
 
-       * res_pjsip: Add headers to AMI Event ContactStatusDetail
+2016-06-03 11:35 +0000 [557333ea4c]  Richard Mudgett <rmudgett@digium.com>
 
-         * Added Useragent and RegExpire headers to AMI Event
-         ContactStatusDetail with associated documentation.
+       * stasis: Add setting subscription congestion levels.
 
-         ASTERISK-25903 #close
+         Stasis subscriptions and message routers create taskprocessors to process
+         the event messages.  API calls are needed to be able to set the congestion
+         levels of these taskprocessors for selected subscriptions and message
+         routers.
 
-         Change-Id: If3d121e943e588d016ba51d4eb9c6a421a562239
+         * Updated CDR, CEL, and manager's stasis subscription congestion levels
+         based upon stress testing.  Increased the congestion levels to reduce the
+         potential for bursty call setup/teardown activity from triggering the
+         taskprocessor overload alert.  CDRs in particular need an extra high
+         congestion level because they can take awhile to process the stasis
+         messages.
 
-2016-04-11 16:20 +0000 [64ecd41c8f]  Alexei Gradinari <alex2grad@gmail.com>
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-       * Codecs: strip codec name while parsing allow/disallow options
+         Change-Id: Id0a716394b4eee746dd158acc63d703902450244
 
-         Failed registration using PJSIP/Realtime if one of the codec name
-         in allow/disallow option is wrong or contains space.
+2016-06-02 18:19 +0000 [110d772467]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch strip codec name.
+       * sorcery: Add setting object type congestion levels.
 
-         ASTERISK-25914
+         Sorcery creates taskprocessors for object types to process object observer
+         callbacks.  An API call is needed to be able to set the congestion levels
+         of these taskprocessors for selected object types.
 
-         Change-Id: Ifdf02de94e5ddbce305640f6f0666084a3b9283d
+         * Updated PJSIP's contact and contact_status sorcery object type observer
+         default congestion levels based upon stress testing.  Increased the
+         congestion levels to reduce the potential for bursty register/unregister
+         and subscribe/unsubscribe activity from triggering the taskprocessor
+         overload alert.
 
-2016-04-11 14:26 +0000 [3f6c4667b8]  Jaco Kroon <jaco@uls.co.za>
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-       * core_unreal: Fix hangupcauses not getting set on Local channels
+         Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6
 
-         ASTERISK-25912 #close
+2016-06-02 16:08 +0000 [610eee2a36]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I8e72e6894feaf36c9450f2788d205d07baec23aa
+       * taskprocessors: Implement high/low water mark alerts.
 
-2016-04-01 13:30 +0000 [fe7e48db03]  gtjoseph <george.joseph@fairview5.com>
+         When taskprocessors get backed up, there is a good chance that we are
+         being overloaded and need to defer adding new work to the system.
 
-       * res_pjsip contact:  Lock expiration/addition of contacts
+         * Implemented a high/low water alert mechanism for modules to check if the
+         system is being overloaded and take appropriate action.  When a
+         taskprocessor is created it has default congestion levels set.  A
+         taskprocessor can later have those congestion levels altered for specific
+         needs if stress testing shows that the taskprocessor is a symptom of
+         overloading or needs to handle bursty activity without triggering an
+         overload alert.
 
-         Contact expiration can occur in several places:  res_pjsip_registrar,
-         res_pjsip_registrar_expire, and automatically when anyone calls
-         ast_sip_location_retrieve_aor_contact.  At the same time, res_pjsip_registrar
-         may also be attempting to renew or add a contact.  Since none of this was locked
-         it was possible for one thread to be renewing a contact and another thread to
-         expire it immediately because it was working off of stale data.  This was the
-         casue of intermittent registration/inbound/nominal/multiple_contacts test
-         failures.
+         * Add CLI "core show taskprocessor" low/high water columns.
 
-         Now, the new named lock functionality is used to lock the aor during contact
-         expire and add operations and res_pjsip_registrar_expire now checks the
-         expiration with the lock held before deleting the contact.
+         * Fixed __allocate_taskprocessor() to not use RAII_VAR().  RAII_VAR() was
+         never a good thing to use when creating a taskprocessor because of the
+         nature of how its references needed to be cleaned up on a partial
+         creation.
 
-         ASTERISK-25885 #close
-         Reported-by: Josh Colp
+         * Made res_pjsip's distributor check if the taskprocessor overload alert
+         is active before placing a message representing brand new work onto a
+         distributor serializer.
 
-         Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-2016-04-10 14:16 +0000 [0c414eaf35]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I182f1be603529cd665958661c4c05ff9901825fa
 
-       * pjproject:  Add patch to fix Via IPv6 parsing
+2016-05-27 17:31 +0000 [26e3492246]  Richard Mudgett <rmudgett@digium.com>
 
-         There's a bug in pjproject's sip_parser where the ":" wasn't correctly
-         interpreted. This is causing IPv6 addresses in the "received" parameter of the
-         Via header to cause a syntax check failure.
+       * res_pjsip_session: Use distributor serializer for incoming calls.
 
-         This patch was submitted to Teluu on 4/10/2016.
+         We must continue using the serializer that the original INVITE came in on
+         for the dialog.  There may be retransmissions already enqueued in the
+         original serializer that can result in reentrancy and message sequencing
+         problems.
 
-         ASTERISK-25910 #close
-         Reported-by: Anthony Messina
+         Outgoing call legs create the pjsip/outsess/<endpoint> serializers for
+         their dialogs.
 
-         Change-Id: Ic7e4c4aa14ded61860401ec349f5177568c4d922
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-2016-03-31 20:04 +0000 [772ff3048f]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc
 
-       * lock:  Add named lock capability
+2016-05-27 16:28 +0000 [ceb1007ed7]  Richard Mudgett <rmudgett@digium.com>
 
-         Locking some objects like sorcery objects can be tricky because the underlying
-         ao2 object may not be the same for all callers.  For instance, two threads that
-         call ast_sorcery_retrieve_by_id on the same aor name might actually get 2
-         different ao2 objects if the underlying wizard had to rehydrate the aor from a
-         database. Locking one ao2 object doesn't have any effect on the other even if
-         those objects had locks in the first place.
+       * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer.
 
-         Named locks allow access control by keyspace and key strings.  Now an "aor"
-         named "1000" can be locked and any other thread attempting to lock "aor" "1000"
-         will wait regardless of whether the underlying ao2 object is the same or not.
-         Mutex and rwlocks are supported.
+         * Resolves potential reentrancy problems if system restarted in the middle
+         of subscription message transactions.
 
-         This capability will initially be used to lock an aor when multiple threads may
-         be attempting to prune expired contacts from it.
+         * Fixes memory leak recreating persistent subscriptions when the
+         subscription resource tree could not be created.
 
-         Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-2016-04-05 16:56 +0000 [fd601f26f7]  Alexei Gradinari <alex2grad@gmail.com>
+         Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be
 
-       * res_pjsip_outbound_publish: Add transport for outbound PUBLISH
+2016-05-27 12:50 +0000 [27bafc3a8b]  Richard Mudgett <rmudgett@digium.com>
 
-         The first available transport of the appropriate type is used now.
-         This patch adds new config option 'transport' for outbound-publish.
-         If transport is set then outbound PUBLISH requests will use this transport.
+       * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions.
 
-         ASTERISK-25901 #close
+         We must continue using the serializer that the original SUBSCRIBE came in
+         on for the dialog.  There may be retransmissions already enqueued in the
+         original serializer that can result in reentrancy and message sequencing
+         problems.  The "sip_transaction Unable to register SUBSCRIBE transaction
+         (key exists)" message is a notable symptom of this issue.
 
-         Change-Id: Ib389130489b70e36795b0003fa5fd386e2680151
+         Outgoing subscriptions still create the pjsip/pubsub/<endpoint>
+         serializers for their dialogs.
 
-2016-04-07 16:39 +0000 [5f768d2a9c]  Alexei Gradinari <alex2grad@gmail.com>
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-       * res_pjsip_dialog_info: Add missing "direction" attribute in NOTIFY event
+         Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0
 
-         BLF pickup isn't working on Cisco SPA and Snom phones
-         if the direction="recipient" attribute is missing in 'dialog' tag.
+2016-05-26 17:35 +0000 [16b08444da]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch adds direction="recipient" if extension state is
-         Ringing.
+       * pjsip_distributor.c: Consistently pick a serializer for messages.
 
-         ASTERISK-24601 #close
+         Incoming messages that are not part of a dialog or a recognized response
+         to one of our requests need to be sent to a consistent serializer.  Under
+         load we may be queueing retransmissions before we can process the original
+         message.  We don't need to throw these messages onto random serializers
+         and cause reentrancy and message sequencing problems.
 
-         Change-Id: I5b2c097ca29fd59e92ba237ca5d397cb1b0bcd8c
+         * Created a pool of pjsip/distributor serializers that get picked by
+         hashing the call-id and remote tag strings of the received messages.
 
-2016-04-07 10:59 +0000 [82638fb0c7]  Richard Mudgett <rmudgett@digium.com>
+         * Made ast_sip_destroy_distributor() destroy items in the reverse order of
+         creation.
 
-       * pbx.c: Minor code rearangements.
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-         * Pull out a loop invariant.
+         Change-Id: I2ce769389fc060d9f379977f559026fbcb632407
 
-         * Convert an else-if ladder to a switch statement.
+2016-06-02 12:51 +0000 [993b769524]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0a95cfa9474a4600b9865f7b444534d275b37e95
+       * pjsip_distributor.c: Ignore messages until fully booted.
 
-2016-04-07 11:37 +0000 [bc320df173]  Alexei Gradinari <alex2grad@gmail.com>
+         We should not be processing any incoming messages until we are fully
+         booted.  We may not have dialplan or other needed configuration loaded
+         yet.
 
-       * app_voicemail/IMAP: IMAP access FATAL error: Out of memory
+         ASTERISK-26089 #close
+         Reported by: Scott Griepentrog
 
-         Sometimes uw-imap function 'mail_fetchbody' returns huge len
-         which then pass to uw-imap function 'rfc822_base64'.
-         uw-imap tries to allocate huge memory and abort() on fail.
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
 
-         This patch check the len.
-         If the len more than max size (128 Mbytes) log error.
-         This patch also set variables len, newlen to avoid uninizialezed len.
-         This patch also check pointer returned by rfc822_base64.
+         Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264
 
-         ASTERISK-25899 #close
+2016-06-02 12:04 +0000 [321a9b128f]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I4a0e7d655f11abef6a5224e2169df6d5c1f1caca
+       * res_odbc: Implement a connection pool.
 
-2016-04-07 12:26 +0000 [2ef8a954b3]  Richard Mudgett <rmudgett@digium.com>
+         Testing has shown that our usage of UnixODBC is problematic
+         due to bugs within UnixODBC itself as well as the heavy weight
+         cost of connecting and disconnecting database connections, even
+         when pooling is enabled.
 
-       * pbx: Update doxygen for extension state watchers.
+         For users of UnixODBC 2.3.1 and earlier crashes would occur due
+         to insufficient protection of the disconnect operation. This was
+         fixed in UnixODBC 2.3.2 and above.
 
-         Change-Id: Id1403b12136de62a272c01bb355aef65fd2c2d1e
+         For users of UnixODBC 2.3.3 and higher a slow-down would occur
+         under heavy database use due to repeated connection establishment.
+         A regression is present where on each connection the database
+         configuration is cached again, with the cache growing out of
+         control.
 
-2016-04-07 11:49 +0000 [d312fdeb1b]  gtjoseph <george.joseph@fairview5.com>
+         The connection pool implementation present in this change helps
+         to mitigate these issues by reducing how much we connect and
+         disconnect database connections. We also solve the issue of
+         crashes under UnixODBC 2.3.1 by defaulting the maximum number of
+         connections to 1, returning us to the previous working behavior.
+         For users who may have a fixed version the maximum concurrent
+         connection limit can be increased helping with performance.
 
-       * alembic:  Remove batch operations (and sqlite support)
+         The connection pool works by keeping a list of active connections.
+         If the connection limit has not been reached a new connection is
+         established. If the connection limit has been reached then the
+         request waits until a connection becomes available before
+         continuing.
 
-         Because SQLite doesn't support full ALTER capabilities, alembic scripts
-         require batch operations.  However, that capability wasn't available until
-         0.7.0 which some distributions haven't reached yet.  Therefore, the batch
-         operations introduced in commit 86d6e44cc (review 2319) have been reverted
-         and SQLite is unsupported again, for now anyway.
+         ASTERISK-26074 #close
+         ASTERISK-26054 #close
 
-         Tested the full upgrade and downgrade on MySQL/Mariadb and Postgresql.
+         Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff
 
-         ASTERISK-25890 #close
-         Reported-by: Harley Peters
+2016-06-07 05:45 +0000 [c6ee4a0f44]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I82eba5456736320256f6775f5b0b40133f4d1c80
+       * res_srtp: Instead of libSRTP use OpenSSL as random source.
 
-2016-04-07 11:05 +0000 [901e8d78c4]  Joshua Colp <jcolp@digium.com>
+         Since libSRTP 1.5, its Random Number Generator (RNG) is not maintained anymore.
+         Therefore, the symbol RAND_bytes is used instead of crypto_get_random.
 
-       * res_pjsip_registrar_expire: Fix race condition at shutdown.
+         ASTERISK-24436 #close
 
-         When shutting down, the PJSIP sorcery is destroyed. The registrar
-         expiration module queries the PJSIP sorcery to determine what
-         to expire. As there was no synchronization between termination
-         of the expiration thread and the unloading of the module it was
-         possible for the thread to try to access the PJSIP sorcery after
-         it had been destroyed.
+         Change-Id: Iea0bae4d4e3c9aa0926ea442b6484b5159789d96
 
-         This change ensures that the thread is shut down before allowing
-         the module to be considered unloaded.
+2016-06-07 02:16 +0000 [d38b8e6399]  Alexander Traud <pabstraud@compuserve.com>
 
-         Change-Id: I69fd239edbaaf160c2d37ae00d3ac06e5596fe8b
+       * BuildSystem: Avoid 'ar cru' and use 'ar cr' instead.
 
-2016-04-06 16:28 +0000 [8207372e66]  Joshua Colp <jcolp@digium.com>
+         In several internal library projects, the files are archived with the help of
+         'ar cr'. Only the projects editline and the Objective Open H.323 stack
+         implementation in C (ooh323c) use 'ar cru' instead. Recently, some platforms
+         changed the default parameters of AR which creates "/usr/bin/ar: `u' modifier
+         ignored since `D' is the default (see `U')". For consistency and to avoid this
+         message all projects use 'ar cr' now.
 
-       * res_pjsip: Fix configuration setting of "regcontext".
+         ASTERISK-26091 #close
 
-         Due to a merge problem two options were swapped causing the
-         regcontext setting to not get set.
+         Change-Id: I710a9b1c01c1b5a1931a646098c044c8161ead40
 
-         Change-Id: Icb33edc668e7357bacbaec2861a6b5ac64edaff1
+2016-05-27 14:49 +0000 [c27c232057]  gtjoseph <gjoseph@digium.com>
 
-2016-04-06 08:01 +0000 [0735a4d6d7]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+       * ari/resource_channels:  Add 'formats' to channel create/originate
 
-       * frame.c: Copy the whole subclass in ast_frdup().
+         If you create a local channel and don't specify an originator channel
+         to take capabilities from, we automatically add all audio formats to
+         the new channel's capabilities. When we try to make the channel
+         compatible with another, the "best format" functions pick the best
+         format available, which in this case will be slin192.  While this is
+         great for preserving quality, it's the worst for performance and
+         overkill for the vast majority of applications.
 
-         The problem is ast_frdup() does not copy whole frame.subclass for voice,
-         video and image frames, only the format is copied.  For video frames, the
-         subclass structure contains the .frame_ending flag used to put the RTP
-         marker where it needs to be.
+         In the absense of any other information, adding all formats is the
+         correct thing to do and it's not always possible to supply an
+         originator so a new parameter 'formats' has been added to the channel
+         create/originate functions. It's just a comma separated list of formats
+         to make availalble for the channel. Example: "ulaw,slin,slin16".
+         'formats' and 'originator' are mutually exclusive.
 
-         ASTERISK-25894 #close
+         To facilitate determination of format names, the format name has been
+         added to "core show codecs".
 
-         Change-Id: I812ca90e84ed5d4f473b997d0dd0d3c5a915fe33
+         ASTERISK-26070 #close
 
-2016-04-05 14:23 +0000 [c61dca6419]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I091b23ecd41c1b4128d85028209772ee139f604b
 
-       * res_pjsip: Handle deferred SDP hold/unhold properly.
+2016-06-02 04:59 +0000 [cda3385409]  Joshua Colp <jcolp@digium.com>
 
-         Some SIP devices indicate hold/unhold using deferred SDP reinvites. In
-         other words, they provide no SDP in the reinvite.
+       * alembic: Fix migration.
 
-         A typical transaction that starts hold might look something like this:
+         The 81b01a191a46_pjsip_add_contact_reg_server.py script was attempting
+         to use UniqueConstraint and failing. It was not imported and after
+         importing it also continued to fail.
 
-         * Device sends reinvite with no SDP
-         * Asterisk sends 200 OK with SDP indicating sendrecv on streams.
-         * Device sends ACK with SDP indicating sendonly on streams.
+         I've changed the script to use the explicit name of the constraint
+         instead.
 
-         At this point, PJMedia's SDP negotiator saves Asterisk's local state as
-         being recvonly.
+         Change-Id: I2438b0be90b7ce583b47dd27983c0c1a02cea5b9
 
-         Now, when the device attempts to unhold, it again uses a deferred SDP
-         reinvite, so we end up doing the following:
+2016-06-01 13:57 +0000 [e2132dd358]  Richard Mudgett <rmudgett@digium.com>
 
-         * Device sends reinvite with no SDP
-         * Asterisk sends 200 OK with SDP indicating recvonly on streams
-         * Device sends ACK with SDP indicating sendonly on streams
+       * logging,cdr,cel: Fix stringfield memory leak.
 
-         The problem here is that Asterisk offered recvonly, and by RFC 3264's
-         rules, if an offer is recvonly, the answer has to be sendonly. The
-         result is that the device is not taken off hold.
+         The stringfields refactor to allow adding stringfields to the end of a
+         structure (f6f4cf459f43f072604927209b39646f84aaa2e2) exposed some
+         incomplete cleanup code by some stringfield users.
 
-         What is supposed to happen is that Asterisk should indicate sendrecv in
-         the 200 OK that it sends. This way, the device has the freedom to
-         indicate sendrecv if it wants the stream taken off hold, or it can
-         continue to respond with sendonly if the purpose of the reinvite was
-         something else (like a session timer refresher).
+         The most noticeable leaker is the logging system where there is a leak for
+         every log message generated.
 
-         The fix here is to alter the SDP negotiator's state when we receive a
-         reinvite with no SDP. If the negotiator's state is currently in the
-         recvonly or inactive state, then we alter our local state to be
-         sendrecv. This way, we allow the device to indicate the stream state as
-         desired.
+         ASTERISK-26078 #close
+         Reported by:  Etienne Lessard
+         Patches:
+               jira_asterisk_26078_v13.patch (license #5621) patch uploaded
+               by Richard Mudgett
 
-         ASTERISK-25854 #close
-         Reported by Robert McGilvray
+         Change-Id: If6a08b31336b492c3de6f9dfd07c447f8d5a8782
 
-         Change-Id: I7615737276165eef3a593038413d936247dcc6ed
+2016-05-25 10:34 +0000 [2de58c6d01]  Alexei Gradinari <alex2grad@gmail.com>
 
-2016-03-27 23:33 +0000 [50b0922a22]  gtjoseph <george.joseph@fairview5.com>
+       * core/dial: New channel variable FORWARDERNAME
 
-       * config:  Allow filters when appending to a category
+         Added a new channel variable FORWARDERNAME which indicates which
+         channel was responsible for a forwarding requests received on dial attempt.
 
-         In sorcery based config files where there are multiple categories with the same
-         name, you can't use the (+) operator to reliably append to a category because
-         config.c stops looking when it finds the first one with the same name.
+         Fixed a bug in the app_queue: FORWARD_CONTEXT is not used.
 
-         Example:
+         ASTERISK-26059 #close
 
-         [1000]
-         type = endpoint
+         Change-Id: I34e93e8c1b5e17776a77b319703c48c8ca48e7b2
 
-         [1000]
-         type = aor
+2016-05-31 13:02 +0000 [b2ce0e354b]  Richard Mudgett <rmudgett@digium.com>
 
-         [1000](+)
-         authenticate_qualify = yes
+       * pjsip_distributor.c: Use correct rdata info access method (Part 2).
 
-         This config will fail because config.c appends authenticate_qualify to the
-         first category it finds, the endpoint, and that's not valid for endpoint.
+         The pjproject doxygen for rdata->msg_info.info says to call
+         pjsip_rx_data_get_info() instead of accessing the struct member directly.
+         You need to call the function mostly because the function will generate
+         the struct member value if it is not already setup.
 
-         Solution:
+         Change-Id: I4d519385a577f3e9d9193a88125e493cf17fa799
 
-         The capability to find a category that contains a certain variable already
-         exists so the only real change was to parse anything after the '+' that's not a
-         comma, as a filter string.
+2016-05-30 19:27 +0000 [fe305ccf01]  gtjoseph <gjoseph@digium.com>
 
-         [1000]
-         type = endpoint
+       * res_pjsip_mwi_body_generator:  Re-order the body items
 
-         [1000]
-         type = aor
+         Re-ordered the body items so Message-Account is second.
 
-         [1000](+type=aor)
-         authenticate_qualify = yes
+         Messages-Waiting: no
+         Message-Account: sip:1571@<IP Removed>:5060
+         Voice-Message: 0/0 (0/0)
 
-         This now works as expected.
+         ASTERISK-26065 #close
+         Reported-by: Ross Beer
 
-         Although the following example doesn't make any sense for pjsip, you can even
-         specify multiple filters:
+         Change-Id: If5d35a64656eac98c2dd5e490cc0b2807bed80c3
 
-         [1000](+type=aor&qualify_frequency=10)
+2016-05-30 10:58 +0000 [e8abfdcdc5]  gtjoseph <gjoseph@digium.com>
 
-         ASTERISK-25868 #close
-         Reported-by: Nick Repin
+       * pjproject_bundled:  Move to pjproject 2.5
 
-         Change-Id: I10773da4c79db36fbf1993961992af63d3441580
+         Although all the patches we had against 2.4.5 were applied by Teluu,
+         a new bug was introduced preventing re-use of tcp and tls transports
+         This patch removes all the previous patches against 2.4.5, updates
+         the version to 2.5, and adds a new patch to correct the transport
+         re-use problem.
 
-2016-04-05 10:21 +0000 [cb56ef8069]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068
 
-       * res_http_websocket: Make core supported.
+2016-05-27 12:25 +0000 [37d039fdf3]  Rusty Newton <rnewton@digium.com>
 
-         Websockets are a core part of ARI support and as such this
-         module should also be core supported.
+       * res_pjsip: Add clarifying documentation to PJSIP_HEADER help text
 
-         Change-Id: I8f9283c6a167152761b92984779bb39e3db51a9c
+         Added notes about when you can read or write headers. Specifically
+         about being able to read on the inbound channel and write on an
+         outbound channel.
 
-2016-03-25 23:22 +0000 [f6f4cf459f]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-26063 #close
+         Reported by: Private Name
+         Tested by: Rusty Newton
 
-       * stringfields:  Refactor to allow fields to be added to the end of structures
+         Change-Id: Ibeb64af17d1f6451028b3c29855a3f151a01d8c5
 
-         String fields are great, except that you can't add new ones without breaking
-         ABI compatibility because it shifts down everything else in the structure.
-         The only alternative is to add your own char * field to the end of the
-         structure and manage the memory yourself which isn't ideal, especially since
-         you then can't use the OPT_STRINGFIELD_T type.
+2016-05-25 18:30 +0000 [03d5b3ce5c]  Richard Mudgett <rmudgett@digium.com>
 
-         Background:
+       * pjsip_distributor.c: Use correct rdata info access method.
 
-         The reason string fields had to be declared inside the
-         AST_DECLARE_STRING_FIELDS block was to facilitate iteration over all declared
-         fields for initialization, compare and copy.  Since AST_DECLARE_STRING_FIELDS
-         declared the pool, then the fields, then the manager, you could use the offsets
-         of the pool and manager and iterate over the sequential addresses in between to
-         access the fields. The actual pool, field allocation and field set operations
-         don't actually care where the field is.  It's just iteration over the fields
-         that was the problem.
+         The pjproject doxygen for rdata->msg_info.info says to call
+         pjsip_rx_data_get_info() instead of accessing the struct member directly.
+         You need to call the function mostly because the function will generate
+         the struct member value if it is not already setup.
 
-         Solution: Extended String Fields
+         Change-Id: Iafe8b01242b7deb0ebfdc36685e21374a43936d2
 
-         An extended string field is one that is declared outside the
-         AST_DECLARE_STRING_FIELDS block but still (anywhere) inside the parent
-         structure.  Other than using AST_STRING_FIELD_EXTENDED instead of
-         AST_STRING_FIELD, it looks the same as other string fields.  It's storage comes
-         from the pool and it participates in string field compare and copy operations
-         peformed on the parent structure. It's also a valid target for the
-         OPT_STRINGFIELD_T aco option type.
+2016-05-20 13:56 +0000 [859bbec09b]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Implementation:
+       * app_voicemail: fix bugs, imap mm_status log change to debug
 
-         To keep track of the extended fields and make sure that ABI isn't broken, the
-         existing embedded_pool pointer in the manager structure was repurposed to be a
-         pointer to a separate header structure that contains the embedded_pool pointer
-         plus a vector of fields.  The length of the manager structure didn't change and
-         the embedded_pool pointer isn't used in the macros, only the stringfields C
-         code.  A side benefit of this is that changing the header structure in the
-         future won't break ABI.
+         Fixed some bugs:
+         - create dirpath when save downloading message from IMAP storage.
+         - create IMAP folder if not exists when saving to IMAP storage
+         - check if file successfully opened before write to it
+         - some IMAP checks
+         - remove non-standard flag 'Unseen'
+         etc
 
-         ast_string_fields_init initializes the normal string fields and appends them to
-         the vector, and subsequent calls to ast_string_field_init_extended initialize
-         and append the extended fields. Cleanup, ast_string_fields_cmp, and
-         ast_string_fields_copy can now work on the vector instead of sequentially
-         traversing the addresses between the pool and manager.
+         Change to debug IMAP mm_status log instead of verbose.
 
-         The total size of a structure using string fields didn't change, whether using
-         extended fields or not, nor have the offsets of any structure members, either
-         inside the original block or outside.  Adding an extended field to the end of a
-         structure is the same as adding a char *.
+         Remove unused X-Asterisk-VM-Caller-channel message header
+         for security reason. The clients should not know name of peer/endpoint.
 
-         Details:
+         ASTERISK-26045 #close
 
-         The stringfield C code was pulled out from utils.c and into stringfields.c.
-         It just made sense.
+         Change-Id: I7f83d88b69b36934e2539c114b9fb612deed971b
 
-         Additional work was done in ast_string_field_init and
-         ast_calloc_with_stringfields to handle the allocation of the new header
-         structure and the vector, and the associated cleanup.  In the process some
-         additional NULL pointer checking was added.
+2016-05-19 14:56 +0000 [230686f4ec]  Alexei Gradinari <alex2grad@gmail.com>
 
-         A lot of work was done in stringfields.h since the logic for compare and copy
-         is there.  Documentation was added as well as somne additional NULL checking.
+       * res_pjsip: add "via_addr", "via_port", "call_id" to contact
 
-         The ability to call ast_calloc_with_stringfields with a number of structures
-         greater than 1 never really worked.  Well, the calloc worked but there was no
-         way to access the additional structures or clean them up.  It was agreed that
-         there was no use case for requesting more than 1 structure so an ast_assert
-         was added to prevent it and the iteration code removed.
+         As res_pjsip_nat rewrites contact's address, only the last Via header
+         can contain the source address of registered endpoint.
+         Also Call-Id header may contain the source address of registered
+         endpoint.
 
-         Testing:
+         Added "via_addr", "via_port", "call_id" to contact.
+         Added new fields ViaAddress, CallID to AMI event ContactStatus.
 
-         The stringfield unit tests were updated to test both normal and extended
-         fields.  Tests for ast_string_field_ptr_set_by_fields and
-         ast_calloc_with_stringfields were also added.
+         ASTERISK-26011
 
-         As an ABI test, 13 was compiled from git and the res_pjsip_* modules, except
-         res_pjsip itself, saved off.  The patch was then added and a full compile and
-         install was performed.  Then the older res_pjsip_* moduled were copied over the
-         installed versions so res_pjsip was new and the rest were old.  No issues.
+         Change-Id: I36bcc0bf422b3e0623680152d80486aeafe4c576
 
-         contact->aor, which is a char * at the end of contact, was then changed to an
-         extended string field and a recompile and reinstall was performed, again
-         leaving stock versions of the the res_pjsip_* modules.  Again, no issues with
-         the res_pjsip_* modules using the old stringfield implementation and with
-         contact->aor as a char *, and res_pjsip itself using the new stringfield
-         implementation and contact->aor being an extended string field.
+2016-05-24 16:56 +0000 [04c12561a7]  Alexei Gradinari <alex2grad@gmail.com>
 
-         Finally, several existing string fields were converted to extended string
-         fields to test OPT_STRINGFIELD_T.  Again, no issues.
+       * res_pjsip: chatty verbose messages
 
-         Change-Id: I235db338c5b178f5a13b7946afbaa5d4a0f91d61
+         There are a lot of verbose messages about Endpoint and Contact status
+         changes if there are many dynamic endpoints.
+         The patch sets verbose level 2 for Endpoint status changes
+         and verbose level 3 for Contact status changes.
 
-2016-04-04 18:02 +0000 [fe448ac8a7]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-26055 #close
 
-       * res_pjsip_mwi:  Fix segv caused by 16c7d8e74a9af13f98c3c22aa9c43ce39965f6b7
+         Change-Id: Ie64e261ddbbc41bfff0f0190241152cc123fe6d7
 
-         I forgot the new voicemail_extension wasn't a stringfield and didn't check
-         for NULL where I should have.
+2016-02-12 09:59 +0000 [a42bea3314]  Corey Farrell <git@cfware.com>
 
-         Change-Id: I029482d5c2ab72474838750461bd46b0809c90fb
+       * threadpool: Fix potential data race.
 
-2016-04-03 11:47 +0000 [9d4318f798]  gtjoseph <george.joseph@fairview5.com>
+         worker_start checked for ZOMBIE status without holding a lock.  All
+         other read/write of worker status are performed with a lock, so this
+         check should do the same.
 
-       * install_prereq:  Fix check_installed_debs remove subversion
+         ASTERISK-25777 #close
 
-         check_installed_debs wasn't handling virtual packages like libsrtp-dev and
-         libresample-dev and on multiarch systems it was accidentally filtering out all
-         packages if any :i386 packages were found instead of just filtering out the
-         :i386 packages themselves.
+         Change-Id: I5e33685a5c26fdb300851989a3b82be8c4e03781
 
-         Change-Id: Ifd68da0d1ee30cc84df14de3f9b9079d7c3cecda
+2016-05-18 10:58 +0000 [a32616d60c]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-2016-04-01 13:09 +0000 [566601837e]  gtjoseph <george.joseph@fairview5.com>
+       * Makefile: remove OSARCH check for init install
 
-       * utils.c:  Fix typo in handle_show_locks
+         There are more specific checks for the platform.
 
-         ast_cli_allow_on_shutdown(e) should have been ast_cli_allow_at_shutdown(e).
+         Specifically this allows installing OS/X init scripts.
 
-         Change-Id: I4f092495c0b2bfd85c2651e0b5877bf4d05d9faf
+         ASTERISK-26038 #close
 
-2016-03-30 18:34 +0000 [964f54bd5d]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: If08933621145b10362a0cfe73c079301d9c13f50
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-       * pjproject_bundled:  Fix use of LDCONFIG for shared library link creation
+2016-05-21 05:42 +0000 [9ddaab789e]  Jesper (License 5518)
 
-         LDCONFIG apparently isn't set to something sane on all systems so the creation
-         of the shared library links fails.  Instead of just testing for non-blank,
-         main/Makefile now checks that LDCONFIG is actually executable and reverts to
-         LN if it isn't.
+       * func_curl: Don't trim response text on non-ASCII characters
 
-         This applies to both libasteriskpj and libasteriskssl.
+         The characters 0x80-0xFF were trimmed as well as 0x00-0x20 because of
+         a signed comparison.
 
-         Thanks to 'abelbeck' for pointing out that the issue was LDCONFIG.
+         ASTERISK-25669 #close
+         Reported by: Jesper
+         patches:
+           strings.curl.trim.patch submitted by Jesper (License 5518)
 
-         ASTERISK-25873 #close
-         Reported-by: Hans van Eijsden
+         Change-Id: Ia51e169f24e3252a7ebbaab3728630138ec6f60a
 
-         Change-Id: I25b76379bc637726ec044b2c0e709b56b3701729
+2016-05-20 16:59 +0000 [9453d1187a]  Richard Mudgett <rmudgett@digium.com>
 
-2016-03-30 13:31 +0000 [5f73c2ef0a]  Richard Mudgett <rmudgett@digium.com>
+       * parking.h: Update ast_parking_park_call() doxygen to reality.
 
-       * res_stasis.c: Protect channel datastore list from stasis end.
+         ASTERISK-26029
 
-         Change-Id: Ifadc469590bd4d5368e19d3763db3bd1f80fdb95
+         Change-Id: I2db14d102a48d3224010e6d1c69e856373cc1260
 
-2016-03-29 18:06 +0000 [74d63f56ee]  Richard Mudgett <rmudgett@digium.com>
+2016-05-10 14:30 +0000 [cd89501d48]  Alexei Gradinari <alex2grad@gmail.com>
 
-       * res_ari: Cannot get control also means channel is unavailable.
+       * func_odbc: single database connection should be optional
 
-         The only caller of ari_bridges_play_found() has this note:
+         func_odbc was changed in Asterisk 13.9.0
+         to make func_odbc use a single database connection per DSN
+         because of reported bug ASTERISK-25938
+         with MySQL/MariaDB LAST_INSERT_ID().
 
-         If ari_bridges_play_found fails because the channel is unavailable for
-         playback, The channel will be removed from the playback list soon.  We can
-         keep trying to get channels from the list until we either get one that
-         will work or else there isn't a channel for this bridge anymore, in which
-         case we'll revert to ari_bridges_play_new.
+         This is drawback in performance when func_odbc is used
+         very often in dialplan.
 
-         Change-Id: Ib068141b367ccaa17be0dab4181c98e26c5127d6
+         Single database connection should be optional.
 
-2016-03-29 14:29 +0000 [cf49b44090]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-26010
 
-       * res_stasis_recording.c: Cleanup stasis_app_recording_find_by_name().
+         Change-Id: I57d990616c957dabf7597dea5d5c3148f459dfb6
 
-         Change-Id: Ic7d93c402c498677a122505558859c853d4e5ac7
+2016-05-20 09:39 +0000 [c0b190dd9a]  Mark Michelson <mmichelson@digium.com>
 
-2016-03-28 14:23 +0000 [7f53f1d89e]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip: Match dialogs on responses better.
 
-       * core_unreal.c: Add clarification comment about channel ref.
+         When receiving an incoming response to a dialog-starting INVITE, we were
+         not matching the response to the INVITE dialog. Since we had not
+         recorded the to-tag to the dialog structure, the PJSIP-provided method
+         to find the dialog did not match.
 
-         Change-Id: I0be0627260cd8d6b6c3cc345949dcfdf32eff1f3
+         Most of the time, this was not a problem, because there is a fall-back
+         that makes the response get routed to the same serializer that the
+         request was sent on. However, in cases where an asynchronous DNS lookup
+         occurs in the PJSIP core, the thread that sends the INVITE is not
+         actually a threadpool serializer thread. This means we are unable to
+         record a serializer to handle the incoming response.
 
-2016-03-29 13:47 +0000 [ecf4102d02]  Richard Mudgett <rmudgett@digium.com>
+         Now, imagine what happens when an INVITE is sent on a non-serialized
+         thread, and an error response (such as a 486) arrives. The 486 ends up
+         getting put on some random threadpool thread. Eventually, a hangup task
+         gets queued on the INVITE dialog serializer. Since the 486 is being
+         handled on a different thread, the hangup task can execute at the same
+         time that the 486 is being handled. The hangup task assumes that it is
+         the sole owner of the INVITE session and channel, so it ends up
+         potentially freeing the channel and NULLing the session's channel
+         pointer. The thread handling the 486 can crash as a result.
 
-       * res_stasis: Add control ref to playback and recording structs.
+         This change has the incoming response match the INVITE transaction, and
+         then get the dialog from that transaction. It's the same method we had
+         been using for matching incoming CANCEL requests. By doing this, we get
+         the INVITE dialog and can ensure that the 486 response ends up being
+         handled by the same thread as the hangup, ensuring that the hangup runs
+         after the 486 has been completely handled.
 
-         The stasis_app_playback and stasis_app_recording structs need to have a
-         struct stasis_app_control ref.  Other threads can get a reference to the
-         playback and recording structs from their respective global container.
-         These other threads can then use the control pointer they contain after
-         the control struct has gone.
+         ASTERISK-25941 #close
+         Reported by Javier Riveros
 
-         * Add control ref to stasis_app_playback and stasis_app_recording structs.
+         Change-Id: I0d4cc5d07e2a8d03e9db704d34bdef2ba60794a0
 
-         With the refs added, the control command queue can now have a circular
-         control reference which will cause the control struct to never get
-         released if the control's command queue is not flushed when the channel
-         leaves the Stasis application.  Also the command queue needs better
-         protection from adding commands if the control->is_done flag is set.
+2016-05-19 11:41 +0000 [ddcf983e39]  Joshua Colp <jcolp@digium.com>
 
-         * Flush the control command queue on exit.
+       * res_sorcery_astdb: Filter fields to only the registered ones.
 
-         ASTERISK-25882 #close
+         This change introduces the same filtering that is done in res_sorcery_realtime
+         to the res_sorcery_astdb module. This allows persisted sorcery objects
+         that may contain unknown fields to still be read in from the AstDB
+         and used. This is particularly useful when switching between different
+         versions of Asterisk that may have introduced additional fields.
 
-         Change-Id: I3cf1fb59cbe6f50f20d9e35a2c07ac07d7f4320d
+         ASTERISK-26014 #close
 
-2016-03-28 18:10 +0000 [a179aba65e]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ib655130485a3ccfd635b7ed5546010ca14690fb2
 
-       * res_stasis: Fix crash on a hanging up channel.
+2016-05-09 21:40 +0000 [39fedfa423]  snuffy <snuffy22@gmail.com>
 
-         * Give the struct stasis_app_control ao2 object a ref to the channel held
-         in the object.  Now the channel will still be around if a thread needs to
-         post a stasis message instead of crash because the topic was destroyed.
+       * res_pjsip_empty_info: Respond to empty SIP INFO packets
 
-         * Moved stopping any lingering silence generator out of the struct
-         stasis_app_control destructor and made it a part of exiting the Stasis
-         application.  Who knows which thread the destructor will be called under
-         so it cannot affect the channel's silence generator.  Not only was the
-         channel unprotected when the silence generator was stopped, stasis may no
-         longer even control the channel.
+         Some SBCs require responses to empty SIP INFO packets
+         after establishing call via INVITE, if not responded to
+         they may drop your call after unspecified timeout of X minutes.
 
-         ASTERISK-25882
+         They are identified by having no Content-Type, check for this
+         and respond with 200 - OK message.
 
-         Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
+         ASTERISK-24986 #close
+         Reported-by: Ilya Trikoz, Federico Santulli
 
-2016-03-30 12:38 +0000 [16c7d8e74a]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: Ib27e4f07151e5aef28fa587e4ead36c5b87c43e0
 
-       * res_pjsip_mwi:  Allow subscribe to vm access extension as an alias
+2016-05-18 07:54 +0000 [935e0496c4]  gtjoseph <gjoseph@digium.com>
 
-         Background:
+       * udptl:  Don't eat sequence numbers until OK is received
 
-         If your extension is 1000 and the voicemail access extension is 1571 and you
-         dial 1571, usually a dialplan rule calls voicemailmain with your extension and
-         you are placed directly in your mailbox.  Therefore most admins program the
-         voicemail (or other speed dial) button on their phones to the access extension.
-         Some phones (Snom at least) use whatever is programmed there to also subscribe
-         for MWI and so can't dial one number and subscribe to another.  This works fine
-         in chan_sip because chan_sip completely ignores the user portion of the
-         SUBSCRIBE message request URI.  If it can match the peer, is subscribes to the
-         peer's mailbox.  The user could be set to anything or nothing and you'd still
-         get subscribed to your mailbox.
+         Scenario:
+         Local fax -> Asterisk w/ firewall -> Provider -> Remote fax
 
-         Issue:
+         * Local fax starts rtp call to remote fax
+         * Remote fax starts t38 call back to local fax.
+         * Local fax sends t38 no-signal to Asterisk before sending an OK.
+         * udptl processes the frame and increments the expected sequence number.
+         * chan_sip drops the frame because the call isn't up so nothing goes out
+           the external interface to open the port for incoming packets.
+         * Local fax sends OK and Asterisk sends OK to the remote fax.
+         * Remote fax sends t38 packets which are dropped by the firewall.
+         * Local fax re-sends t38 no-signal with the same sequence number.
+         * udptl drops the frame because it thinks it's a dup.
+         * Still no outgoing packets to open the firewall.
+         * t38 negotiation fails.
 
-         chan_pjsip actually uses the user portion of the URI to find an aor and its
-         mailboxes.  Therefore a subscribe to 1571 results in a 404.  Sure, you can
-         create an aor for 1571 but you certainly can't add your entire voicemail
-         system's mailboxes to it and everyone would get notified of every MWI.
+         The patch drops frames t38 received before udptl sequence processing
+         when the call hasn't been answered yet.  The second no-signal frame
+         is then seen as new and is relayed out the external interface which
+         opens the port and allows negotiation to continue.
 
-         Solution:
+         ASTERISK-26034 #close
 
-         When an MWI subscribe comes in and an aor can't be found that matches the
-         resource directly, check the resource against the endpoint's aors.  If an aor
-         is found that has a voicemail_extension that matches the resource, use it.
+         Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9
 
-         ASTERISK-25865
-         Reported-by: Ross Beer
+2016-05-17 11:14 +0000 [77e8ec162b]  gtjoseph <gjoseph@digium.com>
 
-         Change-Id: I770ea185f751f1ada888fafb4b452115f1c06e9e
+       * chan_sip:  Prevent extra Session-Expires headers from being added
 
-2016-03-24 22:55 +0000 [d8f0bc3572]  gtjoseph <george.joseph@fairview5.com>
+         When chan_sip does a re-INVITE to refresh a session and authentication
+         is required, the INVITE with the Authorization header containes a
+         second Session-Expires header without the ";refersher=" parameter.
+         This is causing some proxies to return a 400.  Also, when Asterisk is
+         the uas and the refresher, it is including the Session-Expires and
+         Min-SE headers in OPTIONS messages which is not allowed per RFC4028.
 
-       * res_pjsip_mwi:  Add voicemail extension and mwi_subscribe_replaces_unsolicited
+         This patch (based on the reporter's) Checks to see if a Session-Expires
+         header is already in the message before adding another one.  It also
+         checks that the method is INVITE or UPDATE.
 
-         res_pjsip_mwi was missing the chan_sip "vmexten" functionality which adds
-         the Message-Account header to the MWI NOTIFY.  Also, specifying mailboxes
-         on endpoints for unsolicited mwi and on aors for subscriptions required
-         that the admin know in advance which the client wanted.  If you specified
-         mailboxes on the endpoint, subscriptions were rejected even if you also
-         specified mailboxes on the aor.
+         ASTERISK-26030 #close
 
-         Voicemail extension:
-         * Added a global default_voicemail_extension which defaults to "".
-         * Added voicemail_extension to both endpoint and aor.
-         * Added ast_sip_subscription_get_dialog for support.
-         * Added ast_sip_subscription_get_sip_uri for support.
+         Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9
 
-         When an unsolicited NOTIFY is constructed, the From header is parsed, the
-         voicemail extension from the endpoint is substituted for the user, and the
-         result placed in the Message-Account field in the body.
+2016-05-16 15:29 +0000 [3f6ef63099]  gtjoseph <gjoseph@digium.com>
 
-         When a subscribed NOTIFY is constructed, the subscription dialog local uri
-         is parsed, the voicemail_extension from the aor (looked up from the
-         subscription resource name) is substituted for the user, and the result
-         placed in the Message-Account field in the body.
+       * res_pjsip_outbound_registration:  Clean up state when registration is deleted
 
-         If no voicemail extension was defined, the Message-Account field is not added
-         to the NOTIFY body.
+         Nothing was cleaning up the registration state object when ast_sorcery_delete
+         was called on a registration.  So, the registration was deleted from sorcery
+         but the state object went right on refreshing the registration (or failing
+         to refresh the registration) with the peer.
 
-         mwi_subscribe_replaces_unsolicited:
-         * Added mwi_subscribe_replaces_unsolicited to endpoint.
+         * Added a 'deleted' observer on registration that removes the state object.
 
-         The previous behavior was to reject a subscribe if a previous internal
-         subscription for unsolicited MWI was found for the mailbox.  That remains the
-         default.  However, if there are mailboxes also set on the aor and the client
-         subscribes and mwi_subscribe_replaces_unsolicited is set, the existing internal
-         subscription is removed and replaced with the external subscription.  This
-         allows an admin to configure mailboxes on both the endpoint and aor and allows
-         the client to select which to use.
+         ASTERISK-25964 #close
+         Reported-by Matt Jordan
 
-         ASTERISK-25865 #close
+         Change-Id: I2db792145cdb1f72ebbf57dd9099596dbbf12c23
+
+2016-05-15 19:05 +0000 [b6f9392a12]  gtjoseph <gjoseph@digium.com>
+
+       * res_pjsip:  Set TCP_NODELAY on TCP transports
+
+         Although it's perfectly legal to place multiple SIP messages in the same packet,
+         it can cause problems because the Linux default is to enable Path MTU Discovery
+         which sets the Don't Fragment bit on the packets. If adding a second message to
+         the packet causes the MTU to be exceeded, and the destination isn't equipped to
+         send a FRAGMENTATION NEEDED response to a large packet, the packet will just be
+         dropped.
+
+         We can't specifically tell the stack to send only 1 message per packet, but we
+         can turn on TCP_NODELAY when we create the transport. This will at least tell
+         the stack to send packets as soon as possible.
+
+         ASTERISK-26005 #close
          Reported-by: Ross Beer
 
-         Change-Id: Ic15a9415091760539c7134a5ba3dc4a6a1217cea
+         Change-Id: I820f23227183f2416ca5e393bec510e8fe1c8fbd
 
-2016-03-30 09:46 +0000 [8dc8d6ceb8]  gtjoseph <george.joseph@fairview5.com>
+2016-05-14 21:48 +0000 [361a16f316]  Matt Jordan <mjordan@digium.com>
 
-       * res_rtp_asterisk:  Fix placement of txcount increment
+       * configs/samples/pjsip.conf.sample: Fix typo
 
-         Commit 1bce690ccb36a4744a327c07af23a9a3a0fa20cd was incrementing txcount
-         for rtcp packets as well as rtp packets and that was causing sender reports
-         to be generated instead of receiver reports in cases where no rtp was actually
-         being sent.
+         A ':' is not a valid token for starting a comment.
 
-         Moved the txcount increment from __rtp_sento, which handles both rtp and rtcp,
-         to rtp_sento which only handles rtp packets.
+         Change-Id: I123592d93a83d1bdde3e352822881eb9da85e5ad
 
-         Discovered by the hep/rtcp-receiver test.
+2016-05-12 07:08 +0000 [f91a7dc993]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: Ie442e4bb947a68847a676497021ba10ffaf376d5
+       * res/res_hep_pjsip: Fix reported local IP address when bound to 'any'
 
-2016-03-26 22:33 +0000 [c7eb18d865]  gtjoseph <george.joseph@fairview5.com>
+         When bound to an 'any' address, e.g., 0.0.0.0, PJSIP reports as its
+         local address the 'any' address, as opposed to the IP address we
+         actually received the packet on. This can cause some confusion in Homer,
+         as it will dutifully report what we send it.
 
-       * chan_pjsip:  Add 'pjsip show channelstats'
+         This patch uses the PJSIP inspection routines to determine which IP
+         address we probably received the packet on based on the remote party's
+         IP address. In the event that this fails, it falls back to the IP
+         address natively reported by the transport.
 
-         Added the ability to show channel statistics to chan_pjsip (cli_functions.c)
+         Change-Id: I076f835d2aef489e1ee1d01595b211eb2ce62da3
 
-         Moved the existing 'pjsip show channel(s)' functionality from
-         pjsip_configuration to cli_functions.c.  The stats needed chan_pjsip's
-         private header so it made sense to move the existing channel commands as well.
+2016-05-14 12:29 +0000 [9de5cd209e]  Sean Bright <sean.bright@gmail.com>
 
-         Now using stasis_cache_dump to get the channel snapshots rather than retrieving
-         all endpoints, then getting each one's channel snapshots.  Much more efficient.
+       * res_ari: Correct Location headers returned by some ARI resources
 
-         Change-Id: I03b114522126d27434030b285bf6d531ddd79869
+         The Location headers returned by:
 
-2016-03-10 19:52 +0000 [1583559a06]  gtjoseph <george.joseph@fairview5.com>
+          * /bridges/{bridgeId}/play
+          * /bridges/{bridgeId}/record
+          * /channels/{channelId}/play
+          * /channels/{channelId}/record
 
-       * res_pjsip/pjsip_options:  Fix From generation on outgoing OPTIONS
+         Did not have the '/ari' prefix, and in the case of the 'play' resources, were
+         using 'playback' instead of 'playbacks.'
 
-         No one seemed to notice but every time an OPTIONS goes out, it goes
-         out with a From of "asterisk" (or whatever the default from_user is set to),
-         even if you specify an endpoint.
+         Change-Id: I957c58a3a1471bf477dae7c67faa1b74fcd9241c
 
-         The issue had several causes...
-         qualify_contact is only called with an endpoint if called from the CLI.
-         If the endpoint is NULL, qualify_contact only looks up the endpoint if
-         authenticate_qualify=yes. Even then, it never passes it on to
-         ast_sip_create_request where the From header is set.  Therefore From
-         is always "asterisk" (or whatever the default from_user is set to).
-         Even if ast_sip_create_request were to get an endpoint, it only sets
-         the From if endpoint->from_user is set.
+2016-05-13 11:38 +0000 [524a302974]  Alexei Gradinari <alex2grad@gmail.com>
 
-         The fix is 4 parts...
+       * res_pjsip: Endpoint IP Access Controls
 
-         First, create_out_of_dialog_request was modified to use the endpoint id
-         if endpoint was specified and from_user is not set.
+         With the old SIP module we can use IP access controls per peer.
+         PJSIP module missing this feature.
 
-         Second, qualify_contact was modified to always look up an endpoint if
-         one wasn't specified regardless of authenticate_qualify.  It then passes
-         the endpoint on to create_out_of_dialog_request.
+         This patch added next configuration Endpoint options:
+             "acl" - list of IP ACL section names in acl.conf
+             "deny" - List of IP addresses to deny access from
+             "permit" - List of IP addresses to permit access from
+             "contact_acl" - List of Contact ACL section names in acl.conf
+             "contact_deny" - List of Contact header addresses to deny
+             "contact_permit" - List of Contact header addresses to permit
 
-         Third (and most importantly), find_an_endpoint was modified to find
-         an endpoint by using an "aors LIKE %contact->aor%" predicate with
-         ast_sorcery_retrieve_by_fields.  As such, this patch will only work
-         if the sorcery realtime optimizations patch goes in.  Otherwise we'd
-         be pulling the entire endpoints database every time we send an OPTIONS.
-         Since we already know the contact's aor, the on_endpoint callback was also
-         modified to just check if the contact->aor is an exact match to one of
-         the endpoint's.
+         This patch also better logging failed request:
+             add custom message instead of "No matching endpoint found"
+             add SIP method to logging
 
-         Finally, since we now have an endpoint for every OPTIONS request,
-         res_pjsip/endpt_send_request (which handles out-of-dialog reqests) was
-         updated to get the transport from the endpoint and set it on tdata.
-         Now the correct transport is used.
+         ASTERISK-25900
 
-         Change-Id: I2207e12bb435e373bd1e03ad091d82e5aba011af
-2016-03-25 10:59 +0000 [0cfab30b28]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+         Change-Id: I456dea3909d929d413864fb347d28578415ebf02
 
-       * res_rtp_asterisk: Use separate SRTP session for RTCP with DTLS
+2016-05-11 20:17 +0000 [89ae4466ea]  Matt Jordan <mjordan@digium.com>
 
-         Asterisk uses separate UDP ports for RTP and RTCP traffic and RFC 5764
-         explicitly states:
+       * res_hep: Provide an option to pick the UUID type
 
-           There MUST be a separate DTLS-SRTP session for each distinct pair of
-           source and destination ports used by a media session
+         At one point in time, it seemed like a good idea to use the Asterisk
+         channel name as the HEP correlation UUID. In particular, it felt like
+         this would be a useful identifier to tie PJSIP messages and RTCP
+         messages together, along with whatever other data we may eventually send
+         to Homer. This also had the benefit of keeping the correlation UUID
+         channel technology agnostic.
 
-         This means RTP keying material cannot be used for DTLS RTCP, which was
-         the reason why RTCP encryption would fail.
+         In practice, it isn't as useful as hoped, for two reasons:
+         1) The first INVITE request received doesn't have a channel. As a
+            result, there is always an 'odd message out', leading it to be
+            potentially uncorrelated in Homer.
+         2) Other systems sending capture packets (Kamailio) use the SIP Call-ID.
+            This causes RTCP information to be uncorrelated to the SIP message
+            traffic seen by those capture nodes.
 
-         ASTERISK-25642
+         In order to support both (in case someone is trying to use res_hep_rtcp
+         with a non-PJSIP channel), this patch adds a new option, uuid_type, with
+         two valid values - 'call-id' and 'channel'. The uuid_type option is used
+         by a module to determine the preferred UUID type. When available, that
+         source of a correlation UUID is used; when not, the more readily available
+         source is used.
 
-         Change-Id: I7e8779d8b63e371088081bb113131361b2847e3a
+         For res_hep_pjsip:
+          - uuid_type = call-id: the module uses the SIP Call-ID header value
+          - uuid_type = channel: the module uses the channel name if available,
+                                 falling back to SIP Call-ID if not
+         For res_hep_rtcp:
+          - uuid_type = call-id: the module uses the SIP Call-ID header if the
+                                 channel type is PJSIP and we have a channel,
+                                 falling back to the Stasis event provided
+                                 channel name if not
+          - uuid_type = channel: the module uses the channel name
 
-2016-03-25 10:42 +0000 [6a9c18fb59]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+         ASTERISK-25352 #close
 
-       * app_echo: forward and generate VIDUPDATE frames
+         Change-Id: Ide67e59a52d9c806e3cc0a797ea1a4b88a00122c
 
-         When using app_echo via WebRTC with VP8 video the video would appear
-         only after a few minutes, because there would be nothing to request
-         a full reference frame.
+2016-05-10 02:56 +0000 [a73d79c22f]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         This fixes the problem in both ways:
-         - echos any VIDUPDATE frames received on the channel
-         - sends one such frame when first video frame is to be forwarded
+       * basic-cfg: asterisk.conf: remove [directories]
 
-         This makes the echo work with Firefox and Chrome WebRTC implementation.
+         A minimal configuration does not need to explicitly spell out the
+         directories. The built-in defaults will do just fine. In many cases
+         they are wrong.
 
-         ASTERISK-25867 #close
+         Change-Id: Id1a671e5c5e9923765a4156b57f9f7e263fdd26c
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e
+2016-05-10 03:06 +0000 [1c56de9453]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-2016-03-27 12:53 +0000 [1bce690ccb]  gtjoseph <george.joseph@fairview5.com>
+       * basic-cfg: asterisk.conf: defaults of options
 
-       * res_rtp_asterisk:  Fix packet stats on bridged connection
+         Note the default of remmed-out options. To clarify that those values are
+         not the defaults.
 
-         rxcount, txcount, rxoctetcount and txoctetcount weren't being calculated
-         for bridged streams because the calulations were being done after the
-         bridged short-circuit.  Actually, rxoctetcount wasn't ever being calculated.
+         Change-Id: I849c29b7a710f0abc37355fcb5bfee335ae30738
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Moved the calculations so they occur for all valid received packets and
-         all transmitted packets.  Also added rxoctetcount and txoctetcount to
-         ast_rtp_instance_stat.
+2016-05-10 03:08 +0000 [d7af591c59]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: I08fb06011a82d38c3b4068867a615068fbe59cbb
+       * basic-cfg: asterisk.conf: debug level 5 spams
 
-2016-03-25 23:19 +0000 [50f90d4099]  Philip Correia
+         Don't suggest users to use debug level 5, which spews (usually
+         non-useful) debug information. Reduce the suggestion to (an
+         arbitrarily-selected) level 2.
 
-       * res_parking: Fix blind transfer dynamic lots creation.
+         Change-Id: Ib53195f78945970956ff59ef13fa89b90e0fcd60
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Blind transfers to a recognized parking extension need to use the parker's
-         channel variable values to create the dynamic parking lot.  This is
-         because there is always only one parker while the parkee may actually be a
-         multi-party bridge.  A multi-party bridge can never supply the needed
-         channel variables to create the dynamic parking lot.  In the multi-party
-         bridge blind transfer scenario, the parker's CHANNEL(parkinglot) value and
-         channel variables are inherited by the local channel used to park the
-         bridge.
+2016-05-10 03:10 +0000 [9b7db18fc1]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         * In park_common_setup(), make use the parker instead of the parkee to
-         supply the dynamic parking lot channel variable values.  In all but one
-         case, the parkee is the same as the parker.  However, in the recognized
-         parking extension blind transfer scenario for a two party bridge they are
-         different channels.  For consistency, we need to use the parker channel.
+       * basic-cfg: asterisk.conf: don't set languages
 
-         * In park_local_transfer(), pass the CHANNEL(parkinglot) value to the
-         local channel when blind transferring a multi-party bridge to a recognized
-         parking extension.
+         * No need to set language in a miniml configuration. 'en' will do just
+           fine.
+         * It would be useful to have an example of setting it to a different
+           language.
+         * Setting the documentation language explicitly is likewise not
+           required. Setting it to a different value is not common. At least
+           until there is a set of translated documentation.
 
-         * When a local channel starts a call, the Local;2 side needs to inherit
-         the CHANNEL(parkinglot) value from Local;1.
+         Change-Id: I94d91ea34e129925f25af81ef8dc0906fb568cb7
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         The DTMF one-touch parking case wasn't even trying to create dynamic
-         parking lots before it aborted the attempt.
+2016-05-10 08:17 +0000 [eec539a46e]  Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         * In parking_park_call(), add missing code to create a dynamic parking
-         lot.
+       * followme: delete the right recorded name file
 
-         A DTMF bridge hook is documented as returning -1 to remove the hook.
-         Though the hook caller is really coded to accept non-zero.  See the
-         ast_bridge_hook_callback typedef.
+         FollowMe with the option a records the name of the caller and plays it
+         to the callee. However it has failed to clean up that recorded file
+         as it tried to delete the file name without the '.sln' extension.
 
-         * In feature_park_call(), don't remove the DTMF one-touch parking hook
-         because of an error.
+         ASTERISK-26008 #close
 
-         ASTERISK-24605 #close
-         Reported by:  Philip Correia
-         Patches:
-               call_park.patch (license #6672) patch uploaded by Philip Correia
+         Change-Id: I79d7b1be7d5cde57bf076d9389e2a8a4422776ec
+         Signed-off-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
 
-         Change-Id: I221d3a8fcc181877a1158d17004474d35d8016c9
+2016-05-12 14:36 +0000 [02d30e171e]  Mark Michelson <mmichelson@digium.com>
 
-2016-03-08 15:55 +0000 [5aa5c49413]  gtjoseph <george.joseph@fairview5.com>
+       * Use doubles instead of floats for conversions when comparing strings.
 
-       * sorcery/res_pjsip:  Refactor for realtime performance
+         In 13.9.0, there was an issue where PJSIP contacts added to an AOR would
+         be deleted at seemingly random times.
 
-         There were a number of places in the res_pjsip stack that were getting
-         all endpoints or all aors, and then filtering them locally.
+         One reason this was happening was because of an operation to retrieve
+         the contacts whose expiration time was less than or equal to the current
+         time. When retrieving existing contacts, the contact's expiration time
+         and the current time were converted from a string to a float, and those
+         two floats were compared.
 
-         A good example is pjsip_options which, on startup, retrieves all
-         endpoints, then the aors for those endpoints, then tests the aors to see
-         if the qualify_frequency is > 0.  One issue was that it never did
-         anything with the endpoints other than retrieve the aors so we probably
-         could have skipped a step and just retrieved all aors. But nevermind.
+         On some systems, including mine, this conversion was horribly off. For
+         instance, I could regularly see the string "1463079214" get converted
+         into 1463079168.000000. When switching from using a float to using a
+         double, the conversion was as expected.
 
-         This worked reasonably well with local config files but with a realtime
-         backend and thousands of objects, this was a nightmare.  The issue
-         really boiled down to the fact that while realtime supports predicates
-         that are passed to the database engine, the non-realtime sorcery
-         backends didn't.
+         Why was the conversion to float off? My best guess is that the
+         conversion to float was attempting to store the entire value in the 23
+         bit significand of the IEEE-754 floating point number. In particular, if
+         you take only the 23 most significant bits of 1463079214, you get the
+         messed up 1463079168 that we were seeing in the conversion. It likely
+         was possible to get a more precise value by composing the number using
+         an exponent, but the conversion did not work that way. With a double,
+         you have a 52 bit significand, allowing the entire value to fit there,
+         and thereby allowing an accurate conversion.
 
-         They do now.
+         ASTERISK-26007 #close
+         Reported by Greg Siemon
 
-         The realtime engines have a scheme for doing simple comparisons. They
-         take in an ast_variable (or list) for matching, and the name of each
-         variable can contain an operator.  For instance, a name of
-         "qualify_frequency >" and a value of "0" would create a SQL predicate
-         that looks like "where qualify_frequency > '0'".  If there's no operator
-         after the name, the engines add an '=' so a simple name of
-         "qualify_frequency" and a value of "10" would return exact matches.
+         Change-Id: I83ca7944aae8b7cd994b254c78ec02411d321070
 
-         The non-realtime backends decide whether to include an object in a
-         result set by calling ast_sorcery_changeset_create on every object in
-         the internal container.  However, ast_sorcery_changeset_create only does
-         exact string matches though so a name of "qualify_frequency >" and a
-         value of "0" returns nothing because the literal "qualify_frequency >"
-         doesn't match any name in the objset set.
+2016-05-12 09:13 +0000 [e2df15bae9]  gtjoseph <gjoseph@digium.com>
 
-         So, the real task was to create a generic string matcher that can take a
-         left value, operator and a right value and perform the match. To that
-         end, strings.c has a new ast_strings_match(left, operator, right)
-         function.  Left and right are the strings to operate on and the operator
-         can be a string containing any of the following: = (or NULL or ""), !=,
-         >, >=, <, <=, like or regex.  If the operator is like or regex, the
-         right string should be a %-pattern or a regex expression.  If both left
-         and right can be converted to float, then a numeric comparison is
-         performed, otherwise a string comparison is performed.
+       * pjsip_distributor:  Add missing newline to NOTICE
 
-         To use this new function on ast_variables, 2 new functions were added to
-         config.c.  One that compares 2 ast_variables, and one that compares 2
-         ast_variable lists.  The former is useful when you want to compare 2
-         ast_variables that happen to be in a list but don't want to traverse the
-         list.  The latter will traverse the right list and return true if all
-         the variables in it match the left list.
+         There was a newline missing from the end of the "no matching endpoint" notice.
 
-         Now, the backends' fields_cmp functions call ast_variable_lists_match
-         instead of ast_sorcery_changeset_create and they can now process the
-         same syntax as the realtime engines.  The realtime backend just passes
-         the variable list unaltered to the engine.  The only gotcha is that
-         there's no common realtime engine support for regex so that's been noted
-         in the api docs for ast_sorcery_retrieve_by_fields.
+         Change-Id: Idc11fe5bc0354072291663dbffe648c471e39181
 
-         Only one more change to sorcery was done...  A new config flag
-         "allow_unqualified_fetch" was added to reg_sorcery_realtime.
-         "no": ignore fetches if no predicate fields were supplied.
-         "error": same as no but emit an error. (good for testing)
-         "yes": allow (the default);
-         "warn": allow but emit a warning. (good for testing)
+2016-05-10 10:19 +0000 [a94a12bbf7]  Sebastian Damm <damm@sipgate.de>
+
+       * res_pjsip_outbound_registration: generate correct Contact URI for TLS
+
+         There are two types of SIP URIs indicating a secure transport:
+         * sips:user@example.org
+         * sip:user@example.org;transport=tls
+
+         When using a sips URI, Asterisk checks incoming INVITEs and answers from
+         the other side for sips URIs, and rejects the packet if there are only
+         sip URIs. So Asterisk should only generate a sips Contact URI if the
+         other side supports it.
+
+         This patch makes Asterisk generate either a sip or sips Contact URI
+         depending on the format of the server URI.
+
+         If you want a sip URI, use:
+         server_uri=sip:example.org\;transport=tls
+
+         If you want a sips URI, use:
+         server_uri=sips:example.org
+
+         ASTERISK-25990 #close
+         Reported-by: Sebastian Damm
+
+         Change-Id: I5ae57d6531ce940b5fc64d5cd2673e60db0f9ba2
+
+2016-05-05 16:41 +0000 [36d66a23e0]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * logger: Add PID to syslog messages.
+
+         During refactoring of this support the addition of
+         the PID to messages was removed. This change adds it
+         back in.
+
+         ASTERISK-25538 #close
+
+         Change-Id: Ie2d43b0652e59b7ac319a7dba94501540d70ba36
+
+2016-05-11 14:07 +0000 [37214b0bdf]  Matt Jordan <mjordan@digium.com>
+
+       * configure: Fix errors with AST_UNDEFINED_SANITIZER/AST_LEAK_SANITIZER
+
+         When running on a system that does not support or use AST_UNDEFINED_SANITIZER
+         or AST_LEAK_SANITIZER, the configure script would incorrectly set those
+         constants to a blank value, e.g., 'AST_UNDEFINED_SANITIZER='. This would
+         cause menuselect to error out, complaining that a blank value is not a
+         valid option. This patch corrects the issue by setting the value to 0 if
+         the options that those constants enable/disable is not found.
+
+         Change-Id: Ib39814aaf940f308d500c1e026edb3d70de47fba
+
+2016-05-03 15:43 +0000 [49b25a0956]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_outbound_publish: state potential dropped on reloads/realtime fetches
+
+         When reloading, or fetching realtime data, if the "apply" failed for any
+         numerous reasons the current state object would not be maintained. This
+         potentially resulted in publishes being stopped for some states/clients when
+         they should not have been.
+
+         This patch makes it so the current state object is kept upon any type of reload/
+         fetch failures.
+
+         Change-Id: Iab6020c116d628ed2ae81183e987e2eaa3c90b30
+
+2016-05-03 15:31 +0000 [1b5c91b7be]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_outbound_publish: Potential crash due to off nominal path
+
+         It was possible for the explicit publish destroy function to be called without
+         the pjsip client ever being initialized. This fix checks to make sure there is
+         a client to destroy before attempting.
+
+         Change-Id: I8eea1bfa3bd472149bfc255310be2a6248688f5c
+
+2016-05-03 15:35 +0000 [10de553c9d]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_outbound_publishing: After unloading the library won't load again
+
+         The same thing was happening in res_pjsip_publish_asterisk. When the library
+         was unloaded it did not unregister the object type from sorcery. Subsequent
+         loads resulted in a failed load due to the sorcery type already existing.
+
+         Change-Id: Ifdc25e94e4cd40bc5a19eb4d0a00b86c2e9fedc9
+
+2016-05-03 14:59 +0000 [1a833b9739]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_outbound_publish: Ref leak in off nominal callback paths
+
+         There were a few spots where the client object's reference was being leaked in
+         sip_outbound_publish_callback. This patch cleans up those leaks.
+
+         Change-Id: I485d0bc9335090f373026f77c548042e258461df
+
+2016-05-03 15:39 +0000 [4752ef02e0]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_outbound_publish: Won't unload if condition wait times out
+
+         When res_pjsip_outbound_publish unloads it has to wait for all current
+         publishing objects to get done. However if the wait condition times out
+         then it does not fail the unload. This sometimes results in an infinite
+         loop check while unloading. This patch now fails the unload operation if
+         the condition times out.
+
+         Change-Id: Id57b8cbed9d61222690fcba1e4f18e259df4c7ec
+
+2016-05-05 11:37 +0000 [4d063814ba]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_authenticator_digest: Don't use source port in nonce verification
+
+         From the issue reporter:
+         "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of
+         the timestamp, the source address, the source port, a server UUID that is
+         calculated at startup, and the authentication realm.
+
+         Rather than caching nonces that we create, we instead attempt to re-calculate
+         the nonce when receiving an incoming request with authentication. We then
+         compare the re-calculated nonce to the incoming nonce, and if they don't match,
+         then authentication has failed early.
+
+         The problem is that it is possible, especially when using TCP, to receive two
+         requests from the same endpoint but have differing source ports for those
+         requests. Asterisk itself commonly will use different source ports for
+         outbound TCP requests."
+
+         This patch removes the source port dependency when building the nonce.
+
+         ASTERISK-25978 #close
+
+         Change-Id: I871b5f4adce102df1c4988066283095ec509dffe
+
+2016-05-07 14:39 +0000 [fb6227a372]  gtjoseph <gjoseph@digium.com>
+
+       * config_transport:  Tell pjproject to allow all SSL/TLS protocols
+
+         The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2.
+         SSL is not allowed.   So, even if you specify "sslv3" for a transport method,
+         it's silently ignored and one of the TLS protocols is used.  This was a new
+         behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that
+         we never caught.
+
+         Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default().
+         This tells pjproject to set the socket protocol to match the method.
+
+         ASTERISK-26004 #close
+
+         Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078
+
+2016-05-04 02:40 +0000 [2db17a793c]  Jaco Kroon <jaco@uls.co.za>
+
+       * app_confbridge: Add a regcontext option for confbridge bridge profiles.
+
+         This patch allows for having app_confbridge register the name of the
+         conference as an extension into a specific context, similar to
+         regcontext for chan_sip.  This variant is not quite as involved as the
+         one in chan_sip and doesn't allow for multiple contexts or custom
+         extensions, you can only specify the context and the conference name
+         will always be used as the extension to register.
+
+         ASTERISK-25989 #close
+
+         Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f
+
+2016-05-08 20:19 +0000 [2a7130b8b0]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Check for python-dev and TEST_FRAMEWORK
+
+         The pjsua and pjsystest apps are now built only if TEST_FRAMEWORK is set.
+         The python bindings are now built only if TEST_FRAMEWORK is set and a
+         python development package is installed.
+
+         libresample was also disabled.
+
+         ASTERISK-25993 #close
+         Reported-by: Joshua Colp
+
+         Change-Id: If4e91c503a02f113d5b71bc8b972081fa3ff6f03
+
+2016-05-04 15:16 +0000 [72eb7c8301]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip: module load priority
+
+         The res_pjsip_authenticator_digest, res_pjsip_endpoint_identifier_*
+         and res_pjsip_registrar modules should load ASAP
+         to avoid "No matching endpoint found" for legitimate endpoint.
+
+         ASTERISK-25994
+
+         Change-Id: Iac95d95ad031e0be104189d29e923a2ad7c24a1b
+
+2016-05-04 03:17 +0000 [dd00c71aae]  Chris Trobridge <christ.trobridge@ultra-aep.com>
+
+       * config_options.c: Expand #ifdef to contain whole if statement.
+
+         ASTERISK-25956 #close
+
+         Change-Id: If6961ec54be276d5ab4f012ee7e7b420cb45de38
+
+2016-05-05 15:16 +0000 [e6eb17efd9]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * stasis_endpoints: Add new Status and Headers to ContactStatus
+
+         ASTERISK-25903 added a new headers to AMI Event ContactStatusDetail.
+         ASTERISK-25904 added a new Status to AMI Event ContactStatusDetail.
+         These additions should be also in stasis_endpoints
+         to include in command "manager show event ContactStatus"
+
+         Change-Id: I7610ad02a998e1f26c20caa27aa50279d0164f6a
+
+2016-05-05 05:07 +0000 [fa11f4c920]  Joshua Colp <jcolp@digium.com>
+
+       * file: Ensure nativeformats remains valid for lifetime of use.
+
+         It is possible for the nativeformats of a channel to change
+         throughout its lifetime. As a result a user of it needs to either
+         ensure the channel is locked when accessing the formats or keep
+         a reference to the nativeformats themselves.
+
+         This change fixes the file playback support so it keeps a
+         reference to the nativeformats when accessing things.
+
+         ASTERISK-25998 #close
+
+         Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915
+
+2016-04-15 09:32 +0000 [9c2032240e]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip: improve realtime performance
+
+         This patch modified pjsip_options to retrieve only
+         permament contacts for aor if the qualify_frequency is > 0
+         and persisted contacts if the qualify_frequency is > 0.
+
+         This patch also fixed a bug in res_sorcery_astdb.
+         res_sorcery_astdb doesn't save object data retrived from astdb.
+
+         ASTERISK-25826
+
+         Change-Id: I1831fa46c4578eae5a3e574ee3362fddf08a1f05
+
+2016-05-04 16:11 +0000 [fe38d21c2a]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * pjsip: Added "reg_server" to contacts (fixed alembic)
+
+         ASTERISK-25931
+
+         Change-Id: Icc4321a88f5c93ff809da3f372eebbf69c6a8549
+
+2016-04-07 16:33 +0000 [7a14e669f0]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip/AMI: add contact.updated event
+
+         With the old SIP module AMI sends PeerStatus event on every
+         successfully REGISTER requests, ie, on start registration,
+         update registration and stop registration.
+
+         With PJSIP AMI sends ContactStatus only when status is changed.
+         Regarding registration:
+         on start registration - Created
+         on stop registration - Removed
+         but on update registration nothing
+
+         This patch added contact.updated event.
+
+         ASTERISK-25904
+
+         Change-Id: I8fad8aae9305481469c38d2146e1ba3a56d3108f
+
+2016-05-02 16:08 +0000 [06d4ac0355]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_fax: add FAXMODE variable
+
+         The app_fax set FAXMODE variable, but res_fax missing this feature.
+         This patch add FAXMODE variable which is set to either "audio" or "T38".
+
+         ASTERISK-25980
+
+         Change-Id: Ie3dcbfb72cc681e9e267a60202f7fb8723a51b6b
+
+2016-05-02 16:52 +0000 [2d17fe06c5]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_fax/t38_gateway: Peer V.21 session is created on wrong channel
+
+         The channel and peer V.21 sessions are created on the same channel now.
+         The peer V.21 session should be created only on peer channel
+         when one of channel can handle T.38.
+
+         Also this patch enable debug for T.38 gateway session
+         if global fax debug enabled.
+
+         ASTERISK-25982
+
+         Change-Id: I78387156ea521a77eb0faf170179ddd37a50430e
+
+2016-05-01 02:21 +0000 [a2f19d82a8]  Diederik de Groot <dkgroot@talon.nl>
+
+       * configs/basic-pbx/asterisk.conf: contains incorrect path separator
+
+         Note: When packagers use these files (as an example) the paths are never
+         really used when they are split using '='.
+
+         Note: Thirdparty applications will also have trouble parsing the file when
+         expecting '=>'.
+
+         Change-Id: I0ada647f588e81f023fb1333ca15a1a333fd6004
+
+2016-04-30 17:52 +0000 [f39089f17c]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Various fixes discovered during testing of OSes
+
+         For all OSes:
+         * Disabled third-party codecs in pjproject and added
+           '--disable-speex-codec --disable-speex-aec --disable-gsm-codec' to the
+           configure options since we don't use the pjsip codec capability.
+
+         FreeBSD:
+         * Added FreeBSD support to install_prereq.
+         * Changed pjproject/configure.m4 to use $GNU_MAKE instead of hardcoding "make".
+         * Added __progname and environ to asterisk.exports.in.
+         * Reverted the use of ldconfig to create shared library symlinks to ln.
+         * Only enable epoll in pjproject if `uname -s` is Linux.
+         * Added a patch to pjproject to take the name of the 'make' command from
+           an environment variable if supplied.  This is needed for the python bindings.
+           (merged by Teluu into pjproject trunk 5/3/2016)
+         FreeBSD support isn't complete.  Still some general issues regarding
+         make/gmake having nothing to do with pjproject.  With some handholding it DOES
+         build successfully.
+
+         CentOS:
+         Added 'patch' and 'bzip2' to install_prereq PACKAGES_RH.
+         CentOS 6/7 32/64 build and run the pjsip testsuite successfully.
+
+         Ubuntu:
+         No changes required.
+         Ubuntu 15/16 32/64 build and run the pjsip testsuite successfully.
+
+         Debian:
+         No changes required.
+         Debian 6/7/8 32/64 build and run the pjsip testsuite successfully.
+
+         There will utimately be a follow-up patch to create an install_prereq for
+         the testsuite as I've discovered a few missing requirements.
+
+         ASTERISK-25968 #close
+
+         Change-Id: I5756a07facfc63798115a5e73a8709382fe9259c
+
+2016-03-17 14:29 +0000 [8028fc7585]  Andrew Nagy <andrew.nagy@the159.com>
+
+       * app_voicemail: always copy dynamic struct to avoid race condition
+
+         Voicemail email addresses can be corrupt or voicemail
+         emails can end up being sent to the wrong email address if asterisk is
+         reading voicemail.conf during a reload and processing an email at the
+         same time. This patch always copies the struct that would otherwise only
+         be copied once.
+
+         ASTERISK-24463 #close
+         Reported by: John Campbell
+         Tested by: Etienne Lessard
+         Tested by: Andrew Nagy
+         Change-Id: I3a0643813116da84e2617291903d0d489b7425fb
+
+2016-04-15 14:26 +0000 [3cb8934de0]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * pjsip: Added "reg_server" to contacts.
+
+         If the Asterisk system name is set in asterisk.conf, it will be stored
+         into the "reg_server" field in the ps_contacts table to facilitate
+         multi-server setups.
+
+         ASTERISK-25931
+
+         Change-Id: Ia8f6bd2267809c78753b52bcf21835b9b59f4cb8
+
+2016-04-28 11:35 +0000 [7992923c70]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Start body generator users after suppliers.
+
+         Change-Id: I8f0b57841feaab56c8a4e821b5ccb4e05e5fbadb
+
+2016-04-28 16:06 +0000 [5dc0e082b2]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Add useful information to some messages.
+
+         Change-Id: Ia0b2e15773894c599e5c5748bbc70e99f434192a
+
+2016-04-26 15:58 +0000 [f9e416f053]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Fix body generator registration race.
+
+         Change-Id: Id8752073ef06472a2fd96080f4009fac42843e67
+
+2016-04-26 15:13 +0000 [b1b2019046]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.h: Fix doxygen association.
+
+         Change-Id: I110d3e3572598289fcd4215d966cf0c858f98632
+
+2016-04-25 16:00 +0000 [b7f07fdff5]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_publish.c: Remove redundant flag check.
+
+         Change-Id: I0da80a3c3e0eae0c52ff27e7412ba027d6f52353
+
+2016-04-28 16:54 +0000 [719ece5659]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Disable PJSIP_UNESCAPE_IN_PLACE
+
+         When pjsip_parse_uri is called with PJSIP_UNESCAPE_IN_PLACE enabled,
+         the input uri string will become corrupted if it contains escape sequences.
+         It's not possible to automatically strdup or strdupa the input string because
+         the output uri pj_str_t's will have pointers to chunks of the input string.
+         Getting around this would require more memory management code and wouldn't
+         be worth the savings of doing the unescape in place.
+
+         ASTERISK-25970 #close
+         Reported-by: Dmitriy Serov
+
+         Change-Id: I28dc0e599b5108f7959b9c46dc8278371b372f88
+
+2016-03-07 18:34 +0000 [38bed4515d]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Add ability to identify by Authorization username
+
+         A feature of chan_sip that service providers relied upon was the ability to
+         identify by the Authorization username.  This is most often used when customers
+         have a PBX that needs to register rather than identify by IP address.  From my
+         own experiance, this is pretty common with small businesses who otherwise
+         don't need a static IP.
+
+         In this scenario, a register from the customer's PBX may succeed because From
+         will usually contain the PBXs account id but an INVITE will contain the caller
+         id.  With nothing recognizable in From, the service provider's Asterisk can
+         never match to an endpoint and the INVITE just stays unauthorized.
+
+         The fixes:
+
+         A new value "auth_username" has been added to endpoint/identify_by that
+         will use the username and digest fields in the Authorization header
+         instead of username and domain in the the From header to match an endpoint,
+         or the To header to match an aor.  This code as added to
+         res_pjsip_endpoint_identifier_user rather than creating a new module.
+
+         Although identify_by was always a comma-separated list, there was only
+         1 choice so order wasn't preserved.  So to keep the order, a vector was added
+         to the end of ast_sip_endpoint.  This is only used by res_pjsip_registrar
+         to find the aor.  The res_pjsip_endpoint_identifier_* modules are called in
+         globals/endpoint_identifier_order.
+
+         Along the way, the logic in res_pjsip_registrar was corrected to match
+         most-specific to least-specific as res_pjsip_endpoint_identifier_user does.
+
+         The order is:
+
+         username@domain
+         username@domain_alias
+         username
+
+         Auth by username does present 1 problem however, the first INVITE won't have
+         an Authorization header so the distributor, not finding a match on anything,
+         sends a securty_alert.  It still sends a 401 with a challenge so the next
+         INVITE will have the Authorization header and presumably succeed.  As a result
+         though, that first security alert is actually a false alarm.
+
+         To address this, a new feature has been added to pjsip_distributor that keeps
+         track of unidentified requests and only sends the security alert if a
+         configurable number of unidentified requests come from the same IP in a
+         configurable amout of time.  Those configuration options have been added to
+         the global config object.  This feature is only used when auth_username
+         is enabled.
+
+         Finally, default_realm was added to the globals object to replace the hard
+         coded "asterisk" used when an endpoint is not yet identified.
+
+         The testsuite tests all pass but new tests are forthcoming for this new
+         feature.
+
+         ASTERISK-25835 #close
+         Reported-by: Ross Beer
+
+         Change-Id: I30ba62d208e6f63439600916fcd1c08a365ed69d
+
+2016-04-27 13:23 +0000 [677d5b5151]  Mark Michelson <mmichelson@digium.com>
+
+       * func_odbc: Check connection status before executing queries.
+
+         A recent change to func_odbc made it so that a single connection was
+         maintained per DSN. The problem was that the code was optimistic about
+         the health of the connection after initially opening it and did nothing
+         to re-connect in case the connection had died.
+
+         This change adds a check before executing a query to ensure that the
+         connection to the database is still up and running.
+
+         ASTERISK-25963 #close
+         Reported by Ross Beer
+
+         Change-Id: Id33c86eb04ff48ca088bb2e3086c27b3b683491d
+
+2016-04-15 11:59 +0000 [df3639700a]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip: disable multi domain to improve realtime performace
+
+         This patch added new global pjsip option 'disable_multi_domain'.
+         Disabling Multi Domain can improve Realtime performance by reducing
+         number of database requests.
+
+         ASTERISK-25930 #close
+
+         Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7
+
+2016-04-26 11:13 +0000 [949bf6b282]  Joshua Colp <jcolp@digium.com>
+
+       * chan_sip: Give more time for TCP/TLS threads to stop.
+
+         The unload process currently tells each TCP/TLS to terminate but
+         does not wait for them to do so. This introduces a race condition
+         where the container holding the threads may be destroyed before
+         the threads are able to remove themselves from it. When they
+         finally do the container is invalid and can't be used causing a
+         crash.
+
+         A previous change existed which waited a bit to wait for any
+         stranglers to finish. This change extends this and waits longer.
+
+         ASTERISK-25961 #close
+
+         Change-Id: Idc6262b670ca49ede32061159e323b7b63c6f3c6
+
+2016-04-26 05:48 +0000 [6959f5484b]  Joshua Colp <jcolp@digium.com>
+
+       * app_queue: Fix crash when unloading module.
+
+         When unloading the app_queue module the members in each queue are
+         destroyed and as part of this they are removed from the pending
+         members container. Unfortunately a crash would occur as the container
+         was destroyed before the members were removed.
+
+         This change tweaks ordering so the container destruction occurs
+         after the members are destroyed.
+
+         ASTERISK-16115
+
+         Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b
+
+2016-04-24 22:51 +0000 [b38f1146e5]  gtjoseph <gjoseph@digium.com>
+
+       * config:  Fix ast_config_text_file_save2 writability check for missing files
+
+         A patch I did back in 2014 modified ast_config_text_file_save2 to check the
+         writability of the main file and include files before truncating and re-writing
+         them.  An unintended side-effect of this was that if a file doesn't exist,
+         the check fails and the write is aborted.
+
+         This patch causes ast_config_text_file_save2 to check the writability of the
+         parent directory of missing files instead of checking the file itself.  This
+         allows missing files to be created again.  A unit test was also added to
+         test_config to test saving of config files.
+
+         The regression was discovered when app_voicemail's passwordlocation=spooldir
+         feature stopped working.
+
+         ASTERISK-25917 #close
+         Reported-by: Jonathan Rose
+
+         Change-Id: Ic4dbe58c277a47b674679e49daed5fc6de349f80
+
+2016-04-21 23:53 +0000 [29bab0d1a4]  Kirill Katsnelson <kkm@smartaction.com>
+
+       * chan_sip: Make autocreated peers send PeerStatus events
+
+         Since Stasis has been introduced, an attempt to send AMI messages by an
+         autocreated peer caused a crash, and all events from autocreated peers were
+         semi-inadvertently disabled altogether in 0b83761. This change restores the
+         disabled functionality.
+
+         ASTERISK-25950
+
+         Change-Id: Iecc350f23db603fadb2f302064643ebe9664e974
+
+2016-04-21 14:23 +0000 [c345e530f4]  Kevin Harwell <kharwell@digium.com>
+
+       * app_queue: queue members can receive multiple calls
+
+         It was possible for a queue member that is a member of at least 2 or more
+         queues to receive mulitiple calls at the same time. This happened because
+         of a race between when a member was being rung and when the device state
+         notified the other queue(s) member object of the state change.
+
+         This patch makes it so when a queue member is being rung it gets added to
+         a global pool of queue members. If that same member is tried again, e.g.
+         from another queue, and it is found to already exist in the pending member
+         container then it will not ring that member.
+
+         ASTERISK-16115 #close
+
+         Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48
+
+2016-04-25 08:11 +0000 [c0688a6398]  Javier Acosta <javier.acosta@beeonline.es>
+
+       * Fix case sensitive actions in AMI QueueSummary and QueueStatus
+
+         ASTERISK-25954 #close
+         Reported by: Javier Acosta
+
+         Change-Id: I00be83d45cc7e8385de2523012bd196aafeeb256
+
+2016-04-22 17:53 +0000 [eb7c581806]  gtjoseph <gjoseph@digium.com>
+
+       * res_agi:  Prevent run_agi from eating frames it shouldn't
+
+         The run_agi function is eating control frames when it shouldn't be. This is
+         causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond
+         transfer.
+
+         Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie
+         answers.
+
+         Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE
+         and is left thinking he's connected to Bob.
+
+         In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls
+         an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on
+         Charlie's channel.
+
+         The fix was to accumulate deferrable frames in the "forever" loop instead of
+         dropping them, and re-queue them just before running the actual agi command
+         or exiting.
+
+         ASTERISK-25951 #close
+
+         Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645
+
+2016-04-22 15:25 +0000 [ebf0724a83]  Richard Mudgett <rmudgett@digium.com>
+
+       * test_message.c: Wait longer in case dialplan also processes the test message.
+
+         Bumped the wait from 1 second to 5 seconds.  The test message was hitting my
+         default call handler and failing the test because it took longer.
+
+         Change-Id: I3a03737f25e92983de00548fcc7bbc50dd7544ba
+
+2016-04-12 15:29 +0000 [ba63aa7c9e]  Richard Mudgett <rmudgett@digium.com>
+
+       * Manager: Short circuit AMI message processing.
+
+         Improve AMI message processing performance if there are no consumers
+         listening for the messages.  We now skip creating the AMI event message
+         text strings.
+
+         Change-Id: I7b22fc5ec4e500d00635c1a467aa8ea68a1bb2b3
+
+2016-04-13 17:54 +0000 [d5ee6acf28]  Richard Mudgett <rmudgett@digium.com>
+
+       * manager.c: Eliminate most RAII_VAR usage.
+
+         * Made ast_manager_event_blob_create() not allocate the ao2 event object
+         with a lock as it is not needed.
+
+         Change-Id: I8e11bfedd22c21316012e0b9dd79f5918f644b7c
+
+2016-04-13 17:09 +0000 [7303e3dc96]  Richard Mudgett <rmudgett@digium.com>
+
+       * manager_channels.c: Fix allocation failure crash.
+
+         An earlier allocation failure failed to create a channel snapshot for the
+         AMI HangupRequest/SoftHangupRequest event which resulted in a crash in
+         channel_hangup_request_cb().  Where the stasis message gets generated
+         cannot tell if the NULL snapshot returned was because of an allocation
+         failure or the channel was a dummy channel.
+
+         * Made channel_hangup_request_cb() check if the channel blob has a
+         snapshot and exit if it doesn't.
+
+         * Eliminated the RAII_VAR usage in channel_hangup_request_cb().
+
+         Change-Id: I0b6a1c4e95cbb7d80b2a7054c6eadecc169dfd24
+
+2016-04-13 13:50 +0000 [1e93f3d723]  Richard Mudgett <rmudgett@digium.com>
+
+       * Bridge system: Fix memory leaks and double frees on impart failure.
+
+         You cannot reference the passed in features struct after calling
+         ast_bridge_impart().  Even if the call fails.
+
+         Change-Id: I902b88ba0d5d39520e670fb635078a367268ea21
+
+2016-04-13 13:20 +0000 [5e388d4188]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge_softmix.c: Fix crash if channel fails to join mixing tech.
+
+         softmix_bridge_join() failed because of an allocation failure.  To address
+         this, the softmix bridge technology now checks if the channel failed to
+         join softmix successfully.  In addition, the bridge now begins the process
+         of kicking the channel out of the bridge so we don't have channels
+         partially in the bridge for very long.
+
+         * Fix the test_channel_feature_hooks.c unit tests.  The test channel must
+         have a valid codec to join the simple_bridge technology.  This patch makes
+         joining a bridge more strict by not allowing partially joined channels to
+         remain in the bridge.
+
+         Change-Id: I97e2ade6a2bcd1214f24fb839fda948825b61a2b
+
+2016-04-22 13:49 +0000 [068ae54c76]  Mark Michelson <mmichelson@digium.com>
+
+       * func_odbc: Use one connection per DSN.
+
+         res_odbc was changed in Asterisk 13.8.0 to remove connection management,
+         opting instead to let unixodbc maintain open connections and return
+         those to Asterisk as requested.
+
+         This was a boon for realtime, since it meant that multiple threads could
+         potentially run parallel queries since they could each be using their
+         own database connections.
+
+         However, on the user-facing side, func_odbc, there were some inherent
+         behaviors being relied on that no longer hold true after the change.
+         One such reported behavior was that MySQL's LAST_INSERTED_ID() works
+         per-connection. This means that if Asterisk uses separate connections
+         for every database operation, whereas before it used one connection for
+         everything, we have broken expectations and functionality.
+
+         The fix provided in this patch is to make func_odbc use a single
+         database connection per DSN. This way, user-facing database usage will
+         have the same behavior as it did pre-13.8.0. However, realtime, which is
+         the real workhorse of database interaction, will continue to let
+         unixodbc manage connections.
+
+         ASTERISK-25938 #close
+         Reported by Edwin Vandamme
+
+         Change-Id: Iac961fe79154c6211569afcdfec843c0c24c46dc
+
+2016-04-22 13:02 +0000 [6aeefa89bc]  Leif Madsen <leif@leifmadsen.com>
+
+       * Remove reference to non-existent sip.conf option
+
+         Option was removed in commit 7f883ef495b57ae9182e47213d01d5e8009dbf3f
+
+         ASTERISK-25927 #close
+
+         Change-Id: I92f9b0196d9fc41d1d58354c07340c465ef1fcf8
+
+2016-04-21 08:26 +0000 [e750ea9b5b]  Diederik de Groot <dkgroot@talon.nl>
+
+       * lock.c: Check *lt before dereferencing it
+
+         *lt is NULL if t->tracking == 0
+
+         ASTERISK-25948 #close
+
+         Change-Id: I4a81af28f9c82a74aa82413d772a7dc8fa6f45ba
+
+2016-04-15 14:36 +0000 [a036c35903]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis: Handle re-enter stasis bridge with swap channel.
+
+         We lose the fact that there is a swap channel if there is one.  We
+         currently wind up rejoining the stasis bridge as a normal join after the
+         swap channel has already been kicked from the bridge.
+
+         This patch preserves the swap channel so the AMI/ARI events can note that
+         the channel joining the bridge is swapping with another channel.  Another
+         benefit to swaqpping in one operation is if there are any channels that
+         get lonely (MOH, bridge playback, and bridge record channels).  The lonely
+         channels won't leave before the joining channel has a chance to come back
+         in under stasis if the swap channel is the only reason the lonely channels
+         are staying in the bridge.
+
+         ASTERISK-25947 #close
+         Reported by: Richard Mudgett
+
+         ASTERISK-24649
+         Reported by: John Bigelow
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee
+
+2016-04-19 16:58 +0000 [9942d50aa5]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge: Hold off more than one imparting channel at a time.
+
+         An earlier patch blocked the ast_bridge_impart() call until the channel
+         either entered the target bridge or it failed.  Unfortuantely, if the
+         target bridge is stasis and the imprted channel is not a stasis channel,
+         stasis bounces the channel out of the bridge to come back into the bridge
+         as a proper stasis channel.  When the channel is bounced out, that
+         released the block on ast_bridge_impart() to continue.  If the impart was
+         a result of a transfer, then it became a race to see if the swap channel
+         would get hung up before the imparted channel could come back into the
+         stasis bridge.  If the imparted channel won then everything is fine.  If
+         the swap channel gets hung up first then the transfer will fail because
+         the swap channel is leaving the bridge.
+
+         * Allow a chain of ast_bridge_impart()'s to happen before any are
+         unblocked to prevent the race condition described above.  When the channel
+         finally joins the bridge or completely fails to join the bridge then the
+         ast_bridge_impart() instances are unblocked.
+
+         ASTERISK-25947
+         Reported by: Richard Mudgett
+
+         ASTERISK-24649
+         Reported by: John Bigelow
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1
+
+2016-04-19 17:52 +0000 [516c626a7d]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_callerid:  Clear out display name if id->name is not valid
+
+         When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
+         the From header, then it overwrites the display name and uri from the channel's
+         connected.id.  If the connected.id.name wasn't valid, create_new_id_hdr was
+         leaving the display name from the From header in the new RPID or PAI header.
+         On an attended transfer where the originator had a caller id number set but not
+         a display name, the re-INVITE to the final transferee had the number of the
+         originator but the display name of the transferer.
+
+         Added a check to clear out the display name in the new header if
+         connected.id.name was invalid.
+
+         ASTERISK-25942 #close
+
+         Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
+
+2016-04-19 13:02 +0000 [ded3794fc6]  Joshua Colp <jcolp@digium.com>
+
+       * app_talkdetect: Make the module core supported.
+
+         This module is used as part of testsuite tests to confirm
+         stuff works. I'm accordingly marking it as core as it is
+         required by those tests.
+
+         Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88
+
+2016-04-18 12:12 +0000 [efae187217]  Mark Michelson <mmichelson@digium.com>
+
+       * PJSIP: Remove PJSIP parsing functions from uri length validation.
+
+         The PJSIP parsing functions provide a nice concise way to check the
+         length of a hostname in a SIP URI. The problem is that in order to use
+         those parsing functions, it's required to use them from a thread that
+         has registered with PJLib.
+
+         On startup, when parsing AOR configuration, the permanent URI handler
+         may not be run from a PJLib-registered thread. Specifically, this could
+         happen when Asterisk was started in daemon mode rather than
+         console-mode. If PJProject were compiled with assertions enabled, then
+         this would cause Asterisk to crash on startup.
+
+         The solution presented here is to do our own parsing of the contact URI
+         in order to ensure that the hostname in the URI is not too long. The
+         parsing does not attempt to perform a full SIP URI parse/validation,
+         since the hostname in the URI is what is important.
+
+         ASTERISK-25928 #close
+         Reported by Joshua Colp
+
+         Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
+
+2016-04-18 17:00 +0000 [f436b9ab11]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_registrar: Fix bad memory-ness with user_agent.
+
+         Recent changes to the PJSIP registrar resulted in tests failing due to
+         missing AOR_CONTACT_ADDED test events. The reason for this was that the
+         user_agent string had junk values in it, resulting in being unable to
+         generate the event.
+
+         I'm going to be honest here, I have no idea why this was happening. Here
+         are the steps needed for the user_agent variable to get messed up:
+         * REGISTER is received
+         * First contact in the REGISTER results in a contact being removed
+         * Second contact in the REGISTER results in a contact being added
+         * The contact, AOR, expiration, and user agent all have to be passed as
+           format parameters to the creation of a string. Any subset of those
+           parameters would not be enough to cause the problem.
+
+         Looking into what was happening, the thing that struck me as odd was
+         that the user_agent variable was meant to be set to the value of the
+         User-Agent SIP header in the incoming REGISTER. However, when removing a
+         contact, the user_agent variable would be set (via ast_strdupa inside a
+         loop) to the stored contact's user_agent. This means that the
+         user_agent's value would be incorrect when attempting to process further
+         contacts in the incoming REGISTER.
+
+         The fix here is to use a different variable for the stored user agent
+         when removing a contact. Correcting the behavior to be correct also
+         means the memory usage is less weird, and the issue no longer occurs.
+
+         ASTERISK-25929 #close
+         Reported by Joshua Colp
+
+         Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
+
+2016-04-18 13:41 +0000 [49bfdc9ac0]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_transport_management: Allow unload to occur.
+
+         At shutdown it is possible for modules to be unloaded that wouldn't
+         normally be unloaded. This allows the environment to be cleaned up.
+
+         The res_pjsip_transport_management module did not have the unload
+         logic in it to clean itself up causing the res_pjsip module to not
+         get unloaded. As a result the res_pjsip monitor thread kept going
+         processing traffic and timers when it shouldn't.
+
+         Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
+
+2016-04-15 11:41 +0000 [f4693d1897]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge_channel.c: Ignore role setup failure in channel push.
+
+         We have to setup the channel roles after the bridge class push is called
+         because the bridge class push callback may have set roles on the incoming
+         channel.  Since we have already partially pushed the channel into the
+         bridge and reversing what we have already done could be problematic, the
+         only thing we can do is press on to complete pushing the channel into the
+         bridge.
+
+         * Ignore any channel role setup errors after pushing the channel into a
+         bridge.  The channel may behave incorrectly in the bridge but we can no
+         longer abort the push at this time.
+
+         Change-Id: I08a97082b729052ee65cdca6bb730cf1289ede00
+
+2016-04-17 15:37 +0000 [22335fe18a]  Jaco Kroon <jaco@uls.co.za>
+
+       * chan_sip: Don't verify table if rtupdate=no
+
+         If rtupdate=no do not verify sipregs/peers table has updatable fields.
+
+         ASTERISK-25934 #close
+
+         Change-Id: Iaa2c53037b93daccc7e7333c40d61861847b856d
+
+2016-04-18 04:53 +0000 [3b9d8b60b2]  ibercom <ibercom123@gmail.com>
+
+       * app_queue: Frequent segfaults in function can_ring_entry()
+
+         ASTERISK-25888 #close
+
+         Change-Id: I007a2f2dd99823e04fb5be3ff01f02b0a2956117
+
+2016-04-15 16:51 +0000 [724acb6ce7]  Richard Mudgett <rmudgett@digium.com>
+
+       * stasis_bridge.c: Update stasis bridge push diagnostic messages.
+
+         Change-Id: I195b14994c9dcccb9452491ca20a885d2a54605a
+
+2016-04-14 13:49 +0000 [5f78801859]  Mark Michelson <mmichelson@digium.com>
+
+       * transport management: Register thread with PJProject.
+
+         The scheduler thread that kills idle TCP connections was not registering
+         with PJProject properly and causing assertions if PJProject was built in
+         debug mode.
+
+         This change registers the thread with PJProject the first time that the
+         scheduler callback executes.
+
+         AST-2016-005
+
+         Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
+
+2016-03-17 12:28 +0000 [9740277713]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Add serialized scheduler (res_pjsip/pjsip_scheduler.c)
+
+         There are several places that do scheduled tasks or periodic housecleaning,
+         each with its own implementation:
+
+         * res_pjsip_keepalive has a thread that sends keepalives.
+         * pjsip_distributor has a thread that cleans up expired unidentified requests.
+         * res_pjsip_registrar_expire has a thread that cleans up expired contacts.
+         * res_pjsip_pubsub uses ast_sched directly and then calls ast_sip_push_task.
+         * res_pjsip_sdp_rtp also uses ast_sched to send keepalives.
+
+         There are also places where we should be doing scheduled work but aren't.
+         A good example are the places we have sorcery observers to start registration
+         or qualify.  These don't work when changes are made to a backend database
+         without a pjsip reload.  We need to check periodically.
+
+         As a first step to solving these issues, a new ast_sip_sched facility has
+         been created.
+
+         ast_sip_sched wraps ast_sched but only uses ast_sched as a scheduled queue.
+         When a task is ready to run, ast_sip_task_pusk is called for it. This ensures
+         that the task is executed in a PJLIB registered thread and doesn't hold up the
+         ast_sched thread so it can immediately continue processing the queue.  The
+         serializer used by ast_sip_sched is one of your choosing or a random one from
+         the res_pjsip pool if you don't choose one.
+
+         Another feature is the ability to automatically clean up the task_data when the
+         task expires (if ever).  If it's an ao2 object, it will be dereferenced, if
+         it's a malloc'd object it will be freed.  This is selectable when the task is
+         scheduled.  Even if you choose to not auto dereference an ao2 task data object,
+         the scheduler itself maintains a reference to it while the task is under it's
+         control.  This prevents the data from disappearing out from under the task.
+
+         There are two scheduling models.
+
+         AST_SIP_SCHED_TASK_PERIODIC specifies that the invocations of the task occur at
+         the specific interval.  That is, every "interval" milliseconds, regardless of
+         how long the task takes.  If the task takes longer than the interval, it will
+         be scheduled at the next available multiple of interval.  For exmaple: If the
+         task has an interval of 60 secs and the task takes 70 secs (it better not),
+         the next invocation will happen at 120 seconds.
+
+         AST_SIP_SCHED_TASK_DELAY specifies that the next invocation of the task should
+         start "interval" milliseconds after the current invocation has finished.
+
+         Also, the same ast_sched facility for fixed or variable intervals exists.  The
+         task's return code in conjunction with the AST_SIP_SCHED_TASK_FIXED or
+         AST_SIP_SCHED_TASK_VARIABLE flags controls the next invocation start time.
+
+         One res_pjsip.h housekeeping change was made.  The pjsip header files were
+         added to the top.  There have been a few cases lately where I've needed
+         res_pjsip.h just for ast_sip calls and had compiles fail spectacularly because
+         I didn't add the pjsip header files to my source even though I never referenced
+         any pjsip calls.
+
+         Finally, a few new convenience APIs were added to astobj2 to make things a
+         little easier in the scheduler.  ao2_ref_and_lock() calls ao2_ref() and
+         ao2_lock() in one go.  ao2_unlock_and_unref() does the reverse. A few macros
+         were also copied from res_phoneprov because I got tired of having to duplicate
+         the same hash, sort and compare functions over and over again. The
+         AO2_STRING_FIELD_(HASH|SORT|CMP)_FN macros will insert functions suitable for
+         aor_container_alloc into your source.
+
+         This facility can be used immediately for the situations where we already have
+         a thread that wakes up periodically or do some scheduled work.  For the
+         registration and qualify issues, additional sorcery and schema changes would
+         need to be made so that we can easily detect changed objects on a periodic
+         basis without having to pull the entire database back to check.  I'm thinking
+         of a last-updated timestamp on the rows but more on this later.
+
+         Change-Id: I7af6ad2b2d896ea68e478aa1ae201d6dd016ba1c
+
+2016-03-08 12:12 +0000 [7fb3724a77]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_transport_management: Kill idle TCP connections.
+
+         "Idle" here means that someone connects to us and does not send a SIP
+         request. PJProject will not automatically time out such connections, so
+         it's up to Asterisk to do it instead.
+
+         When we receive an incoming TCP connection, we will start a timer
+         (equivalent to transaction timer D) waiting to receive an incoming
+         request. If we do not receive a request in that timeframe, then we will
+         shut down the TCP connection.
+
+         ASTERISK-25796 #close
+         Reported by George Joseph
+
+         AST-2016-005
+
+         Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
+
+2016-03-08 10:52 +0000 [707fd4dcd0]  Mark Michelson <mmichelson@digium.com>
+
+       * Rename res_pjsip_keepalive res_pjsip_transport_management
+
+         ASTERISK-25796
+         Reported by George Joseph
+
+         AST-2016-005
+
+         Change-Id: Id322a05f927392293570599730050bc677d99433
+
+2016-04-14 07:15 +0000 [0b4bb19e0b]  Mark Michelson <mmichelson@digium.com>
+
+       * AST-2016-004: Fix crash on REGISTER with long URI.
+
+         Due to some ignored return values, Asterisk could crash if processing an
+         incoming REGISTER whose contact URI was above a certain length.
+
+         ASTERISK-25707 #close
+         Reported by George Joseph
+
+         Patches:
+               0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
+
+         AST-2016-004
+
+         Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55
+
+2016-04-12 13:10 +0000 [f6e080c6a4]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge_softmix.c: Fix crash if could not allocate the dsp.
+
+         Fix off nominal crash where we could not setup the channel to process
+         frames for the softmix bridge technology because of allocation failure.
+
+         Change-Id: Ic307a8386e46bf551e48fcd1eb97276714d56372
+
+2016-04-12 15:41 +0000 [cf15a2f2d3]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject:  Add patch for removing strip of '[]' from header params
+
+         From the patch submitted to Teluu on 4/12/2016
+         <<<<<<<<<
+         The wholesale stripping of '[]' from header parameters causes issues if
+         something (like a port) occurs after the final ']'.
+
+         '[2001:a::b]' will correctly parse to '2001:a::b'
+         '[2001:a::b]:8080' will correctly parse to '2001:a::b' but the scanner is left
+         with ':8080' and parsing stops with a syntax error.
+
+         I can't even find a case where stripping the '[]' is a good thing anyway.  Even
+         if you continued to parse and resulted in a string that looks like this...
+         '2001:a::b:8080', it's not valid.
+
+         This came up in Asterisk because Kamailio sends us a Contact with an alias
+         URI parameter that has an IPv6 address in it like this:
+         Contact: <sip:1171@127.0.0.1:5080;alias=[2001:1:2::3]~43691~6>
+         which should be legal but causes a syntax error because of the characters
+         after the final ']'.  Even if it didn't, the '[]' should still not be stripped.
+
+         I've run the Asterisk Test Suite for PJSIP (252 tests) many of which are IPv6
+         enabled.  No issues were caused by removing the code that strips the '[]'.
+         >>>>>>>>>>>
+
+         ASTERISK-25123 #close
+         Reported-by: Anthony Messina
+
+         Change-Id: I5cb33f4ebf07ee1f2b26d07caae715e2ec65595a
+
+2016-04-12 09:10 +0000 [daa086fae4]  Joshua Colp <jcolp@digium.com>
+
+       * app_voicemail: Fix test_voicemail_notify_endl test.
+
+         The test_voicemail_notify_endl test checks the end-of-line
+         characters of an email message to confirm that they are consistent.
+         The test wrongfully assumed that reading from the email message
+         into a buffer will always result in more than 1 character being
+         read. This is incorrect. If only 1 character was read the test
+         would go outside of the buffer and access other memory causing
+         a crash.
+
+         The test now checks to ensure that 2 or more characters are read
+         in ensuring the test stays within the buffer.
+
+         ASTERISK-25874 #close
+
+         Change-Id: Ic2c89cea6e90f2c0bc2d8138306ebbffd4f8b710
+
+2016-04-07 12:02 +0000 [f896136460]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * app_voicemail/IMAP: function 'save_to_folder' creates wrong folder
+
+         If try to move message to Cust1 (number 5)
+         the function 'save_to_folder' tries to create Greeting folder instead of Cust1.
+
+         This patch fixed it by setting GREETINGS_FOLDER = -1
+
+         ASTERISK-24927 #close
+
+         Change-Id: I03d1a761894bcc2d130ec9b003bbcddc28e25c51
+
+2016-04-07 16:18 +0000 [70b7673f09]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip: Add headers to AMI Event ContactStatusDetail
+
+         * Added Useragent and RegExpire headers to AMI Event
+         ContactStatusDetail with associated documentation.
+
+         ASTERISK-25903 #close
+
+         Change-Id: If3d121e943e588d016ba51d4eb9c6a421a562239
+
+2016-04-11 16:20 +0000 [64ecd41c8f]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * Codecs: strip codec name while parsing allow/disallow options
+
+         Failed registration using PJSIP/Realtime if one of the codec name
+         in allow/disallow option is wrong or contains space.
+
+         This patch strip codec name.
+
+         ASTERISK-25914
+
+         Change-Id: Ifdf02de94e5ddbce305640f6f0666084a3b9283d
+
+2016-04-11 14:26 +0000 [3f6c4667b8]  Jaco Kroon <jaco@uls.co.za>
+
+       * core_unreal: Fix hangupcauses not getting set on Local channels
+
+         ASTERISK-25912 #close
+
+         Change-Id: I8e72e6894feaf36c9450f2788d205d07baec23aa
+
+2016-04-01 13:30 +0000 [fe7e48db03]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip contact:  Lock expiration/addition of contacts
+
+         Contact expiration can occur in several places:  res_pjsip_registrar,
+         res_pjsip_registrar_expire, and automatically when anyone calls
+         ast_sip_location_retrieve_aor_contact.  At the same time, res_pjsip_registrar
+         may also be attempting to renew or add a contact.  Since none of this was locked
+         it was possible for one thread to be renewing a contact and another thread to
+         expire it immediately because it was working off of stale data.  This was the
+         casue of intermittent registration/inbound/nominal/multiple_contacts test
+         failures.
+
+         Now, the new named lock functionality is used to lock the aor during contact
+         expire and add operations and res_pjsip_registrar_expire now checks the
+         expiration with the lock held before deleting the contact.
+
+         ASTERISK-25885 #close
+         Reported-by: Josh Colp
+
+         Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059
+
+2016-04-10 14:16 +0000 [0c414eaf35]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject:  Add patch to fix Via IPv6 parsing
+
+         There's a bug in pjproject's sip_parser where the ":" wasn't correctly
+         interpreted. This is causing IPv6 addresses in the "received" parameter of the
+         Via header to cause a syntax check failure.
+
+         This patch was submitted to Teluu on 4/10/2016.
+
+         ASTERISK-25910 #close
+         Reported-by: Anthony Messina
+
+         Change-Id: Ic7e4c4aa14ded61860401ec349f5177568c4d922
+
+2016-03-31 20:04 +0000 [772ff3048f]  gtjoseph <george.joseph@fairview5.com>
+
+       * lock:  Add named lock capability
+
+         Locking some objects like sorcery objects can be tricky because the underlying
+         ao2 object may not be the same for all callers.  For instance, two threads that
+         call ast_sorcery_retrieve_by_id on the same aor name might actually get 2
+         different ao2 objects if the underlying wizard had to rehydrate the aor from a
+         database. Locking one ao2 object doesn't have any effect on the other even if
+         those objects had locks in the first place.
+
+         Named locks allow access control by keyspace and key strings.  Now an "aor"
+         named "1000" can be locked and any other thread attempting to lock "aor" "1000"
+         will wait regardless of whether the underlying ao2 object is the same or not.
+         Mutex and rwlocks are supported.
+
+         This capability will initially be used to lock an aor when multiple threads may
+         be attempting to prune expired contacts from it.
+
+         Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45
+
+2016-04-05 16:56 +0000 [fd601f26f7]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip_outbound_publish: Add transport for outbound PUBLISH
+
+         The first available transport of the appropriate type is used now.
+         This patch adds new config option 'transport' for outbound-publish.
+         If transport is set then outbound PUBLISH requests will use this transport.
+
+         ASTERISK-25901 #close
+
+         Change-Id: Ib389130489b70e36795b0003fa5fd386e2680151
+
+2016-04-07 16:39 +0000 [5f768d2a9c]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip_dialog_info: Add missing "direction" attribute in NOTIFY event
+
+         BLF pickup isn't working on Cisco SPA and Snom phones
+         if the direction="recipient" attribute is missing in 'dialog' tag.
+
+         This patch adds direction="recipient" if extension state is
+         Ringing.
+
+         ASTERISK-24601 #close
+
+         Change-Id: I5b2c097ca29fd59e92ba237ca5d397cb1b0bcd8c
+
+2016-04-07 10:59 +0000 [82638fb0c7]  Richard Mudgett <rmudgett@digium.com>
+
+       * pbx.c: Minor code rearangements.
+
+         * Pull out a loop invariant.
+
+         * Convert an else-if ladder to a switch statement.
+
+         Change-Id: I0a95cfa9474a4600b9865f7b444534d275b37e95
+
+2016-04-07 11:37 +0000 [bc320df173]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * app_voicemail/IMAP: IMAP access FATAL error: Out of memory
+
+         Sometimes uw-imap function 'mail_fetchbody' returns huge len
+         which then pass to uw-imap function 'rfc822_base64'.
+         uw-imap tries to allocate huge memory and abort() on fail.
+
+         This patch check the len.
+         If the len more than max size (128 Mbytes) log error.
+         This patch also set variables len, newlen to avoid uninizialezed len.
+         This patch also check pointer returned by rfc822_base64.
+
+         ASTERISK-25899 #close
+
+         Change-Id: I4a0e7d655f11abef6a5224e2169df6d5c1f1caca
+
+2016-04-07 12:26 +0000 [2ef8a954b3]  Richard Mudgett <rmudgett@digium.com>
+
+       * pbx: Update doxygen for extension state watchers.
+
+         Change-Id: Id1403b12136de62a272c01bb355aef65fd2c2d1e
+
+2016-04-07 11:49 +0000 [d312fdeb1b]  gtjoseph <george.joseph@fairview5.com>
+
+       * alembic:  Remove batch operations (and sqlite support)
+
+         Because SQLite doesn't support full ALTER capabilities, alembic scripts
+         require batch operations.  However, that capability wasn't available until
+         0.7.0 which some distributions haven't reached yet.  Therefore, the batch
+         operations introduced in commit 86d6e44cc (review 2319) have been reverted
+         and SQLite is unsupported again, for now anyway.
+
+         Tested the full upgrade and downgrade on MySQL/Mariadb and Postgresql.
+
+         ASTERISK-25890 #close
+         Reported-by: Harley Peters
+
+         Change-Id: I82eba5456736320256f6775f5b0b40133f4d1c80
+
+2016-04-07 11:05 +0000 [901e8d78c4]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_registrar_expire: Fix race condition at shutdown.
+
+         When shutting down, the PJSIP sorcery is destroyed. The registrar
+         expiration module queries the PJSIP sorcery to determine what
+         to expire. As there was no synchronization between termination
+         of the expiration thread and the unloading of the module it was
+         possible for the thread to try to access the PJSIP sorcery after
+         it had been destroyed.
+
+         This change ensures that the thread is shut down before allowing
+         the module to be considered unloaded.
+
+         Change-Id: I69fd239edbaaf160c2d37ae00d3ac06e5596fe8b
+
+2016-04-06 16:28 +0000 [8207372e66]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip: Fix configuration setting of "regcontext".
+
+         Due to a merge problem two options were swapped causing the
+         regcontext setting to not get set.
+
+         Change-Id: Icb33edc668e7357bacbaec2861a6b5ac64edaff1
+
+2016-04-06 08:01 +0000 [0735a4d6d7]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+
+       * frame.c: Copy the whole subclass in ast_frdup().
+
+         The problem is ast_frdup() does not copy whole frame.subclass for voice,
+         video and image frames, only the format is copied.  For video frames, the
+         subclass structure contains the .frame_ending flag used to put the RTP
+         marker where it needs to be.
+
+         ASTERISK-25894 #close
+
+         Change-Id: I812ca90e84ed5d4f473b997d0dd0d3c5a915fe33
+
+2016-04-05 14:23 +0000 [c61dca6419]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Handle deferred SDP hold/unhold properly.
+
+         Some SIP devices indicate hold/unhold using deferred SDP reinvites. In
+         other words, they provide no SDP in the reinvite.
+
+         A typical transaction that starts hold might look something like this:
+
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating sendrecv on streams.
+         * Device sends ACK with SDP indicating sendonly on streams.
+
+         At this point, PJMedia's SDP negotiator saves Asterisk's local state as
+         being recvonly.
+
+         Now, when the device attempts to unhold, it again uses a deferred SDP
+         reinvite, so we end up doing the following:
+
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating recvonly on streams
+         * Device sends ACK with SDP indicating sendonly on streams
+
+         The problem here is that Asterisk offered recvonly, and by RFC 3264's
+         rules, if an offer is recvonly, the answer has to be sendonly. The
+         result is that the device is not taken off hold.
+
+         What is supposed to happen is that Asterisk should indicate sendrecv in
+         the 200 OK that it sends. This way, the device has the freedom to
+         indicate sendrecv if it wants the stream taken off hold, or it can
+         continue to respond with sendonly if the purpose of the reinvite was
+         something else (like a session timer refresher).
+
+         The fix here is to alter the SDP negotiator's state when we receive a
+         reinvite with no SDP. If the negotiator's state is currently in the
+         recvonly or inactive state, then we alter our local state to be
+         sendrecv. This way, we allow the device to indicate the stream state as
+         desired.
+
+         ASTERISK-25854 #close
+         Reported by Robert McGilvray
+
+         Change-Id: I7615737276165eef3a593038413d936247dcc6ed
+
+2016-03-27 23:33 +0000 [50b0922a22]  gtjoseph <george.joseph@fairview5.com>
+
+       * config:  Allow filters when appending to a category
+
+         In sorcery based config files where there are multiple categories with the same
+         name, you can't use the (+) operator to reliably append to a category because
+         config.c stops looking when it finds the first one with the same name.
+
+         Example:
+
+         [1000]
+         type = endpoint
+
+         [1000]
+         type = aor
+
+         [1000](+)
+         authenticate_qualify = yes
+
+         This config will fail because config.c appends authenticate_qualify to the
+         first category it finds, the endpoint, and that's not valid for endpoint.
+
+         Solution:
+
+         The capability to find a category that contains a certain variable already
+         exists so the only real change was to parse anything after the '+' that's not a
+         comma, as a filter string.
+
+         [1000]
+         type = endpoint
+
+         [1000]
+         type = aor
+
+         [1000](+type=aor)
+         authenticate_qualify = yes
+
+         This now works as expected.
+
+         Although the following example doesn't make any sense for pjsip, you can even
+         specify multiple filters:
+
+         [1000](+type=aor&qualify_frequency=10)
+
+         ASTERISK-25868 #close
+         Reported-by: Nick Repin
+
+         Change-Id: I10773da4c79db36fbf1993961992af63d3441580
+
+2016-04-05 10:21 +0000 [cb56ef8069]  Joshua Colp <jcolp@digium.com>
+
+       * res_http_websocket: Make core supported.
+
+         Websockets are a core part of ARI support and as such this
+         module should also be core supported.
+
+         Change-Id: I8f9283c6a167152761b92984779bb39e3db51a9c
+
+2016-03-25 23:22 +0000 [f6f4cf459f]  gtjoseph <george.joseph@fairview5.com>
+
+       * stringfields:  Refactor to allow fields to be added to the end of structures
+
+         String fields are great, except that you can't add new ones without breaking
+         ABI compatibility because it shifts down everything else in the structure.
+         The only alternative is to add your own char * field to the end of the
+         structure and manage the memory yourself which isn't ideal, especially since
+         you then can't use the OPT_STRINGFIELD_T type.
+
+         Background:
+
+         The reason string fields had to be declared inside the
+         AST_DECLARE_STRING_FIELDS block was to facilitate iteration over all declared
+         fields for initialization, compare and copy.  Since AST_DECLARE_STRING_FIELDS
+         declared the pool, then the fields, then the manager, you could use the offsets
+         of the pool and manager and iterate over the sequential addresses in between to
+         access the fields. The actual pool, field allocation and field set operations
+         don't actually care where the field is.  It's just iteration over the fields
+         that was the problem.
+
+         Solution: Extended String Fields
+
+         An extended string field is one that is declared outside the
+         AST_DECLARE_STRING_FIELDS block but still (anywhere) inside the parent
+         structure.  Other than using AST_STRING_FIELD_EXTENDED instead of
+         AST_STRING_FIELD, it looks the same as other string fields.  It's storage comes
+         from the pool and it participates in string field compare and copy operations
+         peformed on the parent structure. It's also a valid target for the
+         OPT_STRINGFIELD_T aco option type.
+
+         Implementation:
+
+         To keep track of the extended fields and make sure that ABI isn't broken, the
+         existing embedded_pool pointer in the manager structure was repurposed to be a
+         pointer to a separate header structure that contains the embedded_pool pointer
+         plus a vector of fields.  The length of the manager structure didn't change and
+         the embedded_pool pointer isn't used in the macros, only the stringfields C
+         code.  A side benefit of this is that changing the header structure in the
+         future won't break ABI.
+
+         ast_string_fields_init initializes the normal string fields and appends them to
+         the vector, and subsequent calls to ast_string_field_init_extended initialize
+         and append the extended fields. Cleanup, ast_string_fields_cmp, and
+         ast_string_fields_copy can now work on the vector instead of sequentially
+         traversing the addresses between the pool and manager.
+
+         The total size of a structure using string fields didn't change, whether using
+         extended fields or not, nor have the offsets of any structure members, either
+         inside the original block or outside.  Adding an extended field to the end of a
+         structure is the same as adding a char *.
+
+         Details:
+
+         The stringfield C code was pulled out from utils.c and into stringfields.c.
+         It just made sense.
+
+         Additional work was done in ast_string_field_init and
+         ast_calloc_with_stringfields to handle the allocation of the new header
+         structure and the vector, and the associated cleanup.  In the process some
+         additional NULL pointer checking was added.
+
+         A lot of work was done in stringfields.h since the logic for compare and copy
+         is there.  Documentation was added as well as somne additional NULL checking.
+
+         The ability to call ast_calloc_with_stringfields with a number of structures
+         greater than 1 never really worked.  Well, the calloc worked but there was no
+         way to access the additional structures or clean them up.  It was agreed that
+         there was no use case for requesting more than 1 structure so an ast_assert
+         was added to prevent it and the iteration code removed.
+
+         Testing:
+
+         The stringfield unit tests were updated to test both normal and extended
+         fields.  Tests for ast_string_field_ptr_set_by_fields and
+         ast_calloc_with_stringfields were also added.
+
+         As an ABI test, 13 was compiled from git and the res_pjsip_* modules, except
+         res_pjsip itself, saved off.  The patch was then added and a full compile and
+         install was performed.  Then the older res_pjsip_* moduled were copied over the
+         installed versions so res_pjsip was new and the rest were old.  No issues.
+
+         contact->aor, which is a char * at the end of contact, was then changed to an
+         extended string field and a recompile and reinstall was performed, again
+         leaving stock versions of the the res_pjsip_* modules.  Again, no issues with
+         the res_pjsip_* modules using the old stringfield implementation and with
+         contact->aor as a char *, and res_pjsip itself using the new stringfield
+         implementation and contact->aor being an extended string field.
+
+         Finally, several existing string fields were converted to extended string
+         fields to test OPT_STRINGFIELD_T.  Again, no issues.
+
+         Change-Id: I235db338c5b178f5a13b7946afbaa5d4a0f91d61
+
+2016-04-04 18:02 +0000 [fe448ac8a7]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_mwi:  Fix segv caused by 16c7d8e74a9af13f98c3c22aa9c43ce39965f6b7
+
+         I forgot the new voicemail_extension wasn't a stringfield and didn't check
+         for NULL where I should have.
+
+         Change-Id: I029482d5c2ab72474838750461bd46b0809c90fb
+
+2016-04-03 11:47 +0000 [9d4318f798]  gtjoseph <george.joseph@fairview5.com>
+
+       * install_prereq:  Fix check_installed_debs remove subversion
+
+         check_installed_debs wasn't handling virtual packages like libsrtp-dev and
+         libresample-dev and on multiarch systems it was accidentally filtering out all
+         packages if any :i386 packages were found instead of just filtering out the
+         :i386 packages themselves.
+
+         Change-Id: Ifd68da0d1ee30cc84df14de3f9b9079d7c3cecda
+
+2016-04-01 13:09 +0000 [566601837e]  gtjoseph <george.joseph@fairview5.com>
+
+       * utils.c:  Fix typo in handle_show_locks
+
+         ast_cli_allow_on_shutdown(e) should have been ast_cli_allow_at_shutdown(e).
+
+         Change-Id: I4f092495c0b2bfd85c2651e0b5877bf4d05d9faf
+
+2016-03-30 18:34 +0000 [964f54bd5d]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject_bundled:  Fix use of LDCONFIG for shared library link creation
+
+         LDCONFIG apparently isn't set to something sane on all systems so the creation
+         of the shared library links fails.  Instead of just testing for non-blank,
+         main/Makefile now checks that LDCONFIG is actually executable and reverts to
+         LN if it isn't.
+
+         This applies to both libasteriskpj and libasteriskssl.
+
+         Thanks to 'abelbeck' for pointing out that the issue was LDCONFIG.
+
+         ASTERISK-25873 #close
+         Reported-by: Hans van Eijsden
+
+         Change-Id: I25b76379bc637726ec044b2c0e709b56b3701729
+
+2016-03-30 13:31 +0000 [5f73c2ef0a]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis.c: Protect channel datastore list from stasis end.
+
+         Change-Id: Ifadc469590bd4d5368e19d3763db3bd1f80fdb95
+
+2016-03-29 18:06 +0000 [74d63f56ee]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_ari: Cannot get control also means channel is unavailable.
+
+         The only caller of ari_bridges_play_found() has this note:
+
+         If ari_bridges_play_found fails because the channel is unavailable for
+         playback, The channel will be removed from the playback list soon.  We can
+         keep trying to get channels from the list until we either get one that
+         will work or else there isn't a channel for this bridge anymore, in which
+         case we'll revert to ari_bridges_play_new.
+
+         Change-Id: Ib068141b367ccaa17be0dab4181c98e26c5127d6
+
+2016-03-29 14:29 +0000 [cf49b44090]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis_recording.c: Cleanup stasis_app_recording_find_by_name().
+
+         Change-Id: Ic7d93c402c498677a122505558859c853d4e5ac7
+
+2016-03-28 14:23 +0000 [7f53f1d89e]  Richard Mudgett <rmudgett@digium.com>
+
+       * core_unreal.c: Add clarification comment about channel ref.
+
+         Change-Id: I0be0627260cd8d6b6c3cc345949dcfdf32eff1f3
+
+2016-03-29 13:47 +0000 [ecf4102d02]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis: Add control ref to playback and recording structs.
+
+         The stasis_app_playback and stasis_app_recording structs need to have a
+         struct stasis_app_control ref.  Other threads can get a reference to the
+         playback and recording structs from their respective global container.
+         These other threads can then use the control pointer they contain after
+         the control struct has gone.
+
+         * Add control ref to stasis_app_playback and stasis_app_recording structs.
+
+         With the refs added, the control command queue can now have a circular
+         control reference which will cause the control struct to never get
+         released if the control's command queue is not flushed when the channel
+         leaves the Stasis application.  Also the command queue needs better
+         protection from adding commands if the control->is_done flag is set.
+
+         * Flush the control command queue on exit.
+
+         ASTERISK-25882 #close
+
+         Change-Id: I3cf1fb59cbe6f50f20d9e35a2c07ac07d7f4320d
+
+2016-03-28 18:10 +0000 [a179aba65e]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis: Fix crash on a hanging up channel.
+
+         * Give the struct stasis_app_control ao2 object a ref to the channel held
+         in the object.  Now the channel will still be around if a thread needs to
+         post a stasis message instead of crash because the topic was destroyed.
+
+         * Moved stopping any lingering silence generator out of the struct
+         stasis_app_control destructor and made it a part of exiting the Stasis
+         application.  Who knows which thread the destructor will be called under
+         so it cannot affect the channel's silence generator.  Not only was the
+         channel unprotected when the silence generator was stopped, stasis may no
+         longer even control the channel.
+
+         ASTERISK-25882
+
+         Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
+
+2016-03-30 12:38 +0000 [16c7d8e74a]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_mwi:  Allow subscribe to vm access extension as an alias
+
+         Background:
+
+         If your extension is 1000 and the voicemail access extension is 1571 and you
+         dial 1571, usually a dialplan rule calls voicemailmain with your extension and
+         you are placed directly in your mailbox.  Therefore most admins program the
+         voicemail (or other speed dial) button on their phones to the access extension.
+         Some phones (Snom at least) use whatever is programmed there to also subscribe
+         for MWI and so can't dial one number and subscribe to another.  This works fine
+         in chan_sip because chan_sip completely ignores the user portion of the
+         SUBSCRIBE message request URI.  If it can match the peer, is subscribes to the
+         peer's mailbox.  The user could be set to anything or nothing and you'd still
+         get subscribed to your mailbox.
+
+         Issue:
+
+         chan_pjsip actually uses the user portion of the URI to find an aor and its
+         mailboxes.  Therefore a subscribe to 1571 results in a 404.  Sure, you can
+         create an aor for 1571 but you certainly can't add your entire voicemail
+         system's mailboxes to it and everyone would get notified of every MWI.
+
+         Solution:
+
+         When an MWI subscribe comes in and an aor can't be found that matches the
+         resource directly, check the resource against the endpoint's aors.  If an aor
+         is found that has a voicemail_extension that matches the resource, use it.
+
+         ASTERISK-25865
+         Reported-by: Ross Beer
+
+         Change-Id: I770ea185f751f1ada888fafb4b452115f1c06e9e
+
+2016-03-24 22:55 +0000 [d8f0bc3572]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_mwi:  Add voicemail extension and mwi_subscribe_replaces_unsolicited
+
+         res_pjsip_mwi was missing the chan_sip "vmexten" functionality which adds
+         the Message-Account header to the MWI NOTIFY.  Also, specifying mailboxes
+         on endpoints for unsolicited mwi and on aors for subscriptions required
+         that the admin know in advance which the client wanted.  If you specified
+         mailboxes on the endpoint, subscriptions were rejected even if you also
+         specified mailboxes on the aor.
+
+         Voicemail extension:
+         * Added a global default_voicemail_extension which defaults to "".
+         * Added voicemail_extension to both endpoint and aor.
+         * Added ast_sip_subscription_get_dialog for support.
+         * Added ast_sip_subscription_get_sip_uri for support.
+
+         When an unsolicited NOTIFY is constructed, the From header is parsed, the
+         voicemail extension from the endpoint is substituted for the user, and the
+         result placed in the Message-Account field in the body.
+
+         When a subscribed NOTIFY is constructed, the subscription dialog local uri
+         is parsed, the voicemail_extension from the aor (looked up from the
+         subscription resource name) is substituted for the user, and the result
+         placed in the Message-Account field in the body.
+
+         If no voicemail extension was defined, the Message-Account field is not added
+         to the NOTIFY body.
+
+         mwi_subscribe_replaces_unsolicited:
+         * Added mwi_subscribe_replaces_unsolicited to endpoint.
+
+         The previous behavior was to reject a subscribe if a previous internal
+         subscription for unsolicited MWI was found for the mailbox.  That remains the
+         default.  However, if there are mailboxes also set on the aor and the client
+         subscribes and mwi_subscribe_replaces_unsolicited is set, the existing internal
+         subscription is removed and replaced with the external subscription.  This
+         allows an admin to configure mailboxes on both the endpoint and aor and allows
+         the client to select which to use.
+
+         ASTERISK-25865 #close
+         Reported-by: Ross Beer
+
+         Change-Id: Ic15a9415091760539c7134a5ba3dc4a6a1217cea
+
+2016-03-30 09:46 +0000 [8dc8d6ceb8]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_rtp_asterisk:  Fix placement of txcount increment
+
+         Commit 1bce690ccb36a4744a327c07af23a9a3a0fa20cd was incrementing txcount
+         for rtcp packets as well as rtp packets and that was causing sender reports
+         to be generated instead of receiver reports in cases where no rtp was actually
+         being sent.
+
+         Moved the txcount increment from __rtp_sento, which handles both rtp and rtcp,
+         to rtp_sento which only handles rtp packets.
+
+         Discovered by the hep/rtcp-receiver test.
+
+         Change-Id: Ie442e4bb947a68847a676497021ba10ffaf376d5
+
+2016-03-26 22:33 +0000 [c7eb18d865]  gtjoseph <george.joseph@fairview5.com>
+
+       * chan_pjsip:  Add 'pjsip show channelstats'
+
+         Added the ability to show channel statistics to chan_pjsip (cli_functions.c)
+
+         Moved the existing 'pjsip show channel(s)' functionality from
+         pjsip_configuration to cli_functions.c.  The stats needed chan_pjsip's
+         private header so it made sense to move the existing channel commands as well.
+
+         Now using stasis_cache_dump to get the channel snapshots rather than retrieving
+         all endpoints, then getting each one's channel snapshots.  Much more efficient.
+
+         Change-Id: I03b114522126d27434030b285bf6d531ddd79869
+
+2016-03-10 19:52 +0000 [1583559a06]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/pjsip_options:  Fix From generation on outgoing OPTIONS
+
+         No one seemed to notice but every time an OPTIONS goes out, it goes
+         out with a From of "asterisk" (or whatever the default from_user is set to),
+         even if you specify an endpoint.
+
+         The issue had several causes...
+         qualify_contact is only called with an endpoint if called from the CLI.
+         If the endpoint is NULL, qualify_contact only looks up the endpoint if
+         authenticate_qualify=yes. Even then, it never passes it on to
+         ast_sip_create_request where the From header is set.  Therefore From
+         is always "asterisk" (or whatever the default from_user is set to).
+         Even if ast_sip_create_request were to get an endpoint, it only sets
+         the From if endpoint->from_user is set.
+
+         The fix is 4 parts...
+
+         First, create_out_of_dialog_request was modified to use the endpoint id
+         if endpoint was specified and from_user is not set.
+
+         Second, qualify_contact was modified to always look up an endpoint if
+         one wasn't specified regardless of authenticate_qualify.  It then passes
+         the endpoint on to create_out_of_dialog_request.
+
+         Third (and most importantly), find_an_endpoint was modified to find
+         an endpoint by using an "aors LIKE %contact->aor%" predicate with
+         ast_sorcery_retrieve_by_fields.  As such, this patch will only work
+         if the sorcery realtime optimizations patch goes in.  Otherwise we'd
+         be pulling the entire endpoints database every time we send an OPTIONS.
+         Since we already know the contact's aor, the on_endpoint callback was also
+         modified to just check if the contact->aor is an exact match to one of
+         the endpoint's.
+
+         Finally, since we now have an endpoint for every OPTIONS request,
+         res_pjsip/endpt_send_request (which handles out-of-dialog reqests) was
+         updated to get the transport from the endpoint and set it on tdata.
+         Now the correct transport is used.
+
+         Change-Id: I2207e12bb435e373bd1e03ad091d82e5aba011af
+2016-03-25 10:59 +0000 [0cfab30b28]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+
+       * res_rtp_asterisk: Use separate SRTP session for RTCP with DTLS
+
+         Asterisk uses separate UDP ports for RTP and RTCP traffic and RFC 5764
+         explicitly states:
+
+           There MUST be a separate DTLS-SRTP session for each distinct pair of
+           source and destination ports used by a media session
+
+         This means RTP keying material cannot be used for DTLS RTCP, which was
+         the reason why RTCP encryption would fail.
+
+         ASTERISK-25642
+
+         Change-Id: I7e8779d8b63e371088081bb113131361b2847e3a
+
+2016-03-25 10:42 +0000 [6a9c18fb59]  Jacek Konieczny <jkonieczny@eggsoft.pl>
+
+       * app_echo: forward and generate VIDUPDATE frames
+
+         When using app_echo via WebRTC with VP8 video the video would appear
+         only after a few minutes, because there would be nothing to request
+         a full reference frame.
+
+         This fixes the problem in both ways:
+         - echos any VIDUPDATE frames received on the channel
+         - sends one such frame when first video frame is to be forwarded
+
+         This makes the echo work with Firefox and Chrome WebRTC implementation.
+
+         ASTERISK-25867 #close
+
+         Change-Id: I73bda87bf7532ee8bfb28d917045a21034908c1e
+
+2016-03-27 12:53 +0000 [1bce690ccb]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_rtp_asterisk:  Fix packet stats on bridged connection
+
+         rxcount, txcount, rxoctetcount and txoctetcount weren't being calculated
+         for bridged streams because the calulations were being done after the
+         bridged short-circuit.  Actually, rxoctetcount wasn't ever being calculated.
+
+         Moved the calculations so they occur for all valid received packets and
+         all transmitted packets.  Also added rxoctetcount and txoctetcount to
+         ast_rtp_instance_stat.
+
+         Change-Id: I08fb06011a82d38c3b4068867a615068fbe59cbb
+
+2016-03-25 23:19 +0000 [50f90d4099]  Philip Correia
+
+       * res_parking: Fix blind transfer dynamic lots creation.
+
+         Blind transfers to a recognized parking extension need to use the parker's
+         channel variable values to create the dynamic parking lot.  This is
+         because there is always only one parker while the parkee may actually be a
+         multi-party bridge.  A multi-party bridge can never supply the needed
+         channel variables to create the dynamic parking lot.  In the multi-party
+         bridge blind transfer scenario, the parker's CHANNEL(parkinglot) value and
+         channel variables are inherited by the local channel used to park the
+         bridge.
+
+         * In park_common_setup(), make use the parker instead of the parkee to
+         supply the dynamic parking lot channel variable values.  In all but one
+         case, the parkee is the same as the parker.  However, in the recognized
+         parking extension blind transfer scenario for a two party bridge they are
+         different channels.  For consistency, we need to use the parker channel.
+
+         * In park_local_transfer(), pass the CHANNEL(parkinglot) value to the
+         local channel when blind transferring a multi-party bridge to a recognized
+         parking extension.
+
+         * When a local channel starts a call, the Local;2 side needs to inherit
+         the CHANNEL(parkinglot) value from Local;1.
+
+         The DTMF one-touch parking case wasn't even trying to create dynamic
+         parking lots before it aborted the attempt.
+
+         * In parking_park_call(), add missing code to create a dynamic parking
+         lot.
+
+         A DTMF bridge hook is documented as returning -1 to remove the hook.
+         Though the hook caller is really coded to accept non-zero.  See the
+         ast_bridge_hook_callback typedef.
+
+         * In feature_park_call(), don't remove the DTMF one-touch parking hook
+         because of an error.
+
+         ASTERISK-24605 #close
+         Reported by:  Philip Correia
+         Patches:
+               call_park.patch (license #6672) patch uploaded by Philip Correia
+
+         Change-Id: I221d3a8fcc181877a1158d17004474d35d8016c9
+
+2016-03-08 15:55 +0000 [5aa5c49413]  gtjoseph <george.joseph@fairview5.com>
+
+       * sorcery/res_pjsip:  Refactor for realtime performance
+
+         There were a number of places in the res_pjsip stack that were getting
+         all endpoints or all aors, and then filtering them locally.
+
+         A good example is pjsip_options which, on startup, retrieves all
+         endpoints, then the aors for those endpoints, then tests the aors to see
+         if the qualify_frequency is > 0.  One issue was that it never did
+         anything with the endpoints other than retrieve the aors so we probably
+         could have skipped a step and just retrieved all aors. But nevermind.
+
+         This worked reasonably well with local config files but with a realtime
+         backend and thousands of objects, this was a nightmare.  The issue
+         really boiled down to the fact that while realtime supports predicates
+         that are passed to the database engine, the non-realtime sorcery
+         backends didn't.
+
+         They do now.
+
+         The realtime engines have a scheme for doing simple comparisons. They
+         take in an ast_variable (or list) for matching, and the name of each
+         variable can contain an operator.  For instance, a name of
+         "qualify_frequency >" and a value of "0" would create a SQL predicate
+         that looks like "where qualify_frequency > '0'".  If there's no operator
+         after the name, the engines add an '=' so a simple name of
+         "qualify_frequency" and a value of "10" would return exact matches.
+
+         The non-realtime backends decide whether to include an object in a
+         result set by calling ast_sorcery_changeset_create on every object in
+         the internal container.  However, ast_sorcery_changeset_create only does
+         exact string matches though so a name of "qualify_frequency >" and a
+         value of "0" returns nothing because the literal "qualify_frequency >"
+         doesn't match any name in the objset set.
+
+         So, the real task was to create a generic string matcher that can take a
+         left value, operator and a right value and perform the match. To that
+         end, strings.c has a new ast_strings_match(left, operator, right)
+         function.  Left and right are the strings to operate on and the operator
+         can be a string containing any of the following: = (or NULL or ""), !=,
+         >, >=, <, <=, like or regex.  If the operator is like or regex, the
+         right string should be a %-pattern or a regex expression.  If both left
+         and right can be converted to float, then a numeric comparison is
+         performed, otherwise a string comparison is performed.
+
+         To use this new function on ast_variables, 2 new functions were added to
+         config.c.  One that compares 2 ast_variables, and one that compares 2
+         ast_variable lists.  The former is useful when you want to compare 2
+         ast_variables that happen to be in a list but don't want to traverse the
+         list.  The latter will traverse the right list and return true if all
+         the variables in it match the left list.
+
+         Now, the backends' fields_cmp functions call ast_variable_lists_match
+         instead of ast_sorcery_changeset_create and they can now process the
+         same syntax as the realtime engines.  The realtime backend just passes
+         the variable list unaltered to the engine.  The only gotcha is that
+         there's no common realtime engine support for regex so that's been noted
+         in the api docs for ast_sorcery_retrieve_by_fields.
+
+         Only one more change to sorcery was done...  A new config flag
+         "allow_unqualified_fetch" was added to reg_sorcery_realtime.
+         "no": ignore fetches if no predicate fields were supplied.
+         "error": same as no but emit an error. (good for testing)
+         "yes": allow (the default);
+         "warn": allow but emit a warning. (good for testing)
+
+         Now on to res_pjsip...
+
+         pjsip_options was modified to retrieve aors with qualify_frequency > 0
+         rather than all endpoints then all aors.  Not only was this a big
+         improvement in realtime retrieval but even for config files there's an
+         improvement because we're not going through endpoints anymore.
+
+         res_pjsip_mwi was modified to retieve only endpoints with something in
+         the mailboxes field instead of all endpoints then testing mailboxes.
+
+         res_pjsip_registrar_expire was completely refactored.  It was retrieving
+         all contacts then setting up scheduler entries to check for expiration.
+         Now, it's a single thread (like keepalive) that periodically retrieves
+         only contacts whose expiration time is < now and deletes them.  A new
+         contact_expiration_check_interval was added to global with a default of
+         30 seconds.
+
+         Ross Beer reports that with this patch, his Asterisk startup time dropped
+         from around an hour to under 30 seconds.
+
+         There are still objects that can't be filtered at the database like
+         identifies, transports, and registrations.  These are not going to be
+         anywhere near as numerous as endpoints, aors, auths, contacts however.
+
+         Back to allow_unqualified_fetch.  If this is set to yes and you have a
+         very large number of objects in the database, the pjsip CLI commands
+         will attempt to retrive ALL of them if not qualified with a LIKE.
+         Worse, if you type "pjsip show endpoint <tab>" guess what's going to
+         happen? :)  Having a cache helps but all the objects will have to be
+         retrieved at least once to fill the cache.  Setting
+         allow_unqualified_fetch=no prevents the mass retrieve and should be used
+         on endpoints, auths, aors, and contacts.  It should NOT be used for
+         identifies, registrations and transports since these MUST be
+         retrieved in bulk.
+
+         Example sorcery.conf:
+
+         [res_pjsip]
+         endpoint=config,pjsip.conf,criteria=type=endpoint
+         endpoint=realtime,ps_endpoints,allow_unqualified_fetch=error
+
+         ASTERISK-25826 #close
+         Reported-by: Ross Beer
+         Tested-by: Ross Beer
+
+         Change-Id: Id2691e447db90892890036e663aaf907b2dc1c67
+
+2016-03-23 14:24 +0000 [05fc3a96d1]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_parking: Cleanup find_channel_parking_lot_name() usage.
+
+         Change-Id: I8f7a8890aef27824301c642d4d15407ac83e6f02
+
+2016-03-18 14:01 +0000 [a4189763ab]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_parking: Misc fixes.
+
+         res/parking/parking_applications.c:
+
+         * Add malloc fail checks in setup_park_common_datastore().
+
+         * Fix playing parking failed announcement to only happen on non-blind
+         transfers in park_app_exec().  It could never go out before because a test
+         was provedly always false.
+
+         res/parking/parking_bridge.c:
+
+         * Fix NULL tolerance in generate_parked_user() because
+         bridge_parking_push() can theoretically pass a NULL parker channel if the
+         parker channel went away for some reason.
+
+         * Clarify some weird code dealing with blind_transfer in
+         bridge_parking_push().
+
+         res/parking/parking_bridge_features.c:
+
+         * Made park_local_transfer() set BLINDTRANSFER on the Local;1 channel
+         which will be bulk copied to the Local;2 channel on the subsequent
+         ast_call().  The additional advantage is if the parker channel has the
+         BLINDTRANSFER and ATTENDEDTRANSFER variables set they are now guaranteed
+         to be overridden.
+
+         res/parking/parking_manager.c:
+
+         * Fix AMI Park action input range checking of the Timeout header in
+         manager_park().
+
+         * Reduced locking scope to where needed in manager_park().
+
+         res/res_parking.c:
+
+         * Fix some off nominal missing unlocks by eliminating the returns.
+
+         Change-Id: Ib64945bc285acb05a306dc12e6f16854898915ca
+
+2014-12-15 05:23 +0000 [6f95b5eda1]  Philip Correia
+
+       * res_parking: Update parking documentation for dynamic parking lots.
+
+         * Remove duplicate res_parking.conf courtesytone config option
+         documentation.
+
+         ASTERISK-24596 #close
+         Reported by:  Philip Correia
+
+         ASTERISK-24605
+         Reported by:  Philip Correia
+         Patches:
+               call_park_app_doc.patch (license #6672) patch uploaded by Philip Correia
+
+         Change-Id: I90a92a891c6494dc08173e675856afcc4764c5b5
+
+2016-03-24 14:08 +0000 [81ce60f6d4]  Alexander Traud <pabstraud@compuserve.com>
+
+       * chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers.
+
+         Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those
+         codecs, which the caller did not request/support. That fix was not complete
+         because on the second Session Timer all codecs were sent again. Some VoIP/SIP
+         clients interpreted that complete codec-list as a change in the SIP session.
+         Because of that, Asterisk did not send the RTP audio via NAT anymore which
+         created a non-audio scenario after the second Session Timer fired.
+
+         ASTERISK-24543 #close
+
+         Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66
+
+2016-03-19 07:34 +0000 [c6e4c48e67]  Gianluca Merlo <gianluca.merlo@gmail.com>
+
+       * config: fix flags in uint option handler
+
+         The configuration unsigned integer option handler sets flags for the
+         parser as if the option should be a signed integer (PARSE_INT32),
+         leading to errors on "out of range" values. Fix flags (PARSE_UINT32).
+
+         A fix to res_pjsip is also present which stops invalid flags from
+         being passed when registering sorcery object fields for qualify
+         status.
+
+         ASTERISK-25612 #close
+
+         Change-Id: I96b539336275e0e72a8e8033487d2c3344debd3e
+
+2016-03-10 16:58 +0000 [59c8e189fd]  Mark Michelson <mmichelson@digium.com>
+
+       * Restrict CLI/AMI commands on shutdown.
+
+         During stress testing, we have frequently seen crashes occur because a
+         CLI or AMI command attempts to access information that is in the process
+         of being destroyed.
+
+         When addressing how to fix this issue, we initially considered fixing
+         individual crashes we observed. However, the changes required to fix
+         those problems would introduce considerable overhead to the nominal
+         case. This is not reasonable in order to prevent a crash from occurring
+         while Asterisk is already shutting down.
+
+         Instead, this change makes it so AMI and CLI commands cannot be executed
+         if Asterisk is being shut down. For AMI, this is absolute. For CLI,
+         though, certain commands can be registered so that they may be run
+         during Asterisk shutdown.
+
+         ASTERISK-25825 #close
+
+         Change-Id: I8887e215ac352fadf7f4c1e082da9089b1421990
+2016-03-24 07:45 +0000 [ff3eebf454]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * musiconhold: Only warn if music class is not found in memory and database.
+
+         The log message when a MusicOnHold music class was not found was changed
+         from debug level to WARNING level in Asterisk 11.19 and 13.5.  For those
+         using realtime musiconhold, this message is wrong because it warns
+         before checking the database.
+
+         This changeset delays the warning until after the database has been
+         checked.
+
+         Reported-by: Conrad de Wet
+         ASTERISK-25444 #close
+
+         Change-Id: I6cfb2db2f9cfbd2bb3d30566ecae361c4abf6dbf
+
+2016-03-24 05:38 +0000 [82e55e4883]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * core/logging: Fix broken syslog levels on older glibc.
+
+         The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However
+         this macro is broken in older glibc (< 2.17); it would left-shift the
+         facility a second time, causing the resultant priority to become
+         invalid.
+
+         The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this:
+
+             The priority argument is formed by ORing the facility and the level
+             values [...].
+
+         ASTERISK-25510 #close
+         Reported by: Michael Newton
+
+         Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03
+
+2016-03-23 08:59 +0000 [d963a33749]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject-bundled:  Cleanups for reported issues
+
+         PortAudio should no longer be required
+         PJSIP_MAX_PKT_LEN is now 6000
+         Older autoconf issue fixed. (CentOS 6)
+
+         Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd
+
+2015-11-20 08:02 +0000 [c5170677e7]  Francesco Castellano <francesco.castellano@messagenet.it>
+
+       * chan_sip.c: Space after port causes unnecessary resolution attempt
+
+         check_via() already skips leading blanks where the sent-by address (with the
+         optional port) should be placed.
+
+         Since RFC 3261 allows for blanks between the port ant the Via parameters:
+         > https://tools.ietf.org/html/rfc3261#section-20.42
+         (actually it allows a lot of blanks more ;-)). I just switched from
+         ast_skip_blanks() to ast_strip() on the local copy of the string.
+
+         ASTERISK-21301 #close
+
+         Change-Id: Ie5b8fe5a07067b7c0dc9bcdd1707e99b23b02b06
+
+2016-03-19 17:49 +0000 [51deadee38]  gtjoseph <george.joseph@fairview5.com>
+
+       * progdocs:  Exclude ./third-party from documentation generation
+
+         We don't need pjproject's documentation embedded in Asterisk's.
+
+         Change-Id: Iea6f5a621c0f4e3168dda3321eaab258d9f24a17
+
+2016-03-18 20:32 +0000 [aa2fcd244e]  Gianluca Merlo <gianluca.merlo@gmail.com>
+
+       * func_aes: fix misuse of strlen on binary data
+
+         The encryption code for AES_ENCRYPT evaluates the length of the data to
+         be encoded in base64 using strlen. The data is binary, thus the length
+         of it can be underestimated at the first NULL character.
+         Reuse the write pointer offset to evaluate it, instead.
+
+         ASTERISK-25857 #close
+
+         Change-Id: If686b5d570473eb926693c73461177b35b13b186
+
+2016-12-08 17:42 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.8-cert4 Released.
+
+2016-12-08 11:40 +0000 [2e0239c28c]  Kevin Harwell <kharwell@digium.com>
+
+       * Update for certified/13.8-cert4
+
+2016-11-30 09:31 +0000 [4fece22836]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * chan_sip: Do not allow non-SP/HTAB between header key and colon.
+
+         RFC says SIP headers look like:
+
+             HCOLON  =  *( SP / HTAB ) ":" SWS
+             SWS     =  [LWS]                    ; sep whitespace
+             LWS     =  [*WSP CRLF] 1*WSP        ; linear whitespace
+             WSP     =  SP / HTAB                ; from rfc2234
+
+         chan_sip implemented this:
+
+             HCOLON  =  *( LOWCTL / SP ) ":" SWS
+             LOWCTL  = %x00-1F                   ; CTL without DEL
+
+         This discrepancy meant that SIP proxies in front of Asterisk with
+         chan_sip could pass on unknown headers with \x00-\x1F in them, which
+         would be treated by Asterisk as a different (known) header.  For
+         example, the "To\x01:" header would gladly be forwarded by some proxies
+         as irrelevant, but chan_sip would treat it as the relevant "To:" header.
+
+         Those relying on a SIP proxy to scrub certain headers could mistakenly
+         get unexpected and unvalidated data fed to Asterisk.
+
+         This change fixes so chan_sip only considers SP/HTAB as valid tokens
+         before the colon, making it agree on the headers with other speakers of
+         SIP.
+
+         ASTERISK-26433 #close
+         AST-2016-009
+
+         Change-Id: I78086fbc524ac733b8f7f78cb423c91075fd489b
+
+2016-08-06 10:57 +0000 [016d20ce12]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * pjsip: Fix deadlock with suspend taskprocessor on masquerade
+
+         If both channels which should be masqueraded
+         are in the same serializer:
+         1st channel will be locked waiting condition 'complete'
+         2nd channel will be locked waiting condition 'suspended'
+
+         On heavy load system a chance that both channels will be in
+         the same serializer 'pjsip/distibutor' is very high.
+
+         To reproduce compile res_pjsip/pjsip_distributor.c with
+         DISTRIBUTOR_POOL_SIZE=1
+
+         Steps to reproduce:
+         1. Party A calls Party B (bridged call 'AB')
+         2. Party B places Party A on hold
+         3. Party B calls Voicemail app (non-bridged call 'BV')
+         4. Party B attended transfers Party A to voicemail using REFER.
+         5. When asterisk masquerades calls 'AB' and 'BV',
+            a deadlock is happened.
+
+         This patch adds a suspension indicator to the taskprocessor.
+         When a session suspends/unsuspends the serializer
+         it sets the indicator to the appropriate state.
+         The session checks the suspension indicator before
+         suspend the serializer.
+
+         ASTERISK-26145 #close
+
+         Change-Id: Iaaebee60013a58c942ba47b1b4930a63e686663b
+
+2016-11-08 10:48 +0000 [87e1ebc91a]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_session: Do not call session supplements when it's too late.
+
+         res_pjsip_sesssion was hooking into transaction and invite state
+         changes. One of the reasons for doing so was due to the
+         PJSIP_EVENT_TX_MSG event. The idea was that we were hooking into the
+         message sending process, and so we should call session supplements to
+         alter the outgoing message.
+
+         In reality, this event was meant to indicate that the message either
+         a) had already been sent, or
+         b) required a DNS lookup and would be sent when the DNS query
+         completed.
+
+         In case (a), this meant we were altering an already-sent
+         request/response for no reason. In case (b), this potentially meant we
+         could be trying to alter a request/response at the same time that the
+         DNS resolution completed. In this case, it meant we might be stomping on
+         memory being used by the thread actually sending the message. This
+         caused potential crashes and memory corruption.
+
+         This patch removes the calls to session supplements from the case where
+         the PJSIP_EVENT_TX_MSG event occurs. In all of these cases, trying to
+         alter the message at this point is too late, and it can cause nothing
+         but harm to try to do it. Because there were no longer any calls to the
+         handle_outgoing() function, it has been removed.
+
+         Change-Id: Ibcc223fb1c3a237927f38754e0429e80ee301e92
+         (cherry picked from commit e043d1a55cf356066b3b39ebac8b4bbb612ce807)
+
+2016-11-02 09:15 +0000 [c8df727502]  Joshua Colp <jcolp@digium.com>
+
+       * app_dial: Fix incorrect device state when channel is picked up.
+
+         Given the scenario where multiple channels are dialed using Dial()
+         but the caller is picked up using PickupChan() all outgoing channels
+         except the channel specified to PickupChan() would be marked
+         as ringing until the call had been hung up.
+
+         When using the PickupChan application the channel executing the
+         application is swapped into place of another channel. As part
+         of this process the channel is answered. The Dial application
+         has explicit logic which checks if the channel is answered,
+         cancels all other outgoing channels, and bridges. This logic is
+         different than the normal logic that is executed when an outgoing
+         channel is answered. This different logic failed to publish dial
+         events stating that the other outgoing channels had been canceled.
+         As a result references to the outgoing channels were held onto by
+         the dial masquerade process until the call had been ended and
+         the channels had gone away. This would result in the channels
+         appearing in the "core show channels" list despite not being present
+         anymore and would also result in incorrect device state.
+
+         This change makes it so that this logic also publishes
+         dial events stating that the other outgoing channels have been
+         canceled.
+
+         ASTERISK-26549
+
+         Change-Id: Iea7168e6e82f7d4609ec0366153804e4f55ea64f
+
+2016-10-18 16:50 +0000 [4c50689d09]  Joshua Colp <jcolp@digium.com>
+
+       * Revert "pjproject_bundled:  Add patch to address SSL crash"
+
+         This reverts commit 28cc8a9dff2fb9210726cfa6274ae683fbfa4a01.
+
+         Change-Id: I777cf8173f7a88273090bed72bfe57fb0e72b84f
+
+2016-10-17 11:39 +0000 [28cc8a9dff]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Add patch to address SSL crash
+
+         Addresses crashes when an attempt is made to operate on an SSL socket
+         after the socket has been closed.
+
+         ASTERISK-26477 #close
+
+         Change-Id: I421305b357558b4f9e690210dc0f4831ef4b3002
+         (cherry picked from commit 546ec4b038ac3d750c5138d7fbb8e3ce93f482df)
+
+2016-10-12 16:24 +0000 [7c2bd702fd]  Richard Mudgett <rmudgett@digium.com>
+
+       * Audit ast_json_pack() calls for needed UTF-8 checks.
+
+         Added needed UTF-8 checks before constructing json objects in various
+         files for strings obtained outside the system.  In this case string values
+         from a channel driver's peer and not from the user setting channel
+         variables.
+
+         * aoc.c: Fixed type mismatch in s_to_json() for time and granularity json
+         object construction.
+
+         ASTERISK-26466
+         Reported by: Richard Mudgett
+
+         Change-Id: Iac2d867fa598daba5c5dbc619b5464625a7f2096
+
+2016-10-12 16:20 +0000 [3b1b2fc1d5]  Richard Mudgett <rmudgett@digium.com>
+
+       * json: Check party id name, number, subaddresses for UTF-8.
+
+         * Updated unit test as ast_json_name_number() is now NULL tolerant.
+
+         ASTERISK-26466 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: I7d4e14194f8f81f24a1dc34d1b8602c0950265a6
+
+2016-10-11 18:14 +0000 [a835adfa92]  Richard Mudgett <rmudgett@digium.com>
+
+       * json: Add UTF-8 check call.
+
+         Since the json library does not make the check function public we
+         recreate/copy the function in our interface module.
+
+         ASTERISK-26466
+         Reported by: Richard Mudgett
+
+         Change-Id: I36d3d750b6f5f1a110bc69ea92b435ecdeeb2a99
+
+2016-07-19 15:22 +0000 [7baedd9ecd]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip_pubsub: fixed a bug when pjsip_tx_data_dec_ref is called twice.
+
+         This patch removed call of pjsip_tx_data_dec_ref in send_notify
+         if send_request failed.
+         The pjsip_dlg_send_request deletes the message on error by itself.
+
+         It seems this patch fixes next issues:
+         ASTERISK-26199
+         ASTERISK-26166
+         ASTERISK-26174
+
+         Change-Id: I8b05917c93d993f95d604c042ace5f1a5500f59a
+
+2016-10-05 14:53 +0000 [a8e37c3d06]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Add MALLOC_DEBUG capability
+
+         pjproject_bundled will now use the asterisk memory debugging APIs
+         if MALLOC_DEBUG is turned on in menuselect.
+
+         Because this required stubs for the executable programs and the python
+         bindings, some Makefile reorganization was needed to properly handle
+         the dependencies.  As a result, the makefile now individually makes
+         each of the pjproject libraries separately instead of making them all
+         in 1 shot.  The only visible change is that there are separate status
+         lines printed for each library instead oif 1 for all libs.  Also, the
+         making of the pjproject dependency files was eliminated.  They're not
+         needed for building unless you're actively modifying pjproject source
+         files and it makes the build process faster.  Finally, any issues with
+         parallel builds should be resolved again making the build faster.
+
+         NOTE:  The certified/13.8 version of this patch also builds libresample
+         which is needed by pjsua.  Later versions do not need libresample.
+
+         Change-Id: Icc5e3d658fbfb00e0a46b44c66dcc2522d5171b0
+
+2016-08-29 18:08 +0000 [adcdecd47f]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Add ignore_uri_user_options option.
+
+         This implements the chan_sip legacy_useroption_parsing option but with a
+         better name.
+
+         * Made the caller-id number and redirecting number strings obtained from
+         incoming SIP URI user fields always truncated at the first semicolon.
+         People don't care about anything after the semicolon showing up on their
+         displays even though the RFC allows the semicolon.
+
+         ASTERISK-26316 #close
+         Reported by: Kevin Harwell
+
+         Change-Id: Ib42b0e940dd34d84c7b14bc2e90d1ba392624f62
+
+2016-09-08 16:34 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.8-cert3 Released.
+
+2016-09-08 11:34 +0000 [6cec20200b]  gtjoseph <gjoseph@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-09-08 11:34 +0000 [9c0f0eef6e]  gtjoseph <gjoseph@digium.com>
+
+       * .version: Update for certified/13.8-cert3
+
+2016-09-08 11:34 +0000 [3923b114b9]  gtjoseph <gjoseph@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert3
+
+2016-09-08 11:34 +0000 [83362b5590]  gtjoseph <gjoseph@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert3
+
+2016-08-23 06:35 +0000 [d947baa255]  Corey Farrell <git@cfware.com> (license 5909)
+
+       * chan_sip: Don't allocate new RTP instances on top of old ones.
+
+         In some scenarios dialog_initialize_rtp can be called multiple times on
+         the same dialog.  This can cause RTP instances to be leaked along with
+         multiple file descriptors for each instance.
+
+         This change makes it so the existing RTP instances are destroyed and
+         not overwritten, stopping the memory leak.
+
+         ASTERISK-26272 #close
+         patches:
+           ASTERISK-26272-13.patch submitted by Corey Farrell (license 5909)
+
+         Change-Id: Id529de1184c68f2f4d254ab41a1f458dafdb5f73
+
+2016-08-10 15:14 +0000 [df9aa402a5]  Mark Michelson <mmichelson@digium.com>
+
+       * ConfBridge: Make some announcements asynchronous.
+
+         Confbridge announcements tend to block a channel while they are being
+         played. In some circumstances, this is warranted since you want that
+         particular channel not to hear the announcement (Example: "John Doe has
+         entered the conference"). For others it makes less sense.
+
+         This change first introduces methods for playing sounds asynchronously
+         into the conference. This is very similar to how synchronous sounds are
+         played, except the channel initiating the playback does not wait for the
+         sound to complete before moving on.
+
+         Asynchronous announcements are used for two circumstances:
+         * Sounds played for a user after they have left the bridge
+         * Sounds that play first to a single user and then the rest of the
+           conference (if the channel and conference use the same language)
+
+         ASTERISK-26289 #close
+         Reported by Mark Michelson
+
+         Change-Id: Ie486bb3de1646d50894489030326a423e594ab0a
+
+2016-08-24 14:42 +0000 [b1e827d259]  gtjoseph <gjoseph@digium.com>
+
+       * res_rtp_multicast:  Fix SEGV in ast_multicast_rtp_create_options
+
+         ast_multicast_rtp_create_options now checks for NULL or empty options
+
+         Change-Id: Ib845eae46a67a9787e89a87ebd1027344e5e0362
+
+2016-08-10 15:14 +0000 [c218e038d7]  Mark Michelson <mmichelson@digium.com>
+
+       * ConfBridge: Rework announcer channel methodology
+
+         NOTE: This patch was submitted earlier and reverted because of a failing
+         test. The test has been patched so that it adjusts for the changes here,
+         so this is being resubmitted for review.
+
+         One feature that confbridge has is the ability to play sounds to all
+         participants in the conference. Prior to this commit, the algorithm for
+         this was as follows:
+
+         * Grab the playback lock
+         * Push the conference announcer channel into the bridge
+         * Play back the sound
+         * Pull the conference announcer channel from the bridge
+         * Release the playback lock
+
+         The issue here is that the act of adding the playback channel to the
+         bridge and removing it for each announcement is expensive. Amongst the
+         expenses:
+
+         * The announcer channel is imparted into the bridge, meaning a new
+           thread is spun up for each playback.
+         * When the announcer is added or removed from the bridge, it results
+           in the BRIDGEPEER channel variable being set on all channels in the
+           bridge. This requires keeping the bridge locked and locking each
+           individual channel in order to set it.
+         * There's also just the general overhead of adding the channel and
+           removing it from the bridge. The bridge potentially has to reconfigure
+           every single time
+
+         With this commit, the paradigm for playing back announcements has
+         shifted.
+
+         * The announcer channel is now added to the bridge when the conference
+           is allocated, and it is hung up when the conference is destroyed.
+         * A taskprocessor is used to queue playbacks onto the announcer channel.
+           This keeps the behavior from before where playbacks do not overlap.
+         * The announcer channel is no longer placed into the bridge as
+           departable. Since we are not constantly removing the channel from
+           the bridge, it is safe to add the channel using an independent thread
+           and simply hang the channel up when it is time for the conference to
+           be destroyed.
+
+         The use of the taskprocessor for playbacks opens up the interesting
+         possibility of having asynchronous announcements played. In this commit,
+         however, the behavior is still exactly the same as it previously was.
+
+         ASTERISK-26289
+         Reported by Mark Michelson
+
+         Change-Id: Ica9fa4907c2f3728cdd1cf0bc564ef4eb40754a0
+
+2016-08-23 05:53 +0000 [b82f0b7722]  Joshua Colp <jcolp@digium.com>
+
+       * Revert "ConfBridge: Rework announcer channel methodology"
+
+         This reverts commit 4ca730127ccdc895e4d9e32cb0828c27bf74817b.
+
+         Change-Id: I8886feb69ae2dbf521a8c0937792349b70db52b2
+
+2016-08-10 15:14 +0000 [4ca730127c]  Mark Michelson <mmichelson@digium.com>
+
+       * ConfBridge: Rework announcer channel methodology
+
+         One feature that confbridge has is the ability to play sounds to all
+         participants in the conference. Prior to this commit, the algorithm for
+         this was as follows:
+
+         * Grab the playback lock
+         * Push the conference announcer channel into the bridge
+         * Play back the sound
+         * Pull the conference announcer channel from the bridge
+         * Release the playback lock
+
+         The issue here is that the act of adding the playback channel to the
+         bridge and removing it for each announcement is expensive. Amongst the
+         expenses:
+
+         * The announcer channel is imparted into the bridge, meaning a new
+           thread is spun up for each playback.
+         * When the announcer is added or removed from the bridge, it results
+           in the BRIDGEPEER channel variable being set on all channels in the
+           bridge. This requires keeping the bridge locked and locking each
+           individual channel in order to set it.
+         * There's also just the general overhead of adding the channel and
+           removing it from the bridge. The bridge potentially has to reconfigure
+           every single time
+
+         With this commit, the paradigm for playing back announcements has
+         shifted.
+
+         * The announcer channel is now added to the bridge when the conference
+           is allocated, and it is hung up when the conference is destroyed.
+         * A taskprocessor is used to queue playbacks onto the announcer channel.
+           This keeps the behavior from before where playbacks do not overlap.
+         * The announcer channel is no longer placed into the bridge as
+           departable. Since we are not constantly removing the channel from
+           the bridge, it is safe to add the channel using an independent thread
+           and simply hang the channel up when it is time for the conference to
+           be destroyed.
+
+         The use of the taskprocessor for playbacks opens up the interesting
+         possibility of having asynchronous announcements played. In this commit,
+         however, the behavior is still exactly the same as it previously was.
+
+         ASTERISK-26289
+         Reported by Mark Michelson
+
+         Change-Id: Ic5cd2c4b98a1eaa1715eb7a5b35d62f1a76d78a5
+
+2016-08-16 15:36 +0000 [f40c6874c6]  gtjoseph <gjoseph@digium.com>
+
+       * res_pjsip:  Add contact_user to endpoint
+
+         contact_user, when specified on an endpoint, will override the user
+         portion of the Contact header on outgoing requests.
+
+         Change-Id: Icd4ebfda2f2e44d3ac749d0b4066630e988407d4
+
+2016-08-09 12:07 +0000 [78a6da0885]  Kevin Harwell <kharwell@digium.com>
+
+       * alembic/sqlalchemy: auto increment only allowed on a single column
+
+         The extensions table defined two columns (id and priority) as primary key
+         autoincrement columns. However only one is allowed when defining the primary
+         key.
+
+         This patch removes the autoincrement attribute from the priority column since
+         it does not need to be as such and really should not have been on there in the
+         first place.
+
+         This patch also removes 'context', 'exten', and 'priority' from the primary key
+         index and creates a new combined unique contraint index on them.
+
+         ASTERISK-26183 #close
+
+         Change-Id: Ib9c712c612a4d7ec1edb0dcb77f1bae0905a470b
+         (cherry picked from commit f6ec94cca66addac71d566d6fa48188b407f26ba)
+
+2016-08-15 13:27 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.8-cert2 Released.
+
+2016-08-15 08:27 +0000 [d7eec92332]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-08-15 08:27 +0000 [847b0d007d]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert2
+
+2016-08-15 08:27 +0000 [bd8581cd52]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert2
+
+2016-08-15 08:27 +0000 [628620c5ef]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert2
+
+2016-08-09 16:19 +0000 [13b950f4be]  Mark Michelson <mmichelson@digium.com>
+
+       * res_rtp_asterisk: Cache local RTCP address.
+
+         When an RTCP packet is sent or received, res_rtp_asterisk generates a
+         Stasis event that contains the RTCP report as well as the local and
+         remote addresses that the report pertains to.
+
+         The addresses are determined using ast_find_ourip(). For the local
+         address, this will typically result in a lookup of the hostname of the
+         server, and then a DNS lookup of that hostname. If you do not have the
+         host in /etc/hosts, then this results in a full DNS lookup, which can
+         potentially block for some time.
+
+         This is especially problematic when performing RTCP reads, since those
+         are done on the same thread responsible for reading and writing media.
+
+         This patch addresses the issue by performing a lookup of the local
+         address when RTCP is allocated. We then use this cached local address
+         for the Stasis events when necessary.
+
+         ASTERISK-26280 #close
+         Reported by Mark Michelson
+
+         Change-Id: I3dd61882c2e57036f09f0c390cf38f7c87e9b556
+
+2016-08-01 06:57 +0000 [acf021cdec]  Joshua Colp <jcolp@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert2-rc1
+
+2016-08-01 06:57 +0000 [fba5cf4a00]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert2-rc1
+
+2016-08-01 06:57 +0000 [b2cc9b4879]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-08-01 06:57 +0000 [20e25657fa]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert2-rc1
+
+2016-08-01 06:57 +0000 [08c26fba06]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert2-rc1
+
+2016-08-01 06:57 +0000 [b539479f10]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert2-rc1
+
+2016-06-21 10:53 +0000 [164bfc8574]  Scott Griepentrog <scott@griepentrog.com>
+
+       * PJSIP: provide transport type with received messages
+
+         The receipt of a SIP MESSAGE may occur over any transport including TCP
+         and TLS. When the message is received, the original URI is added to the
+         message in the field PJSIP_RECVADDR, but this is insufficient to ensure
+         a reply message can reach the originating endpoint. This patch adds the
+         PJSIP_TRANSPORT field populated with the transport type.
+
+         ASTERISK-26132 #close
+
+         Change-Id: I28c4b1e40d573a056c81deb213ecf53e968f725e
+         (cherry picked from commit 69d58a1e377938e5236f51200e222eb219739441)
+
+2016-07-21 22:28 +0000 [7809034c0d]  Richard Mudgett <rmudgett@digium.com>
+
+       * dsp.c: Fix erroneous fax tone detection.
+
+         The Goertzel calculations get less accurate the lower the signal level
+         being worked with becomes because there is less resolution remaining.
+         If it is too low we can erroneously detect a tone where none really
+         exists.  The searched for fax frequencies not only need to be so much
+         stronger than the background noise they must also be a minimum strength.
+
+         * Add needed minimum threshold test to tone_detect().
+
+         * Set TONE_THRESHOLD to allow low volume frequency spread detection.
+
+         ASTERISK-26237 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: I84dbba7f7628fa13720add6a88eae3b129e066fc
+
+2016-07-21 09:05 +0000 [5bc48a290b]  gtjoseph <gjoseph@digium.com>
+
+       * chan_sip: Prevent deadlock when issuing "sip show channels"
+
+         sip_show_channels locks the dialogs container first then locks each
+         sip_pvt so it can spit out the details.  The rest of sip dialog
+         processing locks the sip_pvt first then locks the dialogs container
+         if it needs to.  Both lock in the order they need but deadlocks can
+         result.  To fix, sip_show_channels and sip_show_channelstats have
+         been converted to use an iterator rather than ao2_callback.  This way
+         the container is locked only while getting the next entry and is
+         unlocked when the callback is called.
+
+         ASTERISK-23013 #close
+
+         Change-Id: Id9980419909e811f89484950ed46ef117b9eb990
+
+2016-07-12 17:24 +0000 [49defa5578]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_fax: Fix FAXOPT(faxdetect) timeout option.
+
+         The fax detection timeout option did not work because basically the wrong
+         variable was checked in fax_detect_framehook().  As a result, the timer
+         would timeout immediately and disable fax detection.
+
+         * Fixed ignoring negative timeout values.  We'd complain and then go right
+         on using the negative value.
+
+         * Fixed destroy_faxdetect() in the off-nominal case of an incomplete
+         object creation.
+
+         * Added more range checking to FAXOPT(gateway) timeout parameter.
+
+         ASTERISK-26214 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: Idc5e698dfe33572de9840bc68cd9fc043cbad976
+
+2016-07-18 16:16 +0000 [a0485fe851]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_dahdi: Add faxdetect_timeout option.
+
+         The new option allows the channel driver's faxdetect option to timeout on
+         a call after the specified number of seconds into a call.  The new feature
+         is disabled if the timeout is set to zero.  The option is disabled by
+         default.
+
+         * Don't clear dsp_features after passing them to the dsp code in
+         my_pri_ss7_open_media().  We should still remember them especially for the
+         new faxdetect_timeout option.
+
+         ASTERISK-26214
+         Reported by: Richard Mudgett
+
+         Change-Id: Ieffd3fe788788d56282844774365546dce8ac810
+
+2016-07-15 20:44 +0000 [d172104e12]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Add fax_detect_timeout endpoint option.
+
+         The new endpoint option allows the PJSIP channel driver's fax_detect
+         endpoint option to timeout on a call after the specified number of
+         seconds into a call.  The new feature is disabled if the timeout is set
+         to zero.  The option is disabled by default.
+
+         ASTERISK-26214
+         Reported by: Richard Mudgett
+
+         Change-Id: Id5a87375fb2c4f9dc1d4b44c78ec8735ba65453d
+
+2016-07-13 14:09 +0000  Asterisk Development Team <asteriskteam@digium.com>
+
+       * asterisk certified/13.8-cert1 Released.
+
+2016-07-13 08:34 +0000 [482561f1e3]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-07-13 08:34 +0000 [3cb116d75a]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert1
+
+2016-07-13 08:34 +0000 [797d39c81c]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1
+
+2016-07-13 08:34 +0000 [f5fbfe9a6a]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1
+
+2016-07-07 10:38 +0000 [22a36e5b10]  Joshua Colp <jcolp@digium.com>
+
+       * chan_sip/res_pjsip_t38: Handle a request to negotiate T.38 after it is enabled.
+
+         Some T.38 implementations may send another re-invite after the initial
+         one which adds additional negotiation details (such as the max bitrate).
+         Currently this will fail when passthrough is being done in chan_sip as we
+         do nothing if T.38 is already active.
+
+         Other handlers of T.38 inside of Asterisk (such as res_fax) handle this
+         scenario so this change adds support for it to chan_sip and res_pjsip_t38.
+         If a request to negotiate is received while T.38 is already enabled a
+         new re-INVITE is sent and negotiation is done again.
+
+         ASTERISK-26179 #close
+
+         Change-Id: I0298494d3da6df3219bbfa4be9aa04015043145c
+
+2016-06-22 13:41 +0000 [d0c04c8986]  gtjoseph <gjoseph@digium.com>
+
+       * res_rtp_asterisk:  Fix a self-comparison identified by gcc 6
+
+         gcc 6 caught a previously unidentified self-comparison in
+         ice_candidate_cmp.  Fixed it and re-ordered the predicates for better
+         short-circuiting.
+
+         ASTERISK-26140 #close
+
+         Change-Id: I3da713c568e24064430257b3502fbdafd35af7a7
+
+2016-06-30 08:25 +0000 [0d694ce9b8]  gtjoseph <gjoseph@digium.com>
+
+       * configure:  Fix HAVE_PJSIP_EVSUB_GRP_LOCK not set with external pjproject
+
+         There was a typo in configure.ac preventing HAVE_PJSIP_EVSUB_GRP_LOCK
+         from getting set when using an external pjproject.
+
+         ASTERISK-26099 #close
+         Reported-by: Ross Beer
+
+         Change-Id: I709af70428e125fb5ccd44b171d25dd29141f0ae
+
+2016-06-28 08:22 +0000 [5f444b1f5b]  gtjoseph <gjoseph@digium.com>
+
+       * BuildSystem:  Fix a few issues hightlighted by gcc 6.x
+
+         gcc 6.1.1 caught a few more issues.
+         Made sure the unit tests still pass for the func_env and stdtime
+         issues.
+
+         ASTERISK-26157 #close
+
+         Change-Id: I6664d8f34a45bc1481d2a854481c7878b0c1cf8e
+
+2016-06-22 16:15 +0000 [f282a88ee4]  Mark Michelson <mmichelson@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert1-rc3
+
+2016-06-22 16:15 +0000 [bd6da93116]  Mark Michelson <mmichelson@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert1-rc3
+
+2016-06-22 16:14 +0000 [4df81def29]  Mark Michelson <mmichelson@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-06-22 16:14 +0000 [286d58affc]  Mark Michelson <mmichelson@digium.com>
+
+       * .version: Update for certified/13.8-cert1-rc3
+
+2016-06-22 16:14 +0000 [8b7fe94df7]  Mark Michelson <mmichelson@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1-rc3
+
+2016-06-22 16:14 +0000 [0449fd2e1e]  Mark Michelson <mmichelson@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1-rc3
+
+2016-06-09 09:20 +0000 [a6610fbe2f]  gtjoseph <gjoseph@digium.com>
+
+       * build:  Fix ast_sockaddr initialization to be more portable
+
+         A change to glibc 2.22 changed the order of the sockadddr_storage
+         members which caused the places where we do an initialization of
+         ast_sockaddr with '{ { 0, 0, } }' to fail compilation.  Those
+         initializers (which we shouldn't have been using anyway) have been
+         replaced with memsets.
+
+         Change-Id: Idd1b3b320903d8771bfe221f0b015685de628fa4
+
+2016-06-12 11:19 +0000 [102d88e791]  gtjoseph <gjoseph@digium.com>
+
+       * res_pjsip_pubsub: Address SEGV when attempting to terminate a subscription
+
+         Occasionally under load we'll attempt to send a final NOTIFY on a
+         subscription that's already been terminated and a SEGV will occur
+         down in pjproject's evsub_destroy function.  This is a result of a
+         race condition between all the paths that can generate a notify
+         and/or destroy the underlying pjproject evsub object:
+
+          * The client can send a SUBSCRIBE with Expires: 0.
+          * The client can send a SUBSCRIBE/refresh.
+          * The subscription timer can expire.
+          * An extension state can change.
+          * An MWI event can be generated.
+          * The pjproject transaction timer (timer_b) can expire.
+
+         Normally when our pubsub_on_evsub_state is called with a terminate,
+         we push a task to the serializer and return at which point the dialog
+         is unlocked.  This is usually not a problem because the task runs
+         immediately and locks the dialog again.  When the system is heavily
+         loaded though, there may be a delay between the unlock and relock
+         during which another event may occur such as the subscription timer
+         or timer_b expiring, an extension state change, etc.  These may also
+         cause a terminate to be processed and if so, we could cause pjproject
+         to try to destroy the evsub structure twice.  There's no way for us to
+         tell that the evsub was already destroyed and the evsub's group lock
+         can't tolerate this and SEGVs.
+
+         The remedy is twofold.
+
+          * A patch has been submitted to Teluu and added to the bundled
+            pjproject which adds add/decrement operations on evsub's group lock.
+
+          * In res_pjsip_pubsub:
+            * configure.ac and pjproject-bundled's configure.m4 were updated
+              to check for the new evsub group lock APIs.
+            * We now add a reference to the evsub group lock when we create
+              the subscription and remove the reference when we clean up the
+              subscription.  This prevents evsub from being destroyed before
+              we're done with it.
+            * A state has been added to the subscription tree structure so
+              termination progress can be tracked through the asyncronous tasks.
+            * The pubsub_on_evsub_state callback has been split so it's not doing
+              double duty.  It now only handles the final cleanup of the
+              subscription tree.  pubsub_on_rx_refresh now handles both client
+              refreshes and client terminates.  It was always being called for
+              both anyway.
+            * The serialized_on_server_timeout task was removed since
+              serialized_pubsub_on_rx_refresh was almost identical.
+            * Missing state checks and ao2_cleanups were added.
+            * Some debug levels were adjusted to make seeing only off-nominal
+              things at level 1 and nominal or progress things at level 2+.
+
+         ASTERISK-26099 #close
+         Reported-by: Ross Beer.
+
+         Change-Id: I779d11802cf672a51392e62a74a1216596075ba1
+
+2016-06-13 13:33 +0000 [d9ab222edc]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_rtp_multicast.c: Fix warning message typo.
+
+         Change-Id: Ic9928208b9957e09866abe3d9649030942ec52b3
+
+2016-06-10 12:35 +0000 [39329a9e66]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_rtp: Backport changes from master.
+
+         * Deprecate chan_multicast_rtp.
+
+         Change-Id: Ib5a45e58c75ee8abd0b4f9575379b5321feb853e
+
+2016-06-10 16:13 +0000 [6d45341963]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_rtp.c: Copy file from chan_multicast_rtp.c
+
+         Change-Id: I1119b53f2152ab1cbec74b5be7ea44844dbda8ef
+
+2016-06-03 22:44 +0000 [0322479ff7]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_registrar.c: Eliminate rx REGISTER request race condition.
+
+         This patch fixes a race condition processing received REGISTER requests
+         and their retransmissions caused by REGISTER requests being processed by
+         two threads.  The "sip_transaction Unable to register REGISTER transaction
+         (key exists)" message is a notable symptom of this issue.
+
+         This issue was more likely to happen before the pjsip/distributor
+         serializers were created.  Instead of steps one and two below placing the
+         REGISTER messages into the same pjsip/distributor they were placed in
+         random pjsip/default serializers.
+
+         1) REGISTER requests come in and get placed on the pjsip/distributor
+         serializer.
+
+         2) Before the first request is processed a retransmission comes in and is
+         placed on the same pjsip/distributor serializer.
+
+         3) The first request goes up the pjsip stack and is then shunted off to
+         the pjsip/aor/<aor> serializer.
+
+         4) Before the first request is completed processing in the pjsip/aor/<aor>
+         serializer, the second request goes up the pjsip stack and is also shunted
+         off to the pjsip/aor/<aor> serializer.
+
+         5) The first request completes processing and sends out its response.
+
+         6) The second request completes processing and tries to send out its
+         response but pjlib complains that the REGISTER transaction key already
+         exists.
+
+         7) Sadness ensues.
+
+         * The race is eliminated by removing the pjsip/aor/<aor> serializer and
+         continuing the processing in the pjsip/distributor serializer.  Now any
+         retransmissions queued in the pjsip/distributor serializer will be
+         processed after the first message is completely processed.
+
+         ASTERISK-26088 #close
+         Reported by:  Richard Mudgett
+
+         Change-Id: I842d714346088bf717ea27437f1dd85bff0bab5a
+
+2016-06-03 11:35 +0000 [942fa0c95b]  Richard Mudgett <rmudgett@digium.com>
+
+       * stasis: Add setting subscription congestion levels.
+
+         Stasis subscriptions and message routers create taskprocessors to process
+         the event messages.  API calls are needed to be able to set the congestion
+         levels of these taskprocessors for selected subscriptions and message
+         routers.
+
+         * Updated CDR, CEL, and manager's stasis subscription congestion levels
+         based upon stress testing.  Increased the congestion levels to reduce the
+         potential for bursty call setup/teardown activity from triggering the
+         taskprocessor overload alert.  CDRs in particular need an extra high
+         congestion level because they can take awhile to process the stasis
+         messages.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: Id0a716394b4eee746dd158acc63d703902450244
+
+2016-06-02 18:19 +0000 [b046fa1907]  Richard Mudgett <rmudgett@digium.com>
+
+       * sorcery: Add setting object type congestion levels.
+
+         Sorcery creates taskprocessors for object types to process object observer
+         callbacks.  An API call is needed to be able to set the congestion levels
+         of these taskprocessors for selected object types.
+
+         * Updated PJSIP's contact and contact_status sorcery object type observer
+         default congestion levels based upon stress testing.  Increased the
+         congestion levels to reduce the potential for bursty register/unregister
+         and subscribe/unsubscribe activity from triggering the taskprocessor
+         overload alert.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I4542e83b556f0714009bfeff89505c801f1218c6
+
+2016-06-02 16:08 +0000 [237f9ef7af]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessors: Implement high/low water mark alerts.
+
+         When taskprocessors get backed up, there is a good chance that we are
+         being overloaded and need to defer adding new work to the system.
+
+         * Implemented a high/low water alert mechanism for modules to check if the
+         system is being overloaded and take appropriate action.  When a
+         taskprocessor is created it has default congestion levels set.  A
+         taskprocessor can later have those congestion levels altered for specific
+         needs if stress testing shows that the taskprocessor is a symptom of
+         overloading or needs to handle bursty activity without triggering an
+         overload alert.
+
+         * Add CLI "core show taskprocessor" low/high water columns.
+
+         * Fixed __allocate_taskprocessor() to not use RAII_VAR().  RAII_VAR() was
+         never a good thing to use when creating a taskprocessor because of the
+         nature of how its references needed to be cleaned up on a partial
+         creation.
+
+         * Made res_pjsip's distributor check if the taskprocessor overload alert
+         is active before placing a message representing brand new work onto a
+         distributor serializer.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I182f1be603529cd665958661c4c05ff9901825fa
+
+2016-05-27 17:31 +0000 [ff70f04a37]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session: Use distributor serializer for incoming calls.
+
+         We must continue using the serializer that the original INVITE came in on
+         for the dialog.  There may be retransmissions already enqueued in the
+         original serializer that can result in reentrancy and message sequencing
+         problems.
+
+         Outgoing call legs create the pjsip/outsess/<endpoint> serializers for
+         their dialogs.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I24d7948749c582b8045d5389ba3f6588508adbbc
+
+2016-05-27 16:28 +0000 [4b26c9ead8]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Recreate subscriptions using distributor serializer.
+
+         * Resolves potential reentrancy problems if system restarted in the middle
+         of subscription message transactions.
+
+         * Fixes memory leak recreating persistent subscriptions when the
+         subscription resource tree could not be created.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I71e34d7ae8ed35a694f1030e820e2548c48697be
+
+2016-05-27 12:50 +0000 [a137d1822e]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Use distributor serializer for incoming subscriptions.
+
+         We must continue using the serializer that the original SUBSCRIBE came in
+         on for the dialog.  There may be retransmissions already enqueued in the
+         original serializer that can result in reentrancy and message sequencing
+         problems.  The "sip_transaction Unable to register SUBSCRIBE transaction
+         (key exists)" message is a notable symptom of this issue.
+
+         Outgoing subscriptions still create the pjsip/pubsub/<endpoint>
+         serializers for their dialogs.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I18b00bb74a56747b2c8c29543a82440b110bf0b0
+
+2016-05-26 17:35 +0000 [9a7a5aec18]  Richard Mudgett <rmudgett@digium.com>
+
+       * pjsip_distributor.c: Consistently pick a serializer for messages.
+
+         Incoming messages that are not part of a dialog or a recognized response
+         to one of our requests need to be sent to a consistent serializer.  Under
+         load we may be queueing retransmissions before we can process the original
+         message.  We don't need to throw these messages onto random serializers
+         and cause reentrancy and message sequencing problems.
+
+         * Created a pool of pjsip/distributor serializers that get picked by
+         hashing the call-id and remote tag strings of the received messages.
+
+         * Made ast_sip_destroy_distributor() destroy items in the reverse order of
+         creation.
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I2ce769389fc060d9f379977f559026fbcb632407
+
+2016-06-02 12:51 +0000 [f2a76c4292]  Richard Mudgett <rmudgett@digium.com>
+
+       * pjsip_distributor.c: Ignore messages until fully booted.
+
+         We should not be processing any incoming messages until we are fully
+         booted.  We may not have dialplan or other needed configuration loaded
+         yet.
+
+         ASTERISK-26089 #close
+         Reported by: Scott Griepentrog
+
+         ASTERISK-26088
+         Reported by:  Richard Mudgett
+
+         Change-Id: I584aefb4f34b885a8927e1f13a2c64babd606264
+
+2016-04-01 13:30 +0000 [51e45e5ca5]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip contact:  Lock expiration/addition of contacts
+
+         Contact expiration can occur in several places:  res_pjsip_registrar,
+         res_pjsip_registrar_expire, and automatically when anyone calls
+         ast_sip_location_retrieve_aor_contact.  At the same time, res_pjsip_registrar
+         may also be attempting to renew or add a contact.  Since none of this was locked
+         it was possible for one thread to be renewing a contact and another thread to
+         expire it immediately because it was working off of stale data.  This was the
+         casue of intermittent registration/inbound/nominal/multiple_contacts test
+         failures.
+
+         Now, the new named lock functionality is used to lock the aor during contact
+         expire and add operations and res_pjsip_registrar_expire now checks the
+         expiration with the lock held before deleting the contact.
+
+         ASTERISK-25885 #close
+         Reported-by: Josh Colp
+
+         Change-Id: I83d413c46a47796f3ab052ca3b349f21cca47059
+
+2016-03-31 20:04 +0000 [880d502141]  gtjoseph <george.joseph@fairview5.com>
+
+       * lock:  Add named lock capability
+
+         Locking some objects like sorcery objects can be tricky because the underlying
+         ao2 object may not be the same for all callers.  For instance, two threads that
+         call ast_sorcery_retrieve_by_id on the same aor name might actually get 2
+         different ao2 objects if the underlying wizard had to rehydrate the aor from a
+         database. Locking one ao2 object doesn't have any effect on the other even if
+         those objects had locks in the first place.
+
+         Named locks allow access control by keyspace and key strings.  Now an "aor"
+         named "1000" can be locked and any other thread attempting to lock "aor" "1000"
+         will wait regardless of whether the underlying ao2 object is the same or not.
+         Mutex and rwlocks are supported.
+
+         This capability will initially be used to lock an aor when multiple threads may
+         be attempting to prune expired contacts from it.
+
+         Change-Id: If258c0b7f92b02d07243ce70e535821a1ea7fb45
+
+2016-06-02 12:04 +0000 [a81feefde9]  Joshua Colp <jcolp@digium.com>
+
+       * res_odbc: Implement a connection pool.
+
+         Testing has shown that our usage of UnixODBC is problematic
+         due to bugs within UnixODBC itself as well as the heavy weight
+         cost of connecting and disconnecting database connections, even
+         when pooling is enabled.
+
+         For users of UnixODBC 2.3.1 and earlier crashes would occur due
+         to insufficient protection of the disconnect operation. This was
+         fixed in UnixODBC 2.3.2 and above.
+
+         For users of UnixODBC 2.3.3 and higher a slow-down would occur
+         under heavy database use due to repeated connection establishment.
+         A regression is present where on each connection the database
+         configuration is cached again, with the cache growing out of
+         control.
+
+         The connection pool implementation present in this change helps
+         to mitigate these issues by reducing how much we connect and
+         disconnect database connections. We also solve the issue of
+         crashes under UnixODBC 2.3.1 by defaulting the maximum number of
+         connections to 1, returning us to the previous working behavior.
+         For users who may have a fixed version the maximum concurrent
+         connection limit can be increased helping with performance.
+
+         The connection pool works by keeping a list of active connections.
+         If the connection limit has not been reached a new connection is
+         established. If the connection limit has been reached then the
+         request waits until a connection becomes available before
+         continuing.
+
+         ASTERISK-26074 #close
+         ASTERISK-26054 #close
+
+         Change-Id: I6774bf4bac49a0b30242c76a09c403d2e856ecff
+
+2016-05-30 10:58 +0000 [aab8bc5d31]  gtjoseph <gjoseph@digium.com>
+
+       * pjproject_bundled:  Move to pjproject 2.5
+
+         Although all the patches we had against 2.4.5 were applied by Teluu,
+         a new bug was introduced preventing re-use of tcp and tls transports
+         This patch removes all the previous patches against 2.4.5, updates
+         the version to 2.5, and adds a new patch to correct the transport
+         re-use problem.
+
+         Change-Id: I0dc6c438c3910f7887418a5832ca186aea23d068
+         (cherry picked from commit e8abfdcdc5ce4d32d1fe281e75b13fd652f9e5f7)
+
+2016-05-18 07:54 +0000 [b9a28ccbd4]  gtjoseph <gjoseph@digium.com>
+
+       * udptl:  Don't eat sequence numbers until OK is received
+
+         Scenario:
+         Local fax -> Asterisk w/ firewall -> Provider -> Remote fax
+
+         * Local fax starts rtp call to remote fax
+         * Remote fax starts t38 call back to local fax.
+         * Local fax sends t38 no-signal to Asterisk before sending an OK.
+         * udptl processes the frame and increments the expected sequence number.
+         * chan_sip drops the frame because the call isn't up so nothing goes out
+           the external interface to open the port for incoming packets.
+         * Local fax sends OK and Asterisk sends OK to the remote fax.
+         * Remote fax sends t38 packets which are dropped by the firewall.
+         * Local fax re-sends t38 no-signal with the same sequence number.
+         * udptl drops the frame because it thinks it's a dup.
+         * Still no outgoing packets to open the firewall.
+         * t38 negotiation fails.
+
+         The patch drops frames t38 received before udptl sequence processing
+         when the call hasn't been answered yet.  The second no-signal frame
+         is then seen as new and is relayed out the external interface which
+         opens the port and allows negotiation to continue.
+
+         ASTERISK-26034 #close
+
+         Change-Id: I11744b39748bd2ecbbe8ea84cdb4f3c5943c5af9
+
+2016-05-17 11:14 +0000 [f85c77a9e1]  gtjoseph <gjoseph@digium.com>
+
+       * chan_sip:  Prevent extra Session-Expires headers from being added
+
+         When chan_sip does a re-INVITE to refresh a session and authentication
+         is required, the INVITE with the Authorization header containes a
+         second Session-Expires header without the ";refersher=" parameter.
+         This is causing some proxies to return a 400.  Also, when Asterisk is
+         the uas and the refresher, it is including the Session-Expires and
+         Min-SE headers in OPTIONS messages which is not allowed per RFC4028.
+
+         This patch (based on the reporter's) Checks to see if a Session-Expires
+         header is already in the message before adding another one.  It also
+         checks that the method is INVITE or UPDATE.
+
+         ASTERISK-26030 #close
+
+         Change-Id: I58a7b07bab5a3177748d8a7034fb8ad8e11ce1d9
+
+2016-05-07 14:39 +0000 [8bf050b853]  gtjoseph <gjoseph@digium.com>
+
+       * config_transport:  Tell pjproject to allow all SSL/TLS protocols
+
+         The default tls settings for pjproject only allow TLS 1, TLS 1.1 and TLS 1.2.
+         SSL is not allowed.   So, even if you specify "sslv3" for a transport method,
+         it's silently ignored and one of the TLS protocols is used.  This was a new
+         behavior of pjsip_tls_setting_default() in 2.4 (when tls.proto was added) that
+         we never caught.
+
+         Now we need to set tls.proto = 0 after we call pjsip_tls_setting_default().
+         This tells pjproject to set the socket protocol to match the method.
+
+         ASTERISK-26004 #close
+
+         Change-Id: Icfb55c1ebe921298dedb4b1a1d3bdc3ca41dd078
+
+2016-05-05 11:37 +0000 [4fc2c98369]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_authenticator_digest: Don't use source port in nonce verification
+
+         From the issue reporter:
+         "res_pjsip_outbound_authenticator_digest builds a nonce that is a hash of
+         the timestamp, the source address, the source port, a server UUID that is
+         calculated at startup, and the authentication realm.
+
+         Rather than caching nonces that we create, we instead attempt to re-calculate
+         the nonce when receiving an incoming request with authentication. We then
+         compare the re-calculated nonce to the incoming nonce, and if they don't match,
+         then authentication has failed early.
+
+         The problem is that it is possible, especially when using TCP, to receive two
+         requests from the same endpoint but have differing source ports for those
+         requests. Asterisk itself commonly will use different source ports for
+         outbound TCP requests."
+
+         This patch removes the source port dependency when building the nonce.
+
+         ASTERISK-25978 #close
+
+         Change-Id: I871b5f4adce102df1c4988066283095ec509dffe
+
+2016-05-05 05:07 +0000 [4e7791d483]  Joshua Colp <jcolp@digium.com>
+
+       * file: Ensure nativeformats remains valid for lifetime of use.
+
+         It is possible for the nativeformats of a channel to change
+         throughout its lifetime. As a result a user of it needs to either
+         ensure the channel is locked when accessing the formats or keep
+         a reference to the nativeformats themselves.
+
+         This change fixes the file playback support so it keeps a
+         reference to the nativeformats when accessing things.
+
+         ASTERISK-25998 #close
+
+         Change-Id: Ie45b65475e1481ddf05b874ee48f63e39fff8915
+
+2016-05-03 07:55 +0000 [601602f44b]  Joshua Colp <jcolp@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert1-rc2
+
+2016-05-03 07:55 +0000 [13461bb9a6]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert1-rc2
+
+2016-05-03 07:54 +0000 [cadb5c4e64]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-05-03 07:54 +0000 [d4d5548ef8]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert1-rc2
+
+2016-05-03 07:54 +0000 [a5bc40ae51]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1-rc2
+
+2016-05-03 07:54 +0000 [2b6df52c66]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1-rc2
+
+2016-04-15 11:59 +0000 [c4426f1035]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip: disable multi domain to improve realtime performace
+
+         This patch added new global pjsip option 'disable_multi_domain'.
+         Disabling Multi Domain can improve Realtime performance by reducing
+         number of database requests.
+
+         ASTERISK-25930 #close
+
+         Change-Id: I2e7160f3aae68475d52742107949a799aa2c7dc7
+
+2016-04-26 05:48 +0000 [c69e0f1813]  Joshua Colp <jcolp@digium.com>
+
+       * app_queue: Fix crash when unloading module.
+
+         When unloading the app_queue module the members in each queue are
+         destroyed and as part of this they are removed from the pending
+         members container. Unfortunately a crash would occur as the container
+         was destroyed before the members were removed.
+
+         This change tweaks ordering so the container destruction occurs
+         after the members are destroyed.
+
+         ASTERISK-16115
+
+         Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b
+
+2016-04-21 14:23 +0000 [eebe8b3dd3]  Kevin Harwell <kharwell@digium.com>
+
+       * app_queue: queue members can receive multiple calls
+
+         It was possible for a queue member that is a member of at least 2 or more
+         queues to receive mulitiple calls at the same time. This happened because
+         of a race between when a member was being rung and when the device state
+         notified the other queue(s) member object of the state change.
+
+         This patch makes it so when a queue member is being rung it gets added to
+         a global pool of queue members. If that same member is tried again, e.g.
+         from another queue, and it is found to already exist in the pending member
+         container then it will not ring that member.
+
+         ASTERISK-16115 #close
+
+         Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48
+
+2016-04-22 17:53 +0000 [5cbd4b9799]  gtjoseph <gjoseph@digium.com>
+
+       * res_agi:  Prevent run_agi from eating frames it shouldn't
+
+         The run_agi function is eating control frames when it shouldn't be. This is
+         causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond
+         transfer.
+
+         Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie
+         answers.
+
+         Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE
+         and is left thinking he's connected to Bob.
+
+         In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls
+         an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on
+         Charlie's channel.
+
+         The fix was to accumulate deferrable frames in the "forever" loop instead of
+         dropping them, and re-queue them just before running the actual agi command
+         or exiting.
+
+         ASTERISK-25951 #close
+
+         Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645
+
+2016-04-15 14:36 +0000 [bc51227ef8]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis: Handle re-enter stasis bridge with swap channel.
+
+         We lose the fact that there is a swap channel if there is one.  We
+         currently wind up rejoining the stasis bridge as a normal join after the
+         swap channel has already been kicked from the bridge.
+
+         This patch preserves the swap channel so the AMI/ARI events can note that
+         the channel joining the bridge is swapping with another channel.  Another
+         benefit to swaqpping in one operation is if there are any channels that
+         get lonely (MOH, bridge playback, and bridge record channels).  The lonely
+         channels won't leave before the joining channel has a chance to come back
+         in under stasis if the swap channel is the only reason the lonely channels
+         are staying in the bridge.
+
+         ASTERISK-25947 #close
+         Reported by: Richard Mudgett
+
+         ASTERISK-24649
+         Reported by: John Bigelow
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee
+
+2016-04-19 16:58 +0000 [8dd79720e6]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge: Hold off more than one imparting channel at a time.
+
+         An earlier patch blocked the ast_bridge_impart() call until the channel
+         either entered the target bridge or it failed.  Unfortuantely, if the
+         target bridge is stasis and the imprted channel is not a stasis channel,
+         stasis bounces the channel out of the bridge to come back into the bridge
+         as a proper stasis channel.  When the channel is bounced out, that
+         released the block on ast_bridge_impart() to continue.  If the impart was
+         a result of a transfer, then it became a race to see if the swap channel
+         would get hung up before the imparted channel could come back into the
+         stasis bridge.  If the imparted channel won then everything is fine.  If
+         the swap channel gets hung up first then the transfer will fail because
+         the swap channel is leaving the bridge.
+
+         * Allow a chain of ast_bridge_impart()'s to happen before any are
+         unblocked to prevent the race condition described above.  When the channel
+         finally joins the bridge or completely fails to join the bridge then the
+         ast_bridge_impart() instances are unblocked.
+
+         ASTERISK-25947
+         Reported by: Richard Mudgett
+
+         ASTERISK-24649
+         Reported by: John Bigelow
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1
+
+2016-04-19 17:52 +0000 [2a2e754d15]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_callerid:  Clear out display name if id->name is not valid
+
+         When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
+         the From header, then it overwrites the display name and uri from the channel's
+         connected.id.  If the connected.id.name wasn't valid, create_new_id_hdr was
+         leaving the display name from the From header in the new RPID or PAI header.
+         On an attended transfer where the originator had a caller id number set but not
+         a display name, the re-INVITE to the final transferee had the number of the
+         originator but the display name of the transferer.
+
+         Added a check to clear out the display name in the new header if
+         connected.id.name was invalid.
+
+         ASTERISK-25942 #close
+
+         Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
+
+2016-04-19 13:02 +0000 [188ce34aff]  Joshua Colp <jcolp@digium.com>
+
+       * app_talkdetect: Make the module core supported.
+
+         This module is used as part of testsuite tests to confirm
+         stuff works. I'm accordingly marking it as core as it is
+         required by those tests.
+
+         Change-Id: I558e7af7679b22b8ed641d7dd37ee4ca35b11e88
+
+2016-04-19 13:00 +0000 [da80f40014]  Joshua Colp <jcolp@digium.com>
+
+       * app_talkdetect: Enable for testsuite tests.
+
+         Change-Id: I9acf2e2210f7a15cdd2c63c4c8dcb92de6b47d43
+
+2016-04-18 12:12 +0000 [9f3ecf0a8d]  Mark Michelson <mmichelson@digium.com>
+
+       * PJSIP: Remove PJSIP parsing functions from uri length validation.
+
+         The PJSIP parsing functions provide a nice concise way to check the
+         length of a hostname in a SIP URI. The problem is that in order to use
+         those parsing functions, it's required to use them from a thread that
+         has registered with PJLib.
+
+         On startup, when parsing AOR configuration, the permanent URI handler
+         may not be run from a PJLib-registered thread. Specifically, this could
+         happen when Asterisk was started in daemon mode rather than
+         console-mode. If PJProject were compiled with assertions enabled, then
+         this would cause Asterisk to crash on startup.
+
+         The solution presented here is to do our own parsing of the contact URI
+         in order to ensure that the hostname in the URI is not too long. The
+         parsing does not attempt to perform a full SIP URI parse/validation,
+         since the hostname in the URI is what is important.
+
+         ASTERISK-25928 #close
+         Reported by Joshua Colp
+
+         Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
+
+2016-04-18 17:00 +0000 [39b4742db1]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_registrar: Fix bad memory-ness with user_agent.
+
+         Recent changes to the PJSIP registrar resulted in tests failing due to
+         missing AOR_CONTACT_ADDED test events. The reason for this was that the
+         user_agent string had junk values in it, resulting in being unable to
+         generate the event.
+
+         I'm going to be honest here, I have no idea why this was happening. Here
+         are the steps needed for the user_agent variable to get messed up:
+         * REGISTER is received
+         * First contact in the REGISTER results in a contact being removed
+         * Second contact in the REGISTER results in a contact being added
+         * The contact, AOR, expiration, and user agent all have to be passed as
+           format parameters to the creation of a string. Any subset of those
+           parameters would not be enough to cause the problem.
+
+         Looking into what was happening, the thing that struck me as odd was
+         that the user_agent variable was meant to be set to the value of the
+         User-Agent SIP header in the incoming REGISTER. However, when removing a
+         contact, the user_agent variable would be set (via ast_strdupa inside a
+         loop) to the stored contact's user_agent. This means that the
+         user_agent's value would be incorrect when attempting to process further
+         contacts in the incoming REGISTER.
+
+         The fix here is to use a different variable for the stored user agent
+         when removing a contact. Correcting the behavior to be correct also
+         means the memory usage is less weird, and the issue no longer occurs.
+
+         ASTERISK-25929 #close
+         Reported by Joshua Colp
+
+         Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
+
+2016-04-18 13:41 +0000 [4caa57f6b3]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_transport_management: Allow unload to occur.
+
+         At shutdown it is possible for modules to be unloaded that wouldn't
+         normally be unloaded. This allows the environment to be cleaned up.
+
+         The res_pjsip_transport_management module did not have the unload
+         logic in it to clean itself up causing the res_pjsip module to not
+         get unloaded. As a result the res_pjsip monitor thread kept going
+         processing traffic and timers when it shouldn't.
+
+         Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
+
+2016-04-14 13:49 +0000 [0b35582bbb]  Mark Michelson <mmichelson@digium.com>
+
+       * transport management: Register thread with PJProject.
+
+         The scheduler thread that kills idle TCP connections was not registering
+         with PJProject properly and causing assertions if PJProject was built in
+         debug mode.
+
+         This change registers the thread with PJProject the first time that the
+         scheduler callback executes.
+
+         AST-2016-005
+
+         Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
+
+2016-03-08 12:12 +0000 [9f8b803a29]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_transport_management: Kill idle TCP connections.
+
+         "Idle" here means that someone connects to us and does not send a SIP
+         request. PJProject will not automatically time out such connections, so
+         it's up to Asterisk to do it instead.
+
+         When we receive an incoming TCP connection, we will start a timer
+         (equivalent to transaction timer D) waiting to receive an incoming
+         request. If we do not receive a request in that timeframe, then we will
+         shut down the TCP connection.
+
+         ASTERISK-25796 #close
+         Reported by George Joseph
+
+         AST-2016-005
+
+         Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
+
+2016-03-08 10:52 +0000 [a35d3eb73b]  Mark Michelson <mmichelson@digium.com>
+
+       * Rename res_pjsip_keepalive res_pjsip_transport_management
+
+         ASTERISK-25796
+         Reported by George Joseph
+
+         AST-2016-005
+
+         Change-Id: Id322a05f927392293570599730050bc677d99433
+
+2016-04-14 07:15 +0000 [3de37dee68]  Mark Michelson <mmichelson@digium.com>
+
+       * AST-2016-004: Fix crash on REGISTER with long URI.
+
+         Due to some ignored return values, Asterisk could crash if processing an
+         incoming REGISTER whose contact URI was above a certain length.
+
+         ASTERISK-25707 #close
+         Reported by George Joseph
+
+         Patches:
+               0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
+
+         AST-2016-004
+
+         Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55
+
+2016-03-23 08:59 +0000 [e378c18815]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject-bundled:  Cleanups for reported issues
+
+         PortAudio should no longer be required
+         PJSIP_MAX_PKT_LEN is now 6000
+         Older autoconf issue fixed. (CentOS 6)
+
+         Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd
+         (cherry picked from commit d963a3374991c64594cf196e90a5c74964c8ba7c)
+
+2016-04-06 11:02 +0000 [dd93204a84]  Joshua Colp <jcolp@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert1-rc1
+
+2016-04-06 11:01 +0000 [6d29a919d4]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert1-rc1
+
+2016-04-06 10:27 +0000 [4fa3428247]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-04-06 10:27 +0000 [b418e14998]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert1-rc1
+
+2016-04-06 10:27 +0000 [69b6cf2368]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1-rc1
+
+2016-04-06 10:27 +0000 [847dc5c7d7]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1-rc1
+
+2016-04-06 09:20 +0000 [c23bf7c8df]  Joshua Colp <jcolp@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert1-rc1
+
+2016-04-06 09:19 +0000 [4f94668022]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert1-rc1
+
+2016-04-06 08:47 +0000 [454daec0e1]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-04-06 08:47 +0000 [4ba2b5e92c]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert1-rc1
+
+2016-04-06 08:47 +0000 [e6f27ca09c]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1-rc1
+
+2016-04-06 08:47 +0000 [08dbdd5996]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1-rc1
+
+2016-04-06 08:26 +0000 [ec7a89771d]  Joshua Colp <jcolp@digium.com>
+
+       * ChangeLog: Updated for certified/13.8-cert1-rc1
+
+2016-04-06 08:25 +0000 [ffcb651205]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Add summaries for certified/13.8-cert1-rc1
+
+2016-04-06 07:52 +0000 [97499f717a]  Joshua Colp <jcolp@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-04-06 07:52 +0000 [99d52771b5]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8-cert1-rc1
+
+2016-04-06 07:52 +0000 [eb9e193c65]  Joshua Colp <jcolp@digium.com>
+
+       * .lastclean: Update for certified/13.8-cert1-rc1
+
+2016-04-06 07:52 +0000 [8ec588b8b1]  Joshua Colp <jcolp@digium.com>
+
+       * realtime: Add database scripts for certified/13.8-cert1-rc1
+
+2016-04-05 14:23 +0000 [4b87a773dc]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Handle deferred SDP hold/unhold properly.
+
+         Some SIP devices indicate hold/unhold using deferred SDP reinvites. In
+         other words, they provide no SDP in the reinvite.
+
+         A typical transaction that starts hold might look something like this:
+
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating sendrecv on streams.
+         * Device sends ACK with SDP indicating sendonly on streams.
+
+         At this point, PJMedia's SDP negotiator saves Asterisk's local state as
+         being recvonly.
+
+         Now, when the device attempts to unhold, it again uses a deferred SDP
+         reinvite, so we end up doing the following:
+
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating recvonly on streams
+         * Device sends ACK with SDP indicating sendonly on streams
+
+         The problem here is that Asterisk offered recvonly, and by RFC 3264's
+         rules, if an offer is recvonly, the answer has to be sendonly. The
+         result is that the device is not taken off hold.
+
+         What is supposed to happen is that Asterisk should indicate sendrecv in
+         the 200 OK that it sends. This way, the device has the freedom to
+         indicate sendrecv if it wants the stream taken off hold, or it can
+         continue to respond with sendonly if the purpose of the reinvite was
+         something else (like a session timer refresher).
+
+         The fix here is to alter the SDP negotiator's state when we receive a
+         reinvite with no SDP. If the negotiator's state is currently in the
+         recvonly or inactive state, then we alter our local state to be
+         sendrecv. This way, we allow the device to indicate the stream state as
+         desired.
+
+         ASTERISK-25854 #close
+         Reported by Robert McGilvray
+
+         Change-Id: I7615737276165eef3a593038413d936247dcc6ed
+
+2016-04-05 09:06 +0000 [c29e2e3fb7]  Joshua Colp <jcolp@digium.com>
+
+       * .version: Update for certified/13.8
+
+         Change-Id: I37e5a8e36c2f4f9137f8f230c99220005424e514
+
+2015-01-06 21:29 +0000 [3c796e694e]  Matt Jordan <mjordan@digium.com>
+
+       * Disable extended support modules
+
+         Change-Id: Ia2e359021b3eccecce20028098c5b6d1099c3f9e
+
+2016-03-28 18:10 +0000 [7b6c4decd3]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_stasis: Fix crash on a hanging up channel.
+
+         * Give the struct stasis_app_control ao2 object a ref to the channel held
+         in the object.  Now the channel will still be around if a thread needs to
+         post a stasis message instead of crash because the topic was destroyed.
+
+         * Moved stopping any lingering silence generator out of the struct
+         stasis_app_control destructor and made it a part of exiting the Stasis
+         application.  Who knows which thread the destructor will be called under
+         so it cannot affect the channel's silence generator.  Not only was the
+         channel unprotected when the silence generator was stopped, stasis may no
+         longer even control the channel.
+
+         ASTERISK-25882
+
+         Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
+
+2016-03-29 14:39 +0000 [fad0410486]  Mark Michelson <mmichelson@digium.com>
+
+       * ChangeLog: Updated for 13.8.0
+
+2016-03-29 14:39 +0000 [0f885f0076]  Mark Michelson <mmichelson@digium.com>
+
+       * Release summaries: Add summaries for 13.8.0
+
+2016-03-29 14:34 +0000 [a1fa37aebd]  Mark Michelson <mmichelson@digium.com>
+
+       * Release summaries: Remove previous versions
+
+2016-03-29 14:34 +0000 [e7de5fd439]  Mark Michelson <mmichelson@digium.com>
+
+       * .version: Update for 13.8.0
+
+2016-03-29 14:34 +0000 [8baf813848]  Mark Michelson <mmichelson@digium.com>
+
+       * .lastclean: Update for 13.8.0
+
+2016-03-29 14:34 +0000 [42469df205]  Mark Michelson <mmichelson@digium.com>
+
+       * realtime: Add database scripts for 13.8.0
+
+2016-03-22 13:32 +0000 [06f5ace1fa]  Mark Michelson <mmichelson@lunkwill>
+
+       * ChangeLog: Updated for 13.8.0-rc1
+
+2016-03-22 13:26 +0000 [a698424678]  Mark Michelson <mmichelson@lunkwill>
+
+       * Release summaries: Add summaries for 13.8.0-rc1
+
+2016-03-22 13:21 +0000 [e395a0b973]  Mark Michelson <mmichelson@lunkwill>
+
+       * .version: Update for 13.8.0-rc1
+
+2016-03-22 13:21 +0000 [38a86b2dbf]  Mark Michelson <mmichelson@lunkwill>
+
+       * .lastclean: Update for 13.8.0-rc1
+
+2016-03-22 13:21 +0000 [e0c8c8bf4a]  Mark Michelson <mmichelson@lunkwill>
+
+       * realtime: Add database scripts for 13.8.0-rc1
+
+2016-03-18 14:31 +0000 [6a40520fe9]  Kevin Harwell <kharwell@digium.com>
+
+       * chan_pjsip: ref leak when checking direct_media_glare
+
+         Fix the reference leak introduced in the following commit:
+
+         9444ddadf8525d1ce66a1faf1db97f9f6c265ca4
+
+         ASTERISK-25849
+
+         Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85
+2016-03-16 12:37 +0000 [9444ddadf8]  Kevin Harwell <kharwell@digium.com>
+
+       * chan_pjsip: transfers with direct media reinvite has wrong address/port
+
+         During a transfer involving direct media a race occurs between when the
+         transferer channel is swapped out, initiating rtp changes/updates, and the
+         subsequent reinvites.
+
+         When Alice, after speaking with Charlie (Bob is on hold), connects Bob and
+         Charlie invites are sent to each in order to establish the call between them.
+         Bob is taken off hold and Charlie is told to have his media flow through
+         Asterisk. However, if before those invites go out the bridge updates Bob's
+         and/or Charlie's rtp information with direct media data (i.e. address, port)
+         then the invite(s) will contain the remote data in the SDP instead of the
+         Asterisk data.
+
+         The race occurs in the native bridge glue code when updating the peer. The
+         direct_media_address can get set twice before sending out the first invite
+         during call connection. This can happen because the checking/setting of the
+         direct_media_address happened in one thread while the sending of the invite(s)
+         happened in another thread.
+
+         This fix removes the race condition by moving the checking/setting of the
+         direct_media_address to be in the same thread as the sending of the invites(s).
+         This serializes the checking/setting and sending so they can no longer happen
+         out of order.
+
+         ASTERISK-25849 #close
+
+         Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873
+
+2015-10-19 07:11 +0000 [88240f98d9]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+
+       * install_prereq: Update repositories before install on Debian systems
+
+         When to install packages the indexed local is more old of the
+         version of software on the repository they have been upgraded by security
+         update then get the package will give 404 not found.
+
+         The patch prevent by update local index to repository for aptitude before
+         install.
+
+         ASTERISK-25495 #close
+
+         Reporte by: Rodrigo Ramírez Norambuena
+
+         Change-Id: I645959e553aac542805ced394cac2dca964051fa
+         (cherry picked from commit 88f3dbaec9509bfba8bc1de7799aa0dc65304bb5)
+
+2015-06-03 20:12 +0000 [efcf9a96db]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+
+       * install_prereq: Check if is installed aptitude otherwise to install.
+
+         If in Debian or system based, dont have aptitude installed the script do
+         nothing. This patch checked if aptitude  installed, if not installed.
+
+         Also, if execute script with all packages installed yet, the script not show
+         nothing and return exit 1 because the command 'grep' get nothing from pipe from
+         'awk'.
+
+         ASTERISK-25113 #close
+         Reported By: Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+
+         Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f
+         (cherry picked from commit 6737ded0581a9e1256bdfe30c1d747e7ca93f8b3)
+
+2016-03-03 04:43 +0000 [2b1b8e382a]  Sergio Medina Toledo <lumasepa@gmail.com>
+
+       * res_pjsip_refer.c: Fix seg fault in process of Refer-to header.
+
+         The "Refer-to" header of an incoming REFER request is parsed by
+         pjsip_parse_uri().  That function requires the URI parameter to be NULL
+         terminated.  Unfortunately, the previous code added the NULL terminator by
+         overwriting memory that may not be safe.  The overwritten memory results
+         could be benign, memory corruption, or a segmentation fault.  Now the URI
+         is NULL terminated safely by copying the URI to a new chunk of memory with
+         the correct size to be NULL terminated.
+
+         ASTERISK-25814 #close
+
+         Change-Id: I32565496684a5a49c3278fce06474b8c94b37342
+
+2016-03-11 12:22 +0000 [de04308ae4]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix mwi resub deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023 #close
+
+         Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6
+
+2016-03-10 17:01 +0000 [5f6627a8a4]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix registration timeout and expire deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023
+
+         Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508
+
+2016-03-10 12:17 +0000 [32bd7a64f9]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix t38id deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023
+
+         Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f
+
+2016-03-09 16:34 +0000 [43556b800b]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix reinviteid deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023
+
+         Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1
+
+2016-03-09 16:32 +0000 [38c1cdab2c]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix packet retransid deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         * Fix retrans_pkt() to call check_pendings() with both the owner channel
+         and the private objects locked as required.
+
+         * Refactor dialog retransmission packet list to safely remove packet
+         nodes.  The list nodes are now ao2 objects.  The list has a ref and the
+         scheduled entry has a ref.
+
+         ASTERISK-25023
+
+         Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641
+
+2016-03-09 16:26 +0000 [e4ad55c888]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix waitid deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         * Made always run check_pendings() under the scheduler thread so scheduler
+         ids can be checked safely.
+
+         ASTERISK-25023
+
+         Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52
+
+2016-03-08 15:08 +0000 [98d5669c28]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix session timers deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023
+
+         Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900
+
+2016-03-07 13:21 +0000 [9cb8f73226]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix autokillid deadlock potential.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         * Fix clearing autokillid in __sip_autodestruct() even though we could
+         reschedule.
+
+         ASTERISK-25023
+
+         Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f
+
+2016-03-07 18:28 +0000 [c5c7f48a15]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix provisional_keepalive_sched_id deadlock.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Stopping a scheduled event can result in a deadlock if the scheduled event
+         is running when you try to stop the event.  If you hold a lock needed by
+         the scheduled event while trying to stop the scheduled event then a
+         deadlock can happen.  The general strategy for resolving the deadlock
+         potential is to push the actual starting and stopping of the scheduled
+         events off onto the scheduler/do_monitor() thread by scheduling an
+         immediate one shot scheduled event.  Some restructuring may be needed
+         because the code may assume that the start/stop of the scheduled events is
+         immediate.
+
+         ASTERISK-25023
+
+         Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48
+
+2016-03-09 11:22 +0000 [f959d84dfd]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         * Make dialog_unlink_all() unschedule all items at once in the sched
+         thread.
+
+         ASTERISK-25023
+
+         Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4
+
+2016-03-10 21:54 +0000 [5f3225ddcc]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Clear scheduled immediate events on unload.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         The reordering of chan_sip's shutdown is to handle any immediate events
+         that get put onto the scheduler so resources aren't leaked.  The typical
+         immediate events at this time are going to be concerned with stopping
+         other scheduled events.
+
+         ASTERISK-25023
+
+         Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20
+
+2016-03-15 14:51 +0000 [7a74971771]  Richard Mudgett <rmudgett@digium.com>
+
+       * sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         Delaying destruction of the chan_sip sip_pvt structures caused the
+         /channels/chan_sip/test_sip_rtpqos unit test to crash.  That test
+         registers a special test ast_rtp_engine with the rtp engine module.  When
+         the unit test completes it cleans up by unregistering the test
+         ast_rtp_engine and exits.  Since the delayed destruction of the sip_pvt
+         happens after the unit test returns, the destructor tries to call the rtp
+         engine destroy callback of the test ast_rtp_engine auto variable which no
+         longer exists on the stack.
+
+         * Change the test ast_rtp_engine auto variable to a static variable.  Now
+         the variable can still exist after the unit test exits so the delayed
+         sip_pvt destruction can complete successfully.
+
+         ASTERISK-25023
+
+         Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13
+
+2016-03-15 13:31 +0000 [d2c09ed73b]  Andrew Nagy <andrew.nagy@the159.com>
+
+       * app_stasis: Don't hang up if app is not registered
+
+         This prevents pbx_core from hanging up the channel if the app isn't
+         registered.
+
+         ASTERISK-25846 #close
+
+         Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce
+2016-03-07 15:50 +0000 [b2d2906445]  Richard Mudgett <rmudgett@digium.com>
+
+       * sched.c: Ensure oldest expiring entry runs first.
+
+         This patch is part of a series to resolve deadlocks in chan_sip.c.
+
+         * Updated sched unit test to check new behavior.
+
+         ASTERISK-25023
+
+         Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3
+
+2016-03-04 18:25 +0000 [9ae21b510f]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full().
+
+         Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12
+
+2016-03-07 18:56 +0000 [56bcb97a3c]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Simplify sip_pvt destructor call levels.
+
+         Remove destructor calling destroy_it calling really_destroy_it
+         for no benefit.  Just make the destructor the really_destroy_it
+         function.
+
+         Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a
+
+2016-03-14 08:59 +0000 [677a65fcbb]  Joshua Colp <jcolp@digium.com>
+
+       * build: Add configure check for proto field of PJSIP TLS transport setting.
+
+         Older versions of PJSIP do not have the proto field on the TLS transport
+         setting structure. This change adds a configure check so even if it is
+         not present we will still be able to build.
+
+         Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9
+
+2016-03-12 16:02 +0000 [32f0a3d52a]  gtjoseph <george.joseph@fairview5.com>
+
+       * build_system:  Split COMPILE_DOUBLE from DONT_OPTIMIZE
+
+         I can't ever recall actually needing the intermediate files or the checking
+         that a double compile produces.  What I CAN remember is every DONT_OPTIMIZE
+         build needing 3 invocations of gcc instead of 1 just to do the checks and
+         produce those intermediate files.
+
+         Having said that, Richard pointed out that the reason for the double compile
+         was that there were cases in the past where a submitted patch failed to compile
+         because the submitter never tried it with the optimizations turned on.
+
+         To get the best of both worlds, COMPILE_DOUBLE has been split into its own
+         option.  If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected
+         BUT you can then turn it off if all you need are the debugging symbols.  This
+         way you have to make an informed decision about disabling COMPILE_DOUBLE.
+
+         To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature
+         was added to menuselect.  The <use> element can now contain an "autoselect"
+         attribute which will turn the used member on but not create a hard dependency.
+         The cflags.xml implementation for COMPILE_DOUBLE looks like this...
+
+         <member name="DONT_OPTIMIZE" displayname="Disable Optimizations ...">
+               <use autoselect="yes">COMPILE_DOUBLE</use>
+               <support_level>core</support_level>
+         </member>
+         <member name="COMPILE_DOUBLE" displayname="Pre-compile with ...>
+               <depend>DONT_OPTIMIZE</depend>
+               <support_level>core</support_level>
+         </member>
+
+         When DONT_OPTIMIZE is turned on, COMPILE_DOUBLE is turned on because
+         of the use.
+         When DONT_OPTIMIZE is turned off, COMPILE_DOUBLE is turned off because
+         of the depend.
+         When COMPILE_DOUBLE is turned on, DONT_OPTIMIZE is turned on because
+         of the depend.
+         When COMPILE_DOUBLE is turned off, DONT_OPTIMIZE is left as is because
+         it only uses COMPILE_DOUBLE, it doesn't depend on it.
+
+         I also made a few tweaks to the ncurses implementation to move things
+         left a bit to allow longer descriptions.
+
+         Change-Id: Id49ca930ac4b5ec4fc2d8141979ad888da7b1611
+
+2016-03-10 13:09 +0000 [38499e7125]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject:  Pass (dont_)optimize flags to pjproject and fix pjsua
+
+         The pjproject Makefile now uses the Asterisk optimization flags which
+         are determined by the setting of the DONT_OPTMIZE menuselect flag.
+         The Makefile was also restructured so a change to the top level
+         menuselect.makeopts will result in a rebuild of pjproject.
+
+         Also, "--disable-resample" was removed from the pjproject configure
+         options.  Without resample, pjsua (which is used by the testsuite)
+         can't make audio calls.  When it can't, it segfaults.
+
+         Change-Id: I24b0a4d0872acef00ed89b3c527a713ee4c2ccd4
+
+2016-03-11 16:03 +0000 [336cae73cc]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * app_chanspy: Fix occasional deadlock with ChanSpy and Local channels.
+
+         Channel masquerading had a conflict with autochannel locking.
+
+         When locking autochannel->channel, the channel is fetched from the
+         autochannel and then locked. During the fetch, the autochannel -- which
+         has no locks itself -- can be modified by someone who owns the channel
+         lock. That means that the value of autochan->channel cannot be trusted
+         until you hold the lock.
+
+         In practice, this caused problems with Local channels getting
+         masqueraded away while the ChanSpy attempted to get info from that
+         channel. The old channel which was about to get removed got locked, but
+         the new (replaced) channel got unlocked (no-op). Because the replaced
+         channel was now locked (and would never get unlocked), it couldn't get
+         removed from the channel list in a timely manner, and would now cause
+         deadlocks when iterating over the channel list.
+
+         This change checks the autochannel after locking the channel for changes
+         to the autochannel. If the channel had been changed, the lock is
+         reobtained on the new channel.
+
+         In theory it seems possible that after this fix, the lock attempt on the
+         old (wrong) channel can be on an already destroyed lock, maybe causing
+         a crash. But that hasn't been observed in the wild and is harder induce
+         than the current deadlock.
+
+         Thanks go to Filip Frank for suggesting a fix similar to this and
+         especially to IRC user hexanol for pointing out why this deadlock was
+         possible and testing this fix. And to Richard for catching my rookie
+         while loop mistake ;)
+
+         ASTERISK-25321 #close
+
+         Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def
+
+2016-03-07 21:34 +0000 [875d5e9872]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjproject_bundled: Remove --with-external-pa from configure options.
+
+         Not sure why it was there in the first place as we already specify
+         --disable-sound.
+
+         Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9
+
+2016-03-06 14:38 +0000 [530cff5f5f]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Strip spaces from items parsed from comma-separated lists
+
+         Configurations like "aors = a, b, c" were either ignoring everything after "a"
+         or trying to look up " b".  Same for mailboxes,  ciphers, contacts and a few
+         others.
+
+         To fix, all the strsep(&copy, ",") calls have been wrapped in ast_strip.  To
+         facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were
+         updated to handle null pointers.
+
+         In some cases, an ast_strlen_zero() test was added to skip consecutive commas.
+
+         There was also an attempt to ast_free an ast_strdupa'd string in
+         ast_sip_for_each_aor which was causing a SEGV.  I removed it.
+
+         Although this issue was reported for realtime, the issue was in the res_pjsip
+         modules so all config mechanisms were affected.
+
+         ASTERISK-25829 #close
+         Reported-by: Mateusz Kowalski
+
+         Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2
+
+2016-03-04 20:37 +0000 [3c8076a83b]  gtjoseph <george.joseph@fairview5.com>
+
+       * install_prereq: Add packages for bundled pjproject
+
+         RedHat/CentOS needs python-devel
+         Debian/Ubuntu needs automake, libsrtp-dev and python-dev
+
+         Ubuntu also needed libncurses5-dev for cmenuselect so while not
+         needed for pjproject, I adedd it anyway.
+
+         Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089
+
+2016-02-24 17:25 +0000 [27f32cd0a6]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited
+
+         Per RFC3325, the 'From' header is now anonymized on outgoing calls when
+         caller id presentation is prohibited.
+
+         TID = trust_id_outbound
+         PRO = Set(CALLERID(pres)=prohib)
+         USR = endpoint/from_user
+         DOM = endpoint/from_domain
+         PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes)
+
+         Conditions          |Result
+         --------------------|----------------------------------------------------
+         TID PRO USR DOM     |PAI    FROM
+         --------------------|----------------------------------------------------
+         Y   Y   abc def.ghi |PRI    "Anonymous" <sip:abc@def.ghi>
+         Y   Y   abc         |PRI    "Anonymous" <sip:abc@anonymous.invalid>
+         Y   Y       def.ghi |PRI    "Anonymous" <sip:anonymous@def.ghi>
+         Y   Y               |PRI    "Anonymous" <sip:anonymous@anonymous.invalid>
+
+         Y   N   abc def.ghi |YES    <sip:abc@def.ghi>
+         Y   N   abc         |YES    <sip:abc@<ip_address>>
+         Y   N       def.ghi |YES    "Caller Name" <sip:<caller_exten>@def.ghi>
+         Y   N               |YES    "Caller Name" <sip:<caller_exten>@<ip_address>>
+
+         N   Y   abc def.ghi |NO     "Anonymous" <sip:abc@def.ghi>
+         N   Y   abc         |NO     "Anonymous" <sip:abc@anonymous.invalid>
+         N   Y       def.ghi |NO     "Anonymous" <sip:anonymous@def.ghi>
+         N   Y               |NO     "Anonymous" <sip:anonymous@anonymous.invalid>
+
+         N   N   abc def.ghi |YES    <sip:abc@def.ghi>
+         N   N   abc         |YES    <sip:abc@<ip_address>>
+         N   N       def.ghi |YES    "Caller Name" <sip:<caller_exten>@def.ghi>
+         N   N               |YES    "Caller Name" <sip:<caller_exten>@<ip_address>>
+
+         ASTERISK-25791 #close
+         Reported-by: Anthony Messina
+
+         Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9
+
+2016-03-03 17:34 +0000 [7cf7b0a4f9]  gtjoseph <george.joseph@fairview5.com>
+
+       * third_party/Makefile.rules:  Replace unsupported != operator with $(shell ...)
+
+         Apparently the != operator is fairly new so I've replaced it with
+         the old $(shell ...) syntax.
+
+         Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479
+         Reported-by: Richard Mudgett
+2016-01-23 15:50 +0000 [53f57001f2]  gtjoseph <george.joseph@fairview5.com>
+
+       * loader: Retry dlopen when loading fails
+
+         Although we use the RTLD_LAZY flag when calling dlopen
+         the first time on a module, this only defers resolution
+         for function calls.  Pointer references to functions are
+         determined at link time so dlopen expects them to be there.
+         Since we don't cross-module link, pointers to functions
+         in other modules won't be available and dlopen will fail.
+
+         Doing a "hardened" build also causes problems because it
+         typically sets "-z now" on the ld command line which
+         overrides RTLD_LAZY at run time.
+
+         If the failing module isn't a GLOBAL_SYMBOLS module, then
+         dlopen will be called again after all the GLOBAL_SYMBOLS
+         modules have been loaded and they'll eventually resolve.
+
+         If the calling module IS a GLOBAL_SYMBOLS module itself
+         and a third module depends on it, then there's an issue
+         because the second time through the dlopen loop,
+         GLOBAL_SYMBOLS modules aren't given any special treatment
+         and since the order in which dlopen is called isn't
+         deterministic, the dependent may again be tried before the
+         module it needs is loaded.
+
+         Simple solution:  Save modules that fail load_resource
+         because of a dlopen error in a list and retry them
+         immediately after the first pass. Keep retrying until
+         the failed list is empty or we reach a #defined max
+         retries. Error messages are suppressed until the final
+         pass which also gets rid of those confusing error messages
+         about module failures that are later corrected.
+
+         Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb
+
+2016-03-01 16:18 +0000 [40d9e9e238]  Kevin Harwell <kharwell@digium.com>
+
+       * bridge.c: Crash during attended transfer when missing a local channel half
+
+         It's possible for the transferer channel to get hung up early during the
+         attended transfer process. For instance, a phone may send a "bye" immediately
+         upon receiving a sip notify that contains a sip frag 100 (I'm looking at you
+         Jitsi). When this occurs a race begins between the transferer being hung up
+         and completion of the transfer code.
+
+         If the channel hangs up too early during a transfer involving stasis bridging
+         for instance, then when the created local channel goes to look up its swap
+         channel (and associated datastore) it can't find it (since it is no longer in
+         the bridge) thus it fails to enter the stasis application. Consequently, the
+         created local channel(s) hang up as well. If the timing is just right then the
+         bridging code attempts to add the message link with missing local channel(s).
+         Hence the crash.
+
+         Unfortunately, there is no great way to solve the problem of the unexpected
+         "bye". While we can't guarantee we won't receive an early hangup, and in this
+         case still fail to enter the stasis application, we can make it so asterisk
+         does not crash.
+
+         This patch does just that by locking the local channel structure, checking
+         that the local channel's peer has not been lost, and then continuing. This
+         keeps the local channel's peer from being ripped out from underneath it by
+         the local/unreal hangup code while attempting to set the stasis message link.
+
+         ASTERISK-25771
+
+         Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880
+
+2016-03-01 18:08 +0000 [ff3da61c35]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100
+
+         During the transfer process, some phones (okay it was the Jitsi softphone,
+         but maybe others are out there) send a "bye" immediately after receiving a
+         SIP Notify. When a "bye" is received early for some types of transfers the
+         transferer channel may no longer be available during late stage transfer
+         processing.
+
+         For instance, during an attended transfer involving stasis bridging at one
+         point the created local channel looks for an associated swap channel in
+         order to retrieve the stasis application name. If the transferer has hung
+         up then the local channel will fail to find it. The local channel then has
+         no way to know which stasis app to enter, so it fails and hangs up as well.
+         Thus the transfer does not complete as expected.
+
+         This patch delays the sending of the initial notify in order to give the
+         transfer process enough time to gather the necessary data for a successful
+         transfer.
+
+         ASTERISK-25771
+
+         Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16
+
+2016-03-03 08:26 +0000 [26b8f2692e]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_dtmf_info: NULL terminate the message body.
+
+         PJSIP does not ensure that when printing the message body the
+         buffer will be NULL terminated. This is problematic when searching
+         for the signal and duration values of the DTMF.
+
+         This change ensures the buffer is always NULL terminated.
+
+         Change-Id: I52653a1a60c93092d06af31a27408d569cc98968
+
+2016-03-01 20:03 +0000 [86d6e44cc1]  gtjoseph <george.joseph@fairview5.com>
+
+       * alembic: Fix downgrade and tweak for sqlite
+
+         Downgrade had a few issues.  First there was an errant 'update' statement in
+         add_auto_dtmf_mode that looks like it was a copy/paste error.  Second, we
+         weren't cleaning up the ENUMs so subsequent upgrades on postgres failed
+         because the types already existed.
+
+         For sqlite...  sqlite doesn't support ALTER or DROP COLUMN directly.
+         Fortunately alembic batch_operations takes care of this for us if we
+         use it so the alter and drops were converted to use batch operations.
+
+         Here's an example downgrade:
+
+             with op.batch_alter_table('ps_endpoints') as batch_op:
+                 batch_op.drop_column('tos_audio')
+                 batch_op.drop_column('tos_video')
+                 batch_op.add_column(sa.Column('tos_audio', yesno_values))
+                 batch_op.add_column(sa.Column('tos_video', yesno_values))
+                 batch_op.drop_column('cos_audio')
+                 batch_op.drop_column('cos_video')
+                 batch_op.add_column(sa.Column('cos_audio', yesno_values))
+                 batch_op.add_column(sa.Column('cos_video', yesno_values))
+
+             with op.batch_alter_table('ps_transports') as batch_op:
+                 batch_op.drop_column('tos')
+                 batch_op.add_column(sa.Column('tos', yesno_values))
+             # Can't cast integers to YESNO_VALUES, so dropping and adding is required
+                 batch_op.drop_column('cos')
+                 batch_op.add_column(sa.Column('cos', yesno_values))
+
+         Upgrades from base to head and downgrades from head to base were tested
+         repeatedly for postgresql, mysql/mariadb, and sqlite3.
+
+         Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8
+
+2016-03-02 15:55 +0000 [6f0d7ce9db]  gtjoseph <george.joseph@fairview5.com>
+
+       * config_transport:  Fix objects returned by ast_sip_get_transport_states
+
+         ast_sip_get_transport_states was returning a container of internal_state
+         objects instead of ast_sip_transport_state objects.  This was causing
+         transport lookups to fail, most noticably in res_pjsip_nat, which
+         couldn't find the correct external addresses.  This was causing contacts
+         to go out with internal ip addresses.
+
+         ASTERISK-25830 #close
+         Reported-by: Sean Bright
+
+         Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e
+
+2016-03-02 11:17 +0000 [1ea7a5a774]  Scott Griepentrog <scott@griepentrog.com>
+
+       * CHAOS: cleanup possible null vars on msg alloc failure
+
+         In message.c, if msg_alloc fails to init the string field,
+         vars may be null, so use a null tolerant cleanup.
+
+         In res_pjsip_messaging.c, if msg_data_create fails, mdata
+         will be null, so use a null tolerant cleanup.
+
+         ASTERISK-25323
+
+         Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56
+
+2016-03-02 09:34 +0000 [3c37c7071f]  Scott Griepentrog <scott@griepentrog.com>
+
+       * CHAOS: prevent crash on failed strdup
+
+         This patch avoids crashing on a null pointer
+         if the strdup() allocation fails.
+
+         ASTERISK-25323
+
+         Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5
+
+2016-02-29 18:11 +0000 [9633be9d25]  Richard Mudgett <rmudgett@digium.com>
+
+       * func_callerid.c: Update REDIRECTING reason documentation.
+
+         Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386
+
+2016-02-26 18:57 +0000 [4165ea7778]  Richard Mudgett <rmudgett@digium.com>
+
+       * SIP diversion: Fix REDIRECTING(reason) value inconsistencies.
+
+         Previous chan_sip behavior:
+
+         Before this patch chan_sip would always strip any quotes from an incoming
+         reason and pass that value up as the REDIRECTING(reason).  For an outgoing
+         reason value, chan_sip would check the value against known values and
+         quote any it didn't recognize.  Incoming 480 response message reason text
+         was just assigned to the REDIRECTING(reason).
+
+         Previous chan_pjsip behavior:
+
+         Before this patch chan_pjsip would always pass the incoming reason value
+         up as the REDIRECTING(reason).  For an outgoing reason value, chan_pjsip
+         would send the reason value as passed down.
+
+         With this patch:
+
+         Both channel drivers match incoming reason values with values documented
+         by REDIRECTING(reason) and values documented by RFC5806 regardless of
+         whether they are quoted or not.  RFC5806 values are mapped to the
+         equivalent REDIRECTING(reason) documented value and is set in
+         REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a
+         quoted string version ('"unconditional"') is converted to
+         REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal
+         with 'cfu' instead of any of the aliases.
+
+         The incoming 480 response reason text supported by chan_sip checks for
+         known reason values and if not matched then puts quotes around the reason
+         string and assigns that to REDIRECTING(reason).
+
+         Both channel drivers send outgoing known REDIRECTING(reason) values as the
+         unquoted RFC5806 equivalent.  User custom values are either sent as is or
+         with added quotes if SIP doesn't allow a character within the value as
+         part of a RFC3261 Section 25.1 token.  Note that there are still
+         limitations on what characters can be put in a custom user value.  e.g.,
+         embedding quotes in the middle of the reason string is silly and just
+         going to cause you grief.
+
+         * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
+         e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
+         'cfu' value.
+
+         * Added missing malloc() NULL return check in res_pjsip_diversion.c
+         set_redirecting_reason().
+
+         * Fixed potential read from a stale pointer in res_pjsip_diversion.c
+         add_diversion_header().  The reason string needed to be copied into the
+         tdata memory pool to ensure that the string would always be available.
+         Otherwise, if the reason string returned by reason_code_to_str() was a
+         user's reason string then the string could be freed later by another
+         thread.
+
+         Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87
+
+2016-02-26 18:54 +0000 [41f4af4ce5]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason.
+
+         Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd
+
+2016-02-29 20:41 +0000 [4c5998ff55]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref.
+
+         * Fix double unref of other_party channel in off nominal path.
+
+         * This is unlikely to be a real problem.  However, for safety,
+         in handle_incoming_request() keep the datastore ref with the
+         other_party channel ref until we are finished with the other_party
+         channel.
+
+         Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821
+
+2016-01-18 21:54 +0000 [b59956a875]  gtjoseph <george.joseph@fairview5.com>
+
+       * build-system: Allow building with static pjproject
+
+         Background here:
+         http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html
+
+         From CHANGES:
+          * To help insure that Asterisk is compiled and run with the same known
+            version of pjproject, a new option (--with-pjproject-bundled) has been
+            added to ./configure.  When specified, the version of pjproject specified
+            in third-party/versions.mak will be downloaded and configured.  When you
+            make Asterisk, the build process will also automatically build pjproject
+            and Asterisk will be statically linked to it.  Once a particular version
+            of pjproject is configured and built, it won't be configured or built
+            again unless you run a 'make distclean'.
+
+            To facilitate testing, when 'make install' is run, the pjsua and pjsystest
+            utilities and the pjproject python bindings will be installed in
+            ASTDATADIR/third-party/pjproject.
+
+            The default behavior remains building with the shared pjproject
+            installation, if any.
+
+         Building:
+
+            All you have to do is include the --with-pjproject-bundled option on
+            the ./configure command line (and remove any existing --with-pjproject
+            option if specified).  Everything else is automatic.
+
+         Behind the scenes:
+
+            The top-level Makefile was modified to include 'third-party' in the
+            list of MOD_SUBDIRS.
+
+            The third-party directory was created to contain any third party
+            packages that may be needed in the future.  Its Makefile automatically
+            iterates over any subdirectories passing on targets.
+
+            The third-party/pjproject directory was created to house the pjproject
+            source distribution.  Its Makefile contains targets to download, patch
+            configure, generate dependencies, compile libs, apps and python bindings,
+            sanitized build.mak and generate a symbols list.
+
+            When bootstrap.sh is run, it automatically includes the configure.m4
+            file in third-party/pjproject.  This file has a macro to download and
+            conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR
+            and PJPROJECT_BUNDLED.  It also tests for the capabilities like
+            PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to
+            trying to compile.  Of course, bootstrap.sh is only run once and the
+            configure file is incldued in the patch.
+
+            When configure is run with the new options, the macro in configure.m4
+            triggers the download, patch, conifgure and tests.  No compilation is
+            performed at this time.  The downloaded tarball is cached in /tmp so
+            it doesn't get downloaded again on a distclean.
+
+            When make is run in the top-level Asterisk source directory, it will
+            automatically descend all the subdirectories in third_party just as it
+            does for addons, apps, etc.  The top-level Makefile makes sure that
+            the 'third-party' is built before 'main' so that dependencies from the
+            other directories are built first.
+
+            When main does build, a new shared library (libasteriskpj) is created that
+            links statically to the pjproject .a files and exports all their symbols.
+            The asterisk binary links to that, just as it does with libasteriskssl.
+
+            When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject
+            python bindings are installed in ASTDATADIR/third-party/pjproject.  This
+            will facilitate testing, including running the testsuite which will be
+            updated to check that directory for the pjsua module ahead of the system
+            python library.
+
+         Modules should continue to depend on pjproject if they use pjproject APIs
+         directly.  They should not care about the implementation.  No changes to any
+         res_pjsip modules were made.
+
+         Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103
+
+2016-02-22 16:59 +0000 [18a323e542]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Fix T.38 issues caused by leaving a bridge.
+
+         chan_sip could not handle AST_T38_TERMINATED frames being sent to it when
+         the channel left the bridge.  The action resulted in overlapping outgoing
+         reINVITEs.  The testsuite tests/fax/sip/directmedia_reinvite_t38 was not
+         happy.
+
+         * Force T.38 to be remembered as locally bridged.  Now when the channel
+         leaves the native RTP bridge after T.38, the channel remembers that it has
+         already reINVITEed the media back to Asterisk.  It just needs to terminate
+         T.38 when the AST_T38_TERMINATED arrives.
+
+         * Prevent redundant AST_T38_TERMINATED from causing problems.  Redundant
+         AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if
+         they happen before the T.38 state changes to disabled.  Now the T.38 state
+         is set to disabled before the reINVITE is sent.
+
+         ASTERISK-25582 #close
+
+         Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce
+
+2016-02-18 18:27 +0000 [263a39f2cc]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_t38.c: Back out part of an earlier fix attempt.
+
+         This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d
+         commit.  Item 4 added the t38_bye_supplement.  Unfortunately, the frame
+         that it puts into the bridge may or may not be processed by the time the
+         bridged peer is kicked out of the bridge.  If it is processed then all is
+         well.  However, if it is not processed then that channel is stuck in fax
+         mode until it hangs up or maybe if it joins another bridge for T.38
+         faxing.
+
+         ASTERISK-25582
+
+         Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7
+
+2016-02-22 13:54 +0000 [221422be50]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge core: Add owed T.38 terminate when channel leaves a bridge.
+
+         The channel is now going to get T.38 terminated when it leaves the
+         bridging system and the bridged peers are going to get T.38 terminated as
+         well.
+
+         ASTERISK-25582
+
+         Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7
+
+2016-02-19 16:01 +0000 [0a5bc64491]  Richard Mudgett <rmudgett@digium.com>
+
+       * channel api: Create is_t38_active accessor functions.
+
+         ASTERISK-25582
+
+         Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b
+
+2016-02-19 19:06 +0000 [513638a5f4]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge_channel: Don't settle owed events on an optimization.
+
+         Local channel optimization could cause DTMF digits to be duplicated.
+         Pending DTMF end events would be posted to a bridge when the local channel
+         optimizes out and is replaced by the channel further down the chain.  When
+         the real digit ends, the channel would get another DTMF end posted to the
+         bridge.
+
+         A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B
+
+         1) LocalA has the /n flag to prevent optimization.
+         2) B is sending DTMF to A through the local channel chain.
+         3) When LocalB optimizes out it can move B to the position of LocalB;1
+         4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would
+         settle an owed DTMF end to the bridge toward LocalA;2.
+         5) When B finally ends its DTMF it sends the DTMF end down the chain.
+         6) Without this patch, A would hear the DTMF digit end when LocalB
+         optimizes out and when B ends the original digit.
+
+         ASTERISK-25582
+
+         Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251
+
+2016-02-22 12:15 +0000 [7c4495cb70]  Richard Mudgett <rmudgett@digium.com>
+
+       * channel.c: Route all control frames to a channel through the same code.
+
+         Frame hooks can conceivably return a control frame in exchange for an
+         audio frame inside ast_write().  Those returned control frames were not
+         handled quite the same as if they were sent to ast_indicate().  Now it
+         doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a
+         channel or ast_indicate().
+
+         ASTERISK-25582
+
+         Change-Id: I5775f41421aca2b510128198e9b827bf9169629b
+
+2016-02-25 15:13 +0000 [48d713a832]  gtjoseph <george.joseph@fairview5.com>
+
+       * sorcery:  Refactor create, update and delete to better deal with caches
+
+         The ast_sorcery_create, update and delete function have been refactored
+         to better deal with caches and errors.
+
+         The action is now called on all non-caching wizards first. If ANY succeed,
+         the action is called on all caching wizards and the observers are notified.
+         This way we don't put something in the cache (or update or delete) before
+         knowing the action was performed in at least 1 backend and we only call the
+         observers once even if there were multiple writable backends.
+
+         ast_sorcery_create was never adding to caches in the first place which
+         was preventing contacts from getting added to a memory_cache when they
+         were created.  In turn this was causing memory_cache to emit errors if
+         the contact was deleted before being retrieved (which would have
+         populated the cache).
+
+         ASTERISK-25811 #close
+         Reported-by: Ross Beer
+
+         Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46
+2016-02-25 15:39 +0000 [ee947d4a7a]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_mwi:  Turn some NOTICEs and WARNINGs into debug 1s.
+
+         There are a few cases where we're emitting notices or warnings
+         for things that really need neither, like a client retrying to subscribe
+         to mwi when they're not conifgured for it.  They get a 404 so there's no
+         need for non-debug messages.
+
+         Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f
+2016-02-25 14:17 +0000 [6e70e8ccdb]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_sorcery_memory_cache:  Fix SEGV in some CLI commands
+
+         A few of the CLI commands weren't checking for enough arguments
+         and were SEGVing.
+
+         Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413
+
+2016-02-25 10:29 +0000 [4417f64d83]  Leif Madsen <leif@leifmadsen.com>
+
+       * Add initial support to build Docker images
+
+         This work-in-progress is the first step to being able to reliably
+         build Asterisk containers from the Asterisk source. I'm submitting
+         this based on feedback gained at AstriDevCon 2015.
+
+         Information about how to use this is provided in contrib/docker/README.md
+         and will result in a local Asterisk container being built right from
+         your source. I believe this can eventually be automated via
+         hub.docker.com.
+
+         Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1
+
+2016-02-22 19:31 +0000 [e7a6abbbd3]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.h: Remove extraneous semicolons.
+
+         Change-Id: Ib462633d396fa941379dfef648dcd2245e350084
+
+2016-02-23 14:57 +0000 [6656afffa0]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Suppress T.38 SDP c= line if addr is the same.
+
+         Use the correct comparison function since we only care if the address
+         without the port is the same.
+
+         Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0
+
+2016-02-16 08:14 +0000 [ea9deff996]  Christof Lauber <christof.lauber@annax.ch>
+
+       * res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables
+
+         Introduced realloaction of ast_str buf in sqlite3_escape functions in case
+         the returned buffer from threadstorage was actually too small.
+
+         Change-Id: I3c5eb43aaade93ee457943daddc651781954c445
+
+2016-02-11 11:01 +0000 [d2a1457e0b]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/config_transport: Allow reloading transports.
+
+         The 'reload' mechanism actually involves closing the underlying
+         socket and calling the appropriate udp, tcp or tls start functions
+         again.  Only outbound_registration, pubsub and session needed work
+         to reset the transport before sending requests to insure that the
+         pjsip transport didn't get pulled out from under them.
+
+         In my testing, no calls were dropped when a transport was changed
+         for any of the 3 transport types even if ip addresses or ports were
+         changed. To be on the safe side however, a new transport option was
+         added (allow_reload) which defaults to 'no'.  Unless it's explicitly
+         set to 'yes' for a transport, changes to that transport will be ignored
+         on a reload of res_pjsip.  This should preserve the current behavior.
+
+         Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf
+
+2016-02-07 17:34 +0000 [6b921f706d]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjproject:  Add ability to map pjproject log levels to Asterisk log levels
+
+         Warnings and errors in the pjproject libraries are generally handled by
+         Asterisk.  In many cases, Asterisk wouldn't even consider them to be warnings
+         or errors so the messages emitted by pjproject directly are either superfluous
+         or misleading.  A good exampe of this are the level-0 errors pjproject emits
+         when it can't open a TCP/TLS socket to a client to send an OPTIONS.  We don't
+         consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS
+         client be treated any differently?
+
+         A config file for res_pjproject has bene added (pjproject.conf) and a new
+         log_mappings object allows mapping pjproject levels to Asterisk levels
+         (or nothing).  The defaults if no pjproject.conf file is found are the same
+         as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR,
+         2 = LOG_WARNING, 3,4,5 = LOG_DEBUG<level>
+
+         Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898
+
+2016-02-18 10:55 +0000 [f295088764]  Alexei Gradinari <alex2grad@gmail.com>
+
+       * res_pjsip_outbound_publish: Fix processing 412 response
+
+         When Asterisk receives a 412 (Conditional Request Failed) response
+         it has to recreate publish session.
+         There is bug in res_pjsip_outbound_publish.c
+         The function sip_outbound_publish_client_alloc is called with wrong object
+         while processing 412 (Conditional Request Failed) response.
+         This patch fixes it.
+
+         ASTERISK-25229 #close
+
+         Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359
+2016-02-18 11:15 +0000 [f1f79812c1]  Mark Michelson <mmichelson@digium.com>
+
+       * Fix failing threadpool_auto_increment test.
+
+         The threadpool_auto_increment test fails infrequently for a couple of
+         reasons
+         * The threadpool listener was notified of fewer tasks being pushed than
+           were actually pushed
+         * The "was_empty" flag was set to an unexpected value.
+
+         The problem is that the test pushes three tasks into the threadpool.
+         Test expects the threadpool to essentially gather those three tasks, and
+         then distribute those to the threadpool threads. It also expects that as
+         the tasks are pushed in, the threadpool listener is alerted immediately
+         that the tasks have been pushed. In reality, a task can be distributed
+         to the threadpool threads quicker than expected, meaning that the
+         threadpool has already emptied by the time each subsequent task is
+         pushed. In addition, the internal threadpool queue can be delayed so
+         that the threadpool listener is not alerted that a task has been pushed
+         even after the task has been executed.
+
+         From the test's point of view, there's no way to be able to predict
+         exactly the order that task execution/listener notifications will occur,
+         and there is no way to know which listener notifications will indicate
+         that the threadpool was previously empty.
+
+         For this reason, the test has been updated to only check the things it
+         can check. It ensures that all tasks get executed, that the threads go
+         idle after the tasks are executed, and that the listener is told the
+         proper number of tasks that were pushed.
+
+         Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c
+
+2016-02-16 23:37 +0000 [79dc5e2f00]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+
+       * app_queue: fix Calculate talktime when is first call answered
+
+         Fix calculate of average time for talktime is wrong when is completed the
+         first call beacuse the time for talked would be that call.
+
+         ASTERISK-25800 #close
+
+         Change-Id: I94f79028935913cd9174b090b52bb300b91b9492
+
+2016-02-17 13:30 +0000 [5a3a857dd6]  Richard Mudgett <rmudgett@digium.com>
+
+       * cel.c: Fix mismatch in ast_cel_track_event() return type.
+
+         The return type of ast_cel_track_event() is not large enough to return all
+         64 potential bits of the event enable mask.  Fortunately, the defined CEL
+         events do not really need all 64 bits and the return value is only used to
+         determine if the requested CEL event is enabled.
+
+         * Made the ast_cel_track_event() return 0 or 1 only so the return value
+         can fit inside an int type instead of zero or a truncated 64 bit non-zero
+         value.
+
+         Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c
+
+2016-02-16 16:37 +0000 [87ab65c557]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_odbc: Fix exports.in for missing symbols
+
+         res_odbc.exports.in was missing a few symbols.
+         Changed to wildcards.
+
+         Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c
+
+2016-02-16 12:20 +0000 [c0f3062031]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_statsd:  Fix exports.in for missing symbols
+
+         res_statsd.export.in was missing the _va variations of the log
+         functions causing Asterisk to crash in res_pjsip if OPTIONAL_API
+         wasn't enabled.
+
+         ASTERISK-25727 #close
+         Reported-by: Gergely Dömsödi
+
+         Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b
+
+2016-02-15 21:31 +0000 [5e848dae7b]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_config_wizard:  Add command to export primitive objects
+
+         A new command (pjsip export config_wizard primitives) has been added that
+         will export all the pjsip objects it created to the console or a file
+         suitable for reuse in a pjsip.conf file.
+
+         ASTERISK-24919 #close
+         Reported-by: Ray Crumrine
+
+         Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b
+
+2016-02-15 15:37 +0000 [34c64707d1]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip_caller_id: Fix segfault when replacing rpid or pai header
+
+         If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid
+         or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify
+         the header added by the dialplan function.  Since the header added by the
+         dialplan function is generic string, there are no virtual functions to parse
+         the uri and we get a segfault when we try.  Since the modify, was really only
+         an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER
+         and recreate it.
+
+         This raises a question for another time though:  What should happen with
+         duplicate headers?  Right now res_pjsip_header_funcs doesn't check for dups
+         so if it's session supplement is loaded after res_pjsip_caller_id's (or any
+         other module that adds headers), there'll be dups in the message.
+
+         ASTERISK-25337 #close
+
+         Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa
+
+2016-02-15 13:08 +0000 [ebe167f792]  Mark Michelson <mmichelson@digium.com>
+
+       * Fix creation race of contact_status structures.
+
+         It is possible when processing a SIP REGISTER request to have two
+         threads end up creating contact_status structures in sorcery.
+         contact_status is created using a "find or create" function. If two
+         threads call into this at the same time, each thread will fail to find
+         an existing contact_status, and so both will end up creating a new
+         contact status.
+
+         During testing, we would see sporadic failures because the
+         PJSIP_CONTACT() dialplan function would operate on a different
+         contact_status than what had been updated by res_pjsip/pjsip_options.
+
+         The fix here is two-fold:
+         1) The "find or create" function for contact_status now has a lock
+         around the entire operation. This way, if two threads attempt the
+         operation simultaneously, the first to get there will create the object,
+         and the second will find the object created by the first thread.
+
+         2) res_sorcery_memory has had its create callback updated so that it
+         will not allow for objects with duplicate IDs to be created.
+
+         Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97
+
+2016-02-15 12:52 +0000 [1c4f2a920d]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_pubsub: Move where the subscription is stored to after initialized.
+
+         A problem arose when testing the AMI subscription listing actions where it
+         was possible for a subscription that had not been fully initialized to be
+         listed. This was problematic as the underlying listing code would crash.
+
+         This change makes it so the subscription tree is fully set up before it is
+         added to the list of subscriptions. This ensures that when the listing actions
+         get the subscription it is valid.
+
+         ASTERISK-25738 #close
+
+         Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48
+
+2015-02-20 20:51 +0000 [ac00c6bc2d]  Corey Farrell <git@cfware.com>
+
+       * main/asterisk.c: Reverse #if statement in listener() to fix code folding.
+
+         listener() opens the same code block in two places (#if and #else).  This
+         confuses some folding editors causing it to think that an extra code block
+         was opened.  Folding in 'geany' causes all code after listener() to be
+         folded as if it were part of that procedure.
+
+         ASTERISK-24813 #close
+
+         Change-Id: I4b8c766e6c91e327dd445e8c18f8a6f268acd961
+
+2016-02-09 17:34 +0000 [b1b797e0e7]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Refactor load_module/unload_module
+
+         load_module was just too hairy with every step having to clean up all
+         previous steps on failure.
+
+         Some of the pjproject init calls have now been moved to a separate
+         load_pjsip function and the unload_pjsip function was enhanced to clean
+         up everything if an error happened at any stage of the load process.
+
+         In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns
+         and ast_threadpool_shutdowns were also corrected.
+
+         Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302
+
+2016-02-09 22:42 +0000 [20e9792fbc]  Badalyan Vyacheslav <slavon.net@gmail.com>
+
+       * Resources/res_phoneprov: fix memory leak and heap-use-after-free
+
+         * heap-use-after-free happens when we free "cfg"
+         but then use "value" which refers to it
+
+         * A memory leak occurs because in some cases
+         it is not released "defaults"
+
+         ASTERISK-25721 #close
+         Reported by: Badalyan Vyacheslav
+         Tested by: Badalyan Vyacheslav
+
+         Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469
+
+2016-02-11 11:21 +0000 [962a9d61f8]  Etienne Lessard (license #6394)
+
+       * func_iconv: Ensure output strings are properly terminated.
+
+         ASTERISK-25272 #close
+         Reported by: Etienne Lessard
+         patches:
+          AST-25272.patch submitted by Etienne Lessard (license #6394)
+
+         Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17
+
+2016-02-10 16:16 +0000 [c1bf014ea0]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Handle pjsip_dlg_create_uas deprecation
+
+         Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with
+         pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically
+         increments the lock on the returned dialog.  To account for this, configure.ac
+         now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c
+         has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use
+         the original call or the new one.  If the new one was used, the ref count is
+         decremented before returning.
+
+         ASTERISK-25751 #close
+         Reported-by Josh Colp
+
+         Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8
+
+2016-02-09 23:40 +0000 [bd07b6f0dd]  Badalyan Vyacheslav <slavon.net@gmail.com>
+
+       * Build: Added testing compiler to support the system sanitizes
+
+         In older versions of the compiler was not sanitizes.
+         Compilers other than GCC can not support the Usan and TSAN
+         or have other options for *FLAGS.
+
+         ASTERISK-25767 #close
+         Reported by: Badalyan Vyacheslav
+         Tested by: Badalyan Vyacheslav
+
+         Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916
+
+2016-02-09 20:57 +0000 [e9e896abd1]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+
+       * Build: Fix menuselect USAN conflicts
+
+         USAN can be used together with other sanitizers.
+
+         Reported by: Badalyan Vyacheslav
+         Tested by: Badalyan Vyacheslav
+
+         Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f
+
+2016-02-09 14:21 +0000 [93e8ed0154]  Corey Farrell <git@cfware.com>
+
+       * Simplify and fix conditional in FD_SET.
+
+         FD_SET contains a conditional statement to protect against buffer
+         overruns.  The statement was overly complicated and prevented use
+         of the last array element of ast_fdset.  We now just verify the fd
+         is less than ast_FDMAX.
+
+         Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40
+
+2016-02-09 07:11 +0000 [a7c8d4cd6b]  Joshua Colp <jcolp@digium.com>
+
+       * tests/test_sorcery_memory_cache_thrash: Improve termination process.
+
+         When terminating the threads thrashing a sorcery memory cache each
+         would be told to stop and then we would wait on them. During at
+         least one thrashing test this was problematic due to the specific
+         usage pattern in use. It would take some time for termination of the
+         thread to occur.
+
+         This would occur due to contention between the threads retrieving
+         and the threads updating the cache. As the retrieving threads are
+         given priority it may be some time before the updating threads
+         are able to proceed.
+
+         This change makes it so all threads are told to stop and then each
+         are joined to ensure they stop. This way all the threads should
+         stop at around the same time instead of waiting for one to stop,
+         the next to stop, then the next, and so on. As a result of this
+         the execution time for each thrash test is much closer to their
+         expected value than previously seen as well.
+
+         Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827
+2016-01-29 17:56 +0000 [2451d4e455]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Fix infinite recursion when loading transports from realtime
+
+         Attempting to load a transport from realtime was forcing asterisk into an
+         infinite recursion loop.  The first thing transport_apply did was to do a
+         sorcery retrieve by id for an existing transport of the same name. For files,
+         this just returns the previous object from res_sorcery_config's internal
+         container, if any.  For realtime, the res_sourcery_realtime driver looks in the
+         database and finds the existing row but now it has to rehydrate it into a
+         sorcery object which means calling... transport_apply.  And so it goes.
+
+         The main issue with loading from realtime (apart from the loop) was that
+         transport stores structures and pointers directly in the ast_sip_transport
+         structure instead of the separate ast_transport_state structure.  This patch
+         separates those items into the ast_sip_transport_state structure.  The pattern
+         is roughly the same as res_pjsip_outbound_registration.
+
+         Although all current usages of ast_sip_transport and ast_sip_transport_state
+         were modified to use the new ast_sip_get_transport_state API, the original
+         items are left in ast_sip_transport and kept updated to maintain ABI
+         compatability for third-party modules.  They are marked as deprecated and
+         noted that they're now in ast_sip_transport_state.
+
+         ASTERISK-25606 #close
+         Reported-by: Martin Moučka
+
+         Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19
+
+2016-01-25 17:36 +0000 [6f978fbfe5]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge: Only use b_profile options from the conference.
+
+         A user cannot set new bridge options after the conference is created by
+         the first user.  Attempting to do so is documented as undefined behavior.
+
+         This patch ensures that the bridge profile options used are from the
+         conference and not what a subsequent user may have tried to set.
+
+         Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266
+
+2016-02-05 10:29 +0000 [ec8fd6714d]  gtjoseph <george.joseph@fairview5.com>
+
+       * chan_misdn: Fix a few issues causing compile errors
+
+         Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98
+
+2016-02-04 16:17 +0000 [6a799cd78f]  Mark Michelson <mmichelson@digium.com>
+
+       * Check for OpenSSL defines before trying to use them.
+
+         The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior
+         to OpenSSL version 1.0.1. A recent commit attempts to, by default, set
+         these options, which can cause problems on systems with older OpenSSL
+         installations.
+
+         This commit adds a configure script check for those defines and will not
+         attempt to make use of those if they do not exist. We will print a
+         warning urging the user to upgrade their OpenSSL installation if those
+         defines are not present.
+
+         Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d
+2016-02-03 14:25 +0000 [953d1cc11a]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjsip/alembic:  Add missing columns to system and registration
+
+         ps_systems needed disable_tcp_switch
+         ps_registrations needed line and endpoint
+
+         ASTERISK-25737 #close
+
+         Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19
+
+2016-02-04 11:39 +0000 [23829b3253]  Mark Michelson <mmichelson@digium.com>
+
+       * res_stasis_device_state: Fix refcounting error.
+
+         Device state subscription lifetimes were governed by when the
+         subscription was established and unsubscribed from. However, it is
+         possible that at the time of unsubscription, there could be device state
+         events still in flight. When those device state events occur, the device
+         state callback could attempt to dereference a freed pointer. Crash.
+
+         This change ensures that the lifetime of the device state subscription
+         does not end until the underlying stasis subscription has confirmed that
+         its final message has been sent.
+
+         Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2
+
+2016-01-27 10:44 +0000 [4e8e6d3922]  Sean Bright <sean.bright@gmail.com>
+
+       * res_rtp_asterisk: Allow ICE host candidates to be overriden
+
+         During ICE negotiation the IPs of the local interfaces are sent to the remote
+         peer as host candidates. In many cases Asterisk is behind a static one-to-one
+         NAT, so these host addresses will be internal IP addresses.
+
+         To help in hiding the topology of the internal network, this patch adds the
+         ability to override the host candidates by matching them against a
+         user-defined list of replacements.
+
+         Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f
+
+2015-12-07 12:46 +0000 [c6b1b2b1c8]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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
+2016-02-03 12:05 +0000 [f8acadde2c]  Joshua Colp <jcolp@digium.com>
+
+       * AST-2016-001 http: Provide greater control of TLS and set modern defaults.
+
+         This change exposes the configuration of various aspects of the TLS
+         support and sets the default to the modern standards.
+
+         The TLS cipher is now set to the best values according to the
+         Mozilla OpSec team, different TLS versions can now be disabled, and
+         the cipher order can be forced to be that of the server instead of
+         the client.
+
+         ASTERISK-24972 #close
+
+         Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8
+2015-09-28 17:07 +0000 [3c81a052c8]  Richard Mudgett <rmudgett@digium.com>
+
+       * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow.
+
+         Setting the sip.conf timert1 value to a value higher than 1245 can cause
+         an integer overflow and result in large retransmit timeout times.  These
+         large timeout times hold system file descriptors hostage and can cause the
+         system to run out of file descriptors.
+
+         NOTE: The default sip.conf timert1 value is 500 which does not expose the
+         vulnerability.
+
+         * The overflow is now detected and the previous timeout time is
+         calculated.
+
+         ASTERISK-25397 #close
+         Reported by: Alexander Traud
+
+         Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290
+2016-02-03 14:07 +0000 [2a6ee8caeb]  gtjoseph <george.joseph@fairview5.com>
+
+       * logging: Remove/fix some message annoyances
+
+         test_dlinklists doesn't need to NOTICE everyone that every macro worked.
+
+         res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or
+         provider was registered.
+
+         res_odbc was missing a newline at the end of one message.
+
+         Change-Id: I6c06361518ef3711821795e535acd439782a995e
+
+2016-02-02 10:52 +0000 [32fc784284]  Alexei Gradinari License #5691
+
+       * res_sorcery_realtime: Fix regex regression.
+
+         A regression was introduced where searching for realtime PJSIP objects
+         by regex by starting the regex with a leading "^" would cause no items
+         to be returned.
+
+         This was due to a change which attempted to drop the requirement for a
+         leading "^" to be present due to how some CLI commands formulate their
+         regexes. However, the change, rather than simply eliminating the
+         requirement, caused any regexes that did begin with "^" to end up not
+         returning the expected results.
+
+         This change fixes the problem by inspecting the regex and formulating
+         the realtime query differently depending on if it begins with "^".
+
+         ASTERISK-25702 #close
+         Reported by Nic Colledge
+
+         Patches:
+             realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691
+
+         Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693
+
+2016-02-02 04:05 +0000 [0405c31756]  Karsten Wemheuer <kwe-digium@iptam.com>
+
+       * res_xmpp: Does not connect in component mode
+
+         The module res_xmpp does not accept usernames in the form used in component
+         mode (XEP-0114). In component mode there is no @something in the name.
+         In component mode the connection is now not dropped anymore.
+
+         If the xmpp server sends out a "stream" tag before handshake is finished,
+         the connection gets dropped in res_xmpp. Now this tag will be ignored and
+         the connection will be established.
+
+         After connecting there will be an exchange of presence states. This does
+         not work as expected in component mode. The responsible function
+         "xmpp_pak_presence" is left before the states get sent out. Sending
+         presence states in component mode is now moved to the top of the function.
+
+         ASTERISK-25735 #close
+
+         Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c
+2016-02-01 13:04 +0000 [8804d0973c]  gtjoseph <george.joseph@fairview5.com>
+
+       * build_system:  Fix some warnings highlighted by clang
+
+         Fix some warnings found with clang.
+
+         Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd
+
+2016-02-01 13:16 +0000 [109b0aff6b]  gtjoseph <george.joseph@fairview5.com>
+
+       * res/Makefile: Fix bug in "clean" target for ari
+
+         The "clean" target was attempting to clean res/ari from inside
+         the res directory which doesn't remove anything.  Removed the res/
+         prefix.
+
+         Change-Id: Ib1a518d54efa81b9fd5a42742d43cc3767435bf6
+
+2016-01-31 20:13 +0000 [a85fab7c44]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjsip/alembic: Fix definition of qualify_timeout
+
+         A recent commit set qualify_timeout to Decimal which isn't supported.
+         This path corrects it to Float.
+
+         Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf
+
+2016-01-29 07:39 +0000 [aa9348ab9a]  Stefan Engström <stefanen@kth.se>
+
+       * chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip.
+
+         When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a)
+         AMI action: SIPnotify or b) cli command: sip notify <cmd> <peer>, I expect
+         asterisk to include the same value for its own ip in both cases a) and b),
+         but it seems a) produces a contact header like Contact:
+         <sip:asterisk@192.168.1.227:8060> whereas b) produces a contact header like
+         <sip:asterisk@127.0.0.1:8060>. 0.0.0.0:8060 is my udpbindaddr in sip.conf
+
+         My guess is that manager_sipnotify should call
+         ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does,
+         because after applying this patch, both cases a) and b) produce
+         the contact header that I expect: <sip:asterisk@192.168.1.227:8060>
+
+         Reported by: Stefan Engström
+         Tested by: Stefan Engström
+
+         Change-Id: I86af5e209db64aab82c25417de6c768fb645f476
+2015-12-23 15:07 +0000 [65bd4fcc3f]  Mark Michelson <mmichelson@digium.com>
+
+       * res_odbc: Remove connection management
+
+         Asterisk by default will create a single database connection and share
+         it among all threads that attempt to access the database. In previous
+         versions of Asterisk, this was tolerable, because the most used channel
+         driver, chan_sip, mostly accessed the database from a single thread.
+         With PJSIP, however, many threads may be attempting to perform database
+         operations, and there is the potential for many more database accesses,
+         meaning the concurrency is a horrible bottleneck if only one connection
+         is shared.
+
+         Asterisk has a connection pooling facility built into it, but the
+         implementation has flaws. For one, there is a strict limit on the number
+         of simultaneous connections that could be made to the database. Anything
+         beyond the maximum would result in a failed operation. Attempting to
+         predict what the maximum should be is nearly impossible even for someone
+         intimately familiar with Asterisk's threading model. In addition, use of
+         transactions in the dialplan can cause some severe bugs if connection
+         pooling is enabled.
+
+         This commit seeks to fix the concurrency problem by removing all
+         connection management code from Asterisk and leaving that to the
+         underlying unixODBC code instead. Now, Asterisk does not share a single
+         connection, nor does it try to maintain a connection pool. Instead, all
+         Asterisk ever does is request a connection from unixODBC and allow
+         unixODBC to either allocate those connections or retrieve them from a
+         pool.
+
+         Doing this has a bit of a ripple effect. For one, since connections are
+         not long-lived objects, several of the safeguards that previously
+         existed have been removed. We don't have to worry about trying to use a
+         connection that has gone stale. In every case, when we request a
+         connection, it has just been made and we don't need to perform any
+         sanity checks to be sure it's still active.
+
+         Another major player affected by this change is transactions.
+         Transactions and their respective connections were so tightly coupled
+         that it was almost pornographic. This code change moves
+         transaction-related code to its own file separate from the core ODBC
+         functionality. This way, the core of ODBC does not even have to know
+         that transactions exist.
+
+         In making this large change, I had to look at a lot of code and
+         understand it. When making this change, I discovered several places
+         where the behavior is definitely not ideal, but it seemed outside the
+         scope of this change to be fixing it. Instead, any place where I saw
+         some sort of room for improvement has had a XXX comment added explaining
+         what could be altered to improve it.
+
+         Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf
+
+2016-01-28 12:44 +0000 [2a9e623ff9]  Richard Mudgett <rmudgett@digium.com>
+
+       * config_options.c: Fix warning message wording.
+
+         Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4
+
+2016-01-25 17:34 +0000 [ed3c9c1512]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge.c: Replace inlined code with existing function.
+
+         Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51
+
+2016-01-25 16:05 +0000 [1d0abf86e7]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge: Add ability to get the muted conference state.
+
+         * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.
+
+         * Added Muted header to AMI ConfbridgeListRooms action response list
+         events to indicate the muted conference state.
+
+         * Added Muted column to CLI "confbridge list" output to indicate the muted
+         conference state and made the locked column a yes/no value instead of a
+         locked/unlocked value.
+
+         ASTERISK-20987
+         Reported by: hristo
+
+         Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1
+
+2016-01-26 17:59 +0000 [f0d40afa69]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation.
+
+         Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7
+
+2016-01-25 15:48 +0000 [3e51e5c7fd]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge: Make non-admin users join a muted conference muted.
+
+         ASTERISK-20987 #close
+         Reported by: hristo
+
+         Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38
+
+2016-01-27 13:02 +0000 [9da18af992]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Add res_pjproject dependency to UPGRADE.txt and samples
+
+         Since res_pjsip now depends on res_pjproject, this is now mentioned
+         in UPGRADE.txt and the basic-pbx modules.conf has been updated.
+
+         Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d
+2016-01-27 10:29 +0000 [aee8448bc2]  gtjoseph <george.joseph@fairview5.com>
+
+       * build_system: Prevent goals needing makeopts from running when it's missing
+
+         The Makefile only optionally includes makeopts so when goals like uninstall that
+         dont depend on anything else are run after a distclean, rules like
+         'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts
+         to remove everything in the root directory.
+
+         Although there's a rule defined for makeopts which prints a message and does
+         an 'exit 1', since '-include makepopts' was specified (with the -), the exit
+         was ignored letting the rest of the rules run.
+
+         This patch makes makeopts required unless the goal has the string 'clean' in it.
+
+         ASTERISK-25730 #close
+         Reported-by: George Joseph
+
+         Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7
+
+2016-01-25 09:35 +0000 [f22074e5d9]  Joshua Colp <jcolp@digium.com>
+
+       * config: Allow options to register when documentation is unavailable.
+
+         The config options framework is strict in that configuration options must
+         be documented unless XML documentation support is not available. In
+         practice this is useful as it ensures documentation exists however in
+         off-nominal cases this can cause strange problems.
+
+         If it is expected that a config option has a non-zero or non-empty
+         default value but the config option documentation is unavailable
+         this reasonable expectation will not be met. This can cause obscure
+         crashes and weirdness depending on how the code handles it.
+
+         This change tweaks the behavior to ensure that the config option
+         is still allowed to register, apply default values, and be set when
+         devmode is not enabled. If devmode is enabled then the option can
+         NOT be set.
+
+         This also does not remove the initial documentation error message that
+         is output on load when registering the configuration option.
+
+         ASTERISK-25725 #close
+
+         Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8
+
+2016-01-25 10:23 +0000 [4a3275abb9]  Mark Michelson <mmichelson@digium.com>
+
+       * Stasis: Use custom structure when setting variables.
+
+         A recent change to queue channel variable setting to the Stasis control
+         queue caused a regression. When setting channel variables, it is
+         possible to give a NULL channel variable value in order to unset the
+         variable (i.e. remove it from the channel variable list). The change
+         introduced a call to ast_variable_new(), which is not tolerant of NULL
+         channel variable values.
+
+         This new change switches from using ast_variable to using a custom
+         channel variable struct that is lighter weight and NULL value-tolerant.
+
+         Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d
+
+2016-01-25 16:56 +0000 [b2c8a99f9e]  Rusty Newton <rnewton@digium.com>
+
+       * sounds/Makefile: Incremented core and extra sounds versions to 1.5
+
+         Core and extra sounds 1.5 was recently released! The tarballs contain
+         change descriptions however I figure more people will see this one so
+         I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra
+         to Core for en, en_GB, fr and added for languages that didn't already
+         have Extra sound sets (it,ja,ru).
+
+         In addition all of the English and Russian sounds have been completely
+         re-recorded.
+
+         Sounds moved and added:
+         activated,added,all-circuits-busy-now,astcc-followed-by-pound
+         at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy
+         ,call-fwd-unconditional,calling,call-waiting,cancelled,
+         cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated
+         ,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist
+         ,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello
+         ,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to
+         ,location,number,number-not-answering,num-was-successfully,one-moment-please
+         ,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option
+         ,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached
+         ,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial
+         ,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension
+         ,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered
+         ,your
+
+         There were also a few random fixes here and there to file names for a few
+         of the languages.
+
+         ASTERISK-25068 #close
+
+         Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3
+2016-01-25 16:51 +0000 [8261bda1bf]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription.
+
+         A test recently uncovered that running an ill-timed AMI command to show
+         inbound subscriptions could cause a crash since Asterisk will try to
+         operate on a freed subscription.
+
+         The fix for this is to remove the subscription tree from the list of
+         subscriptions at the time that we are sending our final NOTIFY request
+         out. This way, as the subscription is in the process of dying, it is
+         inaccessible from AMI.
+
+         Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23
+
+2016-01-25 11:03 +0000 [a6823bb0c4]  Corey Farrell <git@cfware.com>
+
+       * chan_sip: Fix buffer overrun in sip_sipredirect.
+
+         sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer
+         of 256 characters.  This patch reduces the copy to 255 characters to leave
+         room for the string null terminator.
+
+         ASTERISK-25722 #close
+
+         Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab
+
+2016-01-22 15:08 +0000 [1003c2eb05]  Mark Michelson <mmichelson@digium.com>
+
+       * Stasis: Fix potential memory leak of control data.
+
+         When queuing tasks onto the Stasis control queue, you can pass an
+         arbitrary data pointer and a function to free that data. All ARI
+         commands that use the Stasis control queue made the assumption that the
+         destructor function would be called in all paths, whether the task was
+         queued successfully or not. However, this was not correct. If a task was
+         queued onto a control structure that was already completed, the
+         allocated data would not be freed properly.
+
+         This patch corrects this by making sure that all return paths call the
+         data destructor.
+
+         Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb
+
+2016-01-21 10:58 +0000 [eedd77fda0]  Mark Michelson <mmichelson@digium.com>
+
+       * Stasis: Use control queue to prevent crash.
+
+         A crash occurred when attempting to set a channel variable on a channel
+         that had already been hung up. This is because there is a small window
+         between when a control is grabbed and when the channel variable is set
+         that the channel can be hung up.
+
+         The fix here is to queue the setting of the channel variable onto the
+         control queue. This way, the manipulation of the channel happens in a
+         thread where it is safe to be done.
+
+         In this change, I also noticed that the setting of bridge roles on
+         channels was being done outside of the control queue, so I also changed
+         those operations to be done in the control queue.
+
+         ASTERISK-25709 #close
+         Reported by Mark Michelson
+
+         Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78
+
+2016-01-22 11:48 +0000 [1c95b211a0]  Richard Mudgett <rmudgett@digium.com>
+
+       * logger.c: Fix buffer overrun found by address sanitizer.
+
+         The null terminator of the tail struct member was not being allocated
+         when no logger.conf config file is installed.
+
+         ASTERISK-25714 #close
+         Reported by: Badalian Vyacheslav
+
+         Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30
+
+2016-01-21 16:40 +0000 [6ff945ab87]  Corey Farrell <git@cfware.com>
+
+       * Build System: Add support for checking alembic branches.
+
+         * Add 'check-alembic' target to root Makefile.
+         * Create build_tools/make_check_alembic to do the actual checks.
+
+         ASTERISK-25685
+
+         Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004
+
+2016-01-19 18:20 +0000 [02035212de]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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-18 03:49 +0000 [c68c66c61f]  Diederik de Groot <ddegroot@talon.nl>
+
+       * main/asterisk.c: ast_el_read_char
+
+         Make sure buf[res] is not accessed at res=-1 (buffer underrun).
+         Address Sanitizer will complain about this quite loudly.
+
+         ASTERISK-24801 #close
+
+         Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9
+
+2016-01-13 16:49 +0000 [f87c3275cc]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Add CLI "pjsip dump endpt [details]"
+
+         Dump the res_pjsip endpt internals.
+
+         In non-developer mode we will not document or make easily accessible the
+         "details" option even though it is still available.  The user has to know
+         it exists to use it.  Presumably they would also be aware of the potential
+         crash warning below.
+
+         Warning: PJPROJECT documents that the function used by this CLI command
+         may cause a crash when asking for details because it tries to access all
+         active memory pools.
+
+         Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb
+
+2016-01-18 17:16 +0000 [46b2de55f9]  Matt Jordan <mjordan@digium.com>
+
+       * funcs/func_cdr: Correctly report high precision values for duration and billsec
+
+         When CDRs were refactored, func_cdr's ability to report high precision values
+         for duration and billsec (the 'f' option) was broken. This was due to func_cdr
+         incorrectly interpreting the duration/billsec values provided by the CDR engine
+         in milliseconds, as opposed to seconds. Since the CDR engine only provides
+         duration and billsec in seconds, and does not expose either attribute with
+         sufficient precision to merely pass back the underlying value, this patch fixes
+         the bug by re-calculating duration and billsec with microsecond precision based
+         on the start/answer/end times on the CDR.
+
+         ASTERISK-25179 #close
+
+         Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841
+
+2016-01-18 19:20 +0000 [137fe5ae01]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjproject:  Add module providing pjproject logging and utils
+
+         res_pjsip_log_forwarder has been renamed to res_pjproject
+         and enhanced as follows:
+
+         As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch,
+         a new ast_pjproject_get_buildopt function has been added.  It
+         allows the caller to get the value of one of the buildopts.
+
+         The initial use case is retrieving the runtime value of
+         PJ_MAX_HOSTNAME to insure we don't send a hostname greater
+         than pjproject can handle.  Since it can differ between
+         the version of pjproject that Asterisk was compiled against
+         and the version of pjproject that Asterisk is running against,
+         we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk
+         source code.
+
+         Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e
+
+2016-01-19 17:15 +0000 [b5c13c1545]  Joshua Colp <jcolp@digium.com>
+
+       * test_threadpool: Wait for each task to complete and fix memory leak.
+
+         This change makes the thread_timeout_thrash unit test wait for
+         each task to complete. This fixes the problem where the test would
+         prematurely end when all threads were gone and a new one had to be
+         started to handle the last task. It also increases the thrasing as
+         it is now more likely for each task to encounter the above scenario.
+
+         This also fixes a memory leak where the data for each task was not
+         being freed.
+
+         ASTERISK-25611 #close
+
+         Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6
+
+2016-01-18 19:44 +0000 [0ab89182d9]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Increase CLI "core ping taskprocessor" timeout.
+
+         Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029
+
+2016-01-18 19:43 +0000 [a2a8ea3330]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Fix some taskprocessor unrefs.
+
+         You have to call ast_taskprocessor_unref() outside of the taskprocessor
+         implementation code.  Taskprocessor use since v12 has become more
+         transient than just the singleton uses in earlier versions.
+
+         Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb
+
+2016-01-19 13:44 +0000 [d604a9afc8]  Richard Mudgett <rmudgett@digium.com>
+
+       * Fix alembic branches on v13.
+
+         Change-Id: I313449b609ede18ad1e1763a655dd23b9210a8e0
+
+2016-01-18 18:45 +0000 [a0c79f3a4f]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject
+
+         Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b
+
+2016-01-14 09:26 +0000 [018ccf680b]  Rusty Newton <rnewton@digium.com>
+
+       * func_channel: Add help text for undocumented CHANNEL function arguments
+
+         Adding help text documentation for:
+         * hangupsource
+         * appname
+         * appdata
+         * exten
+         * context
+         * channame
+         * uniqueid
+         * linkedid
+
+         ASTERISK-24097 #close
+         Reported by: Steven T. Wheeler
+         Tested by: Rusty Newton
+
+         Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d
+
+2016-01-16 13:18 +0000 [5644bca9f9]  Daniel Journo <dan@keshercommunications.com>
+
+       * Update version number in features.conf.sample
+
+         Update the version number in the comments from Asterisk 12 to Asterisk 12+
+
+         Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b
+
+2016-01-15 19:52 +0000 [3f5f30cf82]  Corey Farrell <git@cfware.com>
+
+       * main/config: Clean config maps on shutdown.
+
+         ASTERISK-25700 #close
+
+         Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808
+
+2016-01-14 14:42 +0000 [660fedecb7]  Kevin Harwell <kharwell@digium.com>
+
+       * bridge_basic: don't cache xferfailsound during an attended transfer
+
+         The xferfailsound was read from the channel at the beginning of the transfer,
+         and that value is "cached" for the duration of the transfer. Therefore, changing
+         the xferfailsound on the channel using the FEATURE() dialplan function does
+         nothing once the transfer is under way.
+
+         This makes it so the transfer code instead gets the xferfailsound configuration
+         options from the channel when it is actually going to be used.
+
+         This patch also fixes a potential memory leak of the props object as well as
+         making sure the condition variable gets initialized before being destroyed.
+
+         ASTERISK-25696 #close
+
+         Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4
+
+2015-07-10 10:37 +0000 [9cda1de34d]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Simplify ast_taskprocessor_get() return code.
+
+         Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1
+
+2016-01-13 18:20 +0000 [a79af2b312]  Richard Mudgett <rmudgett@digium.com>
+
+       * astmm.c: Add more stats to CLI "memory show" commands.
+
+         * Add freed regions totals to allocations and summary.
+
+         * Add totals for all allocations and not just the selected allocations.
+
+         Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a
+
+2016-01-14 16:00 +0000 [83feb7db3b]  Kevin Harwell <kharwell@digium.com>
+
+       * bridge_basic: don't play an attended transfer fail sound after target hangs up
+
+         If the attended transfer destination answers (picks call up or goes to
+         voicemail) and then hangs up on the transferer then transferer hears the
+         fail sound.
+
+         This patch makes it so the fail sound is not played when the transfer
+         destination/target hangs up after answering.
+
+         ASTERISK-25697 #close
+
+         Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded
+
+2016-01-14 13:22 +0000 [935d641f3b]  Mark Michelson <mmichelson@digium.com>
+
+       * Remove res/ari/* content during 'make clean'.
+
+         'make clean' and 'make distclean' can leave behind .o files in the
+         res/ari/ directory. One observed consequence of this is that running
+         Asterisk with MALLOC_DEBUG can cause Asterisk to crash immediately on
+         startup sometimes.
+
+         By ensuring that we are making a clean build, we can be sure that stale
+         files are not being included in the build and causing problems when
+         build options should have caused files to be re-built.
+
+         ASTERISK-25683 #close
+         Reported by yaron nahum
+
+         Change-Id: I1f48baa904d2468eddeefb42ee68a56af7adc7b7
+
+2016-01-13 15:58 +0000 [46f21df302]  Daniel Journo <dan@keshercommunications.com>
+
+       * pjsip/alembic:  Fix qualify_timeout column definition
+
+         Corrects the qualify_timeout column type from Integer to Decimal
+
+         ASTERISK-25686 #close
+         Reported-by: Marcelo Terres
+
+         Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8
+
+2016-01-12 11:14 +0000 [32b29d7b02]  Joshua Colp <jcolp@digium.com>
+
+       * app: Queue hangup if channel is hung up during sub or macro execution.
+
+         This issue was exposed when executing a connected line subroutine.
+         When connected or redirected subroutines or macros are executed it is
+         expected that the underlying applications and logic invoked are fast
+         and do not consume frames. In practice this constraint is not enforced
+         and if not adhered to will cause channels to continue when they shouldn't.
+         This is because each caller of the connected or redirected logic does not
+         check whether the channel has been hung up on return. As a result the
+         the hung up channel continues.
+
+         This change makes it so when the API to execute a subroutine or
+         macro is invoked the channel is checked to determine if it has hung up.
+         If it has then a hangup is queued again so the caller will see it
+         and stop.
+
+         ASTERISK-25690 #close
+
+         Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea
+
+2016-01-13 07:20 +0000 [e7cfda0b38]  Sean Bright <sean.bright@gmail.com>
+
+       * res_musiconhold: Prevent multiple simultaneous reloads.
+
+         There are two ways in which the reload() function in res_musiconhold can be
+         called from the CLI:
+
+           * module reload res_musiconhold.so
+           * moh reload
+
+         In the former case, the module loader holds a lock that prevents multiple
+         concurrent calls, but in the latter there is no such protection.
+
+         This patch changes the 'moh reload' CLI command to invoke the module loader
+         directly, rather than call reload() explicitly.
+
+         ASTERISK-25687 #close
+
+         Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c
+2016-01-12 14:25 +0000 [5586abc957]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts".
+
+         PJPROJECT has a function available to dump the compile time
+         options used when building the library.
+
+         * Add CLI "pjsip show buildopts" command.
+
+         * Update contrib/scripts/autosupport to get pjproject information.
+
+         Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748
+
+2016-01-12 10:36 +0000 [4cd58c3b20]  Mark Michelson <mmichelson@digium.com>
+
+       * res_sorcery_realtime: Remove leading ^ requirement.
+
+         res_sorcery_realtime's search-by-regex callback performed a check to
+         ensure that the passed-in regex began with a caret (^). If it did not,
+         then no results would be returned.
+
+         This callback only started to become used when "like" support was added
+         to PJSIP CLI commands. The CLI command for listing objects would pass an
+         empty regex ("") to the sorcery backend if no "like" statement was
+         present. For most sorcery backends, this resulted in returning all
+         objects. However, for realtime, this resulted in returning no objects.
+
+         This commit seeks to fix the regression by removing the requirement from
+         res_sorcery_realtime for the passed-in-regex to begin with a caret.
+
+         ASTERISK-25689 #close
+         Reported by Marcelo Terres
+
+         Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20
+
+2016-01-07 11:57 +0000 [219c204a41]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjsip_sdp_rtp:  Add option endpoint/bind_rtp_to_media_address
+
+         On a system with multiple ip addresses in the same subnet, if a
+         transport is bound to a specific ip address and endpoint/media_address
+          is set, the SIP/SDP will have the correct address in all fields but
+         the rtp stream MAY still originate from one of the other ip addresses,
+         most probably the "primary" ip address.  This happens because
+          res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with
+         the "all" ip address (0.0.0.0 or ::).
+
+         The new option causes res_pjsip_sdp_rtp/create_rtp to call
+         ast_rtp_instance_new with the endpoint's media_address (if specified)
+         instead of the "all" address.  This causes the packets to originate from
+         the specified address.
+
+         ASTERISK-25632
+         ASTERISK-25637
+         Reported-by: Olivier Krief
+         Reported-by: Dan Journo
+
+         Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88
+
+2016-01-10 16:22 +0000 [22801a06ee]  Daniel Journo <dan@keshercommunications.com>
+
+       * pjsip:  Add option global/regcontext
+
+         Added new global option (regcontext) to pjsip. When set, Asterisk will
+         dynamically create and destroy a NoOp priority 1 extension
+         for a given endpoint who registers or unregisters with us.
+
+         ASTERISK-25670 #close
+         Reported-by: Daniel Journo
+
+         Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62
+
+2016-01-08 15:22 +0000 [1600ebca7d]  Kevin Harwell <kharwell@digium.com>
+
+       * pbx: Deadlock between contexts container and context_merge locks
+
+         Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5)
+         introduced the possibility of a deadlock. Due to the mentioned modifications
+         ast_change_hints now needs to keep both merge/delete and state callbacks from
+         occurring while it executes. Unfortunately, sometimes ast_change_hints can be
+         called with the contexts container locked. When this happens it's possible for
+         another thread to grab the context_merge_lock before the thread calling into
+         ast_change_hints does and then try to obtain the contexts container lock. This
+         of course causes a deadlock between the two threads. The thread calling into
+         ast_change_hints waits for the other thread to release context_merge_lock and
+         the other thread is waiting on that one to release the contexts container lock.
+
+         Unfortunately, there is not a great way to fix this problem. When hints change,
+         the subsequent state callbacks cannot run at the same time as a merge/delete,
+         nor when the usual state callbacks do. This patch alleviates the problem by
+         having those particular callbacks (the ones run after a hint change) occur in a
+         serialized task. By moving the context_merge_lock to a task it can now safely be
+         attempted or held without a deadlock occurring.
+
+         ASTERISK-25640 #close
+         Reported by: Krzysztof Trempala
+
+         Change-Id: If2210ea241afd1585dc2594c16faff84579bf302
+
+2016-01-10 17:08 +0000 [0fc3dad965]  Corey Farrell <git@cfware.com>
+
+       * devicestate: Cleanup engine thread during graceful shutdown.
+
+         ASTERISK-25681 #close
+
+         Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1
+
+2016-01-10 13:51 +0000 [f34dd10495]  Corey Farrell <git@cfware.com>
+
+       * manager: Cleanup manager_channelvars during shutdown.
+
+         ASTERISK-25680 #close
+
+         Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446
+
+2016-01-10 13:27 +0000 [1d3a1167fc]  Corey Farrell <git@cfware.com>
+
+       * res_calendar: Cleanup scheduler context at unload.
+
+         ASTERISK-25679 #close
+
+         Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f
+
+2016-01-08 11:49 +0000 [3a160cdbf6]  Joshua Colp <jcolp@digium.com>
+
+       * res_rtp_asterisk: Revert DTLS negotiation changes.
+
+         Due to locking issues within pjnath these changes are being
+         reverted until pjnath can be changed.
+
+         ASTERISK-25645
+
+         Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays."
+
+         This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d.
+
+         Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705
+
+         Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation"
+
+         This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b.
+
+         Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe
+
+2016-01-09 17:57 +0000 [4b10fc9173]  gtjoseph <george.joseph@fairview5.com>
+
+       * Revert "pjsip_location: Delete contact_status object when contact is deleted"
+
+         This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45.
+
+         Matt,
+
+         This patch causes another problem and should not have been needed.
+         Before this patch, persistent_endpoint_contact_deleted_observer WAS
+         deleting the contact_status when ast_sip_location_delete_contact was
+         called.  By deleting it yourself in ast_sip_location_delete_contact
+         it was gone before the observer could run and the observer therefore
+         was throwing an error and not sending stasis/AMI/statsd messages.
+
+         So, I don't think this was the cause of your original issue.  I also
+         had verified the contact AMI and statsd lifecycle and it was working.
+         I'll double check now though.
+
+         ASTERISK-25675
+         Reported-by: Daniel Journo
+
+         Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a
+
+2016-01-09 18:04 +0000 [79b4309881]  Corey Farrell <git@cfware.com>
+
+       * pbx_dundi: Run cleanup on failed load.
+
+         During failed startup of pbx_dundi no cleanup was performed.  Add a call
+         to unload_module before returning AST_MODULE_LOAD_DECLINE.
+
+         ASTERISK-25677 #close
+
+         Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29
+
+2016-01-09 13:28 +0000 [a5406b1f9e]  Corey Farrell <git@cfware.com>
+
+       * res_crypto: Perform cleanup at shutdown.
+
+         This change causes res_crypto to unregister CLI at shutdown while still
+         preventing the module from being unloaded.
+
+         ASTERISK-25673 #close
+
+         Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc
+
+2016-01-06 19:10 +0000 [cf8e7a580b]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Create human friendly serializer names.
+
+         PJSIP name formats:
+         pjsip/aor/<aor>-<seq> -- registrar thread pool serializer
+         pjsip/default-<seq> -- default thread pool serializer
+         pjsip/messaging -- messaging thread pool serializer
+         pjsip/outreg/<registration>-<seq> -- outbound registration thread pool
+         serializer
+         pjsip/pubsub/<endpoint>-<seq> -- pubsub thread pool serializer
+         pjsip/refer/<endpoint>-<seq> -- REFER thread pool serializer
+         pjsip/session/<endpoint>-<seq> -- session thread pool serializer
+         pjsip/websocket-<seq> -- websocket thread pool serializer
+
+         Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084
+
+2016-01-06 19:09 +0000 [4276f185f0]  Richard Mudgett <rmudgett@digium.com>
+
+       * Sorcery: Create human friendly serializer names.
+
+         Sorcery name formats:
+         sorcery/<type>-<seq> -- Sorcery thread pool serializer
+
+         Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47
+
+2016-01-06 19:09 +0000 [f02ac1b7f9]  Richard Mudgett <rmudgett@digium.com>
+
+       * Stasis: Create human friendly taskprocessor/serializer names.
+
+         Stasis name formats:
+         subm:<topic>-<seq> -- Stasis subscription mailbox task processor
+         subp:<topic>-<seq> -- Stasis subscription thread pool serializer
+
+         Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd
+
+2016-01-07 16:15 +0000 [ec1f1c6742]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: New API for human friendly taskprocessor names.
+
+         * Add new API call to get a sequence number for use in human friendly
+         taskprocessor names.
+
+         * Add new API call to create a taskprocessor name in a given buffer and
+         append a sequence number.
+
+         Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9
+
+2016-01-06 17:19 +0000 [d8bc3e0c8b]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Fix CLI "core show taskprocessors" output format.
+
+         Update the CLI "core show taskprocessors" output format to not be
+         distorted because UUID names are longer than previously used taskprocessor
+         names.
+
+         Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601
+
+2016-01-07 21:07 +0000 [2c4b7502de]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Fix CLI "core show taskprocessors" unref.
+
+         Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5
+
+2016-01-07 20:44 +0000 [3b33ac7a46]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Sort CLI "core show taskprocessors" output.
+
+         Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e
+
+2016-01-06 19:00 +0000 [0fc32c4dd3]  Richard Mudgett <rmudgett@digium.com>
+
+       * ccss.c: Replace space in taskprocessor name.
+
+         The CLI "core ping taskprocessor" command does not work very
+         well with taskprocessor names that have spaces in them.  You
+         have to put quotes around the name so using tab completion
+         becomes awkward.
+
+         Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0
+
+2016-01-05 16:54 +0000 [0e0c24ad78]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock.
+
+         Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b
+
+2016-01-07 03:33 +0000 [0f79c8839b]  Diederik de Groot <ddegroot@talon.nl>
+
+       * main: Use ast_strdup instead of strdup
+
+         Fix compile error in main/utils.c because strdup was used in dummy_start
+
+         Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793
+
+2016-01-07 03:21 +0000 [4285dee778]  Diederik de Groot <ddegroot@talon.nl>
+
+       * include/asterisk/time.h: Renamed global declaration:tv
+
+         Renamed global declaration:tv to dummy_tv_var_for_types,
+         which would oltherwise cause 'shadow' warnings when 'tv'
+         was declared as a local variable elsewhere.
+
+         Added comment to note that dummy_tv_var_for_types is never
+         really exported and only used as a place holder.
+
+         ASTERISK-25627 #close
+
+         Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28
+
+2016-01-07 15:37 +0000 [96094feab6]  Mark Michelson <mmichelson@digium.com>
+
+       * PJSIP: Prevent deadlock due to dialog/transaction lock inversion.
+
+         A deadlock was observed where the monitor thread was stuck, therefore
+         resulting in no incoming SIP traffic being processed.
+
+         The problem occurred when two 200 OK responses arrived in response to a
+         terminating NOTIFY request sent from Asterisk. The first 200 OK was
+         dispatched to a threadpool worker, who locked the corresponding
+         transaction. The second 200 OK arrived, resulting in the monitor thread
+         locking the dialog. At this point, the two threads are at odds, because
+         the monitor thread attempts to lock the transaction, and the threadpool
+         thread loops attempting to try to lock the dialog.
+
+         In this case, the fix is to not have the monitor thread attempt to hold
+         both the dialog and transaction locks at the same time. Instead, we
+         release the dialog lock before attempting to lock the transaction.
+
+         There have also been some debug messages added to the process in an
+         attempt to make it more clear what is going on in the process.
+
+         ASTERISK-25668 #close
+         Reported by Mark Michelson
+
+         Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a
+
+2016-01-07 09:39 +0000 [52e9de0016]  Corey Farrell <git@cfware.com>
+
+       * ast_format_cap_append_by_type: Resolve codec reference leak.
+
+         This resolves a reference leak caused by ASTERISK-25535.  The pointer
+         returned by ast_format_get_codec is saved so it can be released.
+
+         ASTERISK-25664 #close
+
+         Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec
+
+2016-01-04 04:26 +0000 [86eae38d7e]  Aaron An <anjb@ti-net.com.cn>
+
+       * cel/cel_radius: Fix wrong pointer.
+
+         The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter
+         y not the address of y.
+
+         I capture the radius UDP packet via tcpdump, and the AV pairs are not correct,
+         then i review the source code and compare it with cdr/cdr_radius.c. Fix it and
+          it works.
+
+         ASTERISK-25647 #close
+         Reported by: Aaron An
+         Tested by: Aaron An
+
+         Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0
+
+2016-01-05 14:52 +0000 [881dc862e0]  gtjoseph <george.joseph@fairview5.com>
+
+       * asterisk.h: Add ASTERISK_REGISTER_FILE macro
+
+         The 11/13 branches and master use 2 different file version macros. 11/13
+         uses ASTERISK_FILE_VERSION but master uses ASTERISK_REGISTER_FILE. This
+         means a new file added to 11/13 can't just be cherry-picked to master
+         because the macro has to be changed.
+
+         To make cherry-picking possible, ASTERISK_REGISTER_FILE was added
+         to asterisk.h as a simple alias for ASTERISK_FILE_VERSION(__FILE__, NULL)
+         The "$Revision$" tag doesn't do anything since Asterisk moved to git so
+         just passing NULL as the verison works fine.  asterisk.h was also
+         annotated to deprecate ASTERISK_FILE_VERSION and suggest using
+         ASTERISK_REGISTER_FILE for all new files.
+
+         Finally, 2 recent file additions, pbx_builtins.c and pbx_functions.c,
+         were modified to use the new macro to make sure it actually worked.
+         'core show file version' showed the correct output.
+
+         Change-Id: I5867ed898818d26ee49bb6e5c7d4c1a45d4789a5
+
+2016-01-05 11:06 +0000 [d228b62fd4]  gtjoseph <george.joseph@fairview5.com>
+
+       * stasis_cache_pattern:  Backport to 13
+
+         Somehow stasis_cache_pattern got out of sync between 13 and master
+         and it was causing duplicate channel message issues in 13 when
+         related to a specific endpoint. I.E. from statsd,
+         'endpoints.PJSIP.1174.channels 0|g' was being emitted twice.
+
+         Backporting stasis_cache_pattern from master to 13 solved
+         the issue and running the unit and testsuite tests confirmed
+         that no new ones were created.
+
+         ASTERISK-25317 #close
+
+         Change-Id: Ia8707462f62d15eed14541c37f332a7bbbceb548
+2016-01-04 20:23 +0000 [e462f0063f]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move hangup handler routines to pbx_hangup_handler.c.
+
+         This is the sixth patch in a series meant to reduce the bulk of pbx.c.
+         This moves hangup handler management functions to their own source.
+
+         Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104
+
+2016-01-04 19:46 +0000 [ab191d124c]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move dialplan application management routines to pbx_app.c.
+
+         This is the sixth patch in a series meant to reduce the bulk of pbx.c.
+         This moves dialplan application management functions to their own source.
+
+         Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c
+
+2016-01-04 18:20 +0000 [09a9b93896]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move switch routines to pbx_switch.c.
+
+         This is the fifth patch in a series meant to reduce the bulk of pbx.c.
+         This moves ast_switch functions to their own source.
+
+         Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e
+
+2016-01-04 18:00 +0000 [c608274a39]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move timing routines to pbx_timing.c.
+
+         This is the fourth patch in a series meant to reduce the bulk of pbx.c.
+         This moves pbx timing functions to their own source.
+
+         Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6
+
+2015-12-29 04:31 +0000 [338a8ffed6]  Martin Tomec <tomec.martin@gmail.com>
+
+       * app_queue: Add member flag "in_call" to prevent reading wrong lastcall time
+
+         Member lastcall time is updated later than member status. There was chance to
+         check wrapuptime for available member with wrong (old) lastcall time.
+         New boolean flag "in_call" is set to true right before connecting call, and
+         reset to false after update of lastcall time. Members with "in_call" set to true
+         are treat as unavailable.
+
+         ASTERISK-19820 #close
+
+         Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500
+
+2015-12-28 17:23 +0000 [e13719bff1]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+
+       * app_queue: Added reason pause of member
+
+         In app_queue added value Paused Reason on QueueMemberStatus when a member
+         on queue is paused and the reason was set.
+
+         ASTERISK-25480 #close
+         Reporte by: Rodrigo Ramírez Norambuena
+
+         Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e
+
+2015-12-30 10:49 +0000 [4ec85a9f07]  gtjoseph <george.joseph@fairview5.com>
+
+       * voicemail: Move app_voicemail / res_mwi_external conflict to runtime
+
+         The menuselect conflict between app_voicemail and res_mwi_external
+         makes it hard to package 1 version of Asterisk.  There no actual
+         build dependencies between the 2 so moving this check to runtime
+         seems like a better solution.
+
+         The ast_vm_register and ast_vm_greeter_register functions in app.c
+         were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there
+         is already a voicemail module registered. The modules' load_module
+         functions were then modified to return DECLINE instead of -1 to the
+         loader.  Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE,
+         the modules were incorrectly causing Asterisk to stop so this needed
+         to be cleaned up anyway.
+
+         Now you can build both and use modules.conf to decide which voicemail
+         implementation to load.
+
+         The default menuselect options still build app_voicemail and not
+         res_mwi_external but if both ARE built, res_mwi_external will load
+         first and become the voicemail provider unless modules.conf rules
+         prevent it.  This is noted in CHANGES.
+
+         Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247
+
+2016-01-04 16:22 +0000 [7fdcfd7724]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move variable routines to pbx_variables.c.
+
+         This is the third patch in a series meant to reduce the bulk of pbx.c.
+         This moves channel and global variable routines to their own source.
+
+         Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6
+
+2015-12-04 17:22 +0000 [80a8b2a4cd]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_dial: Immediately exit dial if the caller is already hung up.
+
+         If a caller hangs up before dial is executed within an AGI then the AGI
+         has likely eaten all queued frames before executing the dial in DeadAGI
+         mode.  With the caller hung up and no pending frames from the caller's
+         read queue, dial would not know that the call has hung up until a called
+         channel answers.  It is rather annoying to whoever just answered the
+         non-existent call.
+
+         Dial should not continue execution in DeadAGI mode, hangup handlers, or
+         the h exten.
+
+         * Added a check early in dial to abort dialing if the caller has hungup.
+
+         ASTERISK-25307 #close
+         Reported by: David Cunningham
+
+         Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418
+
+2016-01-02 10:26 +0000 [1087b0c6ed]  Matt Jordan <mjordan@digium.com>
+
+       * main/cdr: Allow setting properties on a finalized CDR if it is the last one
+
+         Prior to this patch, we explicitly disallowed setting any properties on a
+         finalized CDR. This seemed like a good idea at the time; in practice, it was
+         more restrictive.
+
+         There are weird and strange scenarios where setting a property on a finalized
+         CDR is definitely wrong. For example, we may Fork a CDR, finalizing the
+         previous one, then change a property. In said case, the old CDR is supposed
+         to now be 'immutable' (so to speak), and should not be updated. From the
+         perspective of the code, a forked CDR that is finalized is just finalized.
+         Hence why we decided these should not be updated.
+
+         In practice, it is much more common to want to set a property on a CDR in
+         the h extension or in a hangup handler. Disallowing a common scenario to make
+         an esoteric behaviour work isn't good. This patch fixes this by allowing
+         callers to set a property IF we are the last CDR in the chain. This preserves
+         the finalized CDR if it was forked, while allowing the more common case to
+         function.
+
+         ASTERISK-25458 #close
+
+         Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9
+
+2016-01-02 10:23 +0000 [1f23e65b89]  Matt Jordan <mjordan@digium.com>
+
+       * main/cdr: Set the end time on a CDR if endbeforehexten is Yes
+
+         Prior to this patch, the CDR engine attempted to set the end time on a CDR
+         that was executing hangup logic and with endbeforehexten set to Yes by
+         calling a function that inspects the properties on the Party A snapshot to
+         determine if we are ready to set the end time. That always failed. This is
+         because a Party A snapshot is not updated for CDRs that are executing hangup
+         logic with endbeforehexten=Yes.
+
+         Instead of calling a function that looks at the Party A snapshot, we just
+         simply set the end time on the CDR. This is safe to call multiple times, and is
+         safe to call at this point as we know that (a) we are executing hangup logic,
+         and (b) we are supposed to set the end time at this point.
+
+         ASTERISK-25458
+
+         Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3
+
+2015-12-30 20:51 +0000 [2ffade4574]  Corey Farrell <git@cfware.com>
+
+       * main/pbx: Move custom function routines to pbx_functions.c.
+
+         This is the second patch in a series meant to reduce the bulk of pbx.c.
+         This moves custom function management routines to their own source.
+
+         Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177
+
+2015-12-28 19:18 +0000 [20b8474f20]  gtjoseph <george.joseph@fairview5.com>
+
+       * main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c
+
+         We joked about splitting pbx.c into multiple files but this first step was
+         fairly easy.  All of the pbx_builtin dialplan applications have been moved
+         into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins()
+         is called by asterisk.c just after load_pbx().
+
+         A few functions were renamed and are cross-exposed between the 2 source files.
+
+         Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a
+
+2015-12-24 20:26 +0000 [e4a566918a]  Matt Jordan <mjordan@digium.com>
+
+       * tests/test_stasis_endpoints: Remove expected duplicate events
+
+         The cache_clear test was written to expect duplicate Stasis messages
+         sent from the technology endpoint to the all caching topic. This patch
+         fixes the test to no longer expect these duplicate messages.
+
+         ASTERISK-25137
+
+         Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981
+
+2015-12-28 14:02 +0000 [a280400758]  Joshua Colp <jcolp@digium.com>
+
+       * test_time: Provide a timeout when waiting.
+
+         The test_timezone_watch unit test is written to expect a
+         condition to be signaled when the inotify daemon thread runs.
+         There exists a small window where the test_timezone_watch
+         thread can signal the inotify daemon thread while it is not
+         reading on the underlying file descriptor. If this occurs
+         the test_timezone_watch thread will wait indefinitely for a
+         signal that will never arrive.
+
+         This change adds a timeout to the condition so it will return
+         regardless after a period of time.
+
+         Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
+
+2015-05-27 13:22 +0000 [3a1c4885be]  gtjoseph <george.joseph@fairview5.com>
+
+       * endpoint/stasis: Eliminate duplicate events on endpoint status change
+
+         When an endpoint is created, its messages are forwarded to both the tech
+         endpoint topic and the all endpoints topic. This is done so that various
+         parties interested in endpoint messages can subscribe to just the tech
+         endpoint and receive all messages associated with that particular technology,
+         as opposed to subscribing to the all endpoints topic. Unfortunately, when the
+         tech endpoint is created, it also forwards all of its messages to the all
+         topic. This results in duplicate messages whenever an endpoint publishes its
+         messages.
+
+         This patch resolves the duplicate message issue by creating a new function
+         for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts
+         as a normal caching topic, save that it no longer forwards messages it receives
+         to the all endpoints topic. This allows it to act as an aggregation "sink",
+         while preserving the necessary caching behaviour.
+
+         ASTERISK-25137 #close
+         Reported-by: Vitezslav Novy
+
+         ASTERISK-25116 #close
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
+
+         Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b
+2015-12-24 22:19 +0000 [136c537695]  Dade Brandon <dade@xencall.com>
+
+       * res_http_websocket.c: prevent avoidable disconnections caused by write errors
+
+         Updated ast_websocket_write to encode the entire frame in to one
+         write operation, to ensure that we don't end up with a situation
+         where the websocket header has been sent, while the body can not
+         be written.
+
+         Previous to August's patch in commit b9bd3c14, certain network
+         conditions could cause the header to be written, and then the
+         sub-sequent body to fail - which would cause the next successful
+         write to contain a new header, and a new body (resulting in
+         the peer receiving two headers - the second of which would be
+         read as part of the body for the first header).
+
+         This was patched to have both write operations individually fail
+         by closing the websocket.
+
+         In a case available to the submitter of this patch, the same
+         body which would consistently fail to write, would succeed
+         if written at the same time as the header.
+
+         This update merges the two operations in to one, adds debug messages
+         indicating the reason for a websocket connection being closed during
+         a write operation, and clarifies some variable names for code legibility.
+
+         Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598
+
+2015-12-27 22:38 +0000 [f2efbb5d75]  Corey Farrell <git@cfware.com>
+
+       * Remove res_jabber file that was left behind.
+
+         Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b
+
+2015-12-13 13:09 +0000 [dde7f3c1c4]  Matt Jordan <mjordan@digium.com>
+
+       * res_pjsip_history: Add a module that provides PJSIP history for debugging
+
+         This patch adds a new module, res_pjsip_history, that provides a slightly
+         better way of debugging SIP message traffic on a busy Asterisk system. The
+         existing mechanisms all rely on passively dumping a SIP message to the CLI.
+         While this is perfectly fine for logging purposes and well controlled
+         environments, on many installations, the amount of SIP messages Asterisk
+         receives will quickly swamp the CLI. This makes it difficult to view/capture
+         those messages that you want to diagnose in real time.
+
+         This patch provides another way of handling this. When enabled, the module
+         will store SIP message traffic in memory. This traffic can then be queried
+         at leisure.
+
+         In order to make the querying useful, a CLI command has been implemented,
+         'pjsip show history', that supports a basic expression syntax similar to
+         SQL or other query languages. A small number of useful fields have been
+         added in this initial patch; additional fields can easily be added in
+         later improvements. Those fields are:
+          - number: The entry index in the history
+          - timestamp: The time the message was recieved
+          - addr: The source/destination address of the message
+          - sip.msg.request.method: The request method
+          - sip.msg.call-id: The Call-ID header
+
+         Note - this is a resurrection of the module initially proposed on Review Board
+         here: https://reviewboard.asterisk.org/r/4053/
+
+         Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36
+
+2015-12-25 09:56 +0000 [be050f2638]  Dade Brandon <dade@xencall.com>
+
+       * chan_sip.c: fix websocket_write_timeout default value
+
+         websocket_write_timeout was not being set to its default value
+         during sip config reload, which meant that prior to this commit,
+         1) the default value of 100 was not used, unless an invalid value
+         (or 1) was specified in sip.conf for websocket_write_timeout, and
+         2) if the websocket_write_timeout directive was removed from sip.conf
+         without a full restart of asterisk, then the previous value would
+         continue to be used indefinitely.
+
+         This essentially lead to a 0ms write timeout (the first write attempt
+         in ast_careful_fwrite must have succeeded) in websocket write requests
+         from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf.
+
+         Changes to websocket_write_timeout still only apply to new websocket
+         sessions, after the sip reload -- timeouts on existing sessions are
+         not adjusted during sip reload.
+
+         Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953
+
+2015-12-23 17:40 +0000 [b3024cad10]  Richard Mudgett <rmudgett@digium.com>
+
+       * bridge_basic.c: Fix GOTO_ON_BLINDXFR
+
+         Use of GOTO_ON_BLINDXFR would not work at all.  The target location would
+         never be executed by the transferring channel.
+
+         * Made feature_blind_transfer() call ast_bridge_set_after_go_on() with
+         valid context, exten, and priority parameters from the transferring
+         channel.
+
+         * Renamed some feature_blind_transfer() local variables for clarity.
+
+         ASTERISK-25641 #close
+         Reported by Dmitry Melekhov
+
+         Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac
+
+2015-12-24 12:19 +0000 [0a9941de9d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_location: Delete contact_status object when contact is deleted
+
+         In 450579e908, a change was made that removed the deletion of the
+         'contact_status' object when a 'contact' object is deleted in sorcery.
+         This unfortunately means that the 'contact_status' object persists, even when
+         something has explicitly removed a contact. The result is that the state of
+         the contact will not be regenerated if that contact is re-created, and the
+         stale state will be reported/used for that contact. It also results in
+         no ContactStatusChanged events being generated for either ARI or AMI.
+
+         This patch restores the deletion logic that was removed. Doing so now
+         results in the expected events being generated again.
+
+         Change-Id: I28789a112e845072308b5b34522690e3faf58f07
+
+2015-12-24 10:18 +0000 [1e24a0ca8a]  Kevin Harwell <kharwell@digium.com>
+
+       * res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef
+
+         Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151
+
+2015-12-20 21:33 +0000 [1d3d20dd68]  Dade Brandon <dade@xencall.com>
+
+       * app_amd: Correct documentation to reflect functionality
+
+         Update documentation to reflect that maximum_number_of_words
+         has functionality inconsistent with the variable name (and inconsistent
+         with prior documentation.)
+
+         Update documentation for silence_threshold, which previously implied
+         that it was measuring time, rather than noise averages in the sample.
+
+         Update the comments in amd.conf.sample.
+
+         ASTERISK-25639 #close
+         Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093
+
+2015-12-17 19:05 +0000 [965a0eee46]  Dade Brandon <dade@xencall.com>
+
+       * res_rtp_asterisk: Resolve further timing issues with DTLS negotiation
+
+         Resolves an edge case dtls negotiation delay for certain networks which
+         somehow manage to drop the rtcp side's packet when these are both sent
+         ast_rtp_remote_address_set, causing it to have to time-out and restart
+         the handshake.
+
+         Move dtls pending bio flush in to it's own function, and call it from
+         ast_rtp_on_ice_complete, when we're rtp->ice, rather than when
+         ast_rtp_remote_address_set.
+
+         Keep the existing flush from the recent change to res_rtp_remote_address_set
+         if ice is not being used.
+
+         ASTERISK-25614 #close
+         Reported-by: XenCALL
+         Tested by: XenCALL
+
+         Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5
+
+2015-12-18 09:54 +0000 [ae428d8460]  Carlos Oliva <carlos.oliva@invoxcontact.com>
+
+       * app_queue: update RT members when the 1st call joins a queue with no agents
+
+         If a call enters on a queue and the members on that queue are updated in
+         realtime (ex: using mysql inserting a new agent) the queue members are
+         never refreshed and the call will stay in the queue until other event occurs.
+         This happens only if this is the first call of the queue and there is no
+         agents servicing.
+         This patch prevent this issue, ensuring realtime members are updated if
+         there is one call in the queue and no available agents
+
+         ASTERISK-25442 #close
+
+         Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682
+
+2015-12-05 10:01 +0000 [59d5bb0613]  Joshua Colp <jcolp@digium.com>
+
+       * res_sorcery_memory_cache: Add support for a full backend cache.
+
+         This change introduces the configuration option 'full_backend_cache'
+         which changes the cache to be a full mirror of the backend instead
+         of a per-object cache. This allows all sorcery retrieval operations
+         to be carried out against it and is useful for object types which
+         are used in a "retrieve all" or "retrieve some" pattern.
+
+         ASTERISK-25625 #close
+
+         Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5
+
+2015-12-17 10:25 +0000 [0cefcabd58]  Joshua Colp <jcolp@digium.com>
+
+       * rtp_engine: Ignore empty filenames in DTLS configuration.
+
+         When applying an empty DTLS configuration the filenames in the
+         configuration will be empty. This is actually valid to do and
+         each filename should simply be ignored.
+
+         Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539
+
+2015-12-17 08:10 +0000 [158a0a5422]  Joshua Colp <jcolp@digium.com>
+
+       * chan_sip: Enable WebSocket support by default.
+
+         Per the documentation the WebSocket support in chan_sip is
+         supposed to be enabled by default but is not. This change
+         corrects that.
+
+         Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423
+
+2015-12-14 12:04 +0000 [a9d6fc571d]  Joshua Colp <jcolp@digium.com>
+
+       * json: Audit ast_json_* usage for thread safety.
+
+         The JSON library Asterisk uses, jansson, is not thread
+         safe for us in a few ways. To help with this wrappers for JSON
+         object reference count increasing and decreasing were added
+         which use a global lock to ensure they don't clobber over
+         each other. This does not extend to reference count manipulation
+         within the jansson library itself. This means you can't safely
+         use the object borrowing specifier (O) in ast_json_pack and
+         you can't share JSON instances between objects.
+
+         This change removes uses of the O specifier and replaces them
+         with the o specifier and an explicit ast_json_ref. Some cases
+         of instance sharing have also been removed.
+
+         ASTERISK-25601 #close
+
+         Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1
+
+2015-12-16 11:28 +0000 [53bd5a539a]  Mark Michelson <mmichelson@digium.com>
+
+       * Alembic: Increase column size of PJSIP AOR "contact".
+
+         When running the PJSIP AMI "show_endpoint" test with automatic
+         conversion to realtime, the test would fail. This was because the AOR
+         "contact" column was sized at 40, and the configured contact was larger
+         than that.
+
+         This commit increases the size of the contact column to 255 characters.
+
+         Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1
+
+2015-12-16 11:25 +0000 [da17dc4d75]  Mark Michelson <mmichelson@digium.com>
+
+       * Alembic: Add PJSIP global keep_alive_interval.
+
+         The keep_alive_interval option was added about a year ago, but no
+         alembic revision was created to add the appropriate column to the
+         database.
+
+         This commit fixes the problem and adds the column. This was discovered
+         by running the testsuite with automatic conversion to realtime enabled.
+
+         Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a
+
+2015-12-14 13:53 +0000 [24ae124e4f]  server-pandora <server-pandora@xencall.com>
+
+       * res_rtp_asterisk.c: Fix DTLS negotiation delays.
+
+         - Trigger pending DTLS packets to send out, once the RTP instance's remote
+           address is set.
+         - Avoids locking the DTLS structure unnecessarily by only doing this if
+           DTLS is passive.
+         - Add DTLS locks around the structurally sensitive calls in the SSL
+           portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock
+           inside of itself, and we're dealing with the SSL BIO in at least two
+           threads.
+
+         WebRTC channels may receive a DTLS handshake before
+         ast_rtp_remote_address_set is called, which causes there to be a pending
+         response to send out.   Previous to 1ad827, this was handled by calling
+         dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP
+         packet could trigger the pending handshake response.  Since that was
+         rightfully removed, whenever the DTLS handshake is received before the
+         remote address is set, we would have to wait until another SSL packet
+         arrives.
+
+         As of Chrome M47's optimizations to their handshake process, WebRTC
+         conversations between Chrome M47+ and Asterisk, where Asterisk is passive,
+         experience a 1 second delay without this patch, because the SSL handshake
+         is received before ICE negotation stores the remote_address, and the next
+         SSL packet isn't received until after a 1 second timeout in Chrome, which
+         causes a new handshake request.
+
+         ASTERISK-25614 #close
+
+         Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908
+
+2015-12-14 15:25 +0000 [36097a185d]  Richard Mudgett <rmudgett@digium.com>
+
+       * Fix sscanf() format string type mismatch.
+
+         ASTERISK-25615
+         Reported by: George Joseph
+
+         Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b
+
+2015-12-13 13:13 +0000 [94f9927784]  Matt Jordan <mjordan@digium.com>
+
+       * main/utils: Don't emit an ERROR message if the read end of a pipe closes
+
+         An ERROR or WARNING message should generally indicate that something has gone
+         wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not
+         in control of when the far end closes its reading on a file descriptor. If the
+         far end does close the file descriptor in an unclean fashion, this isn't a bug
+         or error in Asterisk, particularly when the situation can be gracefully
+         handled in Asterisk.
+
+         Currently, when this happens, a user would see the following somewhat cryptic
+         ERROR message:
+
+           "utils.c: write() returned error: Broken pipe"
+
+         There's a few problems with this:
+         (1) It doesn't provide any context, other than 'something broke a pipe'
+         (2) As noted, it isn't actually an error in Asterisk
+         (3) It can get rather spammy if the thing breaking the pipe occurs often, such
+             as a FastAGI server
+         (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even
+             mask legitimate issues
+
+         This patch changes ast_carefulwrite to only log an ERROR if we actually had one
+         that was reasonably under our control. For debugging purposes, we still emit
+         a debug message if we detect that the far side has stopped reading.
+
+         Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566
+
+2015-12-12 11:08 +0000 [5b867fa904]  gtjoseph <george.joseph@fairview5.com>
+
+       * pjsip/config_transport: Check pjproject version at runtime for async ops
+
+         pjproject < 2.5.0 will segfault on a tls transport if async_operations
+         is greater than 1.  A runtime version check has been added to throw
+         an error if the version is < 2.5.0 and async_operations > 1.
+
+         To assist in the check, a new api "ast_compare_versions" was added
+         to utils which compares 2 major.minor.patch.extra version strings.
+
+         ASTERISK-25615 #close
+
+         Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+2015-12-10 11:44 +0000 [14b41115e3]  Jonathan Rose <jrose@digium.com>
+
+       * chan_sip: Add TCP/TLS keepalive to TCP/TLS server
+
+         Adds the TCP Keep Alive option to TCP and TLS server sockets. Previously
+         this option was only being set on session sockets.
+         http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/
+         According to the link above, the SO_KEEPALIVE option is useful for knowing
+         when a TCP connected endpoint has severed communication without indicating
+         it or has become unreachable for some reason. Without this patch, keep
+         alive is not set on the socket listening for incoming TCP sessions and
+         in Komatsu's report this resulted in the thread listening for TCP becoming
+         stuck in a waiting state.
+
+         ASTERISK-25364 #close
+         Reported by: Hiroaki Komatsu
+
+         Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36
+2015-12-08 13:04 +0000 [fe8011cc50]  sungtae kim <pchero21@gmail.com>
+
+       * AMI: Fixed OriginateResponse message
+
+         When the asterisk sending OriginateResponse message,
+         it doesn't set the "Uniqueid".
+         And it didn't support correct response message for
+         Application originate.
+
+         ASTERISK-25624 #close
+
+         Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d
+
+2015-12-09 09:48 +0000 [cd119ed4a2]  Tyler Cambron <tcambron@digium.com>
+
+       * res_chan_stats: Fix bug to send correct statistics to StatsD
+
+         Fixed a bug that originally would show a negative number of
+         active calls occuring in Asterisk. A gauge is persistent so
+         incrementing and decrementing it results in a more consistent
+         performance. Also changed to the call to StatsD to use
+         ast_statsd_log_string() so that a "+" could be sent to StatsD.
+
+         ASTERISK-25619 #close
+
+         Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7
+
+2015-12-07 13:07 +0000 [ddf4dddf4f]  Corey Farrell <git@cfware.com>
+
+       * app_meetme: Set default value for audio_buffers.
+
+         The default value was never set for audio_buffers, causing bad
+         audio quality.  This ensures the default is always set.
+
+         ASTERISK-25569 #close
+
+         Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44
+2015-12-08 01:57 +0000 [142d4fefb8]  Filip Jenicek <phill@janevim.cz>
+
+       * chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)
+
+         Asterisk may crash when calling ast_channel_get_t38_state(c)
+         on a locked channel which is being hung up.
+
+         ASTERISK-25609 #close
+
+         Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b
+
+2015-12-08 17:49 +0000 [21962dad93]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Add existence and readablity checks for tls related files
+
+         Both transport and endpoint now check for the existence and readability
+         of tls certificate and key files before passing them on to pjproject.
+         This will cause the object to not load rather than waiting for pjproject
+         to discover that there's a problem when a session is attempted.
+
+         NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located
+         in build_peer which is gigantic and I didn't want to disturb it.
+         Error messages will emit but it won't interrupt chan_sip loading.
+
+         ASTERISK-25618 #close
+
+         Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+2015-12-02 12:42 +0000 [28d9243079]  Eugene Voityuk <eugene@thirdlane.com>
+
+       * chan_sip.c: Start ICE negotiation when response is sent or received.
+
+         The current logic for ICE negotiation starts it
+         when receiving an SDP with ICE candidates. This is
+         incorrect as ICE negotiation can only start when each 
+         call party have at least one pair of local and remote 
+         candidate. Starting ICE negotiation early would result 
+         in negotiation failure and ultimately no audio.
+
+         This change makes it so ICE negotiation is only started
+         when a response with SDP is received or when a response
+         with SDP is sent.
+
+         ASTERISK-24146
+
+         Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca
+2015-12-08 11:03 +0000 [e03582a1c2]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls
+
+         See ASTERISK-25615.
+         If the transport protocol is tls and async_operations > 1, pjproject
+         will segfault if more than one operation is attempted on the same socket.
+         Until this is fixed upstream, a check has been added to throw an error
+         if a tls transport config has async_operations set to > 1.
+
+         ASTERISK-25615
+
+         Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+2015-12-08 08:39 +0000 [876600ce6e]  Alexander Traud <pabstraud@compuserve.com>
+
+       * codec_resample: Increase buffer for Opus Codec with FEC.
+
+         ASTERISK-25599 #close
+
+         Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e
+
+2015-12-08 03:46 +0000 [69e3d40ad7]  Alexander Traud <pabstraud@compuserve.com>
+
+       * translate: Avoid a warning message when doing FEC within Opus Codec.
+
+         ASTERISK-25616 #close
+
+         Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319
+
+2015-12-04 15:36 +0000 [2b992014dc]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip: Fix crash involving the bogus peer during sip reload.
+
+         A crash happens sometimes when performing a CLI "sip reload".  The bogus
+         peer gets refreshed while it is in use by a new call which can cause the
+         crash.
+
+         * Protected the global bogus peer object with an ao2 global object
+         container.
+
+         ASTERISK-25610 #close
+
+         Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed
+
+2015-12-06 16:32 +0000 [529535f0c2]  Matt Jordan <mjordan@digium.com>
+
+       * Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state"
+
+         This reverts commit 6614babea27fbafbe11820ea03737dd5c4f9ecec.
+
+         Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks
+         in core_unreal/chan_local. Local channels attempt to reach across both their
+         peer and the peer's bridge to inspect T.38 state. Given the propensity of
+         Local channel chains, managing the locking situation in such a scenario is
+         practically infeasible.
+
+         Change-Id: Ic687397ffea08dfb899345a443bd990ec3d0416a
+
+2015-12-04 16:23 +0000 [450579e908]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/contacts/statsd:  Make contact lifecycle events more consistent
+
+         It will never be perfect or even pretty, mostly because of the differences
+         between static and dynamic contacts.
+
+         Created:
+
+         Can't use the contact or contact_status alloc functions
+         because the objects come and go regardless of the actual state.
+
+         Can't use the contact_apply_handler, ast_sip_location_add_contact or
+         a sorcery created handler because they only get called for dynamic
+         contacts.  Similarly, permanent_uri_handler only gets called for
+         static contacts.
+
+         So, Matt had it right. :)  ast_res_pjsip_find_or_create_contact_status is
+         the only place it can go and not have duplicated code.  Both
+         permanent_uri_handler and contact_apply_handler call find_or_create.
+
+         Removed:
+
+         Can't use the destructors for the same reason as above.  The only
+         place to put this is in persistent_endpoint_contact_deleted_observer
+         which I believe is the "correct" place but even that will handle only
+         dynamic contacts.  This doesn't called on shutdown however.  There is
+         no hook to use for static contacts that may be removed because of a
+         config change while asterisk is in operation.
+
+         I moved the cleanup of contact_status from ast_sip_location_delete_contact
+         to the handler as well.
+
+         Status Change and RTT:
+
+         Although they worked fine where they were (in update_contact_status) I
+         moved them to persistent_endpoint_contact_status_observer to make it
+         more consistent with removed.  There was logic there already to detect
+         a state change.
+
+         Finally, fixed a nit in permanent_uri_handler rmudgett reported
+         eralier.
+
+         ASTERISK-25608 #close
+
+         Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+2015-11-21 06:02 +0000 [5a18193dc0]  Alexander Traud <pabstraud@compuserve.com>
+
+       * res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8.
+
+         ASTERISK-25584 #close
+
+         Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91
+
+2015-11-21 05:21 +0000 [3e2178c05e]  Alexander Traud <pabstraud@compuserve.com>
+
+       * res_format_attr_opus: Update to latest RFC 7587.
+
+         Beside that, the format-attribute module sends only non-default values in the
+         line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore,
+         previously the parameter stereo was not parsed when being the first parameter.
+
+         ASTERISK-25583 #close
+
+         Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73
+2015-12-02 14:11 +0000 [072d94183c]  Jonathan Rose <jrose@digium.com>
+
+       * Fix crash in audiohook translate to slin
+
+         This patch fixes a crash which would occur when an audiohook was
+         applied to a channel using an audio codec that could not be translated
+         to signed linear (such as when using pass-through codecs like OPUS or
+         when the codec translator module for the format in use is not loaded).
+
+         ASTERISK-25498 #close
+         Reported by: Ben Langfeld
+
+         Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384
+
+2015-12-03 12:07 +0000 [9184fbeb34]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip: Use a MD5 hash for static Contact IDs
+
+         When 90d9a70789 was merged, it mostly tested dynamic contacts created as
+         a result of registering a PJSIP endpoint. Contacts generated in this
+         fashion typically have a long alphanumeric string as their object identifier,
+         which maps reasonably well for StatsD. Unfortunately, this doesn't work in the
+         general case. StatsD treats both '.' and ':' characters as special characters.
+         In particular, having a ':' appear in the middle of a StatsD metric will
+         result in the metric being rejected.
+
+         This causes some obvious issues with SIP URIs.
+
+         The StatsD API should not be responsible for escaping the metric name passed
+         to it. The metric is treated as a single long string, and it would be
+         challenging to know what to escape in the string passed to the function.
+         Likewise, we don't want to escape the metric in PJSIP, as that involves
+         overhead that is wasted when either res_statsd isn't loaded or enabled.
+
+         This patch takes an alternative approach. The Contact ID has been changed
+         to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the
+         aforementioned special characters, (b) can be done on Contact creation,
+         which has minimal impact on run-time performance, and (c) also conforms to an
+         earlier commit that changed the ID for dynamic contacts.
+
+         The downside of this is that StatsD users will have to map SHA1 hashes back to
+         the Contacts that are emitting the statistics. To that end, the CLI commands
+         have been updated to include the first 10 characters of the MD5 hash, which
+         should be enough to match what is shown in Graphite (or some other StatsD
+         backend).
+
+         ASTERISK-25595 #close
+
+         Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2
+         Reported-by: Matt Jordan
+         Tested-by: George Joseph
+
+2015-11-30 22:19 +0000 [ed9134282e]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Update logging to show contact->uri in messages
+
+         An earlier commit changed the id of dynamic contacts to contain
+         a hash instead of the uri.  This patch updates status change
+         logging to show the aor/uri instead of the id.  This required
+         adding the aor id to contact and contact_status and adding
+         uri to contact_status.  The aor id gets added to contact and
+         contact_status in their allocators and the uri gets added to
+         contact_status in pjsip_options when the contact_status is
+         created or updated.
+
+         ASTERISK-25598 #close
+
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+         Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511
+
+2015-12-01 16:11 +0000 [eadad24b59]  Jonathan Rose <jrose@digium.com>
+
+       * Unset BRIDGEPEER when leaving a bridge
+
+         Currently if a channel is transferred out of a bridge, the BRIDGEPEER
+         variable (also BRIDGEPVTCALLID) remain set even once the channel is
+         out of the bridge. This patch removes these variables when leaving
+         the bridge.
+
+         ASTERISK-25600 #close
+         Reported by: Mark Michelson
+
+         Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da
+
+2015-11-30 14:22 +0000 [bb0b60619d]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_sorcery_memory_cache.c: Fix off nominal ref leak.
+
+         Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49
+
+2015-11-30 16:42 +0000 [e7c88e11aa]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [4aed349a7b]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [6d9156d10f]  Richard Mudgett <rmudgett@digium.com>
+
+       * Audit improper usage of scheduler exposed by 5c713fdf18f.
+
+         channels/chan_iax2.c:
+         * Initialize struct chan_iax2_pvt scheduler ids earlier because of
+         iax2_destroy_helper().
+
+         channels/chan_sip.c:
+         channels/sip/config_parser.c:
+         * Fix initialization of scheduler id struct members.  Some off nominal
+         paths had 0 as a scheduler id to be destroyed when it was never started.
+
+         chan_skinny.c:
+         * Fix some scheduler id comparisons that excluded the valid 0 id.
+
+         channel.c:
+         * Fix channel initialization of the video stream scheduler id.
+
+         pbx_dundi.c:
+         * Fix channel initialization of the packet retransmission scheduler id.
+
+         ASTERISK-25476
+
+         Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8
+
+2015-12-01 07:55 +0000 [b76c196e13]  Alexander Traud <pabstraud@compuserve.com>
+
+       * codec_resample: Increase buffer for Opus Codec.
+
+         ASTERISK-25599 #close
+
+         Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10
+
+2015-11-28 08:46 +0000 [6614babea2]  Matt Jordan <mjordan@digium.com>
+
+       * bridges/bridge_t38: Add a bridging module for managing T.38 state
+
+         When 4875e5ac32 was merged, it fixed several issues with a direct media bridge
+         transitioning to handling a T.38 fax. However, it uncovered a race condition
+         caused by the bridging core. When a channel involved in a T.38 fax leaves a
+         bridge, the frame queued by the channel driver that should inform the far side
+         that it is no longer in a T.38 fax may not make it across the bridge. The
+         bridging framework is *extremely* aggressive in tearing down the bridge, and
+         control frames that are currently in flight *may* get dropped.
+
+         This patch adds a new module to the bridging framework, bridge_t38. This module
+         maintains some notion of the T.38 state for the two channels in a bridge. When
+         the bridge detects that it is being torn down or when one of the two channels
+         leaves, it informs the respective channel(s) that they should stop faxing. This
+         ensures that channels switch back to audio if they survive and are ejected out
+         of a bridge while faxing.
+
+         ASTERISK-25582
+
+         Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0
+
+2015-11-27 07:39 +0000 [3fcf160fae]  Niklas Larsson <niklas@tese.se>
+
+       * CHANGES: Fix a typo
+
+         Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7
+2015-11-25 15:26 +0000 [45efbf8503]  Kevin Harwell <kharwell@digium.com>
+
+       * fastagi: record file closed after sending result
+
+         The fastagi record-file testsuite test sometimes fails reporting an empty
+         recorded file. This was happening because Asterisk was sending the agi result
+         notification prior to actually closing the file and the data, being buffered,
+         had not been written to the file yet when the test attempts to check the file
+         size.
+
+         This patch makes it so the record file stream is closed prior to sending the
+         agi result notification.
+
+         ASTERISK-25593 #close
+
+         Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde
+
+2015-11-25 13:29 +0000 [b2787876d6]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * main: Slight refactor of main. Improve color situation.
+
+         Several issues are addressed here:
+         - main() is large, and half of it is only used if we're not rasterisk;
+           fixed by spliting up the daemon part into a separate function.
+         - Call ast_term_init from rasterisk as well.
+         - Remove duplicate code reading/writing asterisk history file.
+         - Attempt to tackle background color issues and color changes that
+           occur. Tested by starting asterisk -c until the colors stopped
+           changing at odd locations.
+
+         ASTERISK-25585 #close
+
+         Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f
+
+2015-11-24 13:54 +0000 [59881fbb99]  David M. Lee <dlee@respoke.io>
+
+       * Fixed some typos
+
+         Fixes some minor typos in the CHANGES file, plus an embarrasing typo in
+         the StatsD API.
+
+         Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7
+
+2015-11-24 13:07 +0000 [b75f587d15]  Corey Farrell <git@cfware.com>
+
+       * res_pjsip_notify: Fix CLI usage info
+
+         The usage info for 'pjsip send notify' previously referenced the
+         chan_sip configuration sip_notify.conf.  Fix this to reference
+         the correct configuration pjsip_notify.conf.
+
+         ASTERISK-25590 #close
+
+         Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea
+
+2015-11-23 14:27 +0000 [fc45f4040d]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_sorcery_realtime.c: Fix crash from NULL sorcery object type.
+
+         If the sorcery object type is not found a NULL is returned.
+         Unfortunately, sorcery_realtime_filter_objectset() will crash after
+         complaining about not finding the object type and saying to expect errors.
+
+         * Use ao2_cleanup() instead of ao2_ref() to prevent the crash.
+
+         ASTERISK-25165
+         Reported by Corey Farrell
+
+         Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97
+
+2015-11-20 21:08 +0000 [4875e5ac32]  Matt Jordan <mjordan@digium.com>
+
+       * chan_pjsip: Handle T.38 faxes with direct media bridges
+
+         When a channel is in a direct media bridge, a re-INVITE may arrive that forces
+         Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge
+         must change its technology to a simple bridge, and re-INVITE the media back
+         to Asterisk.
+
+         Generally, this logic mostly already exists in Asterisk. However, prior to this
+         patch, there were a few bugs:
+         (1) The T.38 framehook currently prevents a channel capable of T.38 faxes from
+             ever entering into a direct media bridge. This applies even when the only
+             media being passed over the channel is audio. This patch fixes this bug
+             by having the framehook specify that it defers caring about any frame type.
+             This allows the channels to enter into a direct media bridge, which will
+             be broken when a re-INVITE is received.
+         (2) When a re-INVITE is received, nothing instructed the bridging layer to
+             re-inspect the allowed bridging technology. This now occurs when either
+             a re-INVITE is received from a peer, or when a response is received from
+             the far end (that is, when the T.38 state changes to either
+             T38_PEER_REINVITE or T38_LOCAL_REINVITE).
+         (3) chan_pjsip needs to do a small amount of work to prevent a direct media
+             bridge from being chosen when a T.38 session is in progress. When a T.38
+             session supplement has a t38 datastore - which is added when we detect
+             we should start thinking about T.38 on a channel - we now refuse a native
+             RTP bridge.
+         (4) When a BYE request is received, we don't terminate the T.38 session. If
+             the other side of a T.38 fax survives the hangup (due to the 'g' flag
+             in Dial, for example), we don't currently re-INVITE the media on the
+             other channel back to audio. This patch now has res_pjsip_t38 intercept
+             BYE requests and inform the far side that the T.38 session is terminated.
+             This naturally causes the correct re-INVITEs to be sent.
+
+         ASTERISK-25582
+
+         Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb
+
+2015-11-20 21:07 +0000 [2b94d9a10d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_t38: Add debug statements
+
+         This patch adds some debug statements to res_pjsip_t38. These statements help
+         to determine which SDP negotiation callbacks are being executed, and, when
+         a particular callback exits, why a callback may not have applied its logic
+         to the local or remote SDP.
+
+         Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77
+
+2015-10-22 09:44 +0000 [af288b2d96]  Matt Jordan <mjordan@digium.com>
+
+       * main/cli: Use proper string methods to check existence of context/exten/app
+
+         Because the context, extension, and application are stored in stringfields,
+         checking for them being NULL doesn't work so well. This patch uses the
+         appropriate string library call, ast_strlen_zero, to see if there is a value
+         in the context/exten/app values.
+
+         Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23
+
+2015-11-18 09:43 +0000 [d27aac0a9d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_endpoint_stats: Add module to emit endpoint StatsD statistics
+
+         This patch adds a module that emits StatsD statistics about Asterisk
+         endpoints. This includes:
+          * A GUAGE statistic for endpoint states, tracking how many endpoints are in
+            a particular state.
+          * A GUAGE statistic for each endpoint, counting the number of channels
+            currently associated with an endpoint.
+
+         ASTERISK-25572
+
+         Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305
+
+2015-11-18 10:07 +0000 [90d9a70789]  Matt Jordan <mjordan@digium.com>
+
+       * res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts
+
+         This patch adds the ability to send StatsD statistics related to the
+         state of PJSIP contacts. This includes:
+          * A GUAGE statistic measuring the count of contacts in a particular state.
+            This measures how many contacts are reachable, unreachable, etc.
+          * The RTT time for each contact, if those contacts are qualified. This
+            provides StatsD engines useful time-based data about each contact.
+
+         ASTERISK-25571
+
+         Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c
+
+2015-11-13 10:34 +0000 [75097a0955]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_outbound_registration: Add registration statistics for StatsD
+
+         This patch adds outbound registration statistics for StatsD. This includes
+         the following:
+          * A GUAGE metric for the overall count of outbound registrations.
+          * A GUAGE metric for each state an outbound registration can be in. As the
+            outbound registrations change state, the overall count of how many
+            outbound registrations are in the particular state is changed.
+
+         These statistics are particularly useful for systems with a large number of
+         SIP trunks, and where measuring the change in state of the trunks is useful
+         for monitoring.
+
+         ASTERISK-25571
+
+         Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37
+
+2015-11-19 09:40 +0000 [8f71263e72]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_outbound_registration: Apply configuration on object type load
+
+         When Asterisk is configured to use a dynamic sorcery backend (such as
+         res_sorcery_astdb) with 'registration' objects, it will fail to create the
+         internal state objects associated with the registration objects on module
+         load. This is due to nothing actually querying for the specific objects
+         and calling their sorcery apply handler during module load.
+
+         This patch fixes that by calling get_registrations in the sorcery observer's
+         object_type_loaded handler. Doing this causes the sorcery backends to be
+         asked for the current state of all registration objects, which causes the
+         apply handler to be called and the internal run-time state to be created.
+
+         ASTERISK-25575 #close
+
+         Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23
+
+2015-11-11 11:51 +0000 [0b508789ab]  Alexander Traud <pabstraud@compuserve.com>
+
+       * translate: Provide translation modules the result of SDP negotiation.
+
+         Previously, a trancoding module did not have access to the joint but cached
+         format. Therefore, the module did not have access to the attributes negotiated
+         via SDP (line fmtp). Now, a translation module receives the joint format.
+
+         ASTERISK-25545 #close
+
+         Change-Id: Id6878a989b50573298dab115d3371ea369e1a718
+
+2015-11-19 01:14 +0000 [1aa552b2a2]  Alexander Traud <pabstraud@compuserve.com>
+
+       * res_format_attr_h264: Do not reset string buffer.
+
+         When no parameter is present, Asterisk does not generate the line fmtp, as
+         expected. However, because a buffer was reset, even rtpmap and fmtp of previous
+         media codecs got removed. Now, Asterisk does not reset other codecs in case of
+         no parameter for H.264.
+
+         ASTERISK-25573 #close
+
+         Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286
+
+2015-11-18 10:05 +0000 [3354b325c6]  Matt Jordan <mjordan@digium.com>
+
+       * res_statsd: Add functions that support variable arguments
+
+         Often, the metric names of statistics we are generating for StatsD have some
+         dynamic component to them. This can be the name of a particular resource, or
+         some internal status label in Asterisk. With the current set of functions,
+         callers of the statsd API must first build the metric name themselves, then
+         pass this to the API functions. This results in a large amount of boilerplate
+         code and usage of either fixed length static buffers or dynamic memory
+         allocation, neither of which is desireable.
+
+         This patch adds two new functions to the StatsD API that support a printf
+         style format specifier for constructing the metric name. A dynamic string,
+         allocated in threadstorage, is used to build the metric name. This eases
+         the burden on users of the StatsD API.
+
+         Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea
+
+2015-11-17 14:53 +0000 [d4a522d587]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts.
+
+         Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d
+
+2015-11-17 14:53 +0000 [e44ab3816c]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Fix 423 response handling.
+
+         Receiving a 423 Interval Too Brief response after authentication for an
+         outbound registration attempt results in assuming that the registrar has
+         rejected the registration permanently.  If there are no configured retries
+         for fatal responses then the outbound registration is stopped for that
+         endpoint.
+
+         For registrations, PJSIP/PJPROJECT intercepts the handling of 423
+         responses and does not include any authentication in the updated
+         registration request.  When the updated request is challenged then the
+         Asterisk code assumes that we were challenged again because the peer
+         rejected the authentication we sent earlier.
+
+         * Made registration challenges keep track of the CSeq number to determine
+         if the received challenge response was for the request we thought we sent.
+         If the response's CSeq number differs from the CSeq number we last sent
+         with authentication then authenticate again because it is a challenge to a
+         different request.
+
+         Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09
+
+2015-11-03 14:36 +0000 [1e0040b88f]  Tyler Cambron <tcambron@digium.com>
+
+       * StatsD: Add res_statsd compatibility
+
+         Added a new api to res_statsd.c to allow it to receive a
+         character pointer for the value argument. This allows for a
+         '+' and a '-' to easily be sent with the value.
+
+         ASTERISK-25419
+         Reported By: Ashley Sanders
+
+         Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611
+
+2015-11-16 13:56 +0000 [f62b642fe3]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip: Fix off nominal crash with requests that fail and have a timer
+
+         When a request is sent using pjsip_endpt_send_request and fails, a condition
+         exists where the request wrapper, which is an AO2 object, may be de-ref'd
+         more times than it should. This occurs when the request's callback is called,
+         and, in the callback, the timer on the PJSIP heap is cancelled. When that
+         occurs, the request wrapper's lifetime is decremented. When
+         pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of
+         the request wrapper again, even though we've already cancelled the reference
+         associated with the timer.
+
+         This patch checks the return result of pj_timer_heap_cancel_if_active before
+         removing the reference associated with the timer. We now only decrement it
+         in this case if a timer is cancelled as a result of the function call.
+
+         Change-Id: I21332343a1a019c1117076f9bf2df27be2850102
+
+2015-11-13 14:03 +0000 [fdd2afcd16]  Mark Michelson <mmichelson@digium.com>
+
+       * Confbridge: Add a user timeout option
+
+         This option adds the ability to specify a timeout, in seconds, for a
+         participant in a ConfBridge. When the user's timeout has been reached,
+         the user is ejected from the conference with the CONFBRIDGE_RESULT
+         channel variable set to "TIMEOUT".
+
+         The rationale for this change is that there have been times where we
+         have seen channels get "stuck" in ConfBridge because a network issue
+         results in a SIP BYE not being received by Asterisk. While these
+         channels can be hung up manually via CLI/AMI/ARI, adding some sort of
+         automatic cleanup of the channels is a nice feature to have.
+
+         ASTERISK-25549 #close
+         Reported by Mark Michelson
+
+         Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98
+
+2015-11-16 04:29 +0000 [7debb986a5]  Alec Davis <sivad.a@paradise.net.nz>
+
+       * 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-14 07:02 +0000 [afd9a89e5a]  Joshua Colp <jcolp@digium.com>
+
+       * hashtab: Add NULL check when destroying iterator.
+
+         The hashtab API is pretty NULL tolerant which has resulted
+         in remaining callers not doing much checks themselves.
+         Unfortunately the function to destroy an iterator does not
+         do a NULL check and will result in a crash if passed NULL.
+         This change fixes that.
+
+         ASTERISK-25552 #close
+
+         Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619
+
+2015-11-13 14:32 +0000 [c0f2f8de45]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_rfc3326.c: Fix crash when channel goes away.
+
+         If an authenticated incoming caller does not respond to our 200 OK INVITE
+         response with an ACK then PJSIP will hangup the call.  Unfortunately,
+         there is a chance that the session's channel will go away between one use
+         of the channel pointer and another when building the BYE request because
+         the BYE is being built by the monitor thread and not the call's serializer
+         thread.
+
+         * Added a check to ensure that the thread trying to add the Reason header
+         is the call's serializer thread.  This ensures that the channel will not
+         go away on us.
+
+         Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89
+
+2015-11-13 14:19 +0000 [4f43b85c92]  Mark Michelson <mmichelson@digium.com>
+
+       * Taskprocessors: Increase high-water mark
+
+         In practical tests, we have seen certain taskprocessors, specifically
+         Stasis subscription taskprocessors, cross the recently-added high-water
+         mark and emit a warning. This high-water mark warning is only intended
+         to be emitted when things have tanked on the system and things are
+         heading south quickly. In the practical tests, the Stasis taskprocessors
+         sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in
+         any danger at all.
+
+         As such, this ups the high-water mark to 500 tasks instead. It also
+         redefines the SIP threadpool request denial number to be a multiple of
+         the taskprocessor high-water mark.
+
+         Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce
+
+2015-11-11 11:46 +0000 [d8d3991390]  Alexander Traud <pabstraud@compuserve.com>
+
+       * format: Register format-attribute module with cached formats.
+
+         In Asterisk 13, cached formats are created before their corresponding format-
+         attribute module is registered. Cached formats are involved when a local
+         extension is called. Therefore, ast_format_generate_sdp_fmtp did not work
+         on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264,
+         and format-attribute modules provided externally.
+
+         ASTERISK-25160 #close
+
+         Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354
+
+2015-11-12 11:17 +0000 [367972e42d]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip distributor: Don't send 503 response to responses.
+
+         When the SIP threadpool is backed up with tasks, we send 503 responses
+         to ensure that we don't try to overload ourselves. The problem is that
+         we were not insuring that we were not trying to send a 503 to an
+         incoming SIP response.
+
+         This change makes it so that we only send the 503 on incoming requests.
+
+         Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404
+
+2015-11-11 17:11 +0000 [2f9cb7d62b]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Deny requests when threadpool queue is backed up.
+
+         We have observed situations where the SIP threadpool may become
+         deadlocked. However, because incoming traffic is still arriving, the SIP
+         threadpool's queue can continue to grow, eventually running the system
+         out of memory.
+
+         This change makes it so that incoming traffic gets rejected with a 503
+         response if the queue is backed up too much.
+
+         Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816
+
+2015-11-12 06:24 +0000 [4e5bf12b33]  Joshua Colp <jcolp@digium.com>
+
+       * format_cap: Don't append the 'none' format when appending all.
+
+         When appending all formats of a type all the codecs are iterated
+         and added. This operation was incorrectly adding the ast_format_none
+         format which is special in that it is supposed to be used when no
+         format is present. It shouldn't be appended.
+
+         ASTERISK-25535
+
+         Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c
+
+2015-11-11 04:16 +0000 [07583c2888]  Steve Davies <steve@one47.co.uk>
+
+       * Further fixes to improper usage of scheduler
+
+         When ASTERISK-25449 was closed, a number of scheduler issues mentioned in
+         the comments were missed. These have since beed raised in ASTERISK-25476
+         and elsewhere.
+
+         This patch attempts to collect all of the scheduler issues discovered so
+         far and address them sensibly.
+
+         ASTERISK-25476 #close
+
+         Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b
+
+2015-11-11 11:04 +0000 [b818d70533]  Joshua Colp <jcolp@digium.com>
+
+       * threadpool: Handle worker thread transitioning to dead when going active.
+
+         This change adds handling of dead worker threads when moving them
+         to be active. When this happens the worker thread is removed from
+         both the active and idle threads container. If no threads are able
+         to be moved to active then the pool grows as configured.
+
+         A unit test has also been added which thrashes the idle timeout
+         and thread activation to exploit any race conditions between the
+         two.
+
+         ASTERISK-25546 #close
+
+         Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143
+
+2015-11-10 09:27 +0000 [4bf84459c7]  Alexander Traud <pabstraud@compuserve.com>
+
+       * rtp_engine: Init a format-attribute module to its RFC defaults.
+
+         Previously, format-attribute modules relied on an existing fmtp line in SDP
+         negotiation. However, fmtp is optional for several formats like the Opus Codec.
+         Now, the format-attribute module is called with an empty fmtp, which allows the
+         module to initialise itself to RFC defaults. Furthermore now, Asterisk is able
+         to differentiate between internally and externally created formats.
+
+         ASTERISK-25537 #close
+
+         Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52
+
+2015-11-09 03:04 +0000 [1bff400df7]  Alexander Traud <pabstraud@compuserve.com>
+
+       * ast_format_cap_get_names: To display all formats, the buffer was increased.
+
+         ASTERISK-25533 #close
+
+         Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a
+
+2015-11-09 07:04 +0000 [f3ac4d8090]  Alexander Traud <pabstraud@compuserve.com>
+
+       * ast_format_cap: Avoid format creation on module load, use cache instead.
+
+         Since Asterisk 13, formats are immutable and cached. However while loading a
+         module like chan_sip, some formats were created instead using cached ones.
+
+         ASTERISK-25535 #close
+
+         Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b
+
+2015-11-06 07:54 +0000 [6d1bdb9d3b]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * func_callerid: Document that CALLERID(pres) is available.
+
+         CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres)
+         and CALLERID(name-pres).  But for channel driver that don't make a
+         distinction between the two (e.g. SIP), it makes more sense to get/set
+         both at once.  This change reveals the availability of CALLERID(pres),
+         CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and
+         REDIRECTING(from-pres).
+
+         ASTERISK-25373 #close
+
+         Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a
+2015-11-06 07:52 +0000 [8410336681]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * docs: Fix a few typo's in app docs (more then, resourse).
+
+         Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7
+
+2015-11-06 07:36 +0000 [0d425f2eb4]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * xmldoc: Improve xmldoc wrapping of 'core show ...' output.
+
+         Previously, the wrapping did both lookahead and lookback, which,
+         together with color escape sequences, caused some lines to be wrapped
+         way earlier than other lines.  This led to inconsistent output.
+
+         This simplifies the wrapping code and makes it more sane: if maxcolumns
+         is hit, we simply jump back to the last space and wrap there.
+
+         ASTERISK-25527 #close
+
+         Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957
+
+2015-11-06 06:57 +0000 [33752e0837]  Sean Bright (license #5060)
+
+       * res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP.
+
+         In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual
+         amount of channels is negotiated in-band. Therefore now, the Opus codec and its
+         attribute rtpmap are registered with two channels.
+
+         ASTERISK-24779 #close
+         Reported by: PowerPBX
+         Tested by: Alexander Traud
+         patches:
+           asterisk-24779.patch submitted by Sean Bright (license #5060)
+
+         Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b
+
+2015-11-03 16:19 +0000 [6ff48319d9]  Jonathan Rose <jrose@digium.com>
+
+       * taskprocessor: Add high water mark warnings
+
+         If a taskprocessor's queue grows large, this can indicate that there
+         may be a problem with tasks not leaving the processor or else that
+         the number of available task processors for a given type of task is
+         too low. This patch makes it so that if a taskprocessor's task queue
+         grows above 100 queued tasks that it will emit a warning message.
+         Warning messages are emitted only once per task processor.
+
+         ASTERISK-25518 #close
+         Reported by: Jonathan Rose
+
+         Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c
+
+2015-11-04 14:31 +0000 [506aea26e6]  Matt Jordan <mjordan@digium.com>
+
+       * main/dial: Protect access to the format_cap structure of the requesting channel
+
+         When a dial attempt is made that involves a requesting channel, we previously
+         were not:
+         a) Protecting access to the native format capabilities structure on the
+            requesting channel. That is inherently unsafe.
+         b) Reference bumping the lifetime of the format capabilities structure.
+
+         In both cases, something else could sneak in, blow away the format
+         capabilities, and we'd be holding onto an invalid format_cap structure. When
+         the newly created channel attempts to construct its format capabilities, things
+         go poorly.
+
+         This patch:
+         a) Ensures that we get a reference to the native format capabilities while
+            the requesting channel is locked
+         b) Holds a reference to the native format capabilities during the creation
+            of the new channel.
+
+         ASTERISK-25522 #close
+
+         Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f
+
+2015-10-30 22:57 +0000 [d098d00424]  Corey Farrell <git@cfware.com>
+
+       * Fix cli display of build options.
+
+         A previous commit reduced the AST_BUILDOPTS compiler define to
+         only include options that affected ABI.  This included some options
+         that were previously displayed by cli "core show settings".  This
+         change corrects the CLI display while still restricting buildopts.h
+         to ABI effecting options only.
+
+         ASTERISK-25434 #close
+         Reported by: Rusty Newton
+
+         Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325
+
+2015-11-03 11:15 +0000 [afec1b1b64]  Matt Jordan <mjordan@digium.com>
+
+       * res_pjsip/location: Destroy contact_status objects on contact deletion
+
+         The contact_status Sorcery objects are currently not destroyed when a contact
+         is deleted. This causes the contact's last known RTT/status to be 'sticky'
+         when the contact itself may no longer exist. This patch causes the
+         contact_status objects associated with both dynamic and static contacts to
+         be destroyed if the AoR holding those contacts is also destroyed (or via
+         other paths where a contact may be deleted.)
+
+         Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e
+
+2015-11-03 10:58 +0000 [715f770c9f]  Matt Jordan <mjordan@digium.com>
+
+       * pjsip_configuration: On delete, remove the persistent version of an endpoint
+
+         When an endpoint is deleted (such as through an API), the persistent endpoint
+         currently continues to lurk around. While this isn't harmful from a memory
+         consumption perspective - as all persistent endpoints are reclaimed on
+         shutdown - it does cause Stasis endpoint related operations to continue
+         to believe that the endpoint may or may not exist.
+
+         This patch causes the persistent endpoint related to a PJSIP endpoint to be
+         destroyed if the PJSIP endpoint is deleted.
+
+         Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb
+2015-11-03 08:15 +0000 [f0f190af08]  Matt Jordan <mjordan@digium.com>
+
+       * main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field
+
+         The JSON packing for the ContactStatusChange event forgot to include the
+         roundtrip_usec field. As a result, the field never showed up in any event,
+         even when the data was available. This patch corrects that error by properly
+         packing the JSON blob with the data.
+
+         Change-Id: I8df80da659a44010afbd48f645967518ff5daa17
+
+2015-11-02 20:24 +0000 [0393bd6bed]  Corey Farrell <git@cfware.com>
+
+       * chan_sip: Allow websockets to be disabled.
+
+         This patch adds a new setting "websockets_enabled" to sip.conf.
+         Setting this to false allows chan_sip to be used without causing
+         conflicts with res_pjsip_transport_websocket.
+
+         ASTERISK-24106 #close
+         Reported by: Andrew Nagy
+
+         Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7
+
+2015-11-02 17:19 +0000 [6fbffe42e1]  Mark Michelson <mmichelson@digium.com>
+
+       * 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-11-02 06:57 +0000 [11e54b1932]  Matt Jordan <mjordan@digium.com>
+
+       * pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction
+
+         When an AoR is created or destroyed dynamically, the scheduled OPTIONS
+         requests that qualify the contacts on the AoR are not necessarily started
+         or destroyed, particularly for persistent contacts created for that AoR.
+         This patch adds create/update/delete sorcery observers for an AoR, which
+         schedule/unschedule the qualifies as expected.
+
+         Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d
+
+2015-10-30 13:22 +0000 [118d628e08]  Matt Jordan <mjordan@digium.com>
+
+       * Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs
+
+         This patch adds a rule for installing the Super Awesome Company based 'Basic
+         PBX' configuration files. As part of adding this rule, a bit of the content
+         that makes up installing the configuration files under the 'samples' target
+         was refactored into a make subroutine for usage by additional later config
+         make targets.
+
+         Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404
+2015-10-29 08:28 +0000 [9a021a42ad]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_pubsub: Fix assertion when UAS dialog creation fails.
+
+         When compiled with assertions enabled one will occur when destroying
+         the subscription tree when UAS dialog creation fails. This is because
+         the code assumes that a dialog will always exist on a subscription
+         tree when in reality during this specific scenario it won't.
+
+         This change makes it so a dialog is not removed from the subscription
+         tree if it is not present.
+
+         ASTERISK-25505 #close
+
+         Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee
+
+2015-10-26 11:42 +0000 [1256aedf66]  Alexander Traud <pabstraud@compuserve.com>
+
+       * chan_sip: Do not send all codecs on INVITE.
+
+         Since version 13, Asterisk sent all allowed codecs as callee, even when the
+         caller did not request/support them. In case of dynamic RTP payloads, this led
+         to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the
+         intersection between the requested and the supported codecs is send again.
+
+         ASTERISK-24543 #close
+
+         Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287
+
+2015-10-24 13:08 +0000 [5f593e7c38]  gtjoseph <george.joseph@fairview5.com>
+
+       * build: GCC 5.1.x catches some new const, array bounds and missing paren issues
+
+         Fixed 1 issue in each of the affected files.
+
+         ASTERISK-25494 #close
+         Reported-by: George Joseph
+         Tested-by: George Joseph
+
+         Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77
+
+2015-10-20 16:02 +0000 [162acd45f7]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip:  Add "like" processing to pjsip list and show commands
+
+         Add the ability to filter output from pjsip list and show commands
+         using the "like" predicate like chan_sip.
+
+         For endpoints, aors, auths, registrations, identifyies and transports,
+         the modification was a simple change of an ast_sorcery_retrieve_by_fields
+         call to ast_sorcery_retrieve_by_regex.  For channels and contacts a
+         little more work had to be done because neither of those objects are
+         true sorcery objects.  That was just removing the non-matching object
+         from the final container.  Of course, a little extra plumbing in the
+         common pjsip_cli code was needed to parse the "like" and pass the regex
+         to the get_container callbacks.
+
+         Some of the get_container code in res_pjsip_endpoint_identifier was also
+         refactored for simplicity.
+
+         ASTERISK-25477 #close
+         Reported by: Bryant Zimmerman
+         Tested by: George Joseph
+
+         Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1
+
+2015-10-21 11:51 +0000 [c58091737d]  Kevin Harwell <kharwell@digium.com>
+
+       * 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 [ebe69dee0d]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [3b19efefef]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [0a346f095f]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [ad39508095]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [067f408760]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [1bcc592765]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [b3cc2bd7df]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_pubsub: Solidify lifetime and ownership of objects.
+
+         There have been crashes and general instability seen in the pubsub code,
+         so this patch introduces three changes to increase the stability.
+
+         First, the ownership model for subscriptions has been modified. Due to
+         RLS, subscriptions are stored in memory as a tree structure. Prior to my
+         patch, the PJSIP subscription was the owner of the subscription tree.
+         When the PJSIP subscription told us that it was terminating, we started
+         destroying the subscription tree along with all of the individual leaf
+         subscriptions that belong to the tree. The problem with this model is
+         that the two actors in play here, the PJSIP subscription and the
+         individual leaf subscriptions, need to have joint ownership of the
+         subscription tree. So now, the PJSIP subscription and the individual
+         leaf subscriptions each have a reference to the subscription tree. This
+         way, we will not actually free memory until no players are left that
+         care. The PJSIP subscription is a bigger stakeholder, in that if the
+         PJSIP subscription's reference to the subscription tree is removed, the
+         subscription tree instructs the leaf subscriptions to shut down and drop
+         their references to the subscription tree when possible. The individual
+         leaf subscriptions, upon being told to shut down, can drop their stasis
+         subscriptions or whatever they use to learn of new state, and then drop
+         their reference to the subscription tree once they are ready to die.
+
+         Second, the lifetime of a PJSIP subscription's reference to our
+         subscription tree has been altered. As I learned from doing a deep dive,
+         the PJSIP evsub code can tell Asterisk multiple times that the
+         subscription has been terminated, and not all of these times
+         are especially helpful. I have altered the message flow that we use for
+         SIP subscriptions such that we will always drop the PJSIP subscription's
+         reference to the subscription tree when we send the NOTIFY that
+         terminates a SIP subscription. This also means that we will now queue
+         NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so
+         that we can have predictable state changes from the PJSIP evsub code.
+
+         Third, the synchronization of operations has been improved. PJSIP can
+         call into our code from a serializer thread (e.g. upon receiving an
+         incoming request) or from the monitor thread (e.g. when a subscription
+         times out). Because of this, there is the possibility of competing
+         threads stepping on each other. PJSIP attempts to do some
+         synchronization on its own by always keeping the dialog lock held when
+         it calls into us. However, since we end up pushing tasks into the
+         serializer, the result was that serialized operations were not grabbing
+         the dialog lock and could, as a result, step on something that was being
+         attempted by a different thread. Now we ensure that serialized
+         operations grab the dialog lock, then check for extenuating
+         circumstances, then proceed with their operation if they can.
+
+         Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5
+
+2015-10-19 15:28 +0000 [c8c65dfa41]  Richard Mudgett <rmudgett@digium.com>
+
+       * strings.c: Fix __ast_str_helper() to always return a terminated string.
+
+         Users of functions which call __ast_str_helper() such as the ones listed
+         below are likely to not check the return value for failure so ensuring
+         that the string is always nil terminated is a good safety measure.
+
+         ast_str_set_va()
+         ast_str_append_va()
+         ast_str_set()
+         ast_str_append()
+
+         Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07
+
+2015-10-19 15:27 +0000 [b271d4a28a]  Richard Mudgett <rmudgett@digium.com>
+
+       * Add missing failure checks to ast_str_set_va() callers.
+
+         Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f
+
+2015-10-21 11:44 +0000 [f2725c8b77]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip: Move URI validation to use time.
+
+         In a realtime based system with a limited number of threadpool threads
+         it is possible for a deadlock to occur. This happens when permanent
+         endpoint state is updated, which will cause database queries to be done.
+         These queries may result in URI validation being done which is done
+         synchronously using a PJSIP thread. If all PJSIP threads are in use
+         processing traffic they themselves may be blocked waiting to get the
+         permanent endpoint container lock when identifying an endpoint.
+
+         This change moves URI validation to occur at use time instead of
+         configuration time. While this comes at a cost of not seeing a problem
+         until you use it it does solve the underlying deadlock problem.
+
+         ASTERISK-25486 #close
+
+         Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a
+
+2015-10-21 08:08 +0000 [84ff075d41]  Alexander Traud <pabstraud@compuserve.com>
+
+       * format: Update the maximum packetization time for iLBC 30.
+
+         In September 2006, the maximum packetization time (ptime) were set to such a
+         low value, packetization was disabled for many codecs actually. This was fixed
+         for many codecs but not for iLBC 30. This enables packetization for iLBC which
+         can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf.
+
+         ASTERISK-7803
+
+         Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12
+2015-10-21 09:51 +0000 [869ef2a8ee]  Alexander Traud <pabstraud@compuserve.com>
+
+       * chan_sip: Fix autoframing=yes.
+
+         With Asterisk 13, the structures ast_format and ast_codec changed. Because of
+         that, the paketization timing (framing) of the RTP channel moved away from the
+         formats/codecs. In the course of that change, the ptime of the callee was not
+         honored anymore, when the optional autoframing was enabled.
+
+         ASTERISK-25484 #close
+
+         Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4
+
+2015-10-20 22:24 +0000 [9fd2adc204]  Matt Jordan <mjordan@digium.com>
+
+       * rest-api-templates: Wikify error code response reasons
+
+         Error response code descriptions may contain wiki markup that need to be
+         escaped. Without this patch, Confluence will reject the document being sent
+         and the responsible script will raise an exception.
+
+         Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5
+
+2015-10-20 12:06 +0000 [72cbb6df55]  Matt Jordan <mjordan@digium.com>
+
+       * funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function
+
+         When ab803ec342 was committed, it accidentally forgot to actually *add* the
+         HOLD_INTERCEPT function. This highlights two interesting points:
+         * Gerrit forces you to put the patch as it is going to into the repo up for
+           review, which Review Board did not. Yay Gerrit.
+         * No one apparently bothered to use this feature, or else they don't know about
+           it. I'm going to go with the latter explanation.
+
+         ASTERISK-24922
+
+         Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396
+
+2015-10-19 19:59 +0000 [9fc9777fa3]  Matt Jordan <mjordan@digium.com>
+
+       * 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
+
+2015-10-14 14:15 +0000 [dc6ec661b3]  mdu113 <mulitskiy@acedsl.com>
+
+       * res_config_pgsql.c: Fix deadlock loading realtime configuration.
+
+         On v13, loading several thousand PJSIP endpoints on Asterisk start causes
+         a deadlock most of the time.
+
+         Thanks to mdu113 for discovering that there was a call to pgsql_exec() not
+         protected by the pgsql_lock reentrancy lock.
+
+         {quote}
+         I believe a code path exists that attempts to use pgsql connection without
+         locking pgsql_lock.  I believe what happens during that deadlock that I
+         see is two concurrent threads are both attempting to send query to pgsql,
+         one of the thread is using a code path without locking pgsql_lock.  If
+         they managed to send queries at the same time, it seems postgres ignores
+         one of the queries and replies only to the one of them.  If it happens so
+         that the thread holding the lock didn't receive the reply it will wait for
+         it (and hold the lock) forever (or at least for very long time), thus
+         completely blocking all access to db.
+         {quote}
+
+         * Added missing reentrancy locking around pgsql_exec() in find_table().
+
+         * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion
+         between the psql_tables list lock and the pgsql_lock.
+
+         ASTERISK-25455 #close
+         Reported by:  mdu113
+         Patches:
+               res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113
+
+         Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2
+
+2015-10-13 14:13 +0000 [f8707ae9a5]  Olle Johansson (License 5267)
+
+       * channels/chan_sip: Set cause code to 44 on RTP timeout
+
+         To quote Olle:
+
+         "When issuing a hangup due to RTP timeouts the cause code is not set. I have
+         selected 44 based on Cisco's implementation..."
+
+         ASTERISK-25135 #close
+         Reported by: Olle Johansson
+         patches:
+           rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267)
+
+         Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc
+
+2015-10-10 15:20 +0000 [486b172b50]  Ivan Poddubny <ivan.poddubny@gmail.com>
+
+       * Build: Add menuselect options for using compiler sanitizers
+
+         This patch adds menuselect options for building Asterisk with
+         various sanitizers provided by gcc and clang.
+
+         When one of *SANITIZER flags is set in menuselect, the appropriate
+         option is added to CFLAGS ad LDFLAGS for the build.
+
+         Information on sanitizers in the project wiki:
+         https://github.com/google/sanitizers/wiki
+
+         GCC Manual:
+         https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
+
+         Clang Compiler User's Manual:
+         http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
+
+         ASTERISK-24718 #close
+         Reported by: Badalian Vyacheslav
+
+         Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0
+
+2015-10-12 11:21 +0000 [e14023ca35]  Richard Mudgett <rmudgett@digium.com>
+
+       * config.c: Fix off-nominal memory leak.
+
+         Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
+
+2015-10-12 11:20 +0000 [a99e821520]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [8d31d2526b]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 18:01 +0000 [3329c714f7]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip: Fix deadlock when sending out-of-dialog requests.
+
+         The struct send_request_wrapper has a pjsip lock associated with it that
+         is created non-recursive.  There is a code path for the struct
+         send_request_wrapper lock that will attempt to lock it recursively.  The
+         reporter's deadlock showed that the thread calling endpt_send_request()
+         deadlocked itself right after the wrapper object got created.
+
+         Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited
+         MWI NOTIFY messages can hit this deadlock.
+
+         * Replaced the struct send_request_wrapper pjsip lock with the mutex lock
+         that can come with an ao2 object since all of Asterisk's mutexes are
+         recursive.  Benefits include removal of code maintaining the pjsip
+         non-recursive lock since ao2 objects already know how to maintain their
+         own lock and the lock will show up in the CLI "core show locks" output.
+
+         ASTERISK-25435 #close
+         Reported by: Dmitriy Serov
+
+         Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d
+
+2015-10-06 11:05 +0000 [a1435aa3fa]  Stefan Engström <stefanen@kth.se>
+
+       * res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending
+
+         In ast_rtp_read, the value of the variable 'mark' which we try to assign to a
+         frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate
+         it to 0 or 1.
+
+         ASTERISK-25451 #close
+         Change-Id: I53bdf5c026041730184a6a809009c028549ce626
+
+2015-10-07 01:24 +0000 [3357678b94]  Ivan Poddubny <ivan.poddubny@gmail.com>
+
+       * func_presencestate: Return "not_set" when no data is set in AstDB
+
+         Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not
+         exist, i.e. when a new CustomPresence is added in the dialplan.
+
+         ASTERISK-25400 #close
+         Reported by: Andrew Nagy
+
+         Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a
+
+2015-10-06 20:43 +0000 [b714b2152d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_rtp_asterisk: Fix assignment after ao2 decrement
+
+         When we decide we will no longer schedule an RTCP write, we remove the
+         reference to the RTP instance, then assign -1 to the stored scheduler ID
+         in case something else comes along and wants to see if anything is scheduled.
+
+         That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to
+         fix the regression introduced by 3cf0f29310, this improper assignment on a
+         potentially destroyed object started getting tripped on the build agents.
+
+         Frankly, this should have been crashing a lot more often earlier. I can only
+         assume that the timing was changed just enough by both changes to start
+         actually hitting this problem.
+
+         As it is, simply moving the assignment prior to the ao2 deference is sufficient
+         to keep the RTP instance from being referenced when it is very, truly,
+         aboslutely dead.
+
+         (Note that it is still good practice to assign -1 to the scheduler ID when we
+         know we won't be scheduling it again, as the ao2 deref *may* not always destroy
+         the ao2 object.)
+
+         ASTERISK-25449
+
+         Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
+
+2015-10-06 12:40 +0000 [f939e2bd48]  Florian Sauerteig <ffs@ccn.net>
+
+       * chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers.
+
+         If a Via header containes an IPv6 address and a port number is ommitted,
+         as it is the standard port, we now leave the port empty and to not set it
+         to the value after the first colon of the IPv6 address.
+
+         ASTERISK-25443 #close
+
+         Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70
+
+2015-10-05 16:53 +0000 [426263a64d]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [50fa9ff997]  Matt Jordan <mjordan@digium.com>
+
+       * Fix improper usage of scheduler exposed by 5c713fdf18f
+
+         When 5c713fdf18f was merged, it allowed for scheduled items to have an ID of
+         '0' returned. While this was valid per the documentation for the API, it was
+         apparently never returned previously. As a result, several users of the
+         scheduler API viewed the result as being invalid, causing them to reschedule
+         already scheduled items or otherwise fail in interesting ways.
+
+         This patch corrects the users such that they view '0' as valid, and a returned
+         ID of -1 as being invalid.
+
+         Note that the failing HEP RTCP tests now pass with this patch. These tests
+         failed due to a duplicate scheduling of the RTCP transmissions.
+
+         ASTERISK-25449 #close
+
+         Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
+2015-08-26 16:58 +0000 [8f777ab584]  Debian Amtelco <dan@amtelco.com>
+
+       * chan_pjsip: Add Referred-By header to the PJSIP REFER packet.
+
+         Some systems require the REFER packet to include a Referred-By header.
+         If the channel variable SIPREFERREDBYHDR is set, it passes that value as the
+         Referred-By header value.  Otherwise, it adds the current dialog’s local info.
+
+         Reported by: Dan Cropp
+         Tested by: Dan Cropp
+
+         Change-Id: I3d17912ce548667edf53cb549e88a25475eda245
+
+2015-10-03 06:27 +0000 [74635b5638]  Ivan Poddubny <ivan.poddubny@gmail.com>
+
+       * manager: Fix GetConfigJSON returning invalid JSON
+
+         When GetConfigJSON was introduced back in 1.6, it returned each
+         section as an array of strings: ["key=value", "key2=value2"].
+         Afterwards, it was changed a few times and became
+         ["key": "value", "key2": "value2"], which is not a correct JSON.
+         This patch fixes that by constructing a JSON object {} instead of
+         an array [].
+
+         Also, the keys "istemplate" and "tempates" that are used to
+         indicate templates and their inherited categories are now wrapped in
+         quotes.
+
+         ASTERISK-25391 #close
+         Reported by: Bojan Nemčić
+
+         Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8
+
+2015-09-30 17:28 +0000 [40c69e78f5]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [dfeb513e85]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [ced0a2d71b]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [cc279eea11]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_sorcery_memory_cache.c: Misc tweaks.
+
+         Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
+
+2015-09-30 17:27 +0000 [9af3b613f6]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK.
+
+         Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
+
+2015-09-30 13:42 +0000 [56ed7b9dd5]  Joshua Colp <jcolp@digium.com>
+
+       * res_rtp_asterisk: Move "Set role" warning to be debug.
+
+         In practice the set_role API callback can be invoked even
+         when no ICE is present on an RTP instance. This can occur
+         if ICE has not been enabled on it.
+
+         ASTERISK-25438 #close
+
+         Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69
+
+2015-09-28 15:31 +0000 [ddebb217f0]  Richard Mudgett <rmudgett@digium.com>
+
+       * sched.c: Add warning about negative time interval request.
+
+         Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc
+
+2015-09-29 14:53 +0000 [d30939b6e8]  Kevin Harwell <kharwell@digium.com>
+
+       * ARI: Changed version from 1.8.0 to 1.9.0
+
+         Change-Id: I510991c60d28d171f47c4b58bba4947f7fc71b13
+
+2015-09-25 18:37 +0000 [5f19c9bade]  Richard Mudgett <rmudgett@digium.com>
+
+       * res/ari/config.c: Fix user sort compare function.
+
+         Made use the ao2 sort compare template function and OBJ_SEARCH_xxx
+         identifiers.
+
+         Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c
+
+2015-09-25 17:26 +0000 [3a85764039]  Richard Mudgett <rmudgett@digium.com>
+
+       * res/ari/config.c: Optimize conf_alloc() object init.
+
+         * Now conf_alloc() has more off nominal error checking.
+
+         * Eliminated RAII_VAR() use in conf_alloc().
+
+         * Eliminated a dubius shortcut when destroying cfg->general in
+         conf_destructor() that would cause a crash if cfg->general failed to get
+         allocated.
+
+         * Add some ACO registration section comments.
+
+         Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a
+
+2015-09-25 16:48 +0000 [028033e5a8]  Richard Mudgett <rmudgett@digium.com>
+
+       * res/ari/config.c: Fix conf_alloc() object init.
+
+         Need to finish initializing the string fields in the ao2 object before
+         putting any default strings into them.
+
+         ASTERISK-25383 #close
+         Reported by:  yaron nahum
+
+         Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84
+
+2015-09-27 20:45 +0000 [90165e306d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_stasis: Fix accidental subscription to 'all' bridge topic
+
+         When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a
+         NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to
+         all bridges. Unfortunately, the res_stasis control loop did not check that
+         a bridge changing on a channel's control object was actually also non-NULL.
+         As a result, app_subscribe_bridge will be called with a NULL bridge when a
+         channel leaves a bridge. This causes a new subscription to be made to the
+         bridge. If an application has also subscribed to the bridge, the application
+         will now have two subscriptions:
+         (1) The explicit one created by the app
+         (2) The implicit one accidentally created by the control structure
+
+         As a result, the 'BridgeDestroyed' event can be sent multiple times. This
+         patch corrects the control loop such that it only subscribes an application
+         to a new bridge if the bridge pointer is non-NULL.
+
+         ASTERISK-24870
+
+         Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f
+
+2015-09-04 13:51 +0000 [e1223ff6db]  Scott Griepentrog <scott@griepentrog.com>
+
+       * Scripts: check file versions of Asterisk and dependencies
+
+         To help in diagnosing mismatched modules and libraries, this
+         script scans for version, repository, and source information
+         and reports what is found.
+
+         ASTERISK-25376 #close
+         Reported by: Ashley Sanders
+
+         Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6
+
+2015-09-24 14:56 +0000 [6b1e7583c1]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [6bf304bf25]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [e36b5f1e8e]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [747bfac895]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [14481d9aa0]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_dial.c: Factor out a connected line update routine.
+
+         Replace inlined code with update_connected_line_from_peer().
+
+         ASTERISK-25423
+         Reported by: John Hardin
+
+         Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091
+
+2015-09-23 17:41 +0000 [bbeda190c3]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_dial.c: Remove some no-op code.
+
+         Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54
+
+2015-09-23 14:02 +0000 [f050fa76eb]  Mark Michelson <mmichelson@digium.com>
+
+       * logger: Prevent duplicate dynamic channels from being added.
+
+         There was a problem observed where the "logger add channel" CLI command
+         would allow for a channel with the same name to be added multiple times.
+         This would result in each message being written out to the same file
+         multiple times.
+
+         The problem was due to the difference in how logger channel filenames
+         are stored versus the format they are allowed to be presented when they
+         are added. For instance, if adding the logger channel "foo" through the
+         CLI, the result would be a logger channel with the file name
+         /var/log/asterisk/foo being stored. So when trying to add another "foo"
+         channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily
+         add the duplicate channel.
+
+         The fix presented here is to introduce two new methods in the logger
+         code:
+          * make_filename(): given a logger channel name, this creates the
+            filename for that logger channel.
+          * find_logchannel(): given a logger channel name, this calls
+            make_filename() and then traverses the list of logchannels in order
+            to find a match.
+
+         This change has made use of make_filename() and find_logchannel()
+         throughout to more consistently behave.
+
+         ASTERISK-25305 #close
+         Reported by Mark Michelson
+
+         Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36
+
+2015-09-24 14:49 +0000 [629458d349]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [5f15cd93f0]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_page.c: Fix crash when forwarding with a predial handler.
+
+         Page uses the async method of dialing with the dial API.  When a call gets
+         forwarded there is no calling channel available.  If the predial handler
+         was set then the calling channel could not be put into auto-service
+         for the forwarded call because it doesn't exist.  A crash is the result.
+
+         * Moved the callee predial parameter string processing to before the
+         string is passed to the dial API rather than having the dial API do it.
+         There are a few benefits do doing this.  The first is the predial
+         parameter string processing doesn't need to be done for each channel
+         called by the dial API.  The second is in async mode and the forwarded
+         channel is to have the predial handler executed on it then the
+         non-existent calling channel does not need to be present to process the
+         predial parameter string.
+
+         * Don't start auto-service on a non-existent calling channel to execute
+         the predial handler when the dial API is in async mode and forwarding a
+         call.
+
+         ASTERISK-25384 #close
+         Reported by: Chet Stevens
+
+         Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981
+
+2015-09-03 21:19 +0000 [b50e372394]  Matt Jordan <mjordan@digium.com>
+
+       * ARI: Add events for Contact and Peer Status changes
+
+         This patch adds support for receiving events regarding Peer status changes
+         and Contact status changes. This is particularly useful in scenarios where
+         we are subscribed to all endpoints and channels, where we often want to know
+         more about the state of channel technology specific items than a single
+         endpoint's state.
+
+         ASTERISK-24870
+
+         Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9
+
+2015-09-04 12:24 +0000 [3502c0431d]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_stasis_device_state: Allow for subscribing to 'all' device state
+
+         This patch adds support for subscribing to all device state changes. This is
+         done either by subscribing to an empty device, e.g., 'eventSource=deviceState:',
+         or by the WebSocket connection specifying that it wants all state in the
+         system.
+
+         ASTERISK-24870
+
+         Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32
+
+2015-09-04 12:25 +0000 [4c9f613309]  Matt Jordan <mjordan@digium.com>
+
+       * ARI: Add the ability to subscribe to all events
+
+         This patch adds the ability to subscribe to all events. There are two possible
+         ways to accomplish this:
+         (1) On initial WebSocket connection. This patch adds a new query parameter,
+             'subscribeAll'. If present and True, Asterisk will subscribe the
+             applications to all ARI events.
+         (2) Via the applications resource. When subscribing in this manner, an ARI
+             client should merely specify a blank resource name, i.e., 'channels:'
+             instead of 'channels:12354'. This will subscribe the application to all
+             resources of the 'channels' type.
+
+         ASTERISK-24870 #close
+
+         Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6
+
+2015-09-21 08:16 +0000 [ec514ad64d]  Elazar Broad <elazar@thebroadfamily.com>
+
+       * core/logging: Fix logging to more than one syslog channel
+
+         Currently, Asterisk will log to the last configured syslog
+         channel in logger.conf. This is due to the fact that the
+         final call to openlog() supersedes all of the previous calls.
+         This commit removes the call to openlog() and passes the
+         facility to ast_log_vsyslog(), along with utilizing the
+         LOG_MAKEPRI macro to ensure that the message is routed to
+         the correct facility and with the correct priority.
+
+         ASTERISK-25407 #close
+         Reported by: Elazar Broad
+         Tested by: Elazar Broad
+
+         Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2
+
+2015-09-21 18:06 +0000 [aeddee39fb]  Kevin Harwell <kharwell@digium.com>
+
+       * 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 [2bd27d1222]  Joshua Colp <jcolp@digium.com>
+
+       * pbx: Update device and presence state when changing a hint extension.
+
+         When changing a hint extension without removing the hint first the
+         device state and presence state is not updated. This causes the state
+         of the hint to be that of the previous extension and not the current
+         one. This state is kept until a state change occurs as a result of
+         something (presence state change, device state change).
+
+         This change updates the hint with the current device and presence
+         state of the new extension when it is changed. Any state callbacks
+         which may have been added before the hint extension is changed are
+         also informed of the new device and presence state if either have
+         changed.
+
+         ASTERISK-25394 #close
+
+         Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f
+
+2015-09-17 16:34 +0000 [c94f46080f]  Scott Griepentrog <scott@griepentrog.com>
+
+       * CHAOS: avoid crash if string create fails
+
+         Validate string buffer allocation before using them.
+
+         ASTERISK-25323
+
+         Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0
+
+2015-09-17 04:52 +0000 [b59c4d82b5]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * chan_sip: Fix From header truncation for extremely long CALLERID(name).
+
+         The CALLERID(num) and CALLERID(name) and other info are placed into the
+         `char from[256]` in initreqprep. If the name was too long, the addr-spec
+         and params wouldn't fit.
+
+         Code is moved around so the addr-spec with params is placed there first,
+         and then fitting in as much of the display-name as possible.
+
+         ASTERISK-25396 #close
+
+         Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260
+
+2015-09-17 16:59 +0000 [4cc59533b9]  Richard Mudgett <rmudgett@digium.com>
+
+       * CHAOS: res_pjsip_diversion avoid crash if allocation fails
+
+         Validate ast_malloc buffer returned before using it in
+         set_redirecting_value().
+
+         ASTERISK-25323
+
+         Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253
+
+2015-09-17 16:47 +0000 [4fb95bbc4e]  Kevin Harwell <kharwell@digium.com>
+
+       * app_queue: AgentComplete event has wrong reason
+
+         When a queued caller transfers an agent to another extension sometimes the
+         raised AgentComplete event has a reason of "caller" and sometimes "transfer".
+         Since a transfer has taken place this should always be transfer. This occurs
+         because sometimes the stasis hangup event arrives before the transfer event
+         thus writing a different reason out.
+
+         With this patch, when a hangup event is received during a transfer it will
+         check to see if the channel that is hanging up is part of a transfer. If so
+         it will return and let the subsequently received transfer event handler take
+         care of the cleanup.
+
+         ASTERISK-25399 #close
+
+         Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d
+
+2015-09-17 13:09 +0000 [fb6b5c684b]  Scott Griepentrog <scott@griepentrog.com>
+
+       * PJSIP: avoid crash when getting rtp peer
+
+         Although unlikely, if the tech private is returned as
+         a NULL, chan_pjsip_get_rtp_peer() would crash.
+
+         ASTERISK-25323
+
+         Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a
+
+2015-09-17 11:31 +0000 [6409e7b11a]  Kevin Harwell <kharwell@digium.com>
+
+       * app_queue: Crash when transferring
+
+         During some transfer scenarios involving queues Asterisk would sometimes
+         crash when trying to obtain a channel snapshot (could happen on caller or
+         member channels). This occurred because the underlying channel had already
+         disappeared when trying to obtain the latest snapshot.
+
+         This patch adds a reference to both the member and caller channels that
+         extends to the lifetime of the queue'd call, thus making sure the channels
+         will always exist when retrieving the latest snapshots.
+
+         ASTERISK-25185 #close
+         Reported by: Etienne Lessard
+
+         Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128
+
+2015-09-16 17:36 +0000 [fe5077b1f8]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_pubsub: Eliminate race during initial NOTIFY.
+
+         There is a slim chance of a race condition occurring where two threads
+         can both attempt to manipulate the same area.
+
+         Thread A can be handling an incoming initial SUBSCRIBE request. Thread A
+         lets the specific subscription handler know that the subscription has
+         been established.
+
+         At this point, Thread B may detect a state change on the subscribed
+         resource and queue up a notification task on Thread C, the subscription
+         serializer thread.
+
+         Now Thread A attempts to generate the initial NOTIFY request to send to
+         the subscriber at the same time that Thread C attempts to generate a
+         state change NOTIFY request to send to the subscriber.
+
+         The result is that Threads A and C can step on the same memory area,
+         resulting in a crash. The crash has been observed as happening when
+         attempting to allocate more space to hold the body for the NOTIFY.
+
+         The solution presented here is to queue the subscription establishment
+         and initial NOTIFY generation onto the subscription serializer thread
+         (Thread C in the above scenario). This way, there is no way that a state
+         change notification can occur before the initial NOTIFY is sent, and if
+         there is a quick succession of NOTIFYs, we can guarantee that the two
+         NOTIFY requests will be sent in succession.
+
+         Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815
+
+2015-08-28 15:42 +0000 [b88c54fa4b]  Alexander Traud <pabstraud@compuserve.com>
+
+       * translate: Fix transcoding while different in frame size.
+
+         When Asterisk translates between codecs, each with a different frame size (for
+         example between iLBC 30 and Speex-WB), too large frames were created by
+         ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame
+         length, creating several frames when necessary. Affects all transcoding modules
+         which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex.
+
+         ASTERISK-25353 #close
+
+         Change-Id: I2e229569d73191d66a4e43fef35432db24000212
+
+2015-09-10 17:19 +0000 [5c713fdf18]  Mark Michelson <mmichelson@digium.com>
+
+       * 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-08-21 21:50 +0000 [865377fc38]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+
+       * chan_sip.c: Validation on module reload
+
+         Change validation on reload module because now used the cli function for
+         reload. The sip_reload() function never fail and ever return NULL for this
+         reason on reload() now use the call the sip_reload() and return
+         AST_MODULE_LOAD_SUCCESS.
+
+         This problem is dectected on reload by PUT method on ARI, getting always
+         404 http code when the module is reloaded.
+
+         ASTERISK-25325 #close
+         Reporte by: Rodrigo Ramírez Norambuena
+
+         Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb
+
+2015-08-21 17:39 +0000 [e75aff53e6]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used.
+
+         Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093
+
+2015-09-09 12:24 +0000 [4d91d01df1]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Add some notification comments.
+
+         Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20
+
+2015-08-21 18:01 +0000 [f36a9d1221]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response.
+
+         We should not try to send a SIP response message because we may be
+         restoring a persistent subscription where we are not responding to a SIP
+         request.
+
+         Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec
+
+2015-08-21 17:40 +0000 [94582f8fab]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Fix off-nominal memory leak.
+
+         Fix off-nominal visited vector leak in build_resource_tree().
+
+         Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c
+
+2015-08-21 15:26 +0000 [8b3ed52239]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Fix one byte buffer overrun error.
+
+         ast_sip_pubsub_register_body_generator() did not account for the null
+         terminator set by sprintf() in the allocated output buffer.
+
+         Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2
+
+2015-08-21 15:25 +0000 [4329bd1e4c]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Use ast_alloca() instead of alloca().
+
+         Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3
+
+2015-08-21 11:04 +0000 [a456a20ecf]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_pubsub.c: Add missing error return in load_module().
+
+         Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc
+
+2015-08-21 11:03 +0000 [f58f4c6e27]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip/location.c: Use the builtin ao2_callback() match function instead.
+
+         Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f
+
+2015-09-10 09:49 +0000 [9d1f176e29]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Copy default_from_user to avoid crash.
+
+         The default_from_user retrieval function was pulling the
+         default_from_user from the global configuration struct in an unsafe way.
+         If using a database as a backend configuration store, the global
+         configuration struct is short-lived, so grabbing a pointer from it
+         results in referencing freed memory.
+
+         The fix here is to copy the default_from_user value out of the global
+         configuration struct.
+
+         Thanks go to John Hardin for discovering this problem and proposing the
+         patch on which this fix is based.
+
+         ASTERISK-25390 #close
+         Reported by Mark Michelson
+
+         Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c
+
+2015-09-10 08:39 +0000 [1dd0e220bf]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route
+
+         We will only rewrite the Contact header if there is no Record-Route header in
+         the received request. If a malfunctioning proxy places a Record-Route header
+         into a REGISTER request, we will decide that we shouldn't update the IP/port
+         in the Contact header, and we will end up storing a contact with an AoR that
+         contains the NAT'd IP address.
+
+         While it is nice to have the proxy *not* send a Record-Route in a REGISTER
+         request, it's also a good idea to not process the header in a non-dialog
+         message. This patch updates the code to explicitly ignore the Record-Route
+         header in REGISTER requests.
+
+         ASTERISK-25387 #close
+
+         Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f
+
+2015-09-03 21:15 +0000 [4eedd9ef9d]  Matt Jordan <mjordan@digium.com>
+
+       * main/config_options: Check for existance of internal object before derefing
+
+         Asterisk can load and register an object type while still having an invalid
+         sorcery mapping. This can cause an issue when a creation call is invoked.
+         For example, mis-configuring PJSIP's endpoint identifier by IP address mapping
+         in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a
+         subsequent ARI invocation to create the object will cause a crash, as the
+         internal type may not be registered as sorcery expects.
+
+         Merely checking for a NULL pointer here solves the issue.
+
+         Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac
+2015-09-09 16:46 +0000 [71408df2b8]  Alexander Anikin <may213@yandex.ru>
+
+       * chan_ooh323: Add ProgressIndicator IE with inband info available
+
+         Add ProgressIndicator IE with inband info present to Progress and
+         Alerting Q.931 message
+
+         ASTERISK-25227 #close
+         Reported by: Alexandr Dranchuk
+
+         Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203
+2015-09-08 10:35 +0000 [f72f9ceefc]  Scott Griepentrog <scott@griepentrog.com>
+
+       * pjsip: avoid possible crash req_caps allocation failure
+
+         Make certain that the pjsip session has not failed to
+         allocate the format capabilities structure, which can
+         otherwise cause a crash when referenced.
+
+         ASTERISK-25323
+
+         Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750
+
+2015-09-03 14:07 +0000 [fbf720db91]  Jonathan Rose <jrose@digium.com>
+
+       * ParkAndAnnounce: Add variable inheritance
+
+         In Asterisk 11, the announcer channel would receive channel variables
+         from the channel being parked by means of normal channel inheritance.
+         This functionality was lost during the big res_parking project in
+         Asterisk 12. This patch restores that functionality.
+
+         ASTERISK-25369 #close
+         Review: https://gerrit.asterisk.org/#/c/1180/
+
+         Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e
+
+2015-09-04 16:33 +0000 [695f26cbb7]  David M. Lee <dlee@respoke.io>
+
+       * res_rtp_asterisk: Add more ICE debugging
+
+         In working through a recent ICE negotiation bug, I found the debug
+         logging in res_rtp_asterisk to be lacking. This patch adds a number of
+         debug and warning statements that were helpful.
+
+         Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80
+2015-09-01 10:16 +0000 [4ed9c9a280]  Guido Falsi <madpilot@freebsd.org>
+
+       * Core/General: Add #ifdef needed on FreeBSD.
+
+         pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD
+         too.
+
+         ASTERISK-25310 #close
+         Reported by: Guido Falsi
+
+         Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4
+
+2015-09-08 07:21 +0000 [5469caa9dd]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip: Use hash for contact object identity instead of Contact URI.
+
+         In the wild it is possible for Contact URIs to be quite long as
+         parameters can exist on them. This can present a problem when storing
+         them in the AstDB as the URI is used as part of the object name and
+         there is a fixed length limit for the AstDB. This will cause
+         the contact to not get stored.
+
+         This change uses the MD5 hash of the Contact URI as part of the
+         object name instead. This has a fixed length which is guaranteed
+         to not exceed the AstDB length limit.
+
+         ASTERISK-25295 #close
+
+         Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02
+
+2015-09-07 13:19 +0000 [480c443e26]  Alexander Anikin <may213@yandex.ru>
+
+       * chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy
+
+             Call ast_rtp_instance_stop on ooh323_destroy to free resources
+             allocated by rtp instance
+
+             ASTERISK-25299 #close
+             Report by: Alexandr Dranchuk
+
+         Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f
+
+2015-09-07 11:15 +0000 [c3e6debdb9]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip: Purge contacts when an AoR is deleted
+
+         When an AoR is deleted by an external mechanism, such as through ARI, we
+         currently do not remove dynamic contacts that were created for that AoR as a
+         result of a received REGISTER request. As a result, re-creating the AoR will
+         cause the dynamic contact to be interpreted as a persistent contact, leading
+         to some rather strange state being created for the contacts/endpoints.
+
+         This patch adds a sorcery observer for the 'aor' object. When a delete is
+         issued on the underlying sorcery object, the observer is called, and all
+         contacts created and persisted in sorcery for that AoR are also removed. Note
+         that we don't want to perform this action when an AO2 object that is an AoR is
+         destroyed, as the AoR can still exist in the backing storage (and we would
+         thus be removing valid contacts from an AoR that still "exists".)
+
+         ASTERISK-25381 #close
+
+         Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328
+
+2015-09-05 14:58 +0000 [78d0b9d97e]  Matt Jordan <mjordan@digium.com>
+
+       * channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id
+
+         This patch adds a new option to the CHANNEL function that allows for the
+         extraction of the SIP call-id. It is used in conjunction with the 'pjsip'
+         option, and will return the Call-ID of the INVITE request that established
+         the PJSIP channel.
+
+         ASTERISK-25352
+
+         Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a
+
+2015-09-04 16:06 +0000 [61c6c6aa6c]  David M. Lee <dlee@respoke.io>
+
+       * Fix when remote candidates exceed PJ_ICE_MAX_CAND
+
+         We were passing the wrong count into pj_ice_sess_create_check_list(),
+         causing the create to fail if we ever received more than PJ_ICE_MAX_CAND
+         candidates.
+
+         Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378
+
+2015-09-04 14:40 +0000 [ac62928d6b]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Change default from user value.
+
+         When Asterisk sends an outbound SIP request, if there is no direct
+         reason to place a specific value for the username in the From header,
+         Asterisk would generate a UUID. For example, this would happen when
+         sending outbound OPTIONS requests when qualifying or when sending
+         outbound INVITE requests when originating (if no explicit caller ID were
+         provided). The issue is that some SIP providers reject these sorts of
+         requests with a "Name too long" error response.
+
+         This patch aims to fix this by changing the default outbound username in
+         From headers to "asterisk". This value can be overridden by changing the
+         default_from_user option in the global options if desired.
+
+         ASTERISK-25377 #close
+         Reported by Mark Michelson
+
+         Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190
+
+2015-09-04 09:26 +0000 [6002472a62]  Scott Griepentrog <scott@griepentrog.com>
+
+       * endpoint snapshot: avoid second cleanup on alloc failure
+
+         In ast_endpoint_snapshot_create(), a failure to init the
+         string fields results in two attempts to ao2_cleanup the
+         same pointer.  Removed RAII_VAR to eliminate problem.
+
+         ASTERISK-25375 #close
+         Reported by: Scott Griepentrog
+
+         Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979
+
+2015-09-04 05:33 +0000 [d32e516c7c]  Martin Tomec <tomec.martin@gmail.com>
+
+       * res/pjsip: Mark WSS transport as secure
+
+         Pjsip is refusing to use unsecure transport with "sips" in url.
+         WSS should be considered as secure transport.
+
+         ASTERISK-24602 #comment Partially fixed by setting WSS as secure
+
+         Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353
+
+2015-09-02 17:26 +0000 [ad9cb6c2ce]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [cc1363209e]  Joshua Colp <jcolp@digium.com>
+
+       * pbx: Fix crash when issuing "core show hints" with long pattern match.
+
+         When issuing the "core show hints" CLI command a combination of both
+         the hint extension and context is created. This uses a fixed size
+         buffer expecting that the extension will not exceed maximum extension
+         length. When the extension is actually a pattern match this constraint
+         does not hold true, and the extension may exceed the maximum extension
+         length. In this case extra characters are written past the end of the
+         fixed size buffer.
+
+         This change makes it so the construction of the combined hint extension
+         and context can not exceed the size of the buffer.
+
+         ASTERISK-25367 #close
+
+         Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499
+
+2015-09-01 09:05 +0000 [d58c8d73af]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [03fe79f29e]  Mark Michelson <mmichelson@digium.com>
+
+       * 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-29 10:36 +0000 [a676ba2aad]  Joshua Colp <jcolp@digium.com>
+
+       * taskprocessor: Fix race condition between unreferencing and finding.
+
+         When unreferencing a taskprocessor its reference count is checked
+         to determine if it should be unlinked from the taskprocessors
+         container and its listener shut down. In between the time when the
+         reference count is checked and unlinking it is possible for
+         another thread to jump in, find it, and get a reference to it. If
+         the thread then uses the taskprocessor it may find that it is not
+         in the state it expects.
+
+         This change locks the taskprocessors container during almost the
+         entire unreference operation to ensure that any other thread which
+         may attempt to find the taskprocessor has to wait.
+
+         ASTERISK-25295
+
+         Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c
+
+2015-08-28 20:22 +0000 [1b1561f4c8]  Joshua Colp <jcolp@digium.com>
+
+       * 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 [85e1cb51b2]  Joshua Colp <jcolp@digium.com>
+
+       * sched: ast_sched_del may return prematurely due to spurious wakeup
+
+         When deleting a scheduled item if the item in question is currently
+         executing the ast_sched_del function waits until it has completed.
+         This is accomplished using ast_cond_wait. Unfortunately the
+         ast_cond_wait function can suffer from spurious wakeups so the
+         predicate needs to be checked after it returns to make sure it has
+         really woken up as a result of being signaled.
+
+         This change adds a loop around the ast_cond_wait to make sure that
+         it only exits when the executing task has really completed.
+
+         ASTERISK-25355 #close
+
+         Change-Id: I51198270eb0b637c956c61aa409f46283432be61
+
+2015-08-27 12:26 +0000 [c2c7319082]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_session: Don't invoke session supplements twice for BYE requests.
+
+         When a BYE request is received the PJSIP invite session implementation
+         creates and sends a 200 OK response before we are aware of it. This
+         causes the INVITE session state callback to be called into and ultimately
+         the session supplements run on the BYE request. Once this response has
+         been sent the normal transaction state callback is invoked which
+         invokes the session supplements on the BYE request again. This can
+         be problematic in particular with res_pjsip_rfc3326 as it may
+         attempt to update the hangup cause code on the channel while it is
+         in the process of being hung up.
+
+         This change makes it so the session supplements are only invoked
+         once by the INVITE session state callback.
+
+         ASTERISK-25318 #close
+
+         Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a
+
+2015-08-26 15:26 +0000 [6862c2a167]  Scott Griepentrog <scott@griepentrog.com>
+
+       * Chaos: handle failed allocation in get_media_encryption_type
+
+         If the ast_strndup() call fails to allocate a copy of the
+         transport string for parsing, fail gracefully.
+
+         ASTERISK-25323
+         Reported by: Scott Griepentrog
+
+         Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28
+
+2015-08-26 14:25 +0000 [f1cd636658]  Scott Griepentrog <scott@griepentrog.com>
+
+       * Chaos: make hangup NULL tolerant
+
+         In chan_pjsip_new, if allocation of the pvt
+         structure fails, ast_hangup is called.  But
+         it was written to assume pvt was valid, and
+         this change corrects that.
+
+         ASTERISK-25323
+         Reported by: Scott Griepentrog
+
+         Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87
+
+2015-08-26 05:40 +0000 [c01111223f]  Joshua Colp <jcolp@digium.com>
+
+       * 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 [2a4eee0cd9]  Joshua Colp <jcolp@digium.com>
+
+       * 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 11:04 +0000 [7c4d0c3506]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced
+
+         When recreating a subscription it is possible for a freed sub_tree
+         to be referenced when the initial NOTIFY fails to be created.
+
+         Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788
+
+2015-08-24 06:21 +0000 [6c2dab1e88]  Joshua Colp <jcolp@digium.com>
+
+       * 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-23 18:26 +0000 [bc6fe07f5c]  Matt Jordan <mjordan@digium.com>
+
+       * res_pjsip/pjsip_configuration: Disregard empty auth values
+
+         When an endpoint is backed by a non-static conf file backend (such as
+         the AstDB or Realtime), the 'auth' object may be returned as being an
+         empty string. Currently, res_pjsip will interpret that as being a valid
+         auth object, and will attempt to authenticate inbound requests. This
+         isn't desired; is an auth value is empty (which the name of an auth
+         object cannot be), we should instead interpret that as being an invalid
+         auth object and skip it.
+
+         ASTERISK-25339 #close
+
+         Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7
+
+2015-08-19 12:10 +0000 [0582776f7f]  Richard Mudgett <rmudgett@digium.com>
+
+       * ari/ari_websockets.c: Fix ast_debug parameter type mismatch.
+
+         This is a type mismatch fix of the debugging commit
+         c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why
+         a testsuite test was failing only on one of the continuous
+         integration build agents.
+
+         Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75
+
+2015-08-19 10:30 +0000 [504213f542]  Scott Griepentrog <scott@griepentrog.com>
+
+       * contrib: script install_prereq should install sqlite3
+
+         Asterisk needs the sqlite 3 library, which is package
+         sqlite-devel in CentOS. By adding this package to the
+         script, a problem with configure failing is resolved.
+
+         ASTERISK-25331 #close
+         Reported by: Kevin Harwell
+
+         Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec
+
+2015-08-18 16:06 +0000 [77518d5434]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_http_websocket.c: Fix some off nominal path cleanup.
+
+         * Remove extraneous unlock on off-nominal path.
+         * Add missing HTTP error reply.
+
+         Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b
+
+2015-08-18 14:46 +0000 [c61547fee6]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_ari.c: Add missing off nominal unlock and remove a RAII_VAR().
+
+         Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf
+
+2015-08-17 16:41 +0000 [bd867cd078]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_queue.c: Extract some functions for simpler code.
+
+         * Extract set_queue_member_pause() from set_member_paused() for simpler
+         and more consistent code.
+
+         * Extract set_queue_member_ringinuse() from
+         set_member_ringinuse_help_members() for simpler code.
+
+         Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306
+
+2015-08-14 12:55 +0000 [e5f5b9f384]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'.
+
+         Setting the 'paused' and 'ringinuse' options on a queue member using the
+         dialplan function QUEUE_MEMBER did not behave the same way as the
+         equivalent dialplan applications or AMI actions.
+
+         * Made queue_function_mem_write() call the set_member_paused() and
+         set_member_value() for the 'paused' and 'ringinuse' options respectively.
+         A beneficial side effect is that the queue name is now optional and sets
+         the value in all queues the interface is a member.
+
+         * Update QUEUE_MEMBER XML documentation.
+
+         * Fix error checking in QUEUE_MEMBER() write.
+
+         ASTERISK-25215 #close
+         Reported by: Lorne Gaetz
+
+         Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb
+
+2015-08-17 13:34 +0000 [ded51e3d77]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_queue.c: Fix error checking in QUEUE_MEMBER() read.
+
+         Change-Id: I7294e13d27875851c2f4ef6818adba507509d224
+
+2015-08-17 11:00 +0000 [ab373f2cef]  Scott Griepentrog <scott@griepentrog.com>
+
+       * CHAOS: prevent sorcery object with null id
+
+         When allocating a sorcery object, fail if the
+         id value was not allocated.
+
+         ASTERISK-25323
+         Reported by: Scott Griepentrog
+
+         Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e
+
+2015-08-14 15:46 +0000 [b719f56c72]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_sdp_rtp: Restore removed NULL check.
+
+         When sending an RTP keepalive, we need to be sure we're not dealing with
+         a NULL RTP instance. There had been a NULL check, but the commit that
+         added the rtp_timeout and rtp_hold_timeout options removed the NULL
+         check.
+
+         Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64
+
+2015-08-13 12:30 +0000 [cea5dc7b8a]  Richard Mudgett <rmudgett@digium.com>
+
+       * audiohook.c: Simplify variable usage in audiohook_read_frame_both().
+
+         Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c
+
+2015-08-13 12:22 +0000 [b3a56bee83]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [25af2d71c8]  Kevin Harwell <kharwell@digium.com>
+
+       * 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 [e18c300550]  Joshua Colp <jcolp@digium.com>
+
+       * 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 [b4e9416138]  Joshua Colp <jcolp@digium.com>
+
+       * 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 [256bc52b66]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [800e0ea48d]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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 [c126afe18f]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message.
+
+         If the saved SUBSCRIBE message is not parseable for whatever reason then
+         Asterisk could crash when libpjsip tries to parse the message and adds an
+         error message to the parse error list.
+
+         * Made ast_sip_create_rdata() initialize the parse error rdata list.  The
+         list is checked after parsing to see that it remains empty for the
+         function to return successful.
+
+         ASTERISK-25306
+         Reported by Mark Michelson
+
+         Change-Id: Ie0677f69f707503b1a37df18723bd59418085256
+
+2015-08-10 07:40 +0000 [f68c995bc9]  Alexander Traud <pabstraud@compuserve.com>
+
+       * chan_sip: Fix negotiation of iLBC 30.
+
+         iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is
+         supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5,
+         only iLBC 30 is negotiated now.
+
+         ASTERISK-25309 #close
+
+         Change-Id: I92d724600a183eec3114da0ac607b994b1a793da
+
+2015-08-09 18:42 +0000 [8e194047ac]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_format_attr_silk: Expose format attributes to other modules
+
+         This patch adds the .get callback to the format attribute module, such
+         that the Asterisk core or other third party modules can query for the
+         negotiated format attributes.
+
+         Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c
+
+2015-08-09 17:56 +0000 [a0f451c35e]  Matt Jordan <mjordan@digium.com>
+
+       * main/format: Add an API call for retrieving format attributes
+
+         Some codecs that may be a third party library to Asterisk need to have
+         knowledge of the format attributes that were negotiated. Unfortunately,
+         when the great format migration of Asterisk 13 occurred, that ability
+         was lost.
+
+         This patch adds an API call, ast_format_attribute_get, to the core
+         format API, along with updates to the unit test to check the new API
+         call. A new callback is also now available for format attribute modules,
+         such that they can provide the format attribute values they manage.
+
+         Note that the API returns a void *. This is done as the format attribute
+         modules themselves may store format attributes in any particular manner
+         they like. Care should be taken by consumers of the API to check the
+         return value before casting and dereferencing. Consumers will obviously
+         need to have a priori knowledge of the type of the format attribute as
+         well.
+
+         Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3
+
+2015-08-07 22:11 +0000 [26f0559a94]  David M. Lee <dlee@respoke.io>
+
+       * Replace htobe64 with htonll
+
+         We don't have a compatability function to fill in a missing htobe64; but
+         we already have one for the identical htonll.
+
+         Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac
+
+2015-08-07 14:20 +0000 [df9ce36366]  Scott Emidy <jemidy@digium.com>
+
+       * ARI: Retrieve existing log channels
+
+         An http request can be sent to get the existing Asterisk logs.
+
+         The command "curl -v -u user:pass -X GET 'http://localhost:8088
+         /ari/asterisk/logging'" can be run in the terminal to access the
+         newly implemented functionality.
+
+         * Retrieve all existing log channels
+
+         ASTERISK-25252
+
+         Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808
+
+2015-08-07 11:14 +0000 [e9f1bc08cb]  Scott Emidy <jemidy@digium.com>
+
+       * ARI: Creating log channels
+
+         An http request can be sent to create a log channel
+         in Asterisk.
+
+         The command "curl -v -u user:pass -X POST
+         'http://localhost:088/ari/asterisk/logging/mylog?
+         configuration=notice,warning'" can be run in the terminal
+         to access the newly implemented functionality for ARI.
+
+         * Ability to create log channels using ARI
+
+         ASTERISK-25252
+
+         Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782
+
+2015-08-06 15:18 +0000 [78364132ce]  Scott Emidy <jemidy@digium.com>
+
+       * ARI: Deleting log channels
+
+         An http request can be sent to delete a log channel
+         in Asterisk.
+
+         The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
+         /ari/asterisk/logging/mylog'" can be run in the terminal
+         to access the newly implemented functionally for ARI.
+
+         * Able to delete log channels using ARI
+
+         ASTERISK-25252
+
+         Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6
+
+2015-08-06 12:48 +0000 [e25569ef95]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [8521a86367]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip: Ensure sanitized XML is NULL terminated.
+
+         The ast_sip_sanitize_xml function is used to sanitize
+         a string for placement into XML. This is done by examining
+         an input string and then appending values to an output
+         buffer. The function used by its implementation, strncat,
+         has specific behavior that was not taken into account.
+         If the size of the input string exceeded the available
+         output buffer size it was possible for the sanitization
+         function to write past the output buffer itself causing
+         a crash. The crash would either occur because it was
+         writing into memory it shouldn't be or because the resulting
+         string was not NULL terminated.
+
+         This change keeps count of how much remaining space is
+         available in the output buffer for text and only allows
+         strncat to use that amount.
+
+         Since this was exposed by the res_pjsip_pidf_digium_body_supplement
+         module attempting to send a large message the maximum allowed
+         message size has also been increased in it.
+
+         A unit test has also been added which confirms that the
+         ast_sip_sanitize_xml function is providing NULL terminated
+         output even when the input length exceeds the output
+         buffer size.
+
+         ASTERISK-25304 #close
+
+         Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302
+
+2015-08-05 05:23 +0000 [9a12804e59]  Joshua Colp <jcolp@digium.com>
+
+       * res_rtp_asterisk: Don't leak temporary key when enabling PFS.
+
+         A change recently went in which enabled perfect forward secrecy for
+         DTLS in res_rtp_asterisk. This was accomplished two different ways
+         depending on the availability of a feature in OpenSSL. The fallback
+         method created a temporary instance of a key but did not free it.
+         This change fixes that.
+
+         ASTERISK-25265
+
+         Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396
+2015-08-04 09:47 +0000 [27dc2094e9]  Mark Michelson <mmichelson@digium.com>
+
+       * res_http_websocket: Debug write lengths.
+
+         Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a
+         test failure observed on 32 bit test agents by ensuring that a cast from
+         a 32 bit unsigned integer to a 64 bit unsigned integer was happening in
+         a predictable place. As it turns out, this did not cause test runs to
+         succeed.
+
+         This commit adds several redundant debug messages that print the payload
+         lengths of websocket frames. The idea here is that this commit will not
+         cause tests to succeed for the faulty test agent, but we might deduce
+         where the fault lies more easily this way by observing at what point the
+         expected value (537) changes to some ungangly huge number.
+
+         If you are wondering why something like this is being committed to the
+         branch, keep in mind that in commit
+         39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test
+         failures only happen when automated tests are run. Attempts to run the
+         tests by hand manually on the test agent result in the tests passing.
+
+         Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d
+
+2015-08-03 11:06 +0000 [39cc28f6ea]  Mark Michelson <mmichelson@digium.com>
+
+       * res_http_websocket: Avoid passing strlen() to ast_websocket_write().
+
+         We have seen a rash of test failures on a 32-bit build agent. Commit
+         48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where
+         we were not encoding a 64-bit value correctly over the wire. This
+         commit, however, did not solve the test failures.
+
+         In the failing tests, ARI is attempting to send a 537 byte text frame
+         over a websocket. When sending a frame this small, 16 bits are all that
+         is required in order to encode the payload length on the websocket
+         frame. However, ast_websocket_write() thinks that the payload length is
+         greater than 65535 and therefore writes out a 64 bit payload length.
+         Inspecting this payload length, the lower 32 bits are exactly what we
+         would expect it to be, 537 in hex. The upper 32 bits, are junk values
+         that are not expected to be there.
+
+         In the failure, we are passing the result of strlen() to a function that
+         expects a uint64_t parameter to be passed in. strlen() returns a size_t,
+         which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit
+         unsigned value to somewhere where a 64-bit unsigned value is expected
+         would cause no problems. In fact, in manual runs of failing tests, this
+         works just fine. However, ast_websocket_write() uses the Asterisk
+         optional API, which means that rather than a simple function call, there
+         are a series of macros that are used for its declaration and
+         implementation. These macros may be causing some sort of error to occur
+         when converting from a 32 bit quantity to a 64 bit quantity.
+
+         This commit changes the logic by making existing ast_websocket_write()
+         calls use ast_websocket_write_string() instead. Within
+         ast_websocket_write_string(), the 64-bit converted strlen is saved in a
+         local variable, and that variable is passed to ast_websocket_write()
+         instead.
+
+         Note that this commit message is full of speculation rather than
+         certainty. This is because the observed test failures, while always
+         present in automated test runs, never occur when tests are manually
+         attempted on the same test agent. The idea behind this commit is to fix
+         a theoretical issue by performing changes that should, at the least,
+         cause no harm. If it turns out that this change does not fix the failing
+         tests, then this commit should be reverted.
+
+         Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67
+
+2015-07-28 05:33 +0000 [aed068844c]  Mark Duncan <mark@syon.co.jp>
+
+       * res/res_rtp_asterisk: Add ECDH support
+
+         This will add ECDH support to Asterisk. It will
+         detect auto ECDH support in OpenSSL
+         (1.0.2b and above) during ./configure. If this is
+         available, it will use it,
+         otherwise it will fall back to prime256v1 (this
+         behavior is consistent with
+         other projects such as Apache and nginx).
+
+         This fixes WebRTC being broken in Firefox 38+ due
+         to Firefox now only supporting
+         ciphers with perfect forward secrecy.
+
+         ASTERISK-25265 #close
+
+         Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b
+
+2015-07-29 14:17 +0000 [1ae762634c]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Rotate log channels.
+
+         An http request can be sent to rotate a specified log channel.
+         If the channel does not exist, an error response will be
+         returned.
+
+         The command "curl -v -u user:pass -X PUT 'http://localhost:8088
+         /ari/asterisk/logging/logChannelName/rotate'" can be run in the
+         terminal to access this new functionality.
+
+         * Added the ability to rotate log files through ARI
+
+         ASTERISK-25252
+
+         Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01
+
+2015-07-29 13:49 +0000 [aeeb170fc4]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.c: Fix performance issue with several channel drivers that use RTP.
+
+         ast_rtp_codecs_get_payload() gets called once or twice for every received
+         RTP frame so it would be nice to not allocate an ao2 object to then have
+         it destroyed shortly thereafter.  The ao2 object gets allocated only if
+         the payload type is not set by the channel driver as a negotiated value.
+         The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323.
+
+         * Made static_RTP_PT[] an array of ao2 objects that
+         ast_rtp_codecs_get_payload() can return instead of an array of structs
+         that must be copied into a created ao2 object.
+
+         ASTERISK-25296 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0
+
+2015-07-29 17:00 +0000 [84262749d2]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_rtp_asterisk.c: Fix off-nominal crash potential.
+
+         ASTERISK-25296
+         Reported by: Richard Mudgett
+
+         Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b
+
+2015-07-29 13:48 +0000 [1519eb44a7]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.c: Must protect mime_types_len with mime_types_lock.
+
+         Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e
+
+2015-07-24 18:42 +0000 [a93b7a927c]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list.
+
+         Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2
+
+2015-07-24 18:38 +0000 [741fa0d26d]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_sdp_rtp.c: Fixup some whitespace.
+
+         Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973
+
+2015-07-27 19:10 +0000 [89b21fd9a3]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.h: No sense allowing payload types larger than RFC allows.
+
+         * Tweaked add_static_payload() to not use magic numbers.
+
+         Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b
+
+2015-07-23 14:04 +0000 [7427c7f13b]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.c: Minor tweaks.
+
+         * Fix off nominial ref leak of new_type in
+         ast_rtp_codecs_payloads_set_m_type().
+
+         * No need to lock static_RTP_PT_lock in
+         ast_rtp_codecs_payloads_set_m_type() and
+         ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type
+         parameter sanity check.
+
+         * No need to create ast_rtp_payload_type ao2 objects with a lock since the
+         lock is not used.
+
+         Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4
+
+2015-07-23 12:41 +0000 [e20f435b60]  Richard Mudgett <rmudgett@digium.com>
+
+       * rtp_engine.h: Misc comment fixes.
+
+         Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43
+
+2015-07-17 16:23 +0000 [bc5d7f9c37]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_sip.c: Tweak glue->update_peer() parameter nil value.
+
+         Change glue->update_peer() parameter from 0 to NULL to better indicate it
+         is a pointer.
+
+         Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd
+
+2015-07-30 17:05 +0000 [13eb491e35]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session.c: Fix crashes seen when call cancelled.
+
+         Two testsuite tests crashed in the same place as a result of an INVITE
+         being CANCELed.
+
+         tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified
+         tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp
+
+         The session pointer is no longer in the inv->mod_data[session_module.id]
+         location because the INVITE transaction has reached the terminated state.
+
+         ASTERISK-25297 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427
+
+2015-07-29 14:35 +0000 [48698a5e21]  Mark Michelson <mmichelson@digium.com>
+
+       * res_http_websocket: Properly encode 64 bit payload
+
+         A test agent was continuously failing all ARI tests when run against
+         Asterisk 13. As it turns out, the reason for this is that on those test
+         runs, for some reason we decided to use the super extended 64 bit
+         payload length for websocket text frames instead of the extended 16 bit
+         payload length. For 64-bit payloads, the expected byte order over the
+         network is
+
+         7, 6, 5, 4, 3, 2, 1, 0
+
+         However, we were sending the payload as
+
+         3, 2, 1, 0, 7, 6, 5, 4
+
+         This meant that we were saying to expect an absolutely MASSIVE payload
+         to arrive. Since we did not follow through on this expected payload
+         size, the client would sit patiently waiting for the rest of the payload
+         to arrive until the test would time out.
+
+         With this change, we use the htobe64() function instead of htonl() so
+         that a 64-bit byte-swap is performed instead of a 32 bit byte-swap.
+
+         Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a
+
+2015-07-29 12:23 +0000 [10ba72a927]  Mark Michelson <mmichelson@digium.com>
+
+       * Add a test event for inband ringing.
+
+         This event is necessary for the bridge_wait_e_options test to be able to
+         confirm that ringing is being played on the local channel that runs the
+         BridgeWait() application with the e(r) option.
+
+         ASTERISK-25292 #close
+         Reported by Kevin Harwell
+
+         Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e
+
+2015-07-16 12:16 +0000 [8458b8d441]  Jonathan Rose <jrose@digium.com>
+
+       * holding_bridge: ensure moh participants get frames
+
+         Currently, if a blank musiconhold.conf is used, musiconhold will fail
+         to start for a channel going into a holding bridge with an anticipation
+         of getting music on hold. That being the case, no frames will be written
+         to the channel and that can pose a problem for blind transfers in PJSIP
+         which may rely on frames being written to get past the REFER framehook.
+         This patch makes holding bridges start a silence generator if starting
+         music on hold fails and makes it so that if no music on hold functions
+         are installed that the ast_moh_start function will report a failure so
+         that consumers of that function will be able to respond appropriately.
+
+         ASTERISK-25271 #close
+
+         Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99
+
+2015-07-24 12:56 +0000 [f78a4b52b8]  Matt Jordan <mjordan@digium.com>
+
+       * Bump the ARI version to 1.8.0
+
+         Due to backwards compatible changes, the ARI version should be bumped to
+         1.8.0 prior to the release of 13.5.0. Note that a previous patch already
+         bumped the version of AMI for this release.
+
+         Change-Id: I419033bfbbc0d3533a29ccb32b2981f39e0883e7
+
+2015-07-18 11:16 +0000 [2749721791]  Joshua Colp <jcolp@digium.com>
+
+       * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options.
+
+         This change adds support for the 'rtp_timeout' and 'rtp_timeout_hold'
+         endpoint options. These allow the channel to be hung up if RTP
+         is not received from the remote endpoint for a specified number of
+         seconds.
+
+         ASTERISK-25259 #close
+
+         Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9
+
+2015-07-24 09:46 +0000 [b4e19e414a]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Add rtp_keepalive to sample config file.
+
+         Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19
+
+2015-07-23 13:11 +0000 [f635520527]  Mark Michelson <mmichelson@digium.com>
+
+       * Local channels: Alternate solution to ringback problem.
+
+         Commit 54b25c80c8387aea9eb20f9f4f077486cbdf3e5d solved an issue where a
+         specific scenario involving local channels and a native local RTP bridge
+         could result in ringback still being heard on a calling channel even
+         after the call is bridged.
+
+         That commit caused many tests in the testsuite to fail with alarming
+         consequences, such as not sending DialBegin and DialEnd events, and
+         giving incorrect hangup causes during calls.
+
+         This commit reverts the previous commit and implements and alternate
+         solution. This new solution involves only passing AST_CONTROL_RINGING
+         frames across local channels if the local channel is in AST_STATE_RING.
+         Otherwise, the frame does not traverse the local channels. By doing
+         this, we can ensure that a playtones generator does not get started on
+         the calling channel but rather is started on the local channel on which
+         the ringing frame was initially indicated.
+
+         ASTERISK-25250 #close
+         Reported by Etienne Lessard
+
+         Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39
+
+2015-07-22 12:24 +0000 [f509730cb9]  Joshua Colp <jcolp@digium.com>
+
+       * audiohook: Use manipulated frame instead of dropping it.
+
+         Previous changes to sample rate support in audiohooks accidentally
+         removed code responsible for allowing the manipulate audiohooks
+         to work. Without this code the manipulated frame would be dropped
+         and not used. This change restores it.
+
+         ASTERISK-25253 #close
+
+         Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13
+
+2015-07-22 09:46 +0000 [54b25c80c8]  Mark Michelson <mmichelson@digium.com>
+
+       * Local channels: Do not block control -1 payloads.
+
+         Control frames with a -1 payload are used as a special signal to stop
+         playtones generators on channels. This indication is sent both by
+         app_dial as well as by ast_answer() when a call is answered in case any
+         tones were being generated on a calling channel.
+
+         This control frame type was made to stop traversing local channel pairs
+         as an optimization, because it was thought that it was unnecessary to
+         send these indications, and allowing such unnecessary control frames to
+         traverse the local channels would cause the local channels to optimize
+         away less quickly.
+
+         As it turns out, through some special magic dialplan code, it is
+         possible to have a tones being played on a non-local channel, and it is
+         important for the local channel to convey that the tones should be
+         stopped. The result of having tones continue to be played on the
+         non-local channel is that the tones play even once the channel has been
+         bridged. By not blocking the -1 control frame type, we can ensure that
+         this situation does not happen.
+
+         ASTERISK-25250 #close
+         Reported by Etienne Lessard
+
+         Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815
+
+2015-07-22 05:16 +0000 [f1493f900e]  Joshua Colp <jcolp@digium.com>
+
+       * audiohook: Read the correct number of samples based on audiohook format.
+
+         Due to changes in audiohooks to support different sample rates the
+         underlying storage of samples is in the format of the audiohook
+         itself and not of the format being requested. This means that if a
+         channel is using G722 the samples stored will be at 16kHz. If
+         something subsequently reads from the audiohook at a format which
+         is not the same sample rate as the audiohook the number of samples
+         needs to be adjusted.
+
+         Given the following example:
+         1. Channel writing into audiohook at 16kHz (as it is using G722).
+         2. Chanspy reading from audiohook at 8kHz.
+
+         The original code would read 160 samples from the audiohook for
+         each 20ms of audio. This is incorrect. Since the audio in the
+         audiohook is at 16kHz the actual number needing to be read is 320.
+         Failure to read this much would cause the audiohook to reset
+         itself constantly as the buffer became full.
+
+         This change adjusts the requested number of samples by determining
+         the duration of audio requested and then calculating how many
+         samples that would be in the audiohook format.
+
+         ASTERISK-25247 #close
+
+         Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d
+
+2015-07-20 12:39 +0000 [62c64c3bd1]  Rusty Newton <rnewton@digium.com>
+
+       * Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c
+
+          * In sip.conf.sample fix sentence where we said that WS or WSS are supported
+            transports for use in an outbound register definition. They are not
+            supported in that case.
+          * In func_cdr.c made it clear that the Disable option for CDR_PROP can be used
+            to enable CDR on a channel.
+
+         ASTERISK-24867 #close
+         Reported by: Rusty Newton
+
+         ASTERISK-24853 #close
+         Reported by: PSDK
+
+         Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca
+
+2015-07-09 14:17 +0000 [d9094ddd73]  Mark Michelson <mmichelson@digium.com>
+
+       * 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: I06660ba672c0a343814af4cec838e6025cafd54b
+
+2015-07-16 09:13 +0000 [a23adcca3d]  Michael Cargile <mikec@vicidial.com>
+
+       * res/res_musiconhold: Add a warning when MOH does not exist
+
+         Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b
+
+2015-07-19 09:11 +0000 [03064daeb2]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf
+
+         Misconfiguring sorcery.conf with a 'config' wizard with no extra data
+         will currently crash Asterisk on startup, as the wizard requires a comma
+         delineated list to parse. This patch updates res_sorcery_config to check
+         for the presence of the data before it starts manipulating it.
+
+         Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847
+
+2015-07-16 09:46 +0000 [2c626ceb64]  Joshua Colp <jcolp@digium.com>
+
+       * 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-17 04:59 +0000 [abb14ac5b8]  Patric Marschall <patric.marschall@1und1.de>
+
+       * sig_pri.h: force_restart_unavailable_chans in wrong scope
+
+         In channels/sig_pri.h, struct sig_pri_span, the field
+         force_restart_unavailable_chans is only defined if
+
+         #if defined(HAVE_PRI_MCID) is true.
+
+         All other occurences of force_restart_unavailable_chans are outside of the
+
+         #if defined(HAVE_PRI_MCID)
+         endif
+
+         scope.
+
+         ASTERISK-25257 #close
+         Reported by: Patric Marschall
+
+         Change-Id: I071de89cc2cd0d85927a013036e235851f672549
+2015-07-14 16:55 +0000 [875aee4c09]  Richard Mudgett <rmudgett@digium.com>
+
+       * pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable.
+
+         ASTERISK-25256 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3
+
+2015-07-08 16:39 +0000 [8bcf6d2801]  Matt Jordan <mjordan@digium.com>
+
+       * ARI: Add support for push configuration of dynamic object
+
+         This patch adds support for push configuration of dynamic, i.e.,
+         sorcery, objects in Asterisk. It adds three new REST API calls to the
+         'asterisk' resource:
+          * GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current
+            object given its ID. This returns back a list of ConfigTuples, which
+            define the fields and their present values that make up the object.
+          * PUT /asterisk/{configClass}/{objectType}/{id}: create or update an
+            object. A body may be passed with the request that contains fields to
+            populate in the object. The same format as what is retrieved using
+            the GET operation is used for the body, save that we specify that the
+            list of fields to update are contained in the "fields" attribute.
+          * DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic
+            object from its backing storage.
+
+         Note that the success/failure of these operations is somewhat
+         configuration dependent, i.e., you must be using a sorcery wizard that
+         supports the operation in question. If a sorcery wizard does not support
+         the create or delete mechanisms, then the REST API call will fail with a
+         403 forbidden.
+
+         ASTERISK-25238 #close
+
+         Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c
+
+2015-07-15 15:40 +0000 [e31cb6b248]  Richard Mudgett <rmudgett@digium.com>
+
+       * strings.h: Fix issues with escape string functions.
+
+         Fixes for issues with the ASTERISK-24934 patch.
+
+         * Fixed ast_escape_alloc() and ast_escape_c_alloc() if the s parameter is
+         an empty string.  If it were an empty string the functions returned NULL
+         as if there were a memory allocation failure.  This failure caused the AMI
+         VarSet event to not get posted if the new value was an empty string.
+
+         * Fixed dest buffer overwrite potential in ast_escape() and
+         ast_escape_c().  If the dest buffer size is smaller than the space needed
+         by the escaped s parameter string then the dest buffer would be written
+         beyond the end by the nul string terminator.  The num parameter was really
+         the dest buffer size parameter so I renamed it to size.
+
+         * Made nul terminate the dest buffer if the source string parameter s was
+         an empty string in ast_escape() and ast_escape_c().
+
+         * Updated ast_escape() and ast_escape_c() doxygen function description
+         comments to reflect reality.
+
+         * Added some more unit test cases to /main/strings/escape to cover the
+         empty source string issues.
+
+         ASTERISK-25255 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: Id77fc704600ebcce81615c1200296f74de254104
+
+2015-07-14 14:29 +0000 [243c0d1609]  Richard Mudgett <rmudgett@digium.com>
+
+       * parking_applications.c: Fix ast_verb() line terminator.
+
+         Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775
+
+2015-07-14 14:36 +0000 [c782320c68]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
+
+         setup_park_common_datastore() was assuming that a non-NULL string returned
+         for the ATTENDEDTRANSFER and BLINDTRANSFER channel variables are not empty
+         strings.  Things got crashy as a result.
+
+         * Made setup_park_common_datastore() treat the channel variable values the
+         same whether they are NULL or empty for ATTENDEDTRANSFER and
+         BLINDTRANSFER.
+
+         ASTERISK-25254 #close
+         Reported by: Richard Mudgett
+
+         Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2
+
+2015-07-10 18:01 +0000 [2735dd5b2d]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer().
+
+         Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb
+
+2015-07-10 10:42 +0000 [3d0ca343ca]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session.c: Add some helpful comments and minor tweaks.
+
+         Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743
+
+2015-07-10 10:43 +0000 [8d08bb179c]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session.c: Fix off nominal crash potential in debug message.
+
+         Change-Id: I09928297927ee85f7655289acee3a586816466bc
+
+2015-07-15 10:31 +0000 [0a1a550593]  Matt Jordan <mjordan@digium.com>
+
+       * apps/app_dictate: Fix typo in attribution
+
+         Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian
+         (GameGamer43) for pointing that out.
+
+         Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106
+
+2015-07-15 10:28 +0000 [3384e64ef6]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Fixed unload mode for unload module.
+
+         Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM,
+         which would unload a module even if it was in use.
+
+         * Changed unload mode to proper mode
+
+         ASTERISK-25173
+
+         Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533
+
+2015-07-08 16:38 +0000 [0b6ff77afb]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails
+
+         Having a debug message tell us that we attempted to look up an item but
+         failed is nice in circumstances when it isn't clear if the wizard was
+         queried correctly or not.
+
+         Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7
+
+2015-07-08 16:37 +0000 [2f0d6d346c]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_pjsip_outbound_registration: Fix WARNING message
+
+         Newlines are nice.
+
+         Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42
+
+2015-07-08 16:35 +0000 [cd2213f1ae]  Matt Jordan <mjordan@digium.com>
+
+       * res_pjsip/configuration: Fix a variety of default value problems
+
+         This patch fixes some bad default value handling in the following
+         settings:
+
+         * The 'message_context' and 'accountcode' settings are not mandatory. As
+           such, we can allow their stringfield values to be empty.
+         * The 'media_encryption' setting applies a default value of 'none' to
+           the setting, which it then can't parse or understand. Since the value
+           is documented to be 'no', this will now apply that as the default
+           value.
+
+         Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83
+
+2015-07-08 16:32 +0000 [2e4bdbd78a]  Matt Jordan <mjordan@digium.com>
+
+       * main/sorcery: Provide log messages when a wizard does not support an operation
+
+         If a sorcery wizard does not support one of the 'optional' CRUD
+         operations (namely the CUD), log a WARNING message so we are aware of
+         why the operation failed. This also removes an assert in this case, as
+         the CUD operation may have been triggered by an external system, in
+         which case it is not a programming error but a configuration error.
+
+         Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53
+
+2015-07-10 18:17 +0000 [653f2087e0]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_session.c: Fix crash on call disconnect.
+
+         The crash fix for ASTERISK-25183 backported some code from master to try
+         to make sure that a BYE response is processed by the same serializer used
+         by the BYE request.  The identified race condition causing that backport
+         was the BYE request code had not finished processing after sending the BYE
+         before the BYE response came in for processing under a different thread.
+         Unfortunately, there is still a race condition.  Now the race condition is
+         between destroying the call session's serializer in
+         ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a
+         reference to the serializer for a BYE response.  Even worse, the new race
+         condition is a design limitation of the taskprocessor implementation that
+         didn't matter in versions before v12.  Back then, taskprocessors were only
+         destroyed when a module unloaded.  Now res_pjsip can destroy them when a
+         call ends.
+
+         However, as noted on the ASTERISK-25183 commit,
+         session_inv_on_state_changed() is disassociating the dialog from the
+         session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED.
+         This is a tad too soon because our BYE request transaction has not
+         completed yet.
+
+         * Split session_end() that is called by session_inv_on_state_changed() to
+         hold off session destruction until the BYE transaction timeout occurs or a
+         failed initial INVITE transaction timeout occurs in
+         session_inv_on_tsx_state_changed().
+
+         ASTERISK-25201 #close
+         Reported by: Matt Jordan
+
+         Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961
+
+2015-07-14 13:12 +0000 [1aafadf814]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Added new functionality to reload a single module.
+
+         An http request can be sent to reload an Asterisk module. If the
+         module can not be reloaded or is not already loaded, an error
+         response will be returned.
+
+         The command "curl -v -u user:pass -X PUT 'http://localhost:8088
+         /ari/asterisk/modules/{moduleName}'" (or something similar, based
+         on configuration) can be run in the terminal to access this new
+         functionality.
+
+         For more information, see:
+         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+
+         * Added new ARI functionality
+         * Asterisk modules can be reloaded through http requests
+
+         ASTERISK-25173
+
+         Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1
+
+2015-07-14 08:55 +0000 [9dcae23cfc]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Added new functionality to unload a single module.
+
+         An http request can be sent to unload an Asterisk module. If the
+         module can not be unloaded or is already unloaded, an error response
+         will be returned.
+
+         The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
+         /ari/asterisk/modules/{moduleName}'" (or something similar, depending
+         on configuration) can be run in the terminal to access this new
+         functionality.
+
+         For more information, see:
+         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+
+         * Added new ARI functionality
+         * Asterisk modules can be unloaded through http requests
+
+         ASTERISK-25173
+
+         Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57
+
+2015-07-13 16:00 +0000 [c219a98d2b]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Added new functionality to load a single module.
+
+         An http request can be sent to load an Asterisk module. If the
+         module can not be loaded or is loaded already, an error response
+         will be returned.
+
+         The command curl -v -u user:pass -X POST 'http://localhost:8088/ari
+         /asterisk/modules/{moduleName}'" (or something similar, depending on
+         configuration) can be run in the terminal to access this new
+         functionality.
+
+         For more information, see:
+         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+
+         * Added new ARI functionality
+         * Asterisk modules can be loaded through http requests
+
+         ASTERISK-25173
+
+         Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33
+
+2015-07-13 10:54 +0000 [73e35d20de]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Added new functionality to get information on a single module.
+
+         An http request can be sent to retrieve information on a single
+         module, including the resource name, description, use count, status,
+         and support level.
+
+         The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari
+         /asterisk/modules/{moduleName}'" (or something similar, depending on
+         configuration) can be run in the terminal to access this new
+         functionality.
+
+         For more information, see:
+         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+
+         * Added new ARI functionality
+         * Information on a single module can now be retrieved
+
+         ASTERISK-25173
+
+         Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463
+
+2015-07-08 14:56 +0000 [97ee0ee6c6]  Kevin Harwell <kharwell@digium.com>
+
+       * bridge.c: Fixed race condition during attended transfer
+
+         During an attended transfer a thread is started that handles imparting the
+         bridge channel. From the start of the thread to when the bridge channel is
+         ready exists a gap that can potentially cause problems (for instance, the
+         channel being swapped is hung up before the replacement channel enters the
+         bridge thus stopping the transfer). This patch adds a condition that waits
+         for the impart thread to get to a point of acceptable readiness before
+         allowing the initiating thread to continue.
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: I08fe33a2560da924e676df55b181e46fca604577
+
+2015-07-08 16:28 +0000 [bb76b88baf]  Matt Jordan <mjordan@digium.com>
+
+       * main/sorcery: Don't fail object set creation from JSON if field fails
+
+         Some individual fields may fail their conversion due to their default
+         values being invalid for their custom handlers. In particular,
+         configuration values that depend on others being enabled (and thus have
+         an empty default value) are notorious for tripping this routine up. An
+         example of this are any of the DTLS options for endpoints. Any of the
+         DTLS options will fail to be applied (as DTLS is not enabled), causing
+         the entire object set to be aborted.
+
+         This patch makes it so that we log a debug message when skipping a
+         field, and rumble on anyway.
+
+         ASTERISK-25238
+
+         Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76
+
+2015-07-08 16:21 +0000 [5f13c2226a]  Matt Jordan <mjordan@digium.com>
+
+       * main/format_cap: Parse capabilities generated by ast_format_cap_get_names
+
+         We have a strange relationship between the parsing of format
+         capabilities from a string and their representation as a string. We
+         expect the format capabilities to be expressed as a string in the
+         following format:
+
+         allow = !all,ulaw,alaw
+         disallow = g722
+
+         While we would generate the string representation of those formats as:
+
+         allow = (ulaw|alaw)
+         disallow = (ulaw|alaw|g729...)
+
+         When the configuration framework needs to store values as a string, it
+         generates the format capabilities using the second representation; this
+         representation however cannot be parsed when the entry is rehydrated.
+         This patch fixes that by updating
+         ast_format_cap_update_by_allow_disallow to parse an entry as if it were
+         in the generated format if it has a leading '(' and a trailing ')'.
+
+         ASTERISK-25238
+
+         Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca
+
+2015-06-27 17:53 +0000 [2325b106fd]  Matt Jordan <mjordan@digium.com>
+
+       * tests/test_devicestate: Add additional tests for the device state API
+
+         This patch adds more tests that exercise the device state API. This includes:
+
+         * Tests that cover adding a device state provider, as well as deleting a
+           device state provider. This also verifies that you cannot add an
+           already added device state provider, and cannot delete an already
+           deleted device state provider.
+         * A test that covers changing device state and receiving said updates
+           from a device state subscriber. This also covers hitting both the
+           device state cache as well as a custom device state provider.
+         * A test that covers converting device state to channel state and device
+           state values to a string representation and back.
+         * A test that covers obtaining device state from an active channel and a
+           channel driver that provides its own device state.
+
+         Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d
+
+2015-06-27 17:51 +0000 [328f0be806]  Matt Jordan <mjordan@digium.com>
+
+       * main/devicestate: Prevent duplicate registration of device state providers
+
+         Currently, the device state provider API will allow you to register a
+         device state provider with the same case insensitive name more than
+         once. This could cause strange issues, as the duplicate device state
+         providers will not be queried when a device's state has to be polled.
+         This patch updates the API such that a device state provider with the
+         same name as one that has already registered will be rejected.
+
+         Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2
+
+2015-07-10 22:25 +0000 [bee41eec62]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_sorcery_memory_cache: Fix test registration issues
+
+         Again, tests now need to not end with a newline. This patch makes it so
+         the tests can register again, unit tests will actually pass, and we can
+         stop wasting time trying to figure out why builds are failing when they
+         really aren't failing.
+
+         Change-Id: Ide519fbeba89f413c733446c5ff7b224fc4ce840
+
+2015-07-10 21:42 +0000 [4d738e9026]  Matt Jordan <mjordan@digium.com>
+
+       * tests/test_sorcery_memory_cache_thrash: Fix test loading problems
+
+         Because unit tests now want descriptions to not end with a newline, the
+         sorcery memory cache thrash tests failed to register. This patch
+         corrects their descriptions.
+
+         Change-Id: Id004b1becfdeed8ee3c846f49beab76a5c0f68b6
+
+2015-06-26 10:57 +0000 [47ea312b24]  Benjamin Ford <bford@digium.com>
+
+       * ARI: Added new functionality to get all module information.
+
+         An http request can be sent to retrieve a list of all existing modules,
+         including the resource name, description, use count, status, and
+         support level.
+
+         The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/
+         asterisk/modules" (or something similar, depending on configuration)
+         can be run in the terminal to access this new functionality.
+
+         For more information, see:
+         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+
+         * Added new ARI functionality
+         * Information on modules can now be retrieved
+
+         Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0
+
+2015-07-09 09:18 +0000 [d558b00c85]  Joshua Colp <jcolp@digium.com>
+
+       * 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-16 17:02 +0000 [b74b071369]  Joshua Colp <jcolp@digium.com>
+
+       * res_sorcery_memory_cache: Backport to 13
+
+         Gerrit is complaining of conflicts when trying to create a patch series
+         of all of the cherry-picked master commits, so I have instead squashed
+         it all into one commit.
+
+         ASTERISK-25067 #close
+         Reported by: Matt Jordan
+
+         Change-Id: I6dda90343fae24a75dc5beec84980024e8d61eb9
+
+2015-07-08 04:21 +0000 [7ff1ac8797]  Joshua Colp <jcolp@digium.com>
+
+       * res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used.
+
+         This change fixes a bug where the DTLS timeout timer would be
+         initialized to 0 if DTLS was not used for an RTP session.
+
+         ASTERISK-25103
+
+         Change-Id: If8d26bb054f1d300838850da5b8db9044c2fe2ac
+
+2015-07-01 07:55 +0000 [05e8e14982]  Joshua Colp <jcolp@digium.com>
+
+       * res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context.
+
+         This change moves logic for setting up the DTLS SSL contexts to
+         when the SDP is done being processed instead of when ICE negotiation
+         completes. It also stops handshakes from being initiated when we
+         are acting as a server.
+
+         Manipulating the SSL context when ICE negotiation has completed
+         is problematic as the SSL context is not protected and if acting
+         as a client the remote side may have started DTLS negotiation
+         already.
+
+         The retransmission timeout timer code has also been split up
+         and simplified some. Both RTP and RTCP now have their own timers
+         and the points at which the timer is stopped and started is now
+         more specific. When a packet is sent the timer is started. When
+         a response is received but before it is processed the timer is
+         stopped. This provides a guarantee that the timeout is not
+         occurring while the response is processed.
+
+         ASTERISK-22805 #close
+         ASTERISK-24550 #close
+         ASTERISK-24651 #close
+         ASTERISK-24832 #close
+         ASTERISK-25103 #close
+         ASTERISK-25127 #close
+
+         Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91
+
+2015-06-26 16:10 +0000 [38bace4fbb]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_t38.c: Fix always false if test.
+
+         Calling t38_change_state() sets the t38 state so it makes little sense to
+         then check the state right after the call for something else.
+
+         * Made the code in t38_interpret_parameters() reject or exit T.38 mode as
+         intended but not implemented.
+
+         Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2
+
+2015-06-30 11:17 +0000 [2f7688c788]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str().
+
+         Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907
+
+2015-06-30 11:14 +0000 [74be3a50d7]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_mwi.c: Eliminate a simple RAII_VAR.
+
+         Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da
+
+2015-06-30 11:11 +0000 [589e93617a]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_mwi.c: Fix mid-line log message line breaks.
+
+         * Add create_mwi_subscriptions_for_endpoint() doxygen comment.
+
+         Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2
+
+2015-06-26 18:48 +0000 [0d67e04359]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_mwi.c: Fix MWI subscription memory corruption crash.
+
+         MWI subscriptions can crash or corrupt memory when using the subscription
+         datastore to access the MWI subscription object because the datastore is
+         not holding a reference to the object.
+
+         * Give the subscription datastore a ref to the MWI subscription object.
+         It is unfortunate that the ref causes a circular ref chain that must be
+         explicitly broken to allow the memory to get released.  The loop is broken
+         when the subscription is shutdown and if the subscription setup fails.
+
+         ASTERISK-25168 #close
+         Reported by: Carl Fortin
+
+         Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f
+
+2015-07-02 14:51 +0000 [0422433f47]  Richard Mudgett <rmudgett@digium.com>
+
+       * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error.
+
+         When res_pjsip body generator modules were generating XML or XPIDF
+         response bodies, there was a chance that the generated body would be the
+         exact size of the supplied buffer.  Adding the nul string terminator would
+         then write beyond the end of the buffer and potentially corrupt memory.
+
+         * Fix MALLOC_DEBUG high fence violations caused by adding a nul string
+         terminator on the end of a buffer for XML or XPIDF response bodies.
+
+         * Made calls to pj_xml_print() safer if the XML prolog is requested.  Due
+         to a bug in pjproject, the return value could be -1 _or_
+         AST_PJSIP_XML_PROLOG_LEN if the supplied buffer is not large enough.
+
+         * Updated the doxygen comment of AST_PJSIP_XML_PROLOG_LEN to describe the
+         return value of pj_xml_print() when the supplied buffer is not large
+         enough.
+
+         ASTERISK-25168
+         Reported by: Carl Fortin
+
+         Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de
+
+2015-06-26 10:36 +0000 [8ea214aed7]  Richard Mudgett <rmudgett@digium.com>
+
+       * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences.
+
+         When a caller calls a FAX number and then hangs up right after the call is
+         answered then the T.38 re-INVITE automatic reject timer may still be
+         running after the channel goes away.
+
+         * Added session NULL channel checks on the code paths that get executed by
+         t38_automatic_reject() to prevent a crash when the T.38 re-INVITE
+         automatic reject timer expires.
+
+         ASTERISK-25168
+         Reported by: Carl Fortin
+
+         Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403
+
+2015-06-05 15:37 +0000 [ada7346792]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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.
+
+         ASTERISK-25183 #close
+         Reported by: Matt Jordan
+
+         Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a
+
+2015-07-04 18:22 +0000 [55137c3d12]  Joshua Colp <jcolp@digium.com>
+
+       * res/res_http_websocket: Don't send HTTP response fragmented.
+
+         This change makes it so that when accepting a WebSocket
+         connection the HTTP response is sent as one packet instead of
+         fragmented. Browsers don't like it when you send it fragmented.
+
+         ASTERISK-25103
+
+         Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69
+
+2015-06-27 18:47 +0000 [49f81ddb85]  Matt Jordan <mjordan@digium.com>
+
+       * Makefile: Remove coverage files on 'make clean'
+
+         This patch updates a variety of Makefiles in Asterisk's build system to
+         remove .gcda and .gcno files when 'make clean' is executed. These files
+         are generated when '--enable-coverage' is passed to the Asterisk
+         configure script.
+
+         Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602
+
+2015-07-02 09:08 +0000 [e0f565663b]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * chan_sip: Fix early call pickup channel leak.
+
+         When handle_invite_replaces() was called, and either ast_bridge_impart()
+         failed or there was no bridge (because the channel we're picking up was
+         still ringing), chan_sip would leak a channel.
+
+         Thanks Matt and Corey for checking the bridge path.
+
+         ASTERISK-25226 #close
+
+         Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8
+
+2015-07-02 06:19 +0000 [a5a262be78]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * chan_mgcp: Don't call close on fd -1.
+
+         ASTERISK-25220 #close
+
+         Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3
+
+2015-07-02 06:10 +0000 [b835312b4c]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format.
+
+         When running valgrind on Asterisk, it complained about:
+
+             ==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304)
+             ==32423==    at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...)
+             ==32423==    by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292)
+             ==32423==    by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437)
+
+         The code in question is a struct assignment, which may be performed by
+         memcpy as a compiler optimization. It is changed to only copy the struct
+         contents if source and destination are different.
+
+         ASTERISK-25219 #close
+
+         Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a
+
+2015-07-02 05:16 +0000 [6551e16e03]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * astfd: Fix buffer overflow in DEBUG_FD_LEAKS.
+
+         If DEBUG_FD_LEAKS was used and more file descriptors than the default of
+         1024 were available, some DEBUG_FD_LEAKS-patched functions would
+         overwrite memory past the fixed-size (1024) fdleaks buffer.
+
+         This change:
+         - adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe
+         - consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024
+         - stores pointers to constants instead of copying the contents
+         - reorders the fdleaks struct for possibly tighter packing
+         - adds a tiny bit of documentation
+
+         ASTERISK-25212 #close
+
+         Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5
+
+2015-07-02 04:57 +0000 [f4dd9560cf]  Walter Doekes <walter+asterisk@wjd.nu>
+
+       * res_timing: Don't close FD 0 when out of open files.
+
+         This fixes so a failure to get a timer file descriptor does not cascade
+         to closing FD 0.
+
+         On error, both res_timing_kqueue and res_timing_timerfd would call the
+         destructor before setting the file handle. The file handle had been
+         initialized to 0, causing FD 0 to be closed. This in turn, resulted in
+         floods of "CLI>" messages and an unusable terminal.
+
+         ASTERISK-19277 #close
+         Reported by: Barry Chern
+
+         For the 13 branch, this was already fixed. This patch only ensures that
+         we do not attempt to close a negative file descriptor.
+
+         Change-Id: I147d7e33726c6e5a2751928d56561494f5800350
+
+2015-07-01 17:25 +0000 [78a1f4aa46]  Richard Mudgett <rmudgett@digium.com>
+
+       * chan_vpb.cc: Fix compiler warning Jenkins found.
+
+         Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0
+
+2015-07-01 13:34 +0000 [6b16fbfc22]  Scott Griepentrog <scott@griepentrog.com>
+
+       * Channel alert pipe: improve diagnostic error return
+
+         When a frame is queued on a channel, any failure in
+         ast_channel_alert_write is logged along with errno.
+
+         This change improves the diagnostic message through
+         aligning the errno value with actual failure cases.
+
+         ASTERISK-25224
+         Reported by: Andrey Biglari
+
+         Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b
+
+2015-07-01 16:04 +0000 [8e07ab145d]  Matt Jordan <mjordan@digium.com>
+
+       * sorcery/realtime: Add a bit of debug and warning messages for bad configs
+
+         When a mapping does not exist between a sorcery.conf defined object and
+         a realtime mapping in extconf, currently, the user will receive a slew
+         of ERROR messages that don't really tell what is happening. Some ERROR
+         messages may even be misleading, as they occur after the sorcery API has
+         already given up on the attempt to load and create the sorcery object.
+
+         This patch adds a bit of debug and a useful WARNING message for when a
+         wizard's open callback fails for a particular object type. In the bad
+         configurations that resulted in this patch, this provided a 'root cause'
+         WARNING message that pointed in the right direction of the configuration
+         problem.
+
+         Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b
+2015-06-29 12:45 +0000 [156395e743]  Mark Michelson <mmichelson@digium.com>
+
+       * res_sorcery_realtime: Fix leak of sorcery object type.
+
+         This prevents a leak of a sorcery object type when realtime sorcery
+         objects are retrieved by fields or when multiple objects are retrieved.
+
+         The extent of this leak is that sorcery object types would be leaked.
+         These are allocated whenever an object type is registered with sorcery,
+         meaning that on module shutdown, these objects would be leaked. This
+         could be problematic if many reloads were performed, but it is not as
+         severe as if every sorcery object retrieved from realtime were being
+         leaked.
+
+         ASTERISK-25165 #close
+         Reported by Corey Farrell
+
+         Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8
+
+2015-06-26 22:02 +0000 [a5e9c4e9b2]  Matt Jordan <mjordan@digium.com>
+
+       * res/res_corosync: Always decline module load, instead of failing
+
+         Returns a 'failure' from the module load routine indicates to Asterisk
+         that it should abort loading completely. This is rarely - in fact,
+         really, never - a good option. Aborting load of Asterisk from a dynamic
+         module implies that the core, and the rest of the dynamic modules, don't
+         matter: we should abandon all processing.
+
+         res_corosync is really not that important.
+
+         This patch updates the module such that, if it fails to load, it
+         politely declines (emitting ERROR messages along the way), and allows
+         Asterisk to continue to function.
+
+         Note that this issue was keeping Asterisk unit tests from running on
+         certain build agents.
+
+         Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f
+
+2015-06-26 20:38 +0000 [399cd8bcd9]  Matt Jordan <mjordan@digium.com>
+
+       * main/pbx: Resolve case sensitivity regression in PBX hints
+
+         When 8297136f was merged for ASTERISK-25040, a regression was introduced
+         surrounding the case sensitivity of device names within hints.
+         Previously, device names - such as 'sip/foo' - were compared in a case
+         insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After
+         that patch, only the case sensitive name would match, i.e., 'SIP/foo'.
+         As a result, some dialplan hints stopped working.
+
+         This patch re-introduces case insensitive matching for device names in
+         hints.
+
+         ASTERISK-25040
+
+         ASTERISK-25202 #close
+
+         Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c
+         (cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03)
+
+2015-06-26 16:12 +0000 [24eec5a10b]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_nat: Adjust when contact should be rewritten.
+
+         A previous change made the contact only get rewritten if the dialog's
+         route set was not marked frozen. Unfortunately, while the intent of this
+         is correct, the dialog's route set actually gets marked as frozen
+         earlier than expected, especially for UAS dialogs.
+
+         Instead, the idea is that the contact needs to not be rewritten if there
+         is a pre-existing route set on the dialog. This is now accomplished by
+         checking the dialog's route set list instead of checking if the route
+         set is frozen.
+
+         Doing this causes some broken tests to begin passing again.
+
+         ASTERISK-25196
+         Reported by Mark Michelson
+
+         Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e
+
+2015-06-19 18:27 +0000 [0ec461a637]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Add a serializer shutdown group.
+
+         The client_state objects contain a serializer used to send the outbound
+         REGISTER messages.  Once all those message transactions are complete then
+         the module can shutdown.
+
+         ASTERISK-24907 #close
+         Reported by: Kevin Harwell
+
+         Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547
+
+2015-06-26 10:41 +0000 [05a2cc1293]  Mark Michelson <mmichelson@digium.com>
+
+       * 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 [028fa54620]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip_nat: Rewrite route set when required.
+
+         When performing some provider testing, the rewrite_contact option was
+         interfering with proper construction of a route set when sending an ACK
+         after receiving a 200 OK response to an INVITE.
+
+         The initial INVITE was sent to address sip:foo. The 200 OK had a Contact
+         header with URI sip:bar. In addition, the 200 OK had Record-Route
+         headers for sip:baz and sip:foo, in that order. Since the Record-Route
+         headers had the lr parameter, the result should have been:
+
+         * Set R-URI of the ACK to sip:bar.
+         * Add Route headers for sip:foo and sip:baz, in that order.
+
+         However, the rewrite_contact option resulted in our rewriting the
+         Contact header on the 200 OK to sip:foo. The result was:
+
+         * R-URI remained sip:foo.
+         * We added Route headers for sip:foo and sip:baz, in that order.
+
+         The result was that sip:bar was not indicated in the ACK at all, so the
+         far end never received our ACK. The call eventually dropped.
+
+         The intention of rewrite_contact is to rewrite the most immediate
+         destination of our SIP request to be the same address on which we
+         received a request or response. In the case of processing a SIP response
+         with Record-Route headers, this means that instead of rewriting the
+         Contact header, we should instead rewrite the bottom-most Record-Route
+         header. In the case of processing a SIP request with Record-Route
+         headers, this means we rewrite the top-most Record-route header.
+         Like when we rewrite the Contact header, we also ensure to update
+         the dialog's route set if it exists.
+
+         ASTERISK-25196 #close
+         Reported by Mark Michelson
+
+         Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f
+2015-06-19 16:16 +0000 [84c12f9e0c]  Richard Mudgett <rmudgett@digium.com>
+
+       * threadpool, res_pjsip: Add serializer group shutdown API calls.
+
+         A module trying to unload needs to wait for all serializers it creates and
+         uses to complete processing before unloading.
+
+         ASTERISK-24907
+         Reported by: Kevin Harwell
+
+         Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059
+
+2015-06-16 15:06 +0000 [602c4b74b5]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs
+
+         * handle_client_state_destruction() must always be passed a ref to
+         client_state because it will always unref client_state.
+         handle_registration_response() was not passing a client_state ref.
+
+         * Made the final un-REGISTER message get sent normally using the pjproject
+         register control structure in handle_client_state_destruction().  The
+         previous code attempted to short circuit the response handling for the
+         module to unload.  That doesn't work for a couple reasons.  One,
+         pjsip_regc_send() may call the registered callback before it returns and
+         unbalance the client_state ref count.  Two, the registered callback
+         handles any authentication for the un-REGISTER message.
+
+         * Made the distinction between internal registration state and external
+         registration status with sip_outbound_registration_status_str().  This is
+         necessary to avoid altering documented AMI messages with internal
+         changes.
+
+         * Removed references to client_state->client outside of the serializer
+         thread.  When handle_client_state_destruction() destroys the pjproject
+         register control structure that memory is freed and cannot be referenced
+         anymore.  These accesses were to provide information for debug and
+         off-nominal warning messages.
+
+         * In sip_outbound_registration_timer_cb() you should not access entry->id
+         after unrefing client_state because the passed in entry is normally
+         pointing to the timer entry in the client_state object.
+
+         ASTERISK-24907
+         Reported by: Kevin Harwell
+
+         Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f
+
+2015-06-15 15:28 +0000 [8c6a95a9ac]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API
+
+         The sorcery pjsip 'registration' config object needs to be destroyed on
+         module unload.  Otherwise, a reload of res_pjsip could try to use
+         callbacks for a previously unloaded instance of the module provided by
+         ast_sorcery_object_register() or one of the variants.  Also, if
+         res_pjsip_outbound_registration were subsequently reloaded, the sorcery
+         config field objects would be registered in sorcery twice.
+
+         ASTERISK-24907
+         Reported by: Kevin Harwell
+
+         Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697
+
+2015-06-25 06:42 +0000 [e4a2ef9e4e]  Joshua Colp <jcolp@digium.com>
+
+       * channel: Remove ignore of answer on non-outgoing channels.
+
+         Due to the way that channels can now be moved around inside of
+         Asterisk it is possible for the outgoing flag of a channel to get
+         cleared before it has been answered. This results in the bridge
+         not receiving notification that the outgoing leg has been answered.
+
+         This most easily exhibits itself with DTMF based blond transfers.
+         Since the answer of the outgoing leg is ignored the other party
+         continues to receive both a locally generated ringing and the
+         media stream of the outgoing leg upon its answer. This results
+         in no media being heard.
+
+         This change removes the ignore of the answer and allows it
+         to pass through.
+
+         ASTERISK-25171 #close
+
+         Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e
+
+2015-06-15 15:28 +0000 [20f3d77ab9]  Richard Mudgett <rmudgett@digium.com>
+
+       * sorcery: Add ast_sorcery_object_unregister() API call.
+
+         Find and unlink the specified sorcery object type to complement
+         ast_sorcery_object_register().  Without this function you cannot
+         completely unload individual modules that use sorcery for configuration.
+
+         ASTERISK-24907
+         Reported by: Kevin Harwell
+
+         Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88
+
+2015-06-15 13:38 +0000 [4313f32969]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Reorder load_module() and unload_module().
+
+         It is best if the loading code creates and initializes the module's
+         infrastructure before letting the system know of its existence.  The
+         unloading code needs to reverse the actions of the loading code and in the
+         reverse order.
+
+         ASTERISK-24907
+         Reported by: Kevin Harwell
+
+         Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4
+
+2015-06-23 14:34 +0000 [890c923786]  Richard Mudgett <rmudgett@digium.com>
+
+       * AMI: Add Linkedid to the standard channel snapshot AMI event headers.
+
+         * The AMI version is bumped to 2.8.0.
+
+         ASTERISK-25189 #close
+         Reported by: John Hardin
+
+         Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac
+
+2015-06-24 14:30 +0000 [2602a7484b]  Richard Mudgett <rmudgett@digium.com>
+
+       * test.c: Add unit test registration checks for summary and description.
+
+         Added checks when a unit test is registered to see that the summary and
+         description strings do not end with a new-line '\n' for consistency.
+
+         The check generates a warning message and will cause the
+         /main/test/registrations unit test to fail.
+
+         * Updated struct ast_test_info member doxygen comments.
+
+         Change-Id: I295909b6bc013ed9b6882e85c05287082497534d
+
+2015-06-24 14:39 +0000 [2b0482d699]  Richard Mudgett <rmudgett@digium.com>
+
+       * Unit tests: Fix unit test description strings.
+
+         Analyzing the code shows that the unit test summary and description
+         strings should not end with a new-line character.  Where these strings are
+         used in the code a new-line is provided for output.
+
+         Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba
+
+2015-06-23 11:21 +0000 [e99e654d75]  Joshua Colp <jcolp@digium.com>
+
+       * app_dial: Hold reference to calling channel formats when dialing outbound.
+
+         Currently when requesting a channel the native formats of the
+         calling channel are provided to the core for usage when dialing
+         the outbound channel. This occurs without holding the channel lock
+         or keeping a reference to the formats. This is problematic as
+         the channel driver may end up changing the formats during this time.
+         In the case of chan_sip this happens when an SDP negotiation
+         completes.
+
+         This change makes it so app_dial keeps a reference to the native
+         formats of the calling channel which guarantees that they will
+         remain valid for the period of time needed.
+
+         ASTERISK-25172 #close
+
+         Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db
+2015-06-17 05:04 +0000 [80e82dc97f]  Joshua Colp <jcolp@digium.com>
+
+       * res_pjsip_mwi: Set up unsolicited MWI upon registration.
+
+         The res_pjsip_mwi previously required a reload to set up the proper
+         subscriptions to allow unsolicited MWI to work. This change
+         makes it so the act of registering will also cause this to occur.
+         This is particularly useful if realtime is involved as no reload
+         needs to occur within Asterisk to cause the MWI information
+         to get sent.
+
+         ASTERISK-25180 #close
+
+         Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252
+
+2015-06-22 15:11 +0000 [35a99b6394]  Kevin Harwell <kharwell@digium.com>
+
+       * bridge.c: Hangup attended transfer target if bridged
+
+         After completing an attended transfer the transfer target channel was not being
+         hung up after leaving the bridge. Added an explicit softhangup to hangup said
+         channel, but only if it was previously bridged.
+
+         ASTERISK-24782 #close
+         Reported by: John Bigelow
+
+         Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
+
+2015-06-17 16:23 +0000 [036bc0012f]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Add missing line endings to CLI commands
+
+         Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7
+
+2015-06-12 14:29 +0000 [bec7435945]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage.
+
+         Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e
+
+2015-06-12 13:33 +0000 [c2519fdf1c]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip_outbound_registration.c: Misc code cleanups.
+
+         * Break some long lines.
+
+         * Fix doxygen comment.
+
+         Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305
+
+2015-06-22 09:26 +0000 [a419c69def]  Alexander Traud (License 6520)
+
+       * chan_sip: Reload peer without its old capabilities.
+
+         On reload, previously allowed codecs were not removed. Therefore, it was not
+         possible to remove codecs while Asterisk was running. Furthermore, newly added
+         codecs got appended behind the previous codecs. Therefore, it was not possible
+         to add a codec with a priority of #1. This change removes the old capabilities
+         before the current ones are added.
+
+         ASTERISK-25182 #close
+         Reported by: Alexander Traud
+         patches:
+          asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520)
+
+         Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802
+
+2015-06-20 19:38 +0000 [74616ae43d]  Joshua Colp <jcolp@digium.com>
+
+       * chan_sip: Destroy peers without holding peers container lock.
+
+         Due to the use of stasis_unsubscribe_and_join in the peer destructor
+         it is possible for a deadlock to occur when an event callback is
+         occurring at the same time.
+
+         This happens because the peer may be destroyed while holding the
+         peers container lock. If this occurs the event callback will never
+         be able to acquire the container lock and the unsubscribe will
+         never complete.
+
+         This change makes it so the peers that have been removed from the
+         peers container are not destroyed with the container lock held.
+
+         ASTERISK-25163 #close
+
+         Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33
+
+2015-06-18 13:16 +0000 [9015bb4c8c]  Mark Michelson <mmichelson@digium.com>
+
+       * Resolve race conditions involving Stasis bridges.
+
+         This resolves two observed race conditions.
+
+         First, a bit of background on what the Stasis application does:
+
+         1a Creates a stasis_app_control structure. This structure is linked into
+            a global container and can be looked up using a channel's unique ID.
+         2a Puts the channel in an event loop. The event loop can exit either
+            because the stasis_app_control structure has been marked done, or
+            because of some other factor, such as a hangup. In the event loop, the
+            stasis_app_control determines if any specific ARI commands need to be
+            run on the channel and will run them from this thread.
+         3a Checks if the channel is bridged. If the channel is bridged, then
+            ast_bridge_depart() is called since channels that are added to Stasis
+            bridges are always imparted as departable.
+         4a Unlink the stasis_app_control from the container.
+
+         When an ARI command is received by Asterisk, the following occurs
+         1b A thread is spawned to handle the HTTP request
+         2b The stasis_app_control(s) that corresponds to the channel(s) in the
+            request is/are retrieved. If the stasis_app_control cannot be
+            retrieved, then it is assumed that the channel in question has exited
+            the Stasis app or perhaps was never in Stasis in the first place.
+         3b A command is queued onto the stasis_app_control, and the channel's
+            event loop thread is signaled to run the command.
+         4b While most ARI commands do nothing further, some, such as adding or
+            removing channels from a bridge, will block until the command they
+            issued has been completed by the channel's event loop.
+
+         The first race condition that is solved by this patch involves a crash
+         that can occur due to faulty detection of the channel's bridged status
+         in step 3a. What can happen is that in step 2a, the event loop may run
+         the ast_bridge_impart() function to asynchronously place the channel
+         into a bridge, then immediately exit the event loop because the channel
+         has hung up. In step 3a, we would detect that the channel was not
+         bridged and would not call ast_bridge_depart(). The reason that the
+         channel did not appear to be bridged was that the depart_thread that is
+         spawned by ast_bridge_impart() had not yet started. That is the thread
+         where the channel is marked as being bridged. Since we did not call
+         ast_bridge_depart(), the Stasis application would exit, and then the
+         channel would be destroyed Then the depart_thread would start up and
+         try to manipulate the destroyed channel, causing a crash.
+
+         The fix for this is to switch from using ast_channel_is_bridged() to
+         checking the NULLity of ast_channel_internal_bridge_channel() to
+         determine if ast_bridge_depart() needs to be called. The channel's
+         internal bridge_channel is set when ast_bridge_impart() is called and
+         is NULLed by the call to ast_bridge_depart(). If the channel's internal
+         bridge_channel is non-NULL, then the channel must have been imparted
+         into the bridge and needs to be departed, even if the actual bridging
+         operation has not yet started. By departing the channel when necessary,
+         the thread that is running the Stasis application will block until the
+         bridge gives the okay that the depart_thread has exited.
+
+         The second race condition that is solved by this patch involves a leak
+         of HTTP handler threads. The problem was that step 2b would successfully
+         retrieve a stasis_app_control structure. Then step 2a would exit the
+         channel from the event loop due to a hangup. Steps 3a and 4a would
+         execute, and then finally steps 3b and 4b would. The problem is that at
+         step 4b, when attempting to add a channel to a bridge, the thread would
+         block forever since the channel would never execute the queued command
+         since it was finished with the event loop. This meant that the HTTP
+         handling thread would be leaked, along with any references that thread
+         may have owned (in my case, I was seeing bridges leaked).
+
+         The fix for this is to hone in better on when the channel has exited the
+         event loop. The stasis_app_control structure has an is_done field that
+         is now set at each point where the channel may exit the event loop. If
+         step 2b retrieves a valid stasis_app_control structure but the control
+         is marked as done, then the attempted operation exits immediately since
+         there will be nothing to service the attempted command.
+
+         ASTERISK-25091 #close
+         Reported by Ilya Trikoz
+
+         Change-Id: If66265b73b4c9f8f58599124d777fedc54576628
+2015-06-16 11:13 +0000 [723a9d4225]  Mark Michelson <mmichelson@digium.com>
+
+       * Parking: Add documentation for AMI ParkedCallSwap event.
+
+         This event was added some time ago in order to clarify when a channel
+         took the place of another channel in a parking lot. However, there was
+         no XML documentation added for the event. This patch adds the XML
+         documentation.
+
+         ASTERISK-24900 #close
+         Reported by Rusty Newton
+
+         Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac
+2015-06-15 16:40 +0000 [79bf56c78a]  Corey Farrell <git@cfware.com>
+
+       * func_pjsip_aor: Fix leaked contact from iterator.
+
+         ASTERISK-25162 #close
+
+         Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e
+
+2015-06-12 16:58 +0000 [31c77b157b]  Kevin Harwell <kharwell@digium.com>
+
+       * res_pjsip: Add option to force G.726 to be treated as AAL2 packed.
+
+         Some phones send g.726 audio packed for AAL2, which differs from what is
+         recommended by RFC 3351. If Asterisk receives audio formatted as such when
+         negotiating g.726 then it sounds a bit distorted. Added an option to
+         res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726
+         AAL2 packed.
+
+         ASTERISK-25158 #close
+         Reported by: Steve Pitts
+
+         Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615
+
+2015-06-14 19:48 +0000 [de8c7f46ed]  Matt Jordan <mjordan@digium.com>
+
+       * main/cdr: Carry over the disable flag when 'disable all' is specified
+
+         The CDR_PROP function (as well as the NoCDR application) set the
+         'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This
+         flag is supposed to be applied to all CDRs that are currently in the
+         chain, as well as all CDRs that may be created in the future. Currently,
+         however, the flag is only applied to the existing CDRs in the chain; new
+         CDRs do not receive the 'disable all' flag. In particular, this affects
+         parallel dials, which generate new CDRs for each pair of channels in
+         the dial attempt.
+
+         This patch carries over the 'disable all' flag when it is specified on a
+         CDR and a new CDR is generated for the chain.
+
+         ASTERISK-24344 #close
+
+         Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e
+2015-06-12 14:28 +0000 [78ea356e78]  Matt Jordan <mjordan@digium.com>
+
+       * main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines
+
+         When a parallel dial occurs, a new CDR will be created for each dial
+         attempt that is made. In most circumstances, the act of creating each
+         CDR in the chain will include a step that updates the Party A snapshot,
+         which causes the context/extension of the Party A to be copied onto the
+         CDR object.
+
+         However, when the Party A is in a subroutine, we explicitly do *not*
+         copy the context/extension onto the CDR. This prevents the Macro or
+         GoSub routine name from blowing away the context/extension that the
+         channel was originally executing in. For the original CDR, this is not a
+         problem: the original CDR already recorded the last known 'good' state
+         of the channel just prior to it going into the subroutine. However, for
+         newly generated CDRs in a chain, there is no context/extension set on
+         them. Since we are in a subroutine, we will never set the Party A's
+         context/extension on the CDR, and we end up with a CDR with no
+         destination recorded on it.
+
+         This patch updates the creation of a chained CDR such that it copies
+         over the original CDR's context/extension. This is the last known "good"
+         state of the CDR, and is a reasonable starting point for the newly
+         generated CDR. In the case where we are not in a subroutine, subsequent
+         code will update the location of the CDR from the Party A information;
+         in the case where we are in a subroutine, the context/extension on the
+         original CDR is the correct information.
+
+         ASTERISK-24443 #close
+
+         Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a
+
+2015-06-11 08:18 +0000 [3f57f3f8ec]  Damian Ivereigh <damo@launtel.net.au>
+
+       * chan_sip.c: Update dialog fromtag after request with auth
+
+         If a client sends and INVITE which is 401 rejected, then subsequently
+         sends a new INVITE with the auth info and uses a different fromtag
+         from the first INVITE, Asterisk will accept the new INVITE as part of
+         the original dialog - match_req_to_dialog() specifically ignores the
+         fromtag. However it does not update the stored dialog with the new
+         fromtag.
+
+         This results in Asterisk being unable to match future packets that are
+         part of this dialog (such as the ACK to the OK or the OK to the BYE),
+         and the call is dropped.
+
+         This problem was originally found when using an NEC-i SV8100-GE (NEC SIP
+         Card).
+
+         * After a successful match of a packet to the dialog, if the packet is
+           not a SIP_RESPONSE, authentication is present and the fromtags are
+           different, the stored fromtag is updated with the one from the recent
+           INVITE.
+
+         ASTERISK-25154 #close
+         Reported by: Damian Ivereigh
+         Tested by: Damian Ivereigh
+
+         Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e
+
+2015-06-11 18:52 +0000 [30a0f2d9ac]  Matt Jordan <mjordan@digium.com>
+
+       * chan_pjsip: Set the context and extension on the channel when created
+
+         Prior to this patch, chan_pjsip was failing to pass the endpoint's
+         context and the desired extension to the ast_channel_alloc_* routine.
+         This caused a new channel snapshot to be issued without a context and
+         extension, which can cause some reporting issues for users of AMI, CEL,
+         and other APIs. The channel driver would later set the context and
+         extension on the channel such that the channel would start in the
+         correct location in the dialplan, but the information reported in the
+         initial event would be incorrect.
+
+         This patch modifies the channel driver such that it now passes the
+         context and extension directly into the allocation routine. This
+         provides the information in the new channel snapshot published over
+         Stasis.
+
+         ASTERISK-25156 #close
+         Reported by: cloos
+
+         Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e
+
+2015-06-10 18:28 +0000 [dbb067279e]  Joshua Colp <jcolp@digium.com>
+
+       * 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 [a2f4d03c87]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_directory: Fix crash when using the alias option 'a'.
+
+         The voicemail.conf mailbox key/value pair is defined as:
+         <mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
+         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
+         <mailbox>=<password>,<name> 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-09 15:31 +0000 [a2b718f4f6]  Richard Mudgett <rmudgett@digium.com>
+
+       * res_pjsip.h: Fix some doxygen comments.
+
+         Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976
+
+2015-06-05 13:46 +0000 [32ddf6d86b]  Richard Mudgett <rmudgett@digium.com>
+
+       * taskprocessor.c: Remove extra unref from off-nominal path.
+
+         Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60
+
+2015-04-20 16:00 +0000 [cf98c744d5]  Yousf Ateya <y.ateya@starkbits.com>
+
+       * chan_iax2: Prevent deadlock between hangup and sending lagrq/ping
+
+         channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/
+         send_ping. This deadlock happens because the scheduled task send_lagrq(or
+         send_ping) starts execution after the call hangup procedure starts but before
+         it deletes the tasks in the scheduler.
+
+         The solution is to delete scheduled lagrq (and ping) task asynchronously
+         (i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will
+         be called in a new context (doesn't have callno locked).
+
+         This commit also cleans up the procedure of sending LAGRQ and PING.
+
+         main/sched.c: Do not assert when deleting non existant entry from scheduler.
+         This assert seems to be the reason for a lot of awkward code to avoid it.
+
+         ASTERISK-24983 #close
+         Reported by: Y Ateya
+
+         Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c
+
+2015-05-31 12:37 +0000 [8af6c9cf6b]  Ivan Poddubny <ivan.poddubny@gmail.com>
+
+       * res_pjsip_transport_websocket: Fix use-after-free bugs.
+
+         This patch fixes use-after-free bugs caught by AddressSanitizer.
+
+         1. PJSIP transport manager may decide to destroy transport on its own.
+         For example, when the contact registered via websocket has not renewed
+         its registration in time. The transport was destoyed, but the websocket
+         listener thread was still active until the socket closes, and then tried
+         to call transport_shutdown on transport that has been freed.
+
+         Also, the transport destructor accessed wstransport->rdata.tp_info.pool
+         right after freeing memory that contained wstransport itself.
+
+         This patch converts transport to an ao2 object, allowing it to be
+         refcounted, so that it is available until both websocket listener and
+         pjsip transport manager are finished with it.
+
+         2. The websocket listener deletes the last reference on websocket session
+         when the tcp connection is closed, and it gets destroyed, but
+         the transport manager may still use it, for example when disconnect
+         happens in the middle of a SIP transaction.
+
+         A new reference to websocket session has been added that is released
+         with the transport to prevent this.
+
+         ASTERISK-25096 #close
+         Reported by: Josh Kitchens
+
+         ASTERISK-24963 #close
+         Reported by: Badalian Vyacheslav
+
+         Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b
+
+2015-06-09 13:41 +0000 [3046bc17ed]  ibercom <ibercom123@gmail.com>
+
+       * weakref attribute detection broken with gcc 4.6 and higher
+
+         GCC 4.7 Manual:
+         http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html
+
+         weakref ("target")
+
+         A weak reference is an alias that does not by itself require a definition
+         to be given for the target symbol.
+
+         ASTERISK-22559 #close
+         Reported by: Ibercom
+
+         Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf
+
+2015-06-08 10:09 +0000 [55c8daf88b]  Corey Farrell <git@cfware.com>
+
+       * Fix unsafe uses of ast_context pointers.
+
+         Although ast_context_find, ast_context_find_or_create and
+         ast_context_destroy perform locking of the contexts table,
+         any context pointer can become invalid at any time that the
+         contexts table is unlocked. This change adds locking around
+         all complete operations involving these functions.
+
+         Places where ast_context_find was followed by ast_context_destroy
+         have been replaced with calls ast_context_destroy_by_name.
+
+         ASTERISK-25094 #close
+         Reported by: Corey Farrell
+
+         Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa
+
+2015-06-04 07:14 +0000 [e0090216db]  ibercom <ibercom123@gmail.com>
+
+       * CLI: Cosmetic issue - core show uptime
+
+         Show uptime information ends with an unnecessary space.
+
+         Now NEEDCOMMA is better defined.
+
+         Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1
+
+2015-06-03 17:41 +0000 [88212ccb7f]  Mark Michelson <mmichelson@digium.com>
+
+       * res_pjsip: Prevent access of NULL channels.
+
+         It is possible to receive incoming requests or responses after the channel
+         on an ast_sip_session has been destroyed and NULLed out. Handlers of these
+         sorts of requests or responses need to be prepared for the possibility
+         that the channel is NULL or else they could cause a crash.
+
+         While several places have been amended to deal with NULL channels, there
+         were still a couple of places that needed updating.
+
+         res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to
+         return early if there is no channel on the session.
+
+         res_pjsip_session.c: When handling a 302 response, we need to stop the
+         redirecting attempt if there is no channel on the session.
+
+         ASTERISK-25148 #close
+         reported by Mark Michelson
+
+         Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9
+
+2015-06-01 11:45 +0000 [f5d5aa67dc]  Kevin Harwell <kharwell@digium.com>
+
+       * 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 13:17 +0000 [5dc9fb4198]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/location: Fix ref leak in contact_apply_handler
+
+         contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status
+         to force the creation of a contact_status object whenever a new
+         contact is added but it didn't unref the returned object.
+
+         Added an ao2_cleanup(status) to plug the leak.
+
+         ASTERISK-25141
+
+         Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40
+         Reported-by: Corey Farrell
+
+2015-06-02 15:07 +0000 [d908272b7e]  David M. Lee <dlee@respoke.io>
+
+       * Fixes for OS X
+
+          * Add some type casting so tv_usec can really be a long, instead of
+            some strange platform specific type.
+
+          * Add some .dylib style files to .gitignore.
+
+          * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer
+            versions of GCC, when compiling the Homebrew formula for Asterisk,
+            are not properly passing the -Xlinker options to the linker. Given
+            that -Wl, does exactly the [same thing][], and does it properly, this
+            patch changes the -Xlinker options to use -Wl, instead.
+
+          [reasons unknown]: http://bit.ly/1SUbEYx
+          [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
+
+         Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd
+
+2015-05-30 20:22 +0000 [9e7827e3ac]  Corey Farrell <git@cfware.com>
+
+       * pjsip_configuration: Fix leak in persistent_endpoint_update_state.
+
+         The loop to find the first available contact of an endpoint grabbed
+         contact from the iterator, then checked for offline state.  This
+         caused the first contact after the state was found to leak a reference.
+
+         ASTERISK-25141
+
+         Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08
+2015-05-31 11:33 +0000 [888bb49618]  Ivan Poddubny <ivan.poddubny@gmail.com>
+
+       * Fix buffer overflow in slin sample frames generation.
+
+         The length of frames retured by sample functions was twice as large as
+         real, what caused global buffer overflow caught by AddressSanitizer.
+
+         ASTERISK-24717 #close
+         Reported by: Badalian Vyacheslav
+
+         Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6
+
+2015-05-29 16:19 +0000 [857166b5e5]  gtjoseph <george.joseph@fairview5.com>
+
+       * res_pjsip/location:  Fix memory leak in permanent_uri_handler
+
+         When permanent_uri_handler was creating the contact status
+         object for each contact, it wasn't unreffing it at the
+         end of the loop.
+
+         ASTERISK-25141 #close
+         Reported-by: Corey Farrell
+
+         Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12
+
+2015-05-29 14:52 +0000 [1558a89129]  gtjoseph <george.joseph@fairview5.com>
+
+       * Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change"
 
-         Now on to res_pjsip...
+         This reverts commit 35c699086ae2fd81b2473307ccb2ae79ad32375a.
 
-         pjsip_options was modified to retrieve aors with qualify_frequency > 0
-         rather than all endpoints then all aors.  Not only was this a big
-         improvement in realtime retrieval but even for config files there's an
-         improvement because we're not going through endpoints anymore.
+         Change-Id: Ia98c2b4820cf579a5b9bb75e9e05d7a233205fb7
 
-         res_pjsip_mwi was modified to retieve only endpoints with something in
-         the mailboxes field instead of all endpoints then testing mailboxes.
+2015-05-27 13:22 +0000 [35c699086a]  gtjoseph <george.joseph@fairview5.com>
 
-         res_pjsip_registrar_expire was completely refactored.  It was retrieving
-         all contacts then setting up scheduler entries to check for expiration.
-         Now, it's a single thread (like keepalive) that periodically retrieves
-         only contacts whose expiration time is < now and deletes them.  A new
-         contact_expiration_check_interval was added to global with a default of
-         30 seconds.
+       * endpoint/stasis: Eliminate duplicate events on endpoint status change
 
-         Ross Beer reports that with this patch, his Asterisk startup time dropped
-         from around an hour to under 30 seconds.
+         When an endpoint was created, it's messages were being forwarded to
+         both the tech endpoint topic and the all endpoints topic.  Since
+         the tech topic was also forwarded to all, this was resulting in
+         duplicate messages whenever an endpoint published.  This patch
+         causes the endpoint to only forward to the tech topic and lets
+         the tech topic forward to all.
 
-         There are still objects that can't be filtered at the database like
-         identifies, transports, and registrations.  These are not going to be
-         anywhere near as numerous as endpoints, aors, auths, contacts however.
+         To accomplish this, the existing stasis_cp_single_create function
+         (which both creates and forwards) was cloned and split into 2
+         functions, one that creates the topic and one that sets up the
+         forwarding.  This allows endpoint_internal_create to create
+         the topic from the endpoint_all cache without forwarding it there,
+         then allows it to do the forward to the tech's topic.
 
-         Back to allow_unqualified_fetch.  If this is set to yes and you have a
-         very large number of objects in the database, the pjsip CLI commands
-         will attempt to retrive ALL of them if not qualified with a LIKE.
-         Worse, if you type "pjsip show endpoint <tab>" guess what's going to
-         happen? :)  Having a cache helps but all the objects will have to be
-         retrieved at least once to fill the cache.  Setting
-         allow_unqualified_fetch=no prevents the mass retrieve and should be used
-         on endpoints, auths, aors, and contacts.  It should NOT be used for
-         identifies, registrations and transports since these MUST be
-         retrieved in bulk.
+         ASTERISK-25137 #close
+         Reported-by: Vitezslav Novy
+         ASTERISK-25116 #close
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         Example sorcery.conf:
+         Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c
 
-         [res_pjsip]
-         endpoint=config,pjsip.conf,criteria=type=endpoint
-         endpoint=realtime,ps_endpoints,allow_unqualified_fetch=error
+2015-05-26 13:56 +0000 [fe21f2e52f]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25826 #close
-         Reported-by: Ross Beer
-         Tested-by: Ross Beer
+       * res_pjsip_session: Fix in-dialog authentication.
 
-         Change-Id: Id2691e447db90892890036e663aaf907b2dc1c67
+         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.
 
-2016-03-23 14:24 +0000 [05fc3a96d1]  Richard Mudgett <rmudgett@digium.com>
+         * 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.
 
-       * res_parking: Cleanup find_channel_parking_lot_name() usage.
+         * 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.
 
-         Change-Id: I8f7a8890aef27824301c642d4d15407ac83e6f02
+         * 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.
 
-2016-03-18 14:01 +0000 [a4189763ab]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-25131 #close
+         Reported by: Richard Mudgett
 
-       * res_parking: Misc fixes.
+         Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0
 
-         res/parking/parking_applications.c:
+2015-05-21 17:21 +0000 [262d590819]  gtjoseph <george.joseph@fairview5.com>
 
-         * Add malloc fail checks in setup_park_common_datastore().
+       * res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes
 
-         * Fix playing parking failed announcement to only happen on non-blind
-         transfers in park_app_exec().  It could never go out before because a test
-         was provedly always false.
+         Add a new ContactStatus AMI event.
+         Publish the following status/state changes:
+         Created
+         Removed
+         Reachable
+         Unreachable
+         Unknown
 
-         res/parking/parking_bridge.c:
+         Contact URI, new status/state, aor and endpoint names, and the
+         last qualify rtt result are included in the event.
 
-         * Fix NULL tolerance in generate_parked_user() because
-         bridge_parking_push() can theoretically pass a NULL parker channel if the
-         parker channel went away for some reason.
+         ASTERISK-25114 #close
 
-         * Clarify some weird code dealing with blind_transfer in
-         bridge_parking_push().
+         Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         res/parking/parking_bridge_features.c:
+2015-05-26 07:44 +0000 [5a42397018]  Joshua Colp <jcolp@digium.com>
 
-         * Made park_local_transfer() set BLINDTRANSFER on the Local;1 channel
-         which will be bulk copied to the Local;2 channel on the subsequent
-         ast_call().  The additional advantage is if the parker channel has the
-         BLINDTRANSFER and ATTENDEDTRANSFER variables set they are now guaranteed
-         to be overridden.
+       * sorcery: Fix cache creation callback.
 
-         res/parking/parking_manager.c:
+         The cache creation callback function expects to receive a sorcery_details
+         structure and not just a standalone object.
 
-         * Fix AMI Park action input range checking of the Timeout header in
-         manager_park().
+         Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450
 
-         * Reduced locking scope to where needed in manager_park().
+2015-05-24 13:47 +0000 [97a6ce1717]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         res/res_parking.c:
+       * Astobj2: Correctly treat hash_fn returning INT_MIN
 
-         * Fix some off nominal missing unlocks by eliminating the returns.
+         The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0.
+         However, abs(INT_MIN) = INT_MIN and is still negative, as well as
+         abs(INT_MIN) % num_buckets, and as a result this led to a crash.
 
-         Change-Id: Ib64945bc285acb05a306dc12e6f16854898915ca
+         One way to trigger the bug is using host=::80 or 0.0.0.128 in peer
+         configuration section in chan_sip or chan_iax.
 
-2014-12-15 05:23 +0000 [6f95b5eda1]  Philip Correia
+         This patch takes the remainder before applying abs, so that bucket
+         number is always in range.
 
-       * res_parking: Update parking documentation for dynamic parking lots.
+         ASTERISK-25100 #close
+         Reported by: Mark Petersen
 
-         * Remove duplicate res_parking.conf courtesytone config option
-         documentation.
+         Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899
+2015-05-23 04:36 +0000 [554bd1e39c]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         ASTERISK-24596 #close
-         Reported by:  Philip Correia
+       * res_pjsip_transport_websocket: Fix crash on receiving large SIP packets
 
-         ASTERISK-24605
-         Reported by:  Philip Correia
-         Patches:
-               call_park_app_doc.patch (license #6672) patch uploaded by Philip Correia
+         Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves
+         truncated before passing to pjsip_tpmgr_receive_packet, but the length
+         was passed unaltered, thus causing memory corruption and segfault.
 
-         Change-Id: I90a92a891c6494dc08173e675856afcc4764c5b5
+         ASTERISK-25122 #close
 
-2016-03-24 14:08 +0000 [81ce60f6d4]  Alexander Traud <pabstraud@compuserve.com>
+         Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab
 
-       * chan_sip: Do not send all codecs on INVITE. Do not break on Session-Timers.
+2015-05-22 21:50 +0000 [0d266cbe02]  Corey Farrell <git@cfware.com>
 
-         Asterisk 13.7.0 included a fix for ASTERISK-24543, not to send all those
-         codecs, which the caller did not request/support. That fix was not complete
-         because on the second Session Timer all codecs were sent again. Some VoIP/SIP
-         clients interpreted that complete codec-list as a change in the SIP session.
-         Because of that, Asterisk did not send the RTP audio via NAT anymore which
-         created a non-audio scenario after the second Session Timer fired.
+       * Stasis: Fix unsafe use of stasis_unsubscribe in modules.
 
-         ASTERISK-24543 #close
+         Many uses of stasis_unsubscribe in modules can be reached through unload.
+         These have been switched to stasis_unsubscribe_and_join.
 
-         Change-Id: I1881827816ab7fd47eb4287a95961179b34a0b66
+         Some subscription callbacks do nothing, for these I've created a noop
+         callback function in stasis.c.  This is used by some modules that monitor
+         MWI topics in order to enable cache, since the callback does not become
+         invalid after dlclose it is safe to use stasis_unsubscribe on these, even
+         during module unload.
 
-2016-03-19 07:34 +0000 [c6e4c48e67]  Gianluca Merlo <gianluca.merlo@gmail.com>
+         ASTERISK-25121 #close
 
-       * config: fix flags in uint option handler
+         Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c
 
-         The configuration unsigned integer option handler sets flags for the
-         parser as if the option should be a signed integer (PARSE_INT32),
-         leading to errors on "out of range" values. Fix flags (PARSE_UINT32).
+2015-05-22 12:22 +0000 [51ffed5e61]  Matt Jordan <mjordan@digium.com>
 
-         A fix to res_pjsip is also present which stops invalid flags from
-         being passed when registering sorcery object fields for qualify
-         status.
+       * res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS
 
-         ASTERISK-25612 #close
+         In addition to specifying lists of 'presence' and 'message-summary',
+         users can also create lists of type 'dialog'. These should be treated in
+         the same fashion as 'presence'.
 
-         Change-Id: I96b539336275e0e72a8e8033487d2c3344debd3e
+         Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e
 
-2016-03-10 16:58 +0000 [59c8e189fd]  Mark Michelson <mmichelson@digium.com>
+2015-05-22 12:18 +0000 [7950b65e4f]  Matt Jordan <mjordan@digium.com>
 
-       * Restrict CLI/AMI commands on shutdown.
+       * res/res_pjsip_exten_state: Fix confusing NOTICE message
 
-         During stress testing, we have frequently seen crashes occur because a
-         CLI or AMI command attempts to access information that is in the process
-         of being destroyed.
+         When a SUBSCRIBE request is made to a dialplan hint that doesn't exist,
+         the current NOTICE message informing users of this swaps the context and
+         extension parameters. This can cause a bit of confusion.
 
-         When addressing how to fix this issue, we initially considered fixing
-         individual crashes we observed. However, the changes required to fix
-         those problems would introduce considerable overhead to the nominal
-         case. This is not reasonable in order to prevent a crash from occurring
-         while Asterisk is already shutting down.
+         Thanks to CptBurger in #asterisk for helping to point this out.
 
-         Instead, this change makes it so AMI and CLI commands cannot be executed
-         if Asterisk is being shut down. For AMI, this is absolute. For CLI,
-         though, certain commands can be registered so that they may be run
-         during Asterisk shutdown.
+         Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43
 
-         ASTERISK-25825 #close
+2015-05-17 20:36 +0000 [5ac65ddfb4]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I8887e215ac352fadf7f4c1e082da9089b1421990
-2016-03-24 07:45 +0000 [ff3eebf454]  Walter Doekes <walter+asterisk@wjd.nu>
+       * res/ari: Register Stasis application on WebSocket attempt
 
-       * musiconhold: Only warn if music class is not found in memory and database.
+         Prior to this patch, when a WebSocket connection is made, ARI would not
+         be informed of the connection until after the WebSocket layer had
+         accepted the connection. This created a brief race condition where the
+         ARI client would be notified that it was connected, a channel would be
+         sent into the Stasis dialplan application, but ARI would not yet have
+         registered the Stasis application presented in the HTTP request that
+         established the WebSocket.
 
-         The log message when a MusicOnHold music class was not found was changed
-         from debug level to WARNING level in Asterisk 11.19 and 13.5.  For those
-         using realtime musiconhold, this message is wrong because it warns
-         before checking the database.
+         This patch resolves this issue by doing the following:
+          * When a WebSocket attempt is made, a callback is made into the ARI
+            application layer, which verifies and registers the apps presented in
+            the HTTP request. Because we do not yet have a WebSocket, we cannot
+            have an event session for the corresponding applications. Some
+            defensive checks were thus added to make the application objects
+            tolerant to a NULL event session.
+          * When a WebSocket connection is made, the registered application is
+            updated with the newly created event session that wraps the WebSocket
+            connection.
 
-         This changeset delays the warning until after the database has been
-         checked.
+         ASTERISK-24988 #close
+         Reported by: Joshua Colp
 
-         Reported-by: Conrad de Wet
-         ASTERISK-25444 #close
+         Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636
 
-         Change-Id: I6cfb2db2f9cfbd2bb3d30566ecae361c4abf6dbf
+2015-05-20 11:11 +0000 [60e2fbfe62]  gtjoseph <george.joseph@fairview5.com>
 
-2016-03-24 05:38 +0000 [82e55e4883]  Walter Doekes <walter+asterisk@wjd.nu>
+       * res_pjsip: Refactor endpt_send_transaction (qualify_timeout)
 
-       * core/logging: Fix broken syslog levels on older glibc.
+         This patch refactors the transaction timeout processing to eliminate
+         calling the lower level public pjsip functions and reverts to calling
+         pjsip_endpt_send_request again.  This is the result of me noticing
+         a possible incompatibility with pjproject-2.4 which was causing
+         contact status flapping.
 
-         The fix to ASTERISK-25407 introduced the usage of LOG_MAKEPRI. However
-         this macro is broken in older glibc (< 2.17); it would left-shift the
-         facility a second time, causing the resultant priority to become
-         invalid.
+         The original version of this feature used the lower level calls to
+         get access to the tsx structure in order to cancel the transaction
+         when our own timer expires. Since we no longer have that access,
+         if our own timer expires before the pjsip timer, we call the callbacks
+         and just let the pjsip transaction take it's own course.  When the
+         transaction ends, it discovers the callbacks have already been run
+         and just cleans itself up.
 
-         The syslog manpage mentions nothing about LOG_MAKEPRI and suggests this:
+         A few messages in pjsip_configuration were also added/cleaned up.
 
-             The priority argument is formed by ORing the facility and the level
-             values [...].
+         ASTERISK-25105 #close
 
-         ASTERISK-25510 #close
-         Reported by: Michael Newton
+         Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
+2015-05-20 00:45 +0000 [42476e6633]  demon-ru <serov.d.p@gmail.com>
 
-         Change-Id: Ia89debe7fac5ad090c7ef595c0707f31bb1e3d03
+       * res_pjsip_outbound_registration: Check request URI for line.
 
-2016-03-23 08:59 +0000 [d963a33749]  gtjoseph <george.joseph@fairview5.com>
+         When an inbound call is received the To header is checked
+         for the "line" option. Some remote servers will place this
+         in the request URI instead. This adds an additional check for
+         the option in the request URI.
 
-       * pjproject-bundled:  Cleanups for reported issues
+         ASTERISK-25072 #close
+         Reported by: Dmitriy Serov
 
-         PortAudio should no longer be required
-         PJSIP_MAX_PKT_LEN is now 6000
-         Older autoconf issue fixed. (CentOS 6)
+         Change-Id: Id4e44debbb80baad623b914a88574371575353c8
 
-         Change-Id: I463fa9586cbe7c6b3b603289f535bd8e361611dd
+2015-05-21 17:51 +0000 [e7edb59db6]  Corey Farrell <git@cfware.com>
 
-2015-11-20 08:02 +0000 [c5170677e7]  Francesco Castellano <francesco.castellano@messagenet.it>
+       * res_mwi_external_ami: Use module version of AMI registration.
 
-       * chan_sip.c: Space after port causes unnecessary resolution attempt
+         Use ast_manager_register_xml for res_mwi_external_ami manager
+         actions.  This ensures the module is held open while any of
+         the actions are being run.
 
-         check_via() already skips leading blanks where the sent-by address (with the
-         optional port) should be placed.
+         ASTERISK-25117 #close
+         Reported by: Corey Farrell
 
-         Since RFC 3261 allows for blanks between the port ant the Via parameters:
-         > https://tools.ietf.org/html/rfc3261#section-20.42
-         (actually it allows a lot of blanks more ;-)). I just switched from
-         ast_skip_blanks() to ast_strip() on the local copy of the string.
+         Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7
+2015-05-21 13:05 +0000 [9d8a462356]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-21301 #close
+       * ARI: Update version to 1.7.0
 
-         Change-Id: Ie5b8fe5a07067b7c0dc9bcdd1707e99b23b02b06
+         This patch updates the version of ARI to 1.7.0 to reflect the backwards
+         compatible changes that will be introduced in 13.4.0.
 
-2016-03-19 17:49 +0000 [51deadee38]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I6c36e6144da426412f25828a868e4df916bff60a
 
-       * progdocs:  Exclude ./third-party from documentation generation
+2015-05-20 20:53 +0000 [9b6e228419]  Corey Farrell <git@cfware.com>
 
-         We don't need pjproject's documentation embedded in Asterisk's.
+       * Logger: Reset defaults before processing config.
 
-         Change-Id: Iea6f5a621c0f4e3168dda3321eaab258d9f24a17
+         Reset options to default values before reloading config.  This ensures
+         that if a setting is removed or commented out of the configuration file
+         it is unset on reload.
 
-2016-03-18 20:32 +0000 [aa2fcd244e]  Gianluca Merlo <gianluca.merlo@gmail.com>
+         ASTERISK-25112 #close
+         Reported by: Corey Farrell
 
-       * func_aes: fix misuse of strlen on binary data
+         Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd
 
-         The encryption code for AES_ENCRYPT evaluates the length of the data to
-         be encoded in base64 using strlen. The data is binary, thus the length
-         of it can be underestimated at the first NULL character.
-         Reuse the write pointer offset to evaluate it, instead.
+2015-05-20 19:05 +0000 [7fcf0a97b8]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25857 #close
+       * app_playback: Suppress warnings on playback if channel hung up
 
-         Change-Id: If686b5d570473eb926693c73461177b35b13b186
+         If a channel hangs up while an audio file is playing, there's
+         no need to clutter up the logs with a warning so suppress it
+         if ast_check_hangup returns true.
 
-2016-04-20 10:46 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         Also, change warning to debug/2 in file.c if writing a frame
+         fails.  Same reasoning.
 
-       * asterisk 13.8.2 Released.
+         Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-2016-04-20 05:45 +0000 [26d67ce885]  Joshua Colp <jcolp@digium.com>
+2015-05-14 15:21 +0000 [b1e8c0b9eb]  Kevin Harwell <kharwell@digium.com>
 
-       * Release summaries: Remove previous versions
+       * audiohook.c: Difference in read/write rates caused continuous buffer resets
 
-2016-04-20 05:45 +0000 [d9909232ed]  Joshua Colp <jcolp@digium.com>
+         Currently, everytime a sample rate change occurs (on read or write) the
+         associated factory buffers are reset. If the requested sample rate on a
+         read differed from that of a write then the buffers are continually reset
+         on every read and write. This has the side effect of emptying the buffer,
+         thus there being no data to read and then write to a file in the case of
+         call recording.
 
-       * .version: Update for 13.8.2
+         This patch fixes it so that an audiohook_list's rate always maintains the
+         maximum sample rate among hooks and formats. Audiohook sample rates are
+         only overwritten by this value when slin native compatibility is turned on.
+         Also, the audiohook sample rate can only overwrite the list's sample rate
+         when its rate is greater than that of the list or if compatibility is
+         turned off. This keeps the rate from constantly switching/resetting.
 
-2016-04-20 05:45 +0000 [fc57bb9b15]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-24944 #close
+         Reported by: Ronald Raikes
 
-       * .lastclean: Update for 13.8.2
+         Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f
 
-2016-04-20 05:45 +0000 [ac04474f38]  Joshua Colp <jcolp@digium.com>
+2015-05-19 13:01 +0000 [17d6ede337]  Corey Edwards <tensai@zmonkey.org>
 
-       * realtime: Add database scripts for 13.8.2
+       * main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits
 
-2016-04-18 17:00 +0000 [91a3e1184f]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-24887 #close
+         Reported by: Makoto Dei
+         Tested by: tensai
 
-       * res_pjsip_registrar: Fix bad memory-ness with user_agent.
+         Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf
 
-         Recent changes to the PJSIP registrar resulted in tests failing due to
-         missing AOR_CONTACT_ADDED test events. The reason for this was that the
-         user_agent string had junk values in it, resulting in being unable to
-         generate the event.
+2015-05-13 09:55 +0000 [31cc24aad6]  Matt Jordan <mjordan@digium.com>
 
-         I'm going to be honest here, I have no idea why this was happening. Here
-         are the steps needed for the user_agent variable to get messed up:
-         * REGISTER is received
-         * First contact in the REGISTER results in a contact being removed
-         * Second contact in the REGISTER results in a contact being added
-         * The contact, AOR, expiration, and user agent all have to be passed as
-           format parameters to the creation of a string. Any subset of those
-           parameters would not be enough to cause the problem.
+       * res/res_http_websocket: Add a pre-session established callback
 
-         Looking into what was happening, the thing that struck me as odd was
-         that the user_agent variable was meant to be set to the value of the
-         User-Agent SIP header in the incoming REGISTER. However, when removing a
-         contact, the user_agent variable would be set (via ast_strdupa inside a
-         loop) to the stored contact's user_agent. This means that the
-         user_agent's value would be incorrect when attempting to process further
-         contacts in the incoming REGISTER.
+         This patch updates http_websocket and its corresponding implementation
+         with a pre-session established callback. This callback allows for
+         WebSocket server consumers to be notified when a WebSocket connection is
+         attempted, but before we accept it. Consumers can choose to reject the
+         connection, if their application specific logic allows for it.
 
-         The fix here is to use a different variable for the stored user agent
-         when removing a contact. Correcting the behavior to be correct also
-         means the memory usage is less weird, and the issue no longer occurs.
+         As a result, this patch pulls out the previously private
+         websocket_protocol struct and makes it public, as
+         ast_websocket_protocol. In order to preserve backwards compatibility
+         with existing modules, the existing APIs were left as-is, and new APIs
+         were added for the creation of the ast_websocket_protocol as well as for
+         adding a sub-protocol to a WebSocket server.
 
-         ASTERISK-25929 #close
-         Reported by Joshua Colp
+         In particular, the following new API calls were added:
+         * ast_websocket_add_protocol2 - add a protocol to the core WebSocket
+           server
+         * ast_websocket_server_add_protocol2 - add a protocol to a specific
+           WebSocket server
+         * ast_websocket_sub_protocol_alloc - allocate a sub-protocol object.
+           Consumers can populate this with whatever callbacks they wish to
+           support, then add it to the core server or a specified server.
 
-         Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
-         (cherry picked from commit f436b9ab111f1ff57c6dd3970051f123b42c1103)
+         ASTERISK-24988
+         Reported by: Joshua Colp
 
-2016-04-18 13:41 +0000 [70e25ced60]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2
 
-       * res_pjsip_transport_management: Allow unload to occur.
+2015-05-14 22:05 +0000 [f9114179e6]  snuffy <snuffy22@gmail.com>
 
-         At shutdown it is possible for modules to be unloaded that wouldn't
-         normally be unloaded. This allows the environment to be cleaned up.
+       * chan_pjsip: Fix crash during off-nominal when no endpoint specified.
 
-         The res_pjsip_transport_management module did not have the unload
-         logic in it to clean itself up causing the res_pjsip module to not
-         get unloaded. As a result the res_pjsip monitor thread kept going
-         processing traffic and timers when it shouldn't.
+         Add missing return -1 when no endpoint name is specified.
 
-         Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
-         (cherry picked from commit 49bfdc9ac029e0ef17cd8e85d8d7b7731387a34e)
+         ASTERISK-25086 #close
+         Reported by: snuffy
 
-2016-04-18 12:12 +0000 [856931edc2]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e
+2015-05-14 18:01 +0000 [dd78ab42e4]  gtjoseph <george.joseph@fairview5.com>
 
-       * PJSIP: Remove PJSIP parsing functions from uri length validation.
+       * res_pjsip_config_wizard/config: Fix template processing
 
-         The PJSIP parsing functions provide a nice concise way to check the
-         length of a hostname in a SIP URI. The problem is that in order to use
-         those parsing functions, it's required to use them from a thread that
-         has registered with PJLib.
+         The config wizard was always pulling the first occurrence of
+         a variable from an ast_variable list but this gets the template
+         value from the list instead of any overridden value.  This patch
+         creates ast_variable_find_last_in_list() in config.c and updates
+         res_pjsip_config_wizard to use it instead of
+         ast_variable_find_in_list.  Now the overridden values, where they
+         exist, are used instead of template variables.
 
-         On startup, when parsing AOR configuration, the permanent URI handler
-         may not be run from a PJLib-registered thread. Specifically, this could
-         happen when Asterisk was started in daemon mode rather than
-         console-mode. If PJProject were compiled with assertions enabled, then
-         this would cause Asterisk to crash on startup.
+         Updated test_config to test the new API.
 
-         The solution presented here is to do our own parsing of the contact URI
-         in order to ensure that the hostname in the URI is not too long. The
-         parsing does not attempt to perform a full SIP URI parse/validation,
-         since the hostname in the URI is what is important.
+         ASTERISK-25089 #close
 
-         ASTERISK-25928 #close
-         Reported by Joshua Colp
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
+         Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4
 
-         Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
-         (cherry picked from commit efae187217750e322cd6167705a33f888b631427)
+2015-05-15 01:54 +0000 [091b436007]  snuffy <snuffy22@gmail.com>
 
-2016-04-14 20:26 +0000  Asterisk Development Team <asteriskteam@digium.com>
+       * cdr: Fix 'core show channel' CDR variable truncation.
 
-       * asterisk 13.8.1 Released.
+         When the new Bridging API was implemented, the workspace variable
+         changed to a malloc'd string, causing sizeof() to always be 8 (char).
 
-2016-04-14 15:26 +0000 [18e6f12e83]  Kevin Harwell <kharwell@digium.com>
+         Revert back to stored on stack string for workspace.
 
-       * Release summaries: Remove previous versions
+         ASTERISK-25090 #close
+
+         Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7
+2015-05-14 00:06 +0000 [6b7282ca40]  Corey Farrell <git@cfware.com>
 
-2016-04-14 15:26 +0000 [625c07711a]  Kevin Harwell <kharwell@digium.com>
+       * Fix potential crash after unload of func_periodic_hook or test_message.
+
+         These modules save a pointer to the context they create on load, and
+         use that pointer to destroy the context at unload.  It is not safe
+         to save this pointer, it is replaced during load of pbx_config,
+         pbx_lua or pbx_ael.
 
-       * .version: Update for 13.8.1
+         This change causes the modules to pass NULL to ast_context_destroy,
+         a safer way to perform the unregistration since it does not use
+         a pointer that could become invalid.
 
-2016-04-14 15:26 +0000 [584f1fb3c7]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-25085 #close
+         Reported by: Corey Farrell
 
-       * .lastclean: Update for 13.8.1
+         Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835
+2015-05-13 15:41 +0000 [02c5130589]  Jonathan Rose <jrose@digium.com>
 
-2016-04-14 15:26 +0000 [1e37a63379]  Kevin Harwell <kharwell@digium.com>
+       * Message.c: Clear message channel frames on cleanup
 
-       * realtime: Add database scripts for 13.8.1
+         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.
 
-2016-04-14 13:49 +0000 [dcf1b3c098]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-25083 #close
+         Reported by: Jonathan Rose
 
-       * transport management: Register thread with PJProject.
+         Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f
 
-         The scheduler thread that kills idle TCP connections was not registering
-         with PJProject properly and causing assertions if PJProject was built in
-         debug mode.
+2015-05-12 17:45 +0000 [d49d64b79c]  Jonathan Rose <jrose@digium.com>
 
-         This change registers the thread with PJProject the first time that the
-         scheduler callback executes.
+       * app_voicemail: fix moving when old messages full
 
-         AST-2016-005
+         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.
 
-         Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
+         ASTERISK-25082 #close
+         Reported by: Jonathan Rose
+         Review: https://gerrit.asterisk.org/#/c/448/
 
-2016-03-08 12:12 +0000 [efafbb1319]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f
+2015-05-04 20:11 +0000 [9b13536fed]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-       * res_pjsip_transport_management: Kill idle TCP connections.
+       * main/manager.c: Bugfix sort action_manager by alphabetically
 
-         "Idle" here means that someone connects to us and does not send a SIP
-         request. PJProject will not automatically time out such connections, so
-         it's up to Asterisk to do it instead.
+         Fix the alphabetic order added on ast_manager_register_struct. The order
+         for struct manager_action added is not working, this change fixes the
+         problem.
 
-         When we receive an incoming TCP connection, we will start a timer
-         (equivalent to transaction timer D) waiting to receive an incoming
-         request. If we do not receive a request in that timeframe, then we will
-         shut down the TCP connection.
+         Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b
 
-         ASTERISK-25796 #close
-         Reported by George Joseph
+2015-05-08 18:01 +0000 [e67e8d5c7f]  Alexandre Fournier <alexandre.fournier@kiplink.fr>
 
-         AST-2016-005
+       * res_config_mysql: Fix broken column type checking
 
-         Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
+         MySQL configuration engine contains a bug in require_mysql(). This
+         function is used for column type checking in tables. This bug only
+         affects DATETIME, DATE and FLOAT types.
 
-2016-03-08 10:52 +0000 [159f639770]  Mark Michelson <mmichelson@digium.com>
+         It came from mixing the first condition (switch-case-like
+         if/then/else), to check the expected column type, with the second
+         condition, to check the actual column type against the expected column
+         type. Both conditions must be checked separately in order to avoid the
+         execution of the wrong block.
 
-       * Rename res_pjsip_keepalive res_pjsip_transport_management
+         ASTERISK-18252 #comment This patch might fix the issue
+         Reported by: Gareth Blades
 
-         ASTERISK-25796
-         Reported by George Joseph
+         ASTERISK-25041 #close
+         Reported by: Alexandre Fournier
+         Tested by: Alexandre Fournier
 
-         AST-2016-005
+         Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa
 
-         Change-Id: Id322a05f927392293570599730050bc677d99433
+2015-05-10 07:37 +0000 [16f602f5c2]  Yousf Ateya <y.ateya@starkbits.com>
 
-2016-04-14 07:15 +0000 [c164ff004d]  Mark Michelson <mmichelson@digium.com>
+       * res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS.
 
-       * AST-2016-004: Fix crash on REGISTER with long URI.
+         First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC
+         https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values.
 
-         Due to some ignored return values, Asterisk could crash if processing an
-         incoming REGISTER whose contact URI was above a certain length.
+         Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31
 
-         ASTERISK-25707 #close
-         Reported by George Joseph
+2015-05-12 17:34 +0000 [c780b6e431]  Richard Mudgett <rmudgett@digium.com>
 
-         Patches:
-               0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
+       * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.
 
-         AST-2016-004
+         If an ISDN call is hungup by both sides at the same time a crash could
+         happen.
 
-         Change-Id: I0ed3898fe7ab10121b76c8c79046692de3a1be55
+         * 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.
 
-2016-03-29 19:39 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         ASTERISK-21893 #close
+         Reported by:  Alexandr Gordeev
 
-       * asterisk 13.8.0 Released.
+         Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a
 
-2016-03-29 14:39 +0000 [0f885f0076]  Mark Michelson <mmichelson@digium.com>
+2015-05-10 02:26 +0000 [6627de830b]  Sebastian Kemper <sebastian_ml@gmx.net>
 
-       * Release summaries: Add summaries for 13.8.0
+       * General: Fix recent menuselect-related cross compile regression
 
-2016-03-29 14:34 +0000 [a1fa37aebd]  Mark Michelson <mmichelson@digium.com>
+         MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the
+         target platform. But menuselect is to be run on the build system, so
+         BUILD_CC needs to be used instead - like it was in the past, before the
+         recent changes (https://reviewboard.asterisk.org/r/4370/). This is the
+         patch for ASTERISK-25074.
 
-       * Release summaries: Remove previous versions
+         ASTERISK-25074 #close
+         Reported by: Sebastian Kemper
+         Tested by: Sebastian Kemper
 
-2016-03-29 14:34 +0000 [e7de5fd439]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8
 
-       * .version: Update for 13.8.0
+2015-05-05 15:32 +0000 [637c8f065e]  gtjoseph <george.joseph@fairview5.com>
 
-2016-03-29 14:34 +0000 [8baf813848]  Mark Michelson <mmichelson@digium.com>
+       * sorcery: Add API to insert/remove a wizard to/from an object type's list
 
-       * .lastclean: Update for 13.8.0
+         Currently you can 'apply' a wizard to an object type but the wizard
+         always goes at the end of the object type's wizard list.  This patch
+         adds a new ast_sorcery_insert_wizard_mapping function that allows
+         you to insert a wizard anyplace in the list.  I.E.  You could
+         add a caching wizard to an object type and place it before all
+         wizards.
 
-2016-03-29 14:34 +0000 [42469df205]  Mark Michelson <mmichelson@digium.com>
+         ast_sorcery_get_wizard_mapping_count and
+         ast_sorcery_get_wizard_mapping were added to allow examination
+         of the mapping list.
 
-       * realtime: Add database scripts for 13.8.0
+         ast_sorcery_remove_mapping was added to remove a mapping by name.
 
-2016-03-22 18:31 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         As part of this patch, the object type's wizard list was converted
+         from an ao2_container to an AST_VECTOR_RW.
 
-       * asterisk 13.8.0-rc1 Released.
+         A new test was added to test_sorcery for this capability.
 
-2016-03-22 13:26 +0000 [a698424678]  Mark Michelson <mmichelson@lunkwill>
+         ASTERISK-25044 #close
 
-       * Release summaries: Add summaries for 13.8.0-rc1
+         Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57
 
-2016-03-22 13:21 +0000 [e395a0b973]  Mark Michelson <mmichelson@lunkwill>
+2015-05-12 01:31 +0000 [3cdb7950f0]  Corey Farrell <git@cfware.com>
 
-       * .version: Update for 13.8.0-rc1
+       * Fix processing of asterisk.conf debug=yes.
 
-2016-03-22 13:21 +0000 [38a86b2dbf]  Mark Michelson <mmichelson@lunkwill>
+         The code which reads asterisk.conf supports processing the debug
+         option with ast_true, but ast_true returns -1.  This causes debug
+         to still be off, convert to 1 so debug will be on as requested.
 
-       * .lastclean: Update for 13.8.0-rc1
+         ASTERISK-25042
+         Reported by: Corey Farrell
 
-2016-03-22 13:21 +0000 [e0c8c8bf4a]  Mark Michelson <mmichelson@lunkwill>
+         Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6
 
-       * realtime: Add database scripts for 13.8.0-rc1
+2015-05-01 23:43 +0000 [6553a00770]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-2016-03-18 14:31 +0000 [6a40520fe9]  Kevin Harwell <kharwell@digium.com>
+       * cdr_pgsql: Use PQescapeStringConn for escaping names.
 
-       * chan_pjsip: ref leak when checking direct_media_glare
+         Use function PQescapeStringConn for escaping the name
+         of the table and schema instead of doing it manually.
 
-         Fix the reference leak introduced in the following commit:
+         Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599
 
-         9444ddadf8525d1ce66a1faf1db97f9f6c265ca4
+2015-05-09 16:58 +0000 [ea917fefaf]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25849
+       * vector:  Add REMOVE, ADD_SORTED and RESET macros
 
-         Change-Id: I5cfefd5ee6c1c3a1715c050330aaa10e4d2a5e85
-2016-03-16 12:37 +0000 [9444ddadf8]  Kevin Harwell <kharwell@digium.com>
+         Based on feedback from Corey Farrell and Y Ateya, a few new
+         macros have been added...
 
-       * chan_pjsip: transfers with direct media reinvite has wrong address/port
+         AST_VECTOR_REMOVE which takes a parameter to indicate if
+         order should be preserved.
 
-         During a transfer involving direct media a race occurs between when the
-         transferer channel is swapped out, initiating rtp changes/updates, and the
-         subsequent reinvites.
+         AST_VECTOR_ADD_SORTED which adds an element to
+         a sorted vector.
 
-         When Alice, after speaking with Charlie (Bob is on hold), connects Bob and
-         Charlie invites are sent to each in order to establish the call between them.
-         Bob is taken off hold and Charlie is told to have his media flow through
-         Asterisk. However, if before those invites go out the bridge updates Bob's
-         and/or Charlie's rtp information with direct media data (i.e. address, port)
-         then the invite(s) will contain the remote data in the SDP instead of the
-         Asterisk data.
+         AST_VECTOR_RESET which cleans all elements from the vector
+         leaving the storage intact.
 
-         The race occurs in the native bridge glue code when updating the peer. The
-         direct_media_address can get set twice before sending out the first invite
-         during call connection. This can happen because the checking/setting of the
-         direct_media_address happened in one thread while the sending of the invite(s)
-         happened in another thread.
+         Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14
 
-         This fix removes the race condition by moving the checking/setting of the
-         direct_media_address to be in the same thread as the sending of the invites(s).
-         This serializes the checking/setting and sending so they can no longer happen
-         out of order.
+2015-05-11 07:07 +0000 [d5864a358c]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         ASTERISK-25849 #close
+       * pbx/pbx_spool: Fix issue when call files were executed too early
 
-         Change-Id: Idfea590175e74f401929a601dba0c91ca1a7f873
+         pbx_spool used to delete/move the call file upon successful outgoing
+         call completion, but did not delete it from in-memory list of files
+         (dirlist, used only when compiled with inotify/kqueue support).
+         That resulted in an extra attempt to process that filename after
+         retrytime seconds.
+         Then, if a new file with the same name appears that is scheduled
+         in future further than the completed one plus its retrytime,
+         then it gets executed earlier than expected.
 
-2015-10-19 07:11 +0000 [88240f98d9]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+         This patch fixes remove_from_queue function to also remove the entry
+         from the dirlist.
 
-       * install_prereq: Update repositories before install on Debian systems
+         ASTERISK-17069 #close
+         Reported by: Jeremy Kister
 
-         When to install packages the indexed local is more old of the
-         version of software on the repository they have been upgraded by security
-         update then get the package will give 404 not found.
+         ASTERISK-24442 #close
+         Reported by: tootai
 
-         The patch prevent by update local index to repository for aptitude before
-         install.
+         Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b
 
-         ASTERISK-25495 #close
+2015-05-08 14:47 +0000 [4dbd4021c9]  Rusty Newton <rnewton@digium.com>
 
-         Reporte by: Rodrigo Ramírez Norambuena
+       * configs/basic-pbx: Modified main IVR to play new Allison prompt.
 
-         Change-Id: I645959e553aac542805ced394cac2dca964051fa
-         (cherry picked from commit 88f3dbaec9509bfba8bc1de7799aa0dc65304bb5)
+         The main IVR was playing demo-congrats. I've switched it over to the
+         basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt
+         has Allison prompting the user with the actual IVR menu.
 
-2015-06-03 20:12 +0000 [efcf9a96db]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+         ASTERISK-24892 #close
 
-       * install_prereq: Check if is installed aptitude otherwise to install.
+         Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d
 
-         If in Debian or system based, dont have aptitude installed the script do
-         nothing. This patch checked if aptitude  installed, if not installed.
+2015-05-08 10:39 +0000 [613a461c3d]  Sean Bright <sean@malleable.com>
 
-         Also, if execute script with all packages installed yet, the script not show
-         nothing and return exit 1 because the command 'grep' get nothing from pipe from
-         'awk'.
+       * res_rtp_asterisk: Issue ERROR if res_srtp is not found.
 
-         ASTERISK-25113 #close
-         Reported By: Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+         While trying to get WebRTC working with chan_pjsip, I was running
+         into the following error:
 
-         Change-Id: Iebdff55805d3917166e5e08e0a1e2176f36ff27f
-         (cherry picked from commit 6737ded0581a9e1256bdfe30c1d747e7ca93f8b3)
+             Attempted to set an invalid DTLS-SRTP configuration on RTP
+             instance...
 
-2016-03-03 04:43 +0000 [2b1b8e382a]  Sergio Medina Toledo <lumasepa@gmail.com>
+         Josh helpfully pointed out that res_srtp.so might not be loaded, and
+         sure enough, it wasn't. This patch adds a ERROR indiciating as much
+         to hopefully help others having a similar problem.
 
-       * res_pjsip_refer.c: Fix seg fault in process of Refer-to header.
+         Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f
 
-         The "Refer-to" header of an incoming REFER request is parsed by
-         pjsip_parse_uri().  That function requires the URI parameter to be NULL
-         terminated.  Unfortunately, the previous code added the NULL terminator by
-         overwriting memory that may not be safe.  The overwritten memory results
-         could be benign, memory corruption, or a segmentation fault.  Now the URI
-         is NULL terminated safely by copying the URI to a new chunk of memory with
-         the correct size to be NULL terminated.
+2015-05-07 17:49 +0000 [394fcb5eab]  Rusty Newton <rnewton@digium.com>
 
-         ASTERISK-25814 #close
+       * sounds: Add Swedish sounds to Makefile and XML
 
-         Change-Id: I32565496684a5a49c3278fce06474b8c94b37342
+         Added the necessary lines to the Makefile and sounds.xml so we'll have the
+         Swedish sounds in all available formats in menuselect.
 
-2016-03-11 12:22 +0000 [de04308ae4]  Richard Mudgett <rmudgett@digium.com>
+         See also: Swedish sounds were added into the core sounds release 1.4.27.
 
-       * chan_sip.c: Fix mwi resub deadlock potential.
+         ASTERISK-24744 #close
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Reported by: Tove Hjelm
+         Tested by: Rusty Newton
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908
 
-         ASTERISK-25023 #close
+2015-05-05 11:35 +0000 [2115f11b54]  Alexander Traud (License 6520)
 
-         Change-Id: I96d429c57a48861fd8bde63dd93db4e92dc3adb6
+       * tcptls: Avoiding ERR_remove_state in OpenSSL.
 
-2016-03-10 17:01 +0000 [5f6627a8a4]  Richard Mudgett <rmudgett@digium.com>
+         ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by 
+         ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were 
+         called by SSL_load_error_strings already and got removed. These changes allow 
+         OpenSSL forks like BoringSSL to be used with Asterisk.
 
-       * chan_sip.c: Fix registration timeout and expire deadlock potential.
+         ASTERISK-25043 #close
+         Reported by: Alexander Traud
+         patches:
+           asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520)
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629
+         (cherry picked from commit 247fef66537b59649e7571d64e2c574a106dbd65)
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+2015-05-07 14:54 +0000 [5392e970d0]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25023
+       * doc: Make progdocs play nice with git
 
-         Change-Id: I2e40de89efc8ae6e8850771d089ca44bc604b508
+         Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in
 
-2016-03-10 12:17 +0000 [32bd7a64f9]  Richard Mudgett <rmudgett@digium.com>
+         Changed /Makefile to copy asterisk-ng-doxygen.in to
+         asterisk-ng-doxygen then modify it with version instead of
+         modifying asterisk-ng-doxygen directly.  Updated clean
+         targets as well.
 
-       * chan_sip.c: Fix t38id deadlock potential.
+         Updated /.gitignore and doc/.gitignore.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+2015-05-04 14:43 +0000 [608f0a94ee]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         ASTERISK-25023
+       * contrib/editors: Fix vim syntax highlighting of comments in config files
 
-         Change-Id: If595e4456cd059d7171880c7f354e844c21b5f5f
+          * Added a lookbehind to one-line comment matcher to skip escaped
+            semicolons.
+          * Added support for block comments.
 
-2016-03-09 16:34 +0000 [43556b800b]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7
 
-       * chan_sip.c: Fix reinviteid deadlock potential.
+2015-05-06 13:24 +0000 [d649d682c4]  Joshua Colp <jcolp@digium.com>
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+       * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         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.
 
-         ASTERISK-25023
+         This change does the following to fix this problem:
 
-         Change-Id: I9c11b9d597468f63916c99e1dabff9f4a46f84c1
+         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.
 
-2016-03-09 16:32 +0000 [38c1cdab2c]  Richard Mudgett <rmudgett@digium.com>
+         2. A reference to the subscription serializer is kept to ensure it
+         remains valid for the lifetime of the extension state subscription.
 
-       * chan_sip.c: Fix packet retransid deadlock potential.
+         3. The NOTIFY task has been changed so it will no longer attempt
+         to send a NOTIFY if the subscription has already been terminated.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         ASTERISK-25057 #close
+         Reported by: Matt Jordan
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643
 
-         * Fix retrans_pkt() to call check_pendings() with both the owner channel
-         and the private objects locked as required.
+2015-05-05 20:22 +0000 [5f9aea8e3c]  gtjoseph <george.joseph@fairview5.com>
 
-         * Refactor dialog retransmission packet list to safely remove packet
-         nodes.  The list nodes are now ao2 objects.  The list has a ref and the
-         scheduled entry has a ref.
+       * vector:  Additional enhancements and fixes
 
-         ASTERISK-25023
+         After using the new vector stuff for real I found...
 
-         Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641
+         A bug in AST_VECTOR_INSERT_AT that could cause a seg fault.
 
-2016-03-09 16:26 +0000 [e4ad55c888]  Richard Mudgett <rmudgett@digium.com>
+         The callbacks needed to be closer to ao2_callback in behavior
+         WRT to CMP_MATCH and CMP_STOP behavior and the ability to return
+         a vector of matched entries.
 
-       * chan_sip.c: Fix waitid deadlock potential.
+         A pre-existing issue with APPEND and REPLACE was also fixed.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         I also added a new macro to test.h that acts like ast_test_validate
+         but also accepts a return code variable and a cleanup label.  As well
+         as printing the error, it sets the rc variable to AST_TEST_FAIL and
+         does a goto to the specified label on error.  I had a local version
+         of this in test_vector so I just moved it.
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         ASTERISK-25045
 
-         * Made always run check_pendings() under the scheduler thread so scheduler
-         ids can be checked safely.
+         Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc
 
-         ASTERISK-25023
+2015-05-04 17:28 +0000 [68513e00f7]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Ia834d6edd5bdb47c163e4ecf884428a4a8b17d52
+       * res_stasis_snoop: Spying on a single direction continually increases CPU
 
-2016-03-08 15:08 +0000 [98d5669c28]  Richard Mudgett <rmudgett@digium.com>
+         Creating a snoop channel in ARI and spying only on a single direction (in or
+         out) results in CPU utilization continually increasing until the CPU is fully
+         consumed. This occurs because frames are being put in the opposing direction's
+         slin factory queue, but not being removed.
 
-       * chan_sip.c: Fix session timers deadlock potential.
+         Fixed the problem by always reading and disposing of frames from the opposite
+         queue of the direction selected.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         ASTERISK-24938 #closes
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60
+2015-05-06 16:00 +0000 [904f5d98f6]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25023
+       * chan_dahdi: Improve force_restart_unavailable_chans option description.
 
-         Change-Id: I6d65269151ba95e0d8fe4e9e611881cde2ab4900
+         ASTERISK-25034
+         Reported by: Richard Mudgett
 
-2016-03-07 13:21 +0000 [9cb8f73226]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30
 
-       * chan_sip.c: Fix autokillid deadlock potential.
+2015-05-05 18:17 +0000 [be1260a35f]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+       * features: Fix crash when transferee hangs up during DTMF attended transfer.
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+         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.
 
-         * Fix clearing autokillid in __sip_autodestruct() even though we could
-         reschedule.
+         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.
 
-         ASTERISK-25023
+         * 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.
 
-         Change-Id: I450580dbf26e2e3952ee6628c735b001565c368f
+         * 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.
 
-2016-03-07 18:28 +0000 [c5c7f48a15]  Richard Mudgett <rmudgett@digium.com>
+         * Eliminated most uses of RAII_VAR in bridge_basic.c.
 
-       * chan_sip.c: Fix provisional_keepalive_sched_id deadlock.
+         ASTERISK-25003 #close
+         Reported by: Artem Volodin
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada
 
-         Stopping a scheduled event can result in a deadlock if the scheduled event
-         is running when you try to stop the event.  If you hold a lock needed by
-         the scheduled event while trying to stop the scheduled event then a
-         deadlock can happen.  The general strategy for resolving the deadlock
-         potential is to push the actual starting and stopping of the scheduled
-         events off onto the scheduler/do_monitor() thread by scheduling an
-         immediate one shot scheduled event.  Some restructuring may be needed
-         because the code may assume that the start/stop of the scheduled events is
-         immediate.
+2015-05-05 15:40 +0000 [8b0f85ac06]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25023
+       * test_vector: Fix build breakage caused by ASTERISK_REGISTER_FILE
 
-         Change-Id: I98a694fd42bc81436c83aa92de03226e6e4e3f48
+         My 13 version of test_vector had an ASTERISK_REGISTER_FILE() macro
+         call at the top which is only supported in master.  Once removed
+         builds are successful.
 
-2016-03-09 11:22 +0000 [f959d84dfd]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I7cac8b669bed6de543bbf4e2eec3cffc9741acdd
 
-       * chan_sip.c: Adjust how dialog_unlink_all() stops scheduled events.
+2015-05-05 14:48 +0000 [87263b47b5]  Ivan Poddubny <ivan.poddubny@gmail.com>
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+       * app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter
 
-         * Make dialog_unlink_all() unschedule all items at once in the sched
-         thread.
+         This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3
+         parameters: position, original position and waiting time.
 
-         ASTERISK-25023
+         ASTERISK-25038 #close
+         Reported by: Etienne Lessard
 
-         Change-Id: I7743072fb228836e8228b72f6dc46c8cc50b3fb4
+         Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618
 
-2016-03-10 21:54 +0000 [5f3225ddcc]  Richard Mudgett <rmudgett@digium.com>
+2015-05-05 09:47 +0000 [366ea63438]  Corey Farrell <git@cfware.com>
 
-       * chan_sip.c: Clear scheduled immediate events on unload.
+       * res_ari_bridges: Add missing dependencies.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Missed this module in the previous commit.  res_ari_bridges uses symbols
+         from res_stasis_playback and res_stasis_recording.
 
-         The reordering of chan_sip's shutdown is to handle any immediate events
-         that get put onto the scheduler so resources aren't leaked.  The typical
-         immediate events at this time are going to be concerned with stopping
-         other scheduled events.
+         ASTERISK-25027 #close
+         Reported by: Corey Farrell
 
-         ASTERISK-25023
+         Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f
 
-         Change-Id: I3f6540717634f6f2e84d8531a054976f2bbb9d20
+2015-05-05 09:27 +0000 [69ae8cf0a4]  Corey Farrell <git@cfware.com>
 
-2016-03-15 14:51 +0000 [7a74971771]  Richard Mudgett <rmudgett@digium.com>
+       * pbx_config: Register manager actions with module version of macro.
 
-       * sip/dialplan_functions.c: Fix /channels/chan_sip/test_sip_rtpqos crash.
+         Switch manager actions in pbx_config to use the registration macro that
+         passes the module pointer, allowing pbx_config reference to be bumped
+         while the manager actions run.
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         ASTERISK-25061 #close
+         Reported by: Corey Farrell
 
-         Delaying destruction of the chan_sip sip_pvt structures caused the
-         /channels/chan_sip/test_sip_rtpqos unit test to crash.  That test
-         registers a special test ast_rtp_engine with the rtp engine module.  When
-         the unit test completes it cleans up by unregistering the test
-         ast_rtp_engine and exits.  Since the delayed destruction of the sip_pvt
-         happens after the unit test returns, the destructor tries to call the rtp
-         engine destroy callback of the test ast_rtp_engine auto variable which no
-         longer exists on the stack.
+         Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e
 
-         * Change the test ast_rtp_engine auto variable to a static variable.  Now
-         the variable can still exist after the unit test exits so the delayed
-         sip_pvt destruction can complete successfully.
+2015-05-04 12:16 +0000 [181ae3b8d9]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25023
+       * stasis: Fix dial masquerade datastore lifetime
 
-         Change-Id: I61e34a12d425189ef7e96fc69ae14993f82f3f13
+         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.
 
-2016-03-15 13:31 +0000 [d2c09ed73b]  Andrew Nagy <andrew.nagy@the159.com>
+         This change does the following to fix this issue:
 
-       * app_stasis: Don't hang up if app is not registered
+         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.
 
-         This prevents pbx_core from hanging up the channel if the app isn't
-         registered.
+         ASTERISK-25025 #close
 
-         ASTERISK-25846 #close
+         Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f
 
-         Change-Id: I63216a61f30706d5362bc0906b50b6f0544aebce
-2016-03-07 15:50 +0000 [b2d2906445]  Richard Mudgett <rmudgett@digium.com>
+2015-05-01 19:25 +0000 [7a7e9733c2]  gtjoseph <george.joseph@fairview5.com>
 
-       * sched.c: Ensure oldest expiring entry runs first.
+       * vector:  Traversal, retrieval, insert and locking enhancements
 
-         This patch is part of a series to resolve deadlocks in chan_sip.c.
+         Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really
+         does replace not insert.  The few users of AST_VECTOR_INSERT were
+         refactored.  Because these are macros, there should be no ABI
+         compatibility issues.
 
-         * Updated sched unit test to check new behavior.
+         Added AST_VECTOR_INSERT_AT that actually inserts an element into the
+         vector at a specific index pushing existing elements to the right.
 
-         ASTERISK-25023
+         Added AST_VECTOR_GET_CMP that can retrieve from the vector based
+         on a user-provided compare function.
 
-         Change-Id: Ib69437327b3cda5e14c4238d9ff91b2531b34ef3
+         Added AST_VECTOR_CALLBACK function that will execute a function
+         for each element in the vector.  Similar to ao2_callback and
+         ao2_callback_data functions although the vector callback can take
+         a variable number of arguments.  This should allow easy migration
+         to a vector where a container might be too heavy.
 
-2016-03-04 18:25 +0000 [9ae21b510f]  Richard Mudgett <rmudgett@digium.com>
+         Added read/write locked vector and lock manipulation macros.
 
-       * chan_sip.c: Made sip_reinvite_retry() call sip_pvt_lock_full().
+         Added unit tests.
 
-         Change-Id: I90f04208a089f95488a2460185a8dbc3f6acca12
+         ASTERISK-25045 #close
 
-2016-03-07 18:56 +0000 [56bcb97a3c]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0
 
-       * chan_sip.c: Simplify sip_pvt destructor call levels.
+2015-05-03 13:55 +0000 [040d2f8558]  Corey Farrell <git@cfware.com>
 
-         Remove destructor calling destroy_it calling really_destroy_it
-         for no benefit.  Just make the destructor the really_destroy_it
-         function.
+       * main/test.c: Add test to verify there were no registration errors.
 
-         Change-Id: Idea0d47b27dd74f2488db75bcc7f353d8fdc614a
+         This adds a test that will fail if any test failed to register. Also fail
+         if any test registration produced a warning about missing a leading or
+         trailing slash.
 
-2016-03-14 08:59 +0000 [677a65fcbb]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25053 #close
+         Reported by: Corey Farrell
 
-       * build: Add configure check for proto field of PJSIP TLS transport setting.
+         Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3
 
-         Older versions of PJSIP do not have the proto field on the TLS transport
-         setting structure. This change adds a configure check so even if it is
-         not present we will still be able to build.
+2015-04-21 11:52 +0000 [3dcec04ab5]  Martin Tomec <tomec.martin@gmail.com>
 
-         Change-Id: Ibf3f47befb91ed1b8194bf63888baa6fee05aba9
+       * res_odbc: Use negative connection cache for all connections
 
-2016-03-12 16:02 +0000 [32f0a3d52a]  gtjoseph <george.joseph@fairview5.com>
+         Apply the negative connection cache setting to all connections,
+         even those that are not pooled. This ensures that the connection
+         will not be re-established before the negative connection cache
+         time is met.
 
-       * build_system:  Split COMPILE_DOUBLE from DONT_OPTIMIZE
+         ASTERISK-22708 #close
 
-         I can't ever recall actually needing the intermediate files or the checking
-         that a double compile produces.  What I CAN remember is every DONT_OPTIMIZE
-         build needing 3 invocations of gcc instead of 1 just to do the checks and
-         produce those intermediate files.
+         Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271
+2015-05-03 21:03 +0000 [f38066fcad]  Corey Farrell <git@cfware.com>
 
-         Having said that, Richard pointed out that the reason for the double compile
-         was that there were cases in the past where a submitted patch failed to compile
-         because the submitter never tried it with the optimizations turned on.
+       * Format Interfaces: Prevent unload except by shutdown.
 
-         To get the best of both worlds, COMPILE_DOUBLE has been split into its own
-         option.  If DONT_OPTIMIZE is turned on, COMPILE_DOUBLE will also be selected
-         BUT you can then turn it off if all you need are the debugging symbols.  This
-         way you have to make an informed decision about disabling COMPILE_DOUBLE.
+         Format interfaces cannot be unregistered, so the modules that provide them
+         need to be held open except by shutdown.
 
-         To allow COMPILE_DOUBLE to be both auto-selected and turned off, a new feature
-         was added to menuselect.  The <use> element can now contain an "autoselect"
-         attribute which will turn the used member on but not create a hard dependency.
-         The cflags.xml implementation for COMPILE_DOUBLE looks like this...
+         ASTERISK-25054 #close
+         Reported by: Corey Farrell
 
-         <member name="DONT_OPTIMIZE" displayname="Disable Optimizations ...">
-               <use autoselect="yes">COMPILE_DOUBLE</use>
-               <support_level>core</support_level>
-         </member>
-         <member name="COMPILE_DOUBLE" displayname="Pre-compile with ...>
-               <depend>DONT_OPTIMIZE</depend>
-               <support_level>core</support_level>
-         </member>
+         Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3
 
-         When DONT_OPTIMIZE is turned on, COMPILE_DOUBLE is turned on because
-         of the use.
-         When DONT_OPTIMIZE is turned off, COMPILE_DOUBLE is turned off because
-         of the depend.
-         When COMPILE_DOUBLE is turned on, DONT_OPTIMIZE is turned on because
-         of the depend.
-         When COMPILE_DOUBLE is turned off, DONT_OPTIMIZE is left as is because
-         it only uses COMPILE_DOUBLE, it doesn't depend on it.
+2015-05-03 20:28 +0000 [e76a6a97bf]  Matt Jordan <mjordan@digium.com>
 
-         I also made a few tweaks to the ncurses implementation to move things
-         left a bit to allow longer descriptions.
+       * contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update
 
-         Change-Id: Id49ca930ac4b5ec4fc2d8141979ad888da7b1611
+         The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755
+         failed to add ENUM support for Postgres databases. This requires a
+         specific import from the sqlalchemy.dialects.postgresql package. This
+         patch corrects this error, which allows for Postgres update scripts to
+         be generated.
 
-2016-03-10 13:09 +0000 [38499e7125]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-24706
 
-       * pjproject:  Pass (dont_)optimize flags to pjproject and fix pjsua
+         Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015
 
-         The pjproject Makefile now uses the Asterisk optimization flags which
-         are determined by the setting of the DONT_OPTMIZE menuselect flag.
-         The Makefile was also restructured so a change to the top level
-         menuselect.makeopts will result in a rebuild of pjproject.
+2015-05-01 19:50 +0000 [92120247e9]  D Tucny <d@tucny.com>
 
-         Also, "--disable-resample" was removed from the pjproject configure
-         options.  Without resample, pjsua (which is used by the testsuite)
-         can't make audio calls.  When it can't, it segfaults.
+       * term: send proper reset sequence when black background is forced
 
-         Change-Id: I24b0a4d0872acef00ed89b3c527a713ee4c2ccd4
+         When using the force black background command-line option or configuration
+         option an invalid reset sequence is sent following a coloured output item 
+         in the CLI, the result is that the colour is not 'turned off' and continues
+         until the next non-default coloured text output.
 
-2016-03-11 16:03 +0000 [336cae73cc]  Walter Doekes <walter+asterisk@wjd.nu>
+         A reset sequence is already defined in term.c, but the ast_term_reset
+         function doesn't use it, instead building it's own invalid sequence and 
+         returning that.
 
-       * app_chanspy: Fix occasional deadlock with ChanSpy and Local channels.
+         This patch changes that behaviour, removing the building of a reset sequence
+         and instead using the pre-built constant 'enddata' which is a suitable reset
+         sequence for this purpose.
 
-         Channel masquerading had a conflict with autochannel locking.
+         ASTERISK-24896 #close
+         Reported by: Dan Tucny
 
-         When locking autochannel->channel, the channel is fetched from the
-         autochannel and then locked. During the fetch, the autochannel -- which
-         has no locks itself -- can be modified by someone who owns the channel
-         lock. That means that the value of autochan->channel cannot be trusted
-         until you hold the lock.
+         Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43
 
-         In practice, this caused problems with Local channels getting
-         masqueraded away while the ChanSpy attempted to get info from that
-         channel. The old channel which was about to get removed got locked, but
-         the new (replaced) channel got unlocked (no-op). Because the replaced
-         channel was now locked (and would never get unlocked), it couldn't get
-         removed from the channel list in a timely manner, and would now cause
-         deadlocks when iterating over the channel list.
+2015-05-02 18:58 +0000 [ad6ea29697]  Corey Farrell <git@cfware.com>
 
-         This change checks the autochannel after locking the channel for changes
-         to the autochannel. If the channel had been changed, the lock is
-         reobtained on the new channel.
+       * Remove unneeded uses of optional_api providers.
 
-         In theory it seems possible that after this fix, the lock attempt on the
-         old (wrong) channel can be on an already destroyed lock, maybe causing
-         a crash. But that hasn't been observed in the wild and is harder induce
-         than the current deadlock.
+         A few cases exist where headers of optional_api provders are included but
+         not needed.  This causes unneeded calls to ast_optional_api_use.
 
-         Thanks go to Filip Frank for suggesting a fix similar to this and
-         especially to IRC user hexanol for pointing out why this deadlock was
-         possible and testing this fix. And to Richard for catching my rookie
-         while loop mistake ;)
+         * Don't include optional_api.h from sip_api.h.
+         * Move 'struct ast_channel_monitor' to channel.h.
+         * Don't include monitor.h from chan_sip.c, channel.c or features.c.
 
-         ASTERISK-25321 #close
+         The move of struct ast_channel_monitor is needed since channel.c depends on
+         it.  This has no effect on users of monitor.h since channel.h is included
+         from monitor.h.
 
-         Change-Id: I293ae0014e531cd0e675c3f02d1d118a98683def
+         ASTERISK-25051 #close
+         Reported by: Corey Farrell
 
-2016-03-07 21:34 +0000 [875d5e9872]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478
 
-       * pjproject_bundled: Remove --with-external-pa from configure options.
+2015-04-30 02:07 +0000 [525c8c8689]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-         Not sure why it was there in the first place as we already specify
-         --disable-sound.
+       * include/asterisk/channel.h: Fix typo
 
-         Change-Id: Ia80a40e8b1e1acc287955ab11ba1fbd0c7d4cff9
+         Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3
 
-2016-03-06 14:38 +0000 [530cff5f5f]  gtjoseph <george.joseph@fairview5.com>
+2015-05-02 02:15 +0000 [63196a8256]  Corey Farrell <git@cfware.com>
 
-       * res_pjsip:  Strip spaces from items parsed from comma-separated lists
+       * res_pjsip_dlg_options: Fix MODULEINFO section.
 
-         Configurations like "aors = a, b, c" were either ignoring everything after "a"
-         or trying to look up " b".  Same for mailboxes,  ciphers, contacts and a few
-         others.
+         Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options.
+         This extra space prevented any of the dependencies from being seen by
+         menuselect, so building with default options would fail if PJSIP was
+         not installed.
 
-         To fix, all the strsep(&copy, ",") calls have been wrapped in ast_strip.  To
-         facilitate this, ast_strip, ast_skip_blanks and ast_skip_nonblanks were
-         updated to handle null pointers.
+         This also makes the tool that extracts information for menuselect
+         tolerant of multiple spaces in the future.
 
-         In some cases, an ast_strlen_zero() test was added to skip consecutive commas.
+         ASTERISK-25033 #close
+         Reported by: Peter Whisker
 
-         There was also an attempt to ast_free an ast_strdupa'd string in
-         ast_sip_for_each_aor which was causing a SEGV.  I removed it.
+         Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698
 
-         Although this issue was reported for realtime, the issue was in the res_pjsip
-         modules so all config mechanisms were affected.
+2015-04-29 03:03 +0000 [ac1f0090eb]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-25829 #close
-         Reported-by: Mateusz Kowalski
+       * Build System: Prevent unneeded changes to asterisk/buildopts.h.
 
-         Change-Id: I0b22a2cf22a7c1c50d4ecacbfa540155bec0e7a2
+         * Add AST_DEVMODE to BUILDOPTS
+         * Remove CFLAGS that do not effect ABI from BUILDOPTS.
+         * Use BUILDOPTS to generate AST_BUILDOPT_SUM.
+         * Remove loop that defined AST_MODULE_*
 
-2016-03-04 20:37 +0000 [3c8076a83b]  gtjoseph <george.joseph@fairview5.com>
+         These changes ensure that only ABI effecting options are considered for
+         AST_BUILDOPT_SUM.  This also reduces unneeded full system rebuilds caused
+         by enabling or disabling one module that another is dependent on.
 
-       * install_prereq: Add packages for bundled pjproject
+         ASTERISK-25028
+         Reported by: Corey Farrell
 
-         RedHat/CentOS needs python-devel
-         Debian/Ubuntu needs automake, libsrtp-dev and python-dev
+         Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2
 
-         Ubuntu also needed libncurses5-dev for cmenuselect so while not
-         needed for pjproject, I adedd it anyway.
+2015-05-01 13:22 +0000 [5875bf183c]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Idf5fa16e2d87c687439621507e122cb9461d7089
+       * Astobj2: Fix initialization order of refdebug and AO2_DEBUG.
 
-2016-02-24 17:25 +0000 [27f32cd0a6]  gtjoseph <george.joseph@fairview5.com>
+         This ensures that refdebug is initialized before AO2_DEBUG if
+         both are enabled, since AO2_DEBUG allocates a container.
 
-       * res_pjsip_caller_id: Anonymize 'From' when caller id presentation is prohibited
+         This change also makes AO2_DEBUG initialization critical, a
+         failure will abort Asterisk startup.  This is needed since
+         the failure would be caused by reg_containers allocation
+         failure, and that would result in a segmentation fault by
+         ao2_container_register later in startup.
 
-         Per RFC3325, the 'From' header is now anonymized on outgoing calls when
-         caller id presentation is prohibited.
+         ASTERISK-25048 #close
+         Reported by: Corey Farrell
 
-         TID = trust_id_outbound
-         PRO = Set(CALLERID(pres)=prohib)
-         USR = endpoint/from_user
-         DOM = endpoint/from_domain
-         PAI = YES(privacy=off), NO(not sent), PRI(privacy=full) (assumes send_pai=yes)
+         Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244
 
-         Conditions          |Result
-         --------------------|----------------------------------------------------
-         TID PRO USR DOM     |PAI    FROM
-         --------------------|----------------------------------------------------
-         Y   Y   abc def.ghi |PRI    "Anonymous" <sip:abc@def.ghi>
-         Y   Y   abc         |PRI    "Anonymous" <sip:abc@anonymous.invalid>
-         Y   Y       def.ghi |PRI    "Anonymous" <sip:anonymous@def.ghi>
-         Y   Y               |PRI    "Anonymous" <sip:anonymous@anonymous.invalid>
+2015-04-29 14:49 +0000 [1b19c15f17]  Matt Jordan <mjordan@digium.com>
 
-         Y   N   abc def.ghi |YES    <sip:abc@def.ghi>
-         Y   N   abc         |YES    <sip:abc@<ip_address>>
-         Y   N       def.ghi |YES    "Caller Name" <sip:<caller_exten>@def.ghi>
-         Y   N               |YES    "Caller Name" <sip:<caller_exten>@<ip_address>>
+       * main/pbx: Improve performance of dialplan reloads with a large number of hints
 
-         N   Y   abc def.ghi |NO     "Anonymous" <sip:abc@def.ghi>
-         N   Y   abc         |NO     "Anonymous" <sip:abc@anonymous.invalid>
-         N   Y       def.ghi |NO     "Anonymous" <sip:anonymous@def.ghi>
-         N   Y               |NO     "Anonymous" <sip:anonymous@anonymous.invalid>
+         The PBX core maintains two hash tables for hints: a container of the
+         actual hints (hints), along with a container of devices that are watching that
+         hint (hintdevices). When a dialplan reload occurs, each hint in the hints
+         container is destroyed; this requires a lookup in the container of devices to
+         find the device => hint mapping object. In the current code, this performs an
+         ao2_callback, iterating over each of the device to hint objects in the
+         hintdevices container. For a large number of hints, this is extremely
+         expensive: dialplan reloads with 20000 hints could take several minutes
+         in just this phase.
 
-         N   N   abc def.ghi |YES    <sip:abc@def.ghi>
-         N   N   abc         |YES    <sip:abc@<ip_address>>
-         N   N       def.ghi |YES    "Caller Name" <sip:<caller_exten>@def.ghi>
-         N   N               |YES    "Caller Name" <sip:<caller_exten>@<ip_address>>
+         This patch improves the performance of this step in the dialplan reloads
+         by caching which devices are watching a hint on the hint object itself.
+         Since we don't want to create a circular reference, we just cache the
+         name of the device. This allows us to perform a smarter ao2_callback on
+         the hintdevices container during hint removal, hashing on the name of the
+         device and returning an iterator to the matching names. The overall
+         performance improvement is rather large, taking this step down to a number of
+         seconds as opposed to minutes.
 
-         ASTERISK-25791 #close
-         Reported-by: Anthony Messina
+         In addition, this patch also registers the hint containers in the PBX
+         core with the astobj2 library. This allows for reasonable debugging to
+         hash collisions in those containers.
 
-         Change-Id: I2c82a5ca1413c2c00fb62ea95b0ae8e97af54dc9
+         ASTERISK-25040 #close
+         Reported by: Matt Jordan
 
-2016-03-03 17:34 +0000 [7cf7b0a4f9]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360
 
-       * third_party/Makefile.rules:  Replace unsupported != operator with $(shell ...)
+2015-04-30 15:54 +0000 [3efe0df044]  Corey Farrell <git@cfware.com>
 
-         Apparently the != operator is fairly new so I've replaced it with
-         the old $(shell ...) syntax.
+       * Sample Configs: Fix syntax error in pjsip.conf
 
-         Change-Id: I16b2e1878a4f91e7e9740abd427f9639f933c479
-         Reported-by: Richard Mudgett
-2016-01-23 15:50 +0000 [53f57001f2]  gtjoseph <george.joseph@fairview5.com>
+         The sample pjsip.conf has a few comment lines that are missing the
+         semicolons at the start of the comment, causing the config to fail
+         load.
 
-       * loader: Retry dlopen when loading fails
+         Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352
 
-         Although we use the RTLD_LAZY flag when calling dlopen
-         the first time on a module, this only defers resolution
-         for function calls.  Pointer references to functions are
-         determined at link time so dlopen expects them to be there.
-         Since we don't cross-module link, pointers to functions
-         in other modules won't be available and dlopen will fail.
+2015-04-30 15:20 +0000 [077979618b]  Mark Michelson <mmichelson@digium.com>
 
-         Doing a "hardened" build also causes problems because it
-         typically sets "-z now" on the ld command line which
-         overrides RTLD_LAZY at run time.
+       * Prevent potential crash on blond transfer.
 
-         If the failing module isn't a GLOBAL_SYMBOLS module, then
-         dlopen will be called again after all the GLOBAL_SYMBOLS
-         modules have been loaded and they'll eventually resolve.
+         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)
 
-         If the calling module IS a GLOBAL_SYMBOLS module itself
-         and a third module depends on it, then there's an issue
-         because the second time through the dlopen loop,
-         GLOBAL_SYMBOLS modules aren't given any special treatment
-         and since the order in which dlopen is called isn't
-         deterministic, the dependent may again be tried before the
-         module it needs is loaded.
+         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.
 
-         Simple solution:  Save modules that fail load_resource
-         because of a dlopen error in a list and retry them
-         immediately after the first pass. Keep retrying until
-         the failed list is empty or we reach a #defined max
-         retries. Error messages are suppressed until the final
-         pass which also gets rid of those confusing error messages
-         about module failures that are later corrected.
+         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.
 
-         Change-Id: Iddae1d97cd2f00b94e61662447432765755f64bb
+         ASTERISK-25025 #close
+         Reported by Chet Stevens
 
-2016-03-01 16:18 +0000 [40d9e9e238]  Kevin Harwell <kharwell@digium.com>
+         Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197
 
-       * bridge.c: Crash during attended transfer when missing a local channel half
+2015-04-30 14:09 +0000 [4b8cddfb36]  Mark Michelson <mmichelson@digium.com>
 
-         It's possible for the transferer channel to get hung up early during the
-         attended transfer process. For instance, a phone may send a "bye" immediately
-         upon receiving a sip notify that contains a sip frag 100 (I'm looking at you
-         Jitsi). When this occurs a race begins between the transferer being hung up
-         and completion of the transfer code.
+       * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback.
 
-         If the channel hangs up too early during a transfer involving stasis bridging
-         for instance, then when the created local channel goes to look up its swap
-         channel (and associated datastore) it can't find it (since it is no longer in
-         the bridge) thus it fails to enter the stasis application. Consequently, the
-         created local channel(s) hang up as well. If the timing is just right then the
-         bridging code attempts to add the message link with missing local channel(s).
-         Hence the crash.
+         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.
 
-         Unfortunately, there is no great way to solve the problem of the unexpected
-         "bye". While we can't guarantee we won't receive an early hangup, and in this
-         case still fail to enter the stasis application, we can make it so asterisk
-         does not crash.
+         Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3
+2015-04-30 13:42 +0000 [415a0d0745]  Joshua Colp <jcolp@digium.com>
 
-         This patch does just that by locking the local channel structure, checking
-         that the local channel's peer has not been lost, and then continuing. This
-         keeps the local channel's peer from being ripped out from underneath it by
-         the local/unreal hangup code while attempting to set the stasis message link.
+       * res_ari_device_states: Fix dependency on res_stasis_device_state.
 
-         ASTERISK-25771
+         The res_ari_device_states module depends on res_stasis_device_state,
+         not res_stasis_device_states.
 
-         Change-Id: Ie6d6061e34c7c95f07116fffac9a09e5d225c880
+         Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de
 
-2016-03-01 18:08 +0000 [ff3da61c35]  Kevin Harwell <kharwell@digium.com>
+2015-04-29 14:29 +0000 [d3c310a28c]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_refer.c: Delay sending the initial SIP Notify with frag 100
+       * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option.
 
-         During the transfer process, some phones (okay it was the Jitsi softphone,
-         but maybe others are out there) send a "bye" immediately after receiving a
-         SIP Notify. When a "bye" is received early for some types of transfers the
-         transferer channel may no longer be available during late stage transfer
-         processing.
+         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.
 
-         For instance, during an attended transfer involving stasis bridging at one
-         point the created local channel looks for an associated swap channel in
-         order to retrieve the stasis application name. If the transferer has hung
-         up then the local channel will fail to find it. The local channel then has
-         no way to know which stasis app to enter, so it fails and hangs up as well.
-         Thus the transfer does not complete as expected.
+         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.
 
-         This patch delays the sending of the initial notify in order to give the
-         transfer process enough time to gather the necessary data for a successful
-         transfer.
+         * 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-25771
+         ASTERISK-25034 #close
+         Reported by: Richard Mudgett
 
-         Change-Id: I09cfc9a5d6ed4c007bc70625e0972b470393bf16
+         Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65
+2015-04-30 06:38 +0000 [7f611fa0e8]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-2016-03-03 08:26 +0000 [26b8f2692e]  Joshua Colp <jcolp@digium.com>
+       * cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8
 
-       * res_pjsip_dtmf_info: NULL terminate the message body.
+         This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR
+         columns added in Asterisk 1.8. The columns are:
+          * peeraccount
+          * linkedid
+          * sequence
+         When enabled, the columns in the database entry will be populated with the data
+         from the CDR.
 
-         PJSIP does not ensure that when printing the message body the
-         buffer will be NULL terminated. This is problematic when searching
-         for the signal and duration values of the DTMF.
+         ASTERISK-24976 #close
 
-         This change ensures the buffer is always NULL terminated.
+         Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b
 
-         Change-Id: I52653a1a60c93092d06af31a27408d569cc98968
+2015-04-30 06:04 +0000 [e332c7ed5e]  Joshua Colp <jcolp@digium.com>
 
-2016-03-01 20:03 +0000 [86d6e44cc1]  gtjoseph <george.joseph@fairview5.com>
+       * res_pjsip_outbound_registration: Fix double unref on error return.
 
-       * alembic: Fix downgrade and tweak for sqlite
+         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.
 
-         Downgrade had a few issues.  First there was an errant 'update' statement in
-         add_auto_dtmf_mode that looks like it was a copy/paste error.  Second, we
-         weren't cleaning up the ENUMs so subsequent upgrades on postgres failed
-         because the types already existed.
+         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.
 
-         For sqlite...  sqlite doesn't support ALTER or DROP COLUMN directly.
-         Fortunately alembic batch_operations takes care of this for us if we
-         use it so the alter and drops were converted to use batch operations.
+         ASTERISK-25037 #close
+         Reported by: Joshua Colp
 
-         Here's an example downgrade:
+         Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de
 
-             with op.batch_alter_table('ps_endpoints') as batch_op:
-                 batch_op.drop_column('tos_audio')
-                 batch_op.drop_column('tos_video')
-                 batch_op.add_column(sa.Column('tos_audio', yesno_values))
-                 batch_op.add_column(sa.Column('tos_video', yesno_values))
-                 batch_op.drop_column('cos_audio')
-                 batch_op.drop_column('cos_video')
-                 batch_op.add_column(sa.Column('cos_audio', yesno_values))
-                 batch_op.add_column(sa.Column('cos_video', yesno_values))
+2015-04-20 13:03 +0000 [9c3ed42875]  Diederik de Groot <ddegroot@talon.nl>
 
-             with op.batch_alter_table('ps_transports') as batch_op:
-                 batch_op.drop_column('tos')
-                 batch_op.add_column(sa.Column('tos', yesno_values))
-             # Can't cast integers to YESNO_VALUES, so dropping and adding is required
-                 batch_op.drop_column('cos')
-                 batch_op.add_column(sa.Column('cos', yesno_values))
+       * Update configure.ac/Makefile for clang
 
-         Upgrades from base to head and downgrades from head to base were tested
-         repeatedly for postgresql, mysql/mariadb, and sqlite3.
+         Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which
+         checks compiler requirements for RAII:
+         gcc: -fnested-functions support
+         clang: -fblocks (and if required -lBlocksRuntime)
+         The original check was implemented in configure.ac and now has it's
+         own file. This function also sets C_COMPILER_FAMILY to either gcc or
+         clang for use by makefile
 
-         Change-Id: I862b0739eb3fd45ec3412dcc13c2340e1b7baef8
+         Created autoconf/ast_check_strsep_array_bounds.m4 (contains
+         AST_CHECK_STRSEP_ARRAY_BOUNDS):
+         which checks if clang is able to handle the optimized strsep & strcmp
+         functions (linux). If not, the standard libc implementation should be
+         used instead. Clang + the optimized macro's work with:
+         strsep(char *, char []), but not with strsepo(char *, char *).
+         Instead of replacing all the occurences throughout the source code,
+         not using the optimized macro version seemed easier
 
-2016-03-02 15:55 +0000 [6f0d7ce9db]  gtjoseph <george.joseph@fairview5.com>
+         See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h':
+         llvm-comment: Normally, this array-bounds warning are suppressed for
+         macros, so that unused paths like the one that accesses __s1[3] are
+         not warned about.  But if you preprocess manually, and feed the
+         result to another instance of clang, it will warn about all the
+         possible forks of this particular if statement. Instead of switching
+         of this optimization, another solution would be to run the preproces-
+         sing step with -frewrite-includes, which should preserve enough
+         information so that clang should still be able to suppress the diag-
+         nostic at the compile step later on.
 
-       * config_transport:  Fix objects returned by ast_sip_get_transport_states
+         See also "https://llvm.org/bugs/show_bug.cgi?id=20144"
+         See also "https://llvm.org/bugs/show_bug.cgi?id=11536"
 
-         ast_sip_get_transport_states was returning a container of internal_state
-         objects instead of ast_sip_transport_state objects.  This was causing
-         transport lookups to fail, most noticably in res_pjsip_nat, which
-         couldn't find the correct external addresses.  This was causing contacts
-         to go out with internal ip addresses.
+         Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning
+         suppressions:
+         -Wno-unused-value
+         -Wno-parentheses-equality
+         In an earlier review (reviewboard: 4550 and 4554), they were deemed a
+         nuisace and less than benefitial.
 
-         ASTERISK-25830 #close
-         Reported-by: Sean Bright
+         configure.ac:
+         Added AST_CHECK_RAII() see earlier
+         Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier
+         Removed moved content
 
-         Change-Id: I1aee6a2fd46c42e8dd0af72498d17de459ac750e
+         ASTERISK-24917
+         Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb
 
-2016-03-02 11:17 +0000 [1ea7a5a774]  Scott Griepentrog <scott@griepentrog.com>
+2015-04-29 16:15 +0000 [d4e207e27e]  Matt Jordan <mjordan@digium.com>
 
-       * CHAOS: cleanup possible null vars on msg alloc failure
+       * main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8
 
-         In message.c, if msg_alloc fails to init the string field,
-         vars may be null, so use a null tolerant cleanup.
+         The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS
+         structures in the RTP engine. However, when a 'core reload' is issued, a
+         double free of the memory pointed to by the char *'s in the DTLS
+         configuration struct can occur, as ast_rtp_dtls_cfg_free does not set
+         the pointers to NULL when they are freed.
 
-         In res_pjsip_messaging.c, if msg_data_create fails, mdata
-         will be null, so use a null tolerant cleanup.
+         This patch sets those pointers to NULL, preventing a second call to
+         ast_rtp_dtls_cfg_free from corrupting memory.
 
-         ASTERISK-25323
+         ASTERISK-25022
 
-         Change-Id: Ic2d55c2c3750d5616e2a05ea92a19c717507ff56
+         Change-Id: I820471e6070a37e3c26f760118c86770e12f6115
 
-2016-03-02 09:34 +0000 [3c37c7071f]  Scott Griepentrog <scott@griepentrog.com>
+2015-04-29 13:05 +0000 [3fb6daeb55]  Kevin Harwell <kharwell@digium.com>
 
-       * CHAOS: prevent crash on failed strdup
+       * res_fax: allow 2400 transmission rate according to v.27ter standard
 
-         This patch avoids crashing on a null pointer
-         if the strdup() allocation fails.
+         A previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so
+         a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits
+         per second. This reverts all or some of those patches since according to the
+         v.27ter standard a rate of 2400 bits per second is also supported.
 
-         ASTERISK-25323
+         One of the original patches also added 9600 bits per second support for v.27.
+         This patch also removes that since v.27ter only supports 2400/4800 bits per
+         second.
 
-         Change-Id: I3f67434820ba53b53663efd6cbb42749f4f6c0f5
+         Also, since Asterisk specifically supports v.27ter the enum was renamed to
+         better reflect this.
 
-2016-02-29 18:11 +0000 [9633be9d25]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24955 #close
+         Reported by: Matt Jordan
 
-       * func_callerid.c: Update REDIRECTING reason documentation.
+         Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733
 
-         Change-Id: I6e8d39b0711110a4bceafa652e58b30465e28386
+2015-04-29 10:46 +0000 [49ef81c15c]  Joshua Colp <jcolp@digium.com>
 
-2016-02-26 18:57 +0000 [4165ea7778]  Richard Mudgett <rmudgett@digium.com>
+       * res_sorcery_config: Fix build issue due to syntax error.
 
-       * SIP diversion: Fix REDIRECTING(reason) value inconsistencies.
+         Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac
 
-         Previous chan_sip behavior:
+2015-04-28 00:29 +0000 [3278fe5327]  Ashley Sanders <asanders@digium.com>
 
-         Before this patch chan_sip would always strip any quotes from an incoming
-         reason and pass that value up as the REDIRECTING(reason).  For an outgoing
-         reason value, chan_sip would check the value against known values and
-         quote any it didn't recognize.  Incoming 480 response message reason text
-         was just assigned to the REDIRECTING(reason).
+       * chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR
+                     Sections Exist in pjsip.conf
 
-         Previous chan_pjsip behavior:
+         This patch modifies the current loading strategy of the pjsip configuration. If
+         duplicate sections (e.g. sections containing the same [id/type]) are defined in
+         [pjsip.conf], the loader will consider the configuration for the given type as
+         invalid when the duplicate section is encountered. The entire configuration
+         (including what was previously loaded) for the duplicate [id/type] sections
+         will be rejected and destroyed, an error message is logged and the load
+         processing for the given stops.
 
-         Before this patch chan_pjsip would always pass the incoming reason value
-         up as the REDIRECTING(reason).  For an outgoing reason value, chan_pjsip
-         would send the reason value as passed down.
+         ASTERISK-24996
+         Reported By: Ashley Sanders
 
-         With this patch:
+         Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef
 
-         Both channel drivers match incoming reason values with values documented
-         by REDIRECTING(reason) and values documented by RFC5806 regardless of
-         whether they are quoted or not.  RFC5806 values are mapped to the
-         equivalent REDIRECTING(reason) documented value and is set in
-         REDIRECTING(reason).  e.g., an incoming RFC5806 'unconditional' value or a
-         quoted string version ('"unconditional"') is converted to
-         REDIRECTING(reason)'s 'cfu' value.  The user's dialplan only needs to deal
-         with 'cfu' instead of any of the aliases.
+2014-11-04 06:03 +0000 [89f6719f7a]  Joshua Colp <jcolp@digium.com>
 
-         The incoming 480 response reason text supported by chan_sip checks for
-         known reason values and if not matched then puts quotes around the reason
-         string and assigns that to REDIRECTING(reason).
+       * res_pjsip_outbound_registration: Add virtual line support.
 
-         Both channel drivers send outgoing known REDIRECTING(reason) values as the
-         unquoted RFC5806 equivalent.  User custom values are either sent as is or
-         with added quotes if SIP doesn't allow a character within the value as
-         part of a RFC3261 Section 25.1 token.  Note that there are still
-         limitations on what characters can be put in a custom user value.  e.g.,
-         embedding quotes in the middle of the reason string is silly and just
-         going to cause you grief.
+         Virtual line support establishes a relationship between messages
+         related to an outbound registration and a local endpoint. This is
+         accomplished by attaching a parameter to the Contact of the outbound
+         registration and looking for it on any received requests. If the
+         parameter exists and can be matched to an outbound registration
+         the configured endpoint is associated with the request.
 
-         * Setting a REDIRECTING(reason) value now recognizes RFC5806 aliases.
-         e.g., Setting REDIRECTING(reason) to 'unconditional' is converted to the
-         'cfu' value.
+         ASTERISK-24949 #close
+         Reported by: Joshua Colp
 
-         * Added missing malloc() NULL return check in res_pjsip_diversion.c
-         set_redirecting_reason().
+         Change-Id: I7df909d2625479110a83fdd354c21ac539e8615d
 
-         * Fixed potential read from a stale pointer in res_pjsip_diversion.c
-         add_diversion_header().  The reason string needed to be copied into the
-         tdata memory pool to ensure that the string would always be available.
-         Otherwise, if the reason string returned by reason_code_to_str() was a
-         user's reason string then the string could be freed later by another
-         thread.
+2015-04-29 06:39 +0000 [d61f03c4f9]  Corey Farrell <git@cfware.com>
 
-         Change-Id: Ifba83d23a195a9f64d55b9c681d2e62476b68a87
+       * ARI: Fix missing dependencies.
 
-2016-02-26 18:54 +0000 [41f4af4ce5]  Richard Mudgett <rmudgett@digium.com>
+         ARI modules that are generated by 'make ari-stubs' are all dependent on
+         res_ari_model.  Additionally some of the same modules depend on one or more
+         res_stasis_* modules.
 
-       * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason.
+         ASTERISK-25027 #close
+         Reported by: Corey Farrell
 
-         Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd
+         Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153
 
-2016-02-29 20:41 +0000 [4c5998ff55]  Richard Mudgett <rmudgett@digium.com>
+2015-04-29 06:26 +0000 [3e4624ad21]  Corey Farrell <git@cfware.com>
 
-       * res_pjsip_send_to_voicemail.c: Fix off-nominal double channel unref.
+       * res_pjsip: Remove incorrect MODULEINFO from presence_xml.c.
 
-         * Fix double unref of other_party channel in off nominal path.
+         Remove incorrect MODULEINFO block and unneeded header includes
+         from presence_xml.c.
 
-         * This is unlikely to be a real problem.  However, for safety,
-         in handle_incoming_request() keep the datastore ref with the
-         other_party channel ref until we are finished with the other_party
-         channel.
+         ASTERISK-25027
+         Reported by: Corey Farrell
 
-         Change-Id: I78f22547bf0bb99fb20814ceab75952bd857f821
+         Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb
 
-2016-01-18 21:54 +0000 [b59956a875]  gtjoseph <george.joseph@fairview5.com>
+2015-04-29 06:17 +0000 [fed9faab8d]  Corey Farrell <git@cfware.com>
 
-       * build-system: Allow building with static pjproject
+       * Git Migration: Create doc/rest-api when needed.
 
-         Background here:
-         http://lists.digium.com/pipermail/asterisk-dev/2016-January/075266.html
+         Create the directory './doc/rest-api' at the start of 'make ari-stubs'
+         to prevent an error when documentation is generated.  The directory is
+         also added to git ignores.
 
-         From CHANGES:
-          * To help insure that Asterisk is compiled and run with the same known
-            version of pjproject, a new option (--with-pjproject-bundled) has been
-            added to ./configure.  When specified, the version of pjproject specified
-            in third-party/versions.mak will be downloaded and configured.  When you
-            make Asterisk, the build process will also automatically build pjproject
-            and Asterisk will be statically linked to it.  Once a particular version
-            of pjproject is configured and built, it won't be configured or built
-            again unless you run a 'make distclean'.
+         ASTERISK-25027
+         Reported by: Corey Farrell
 
-            To facilitate testing, when 'make install' is run, the pjsua and pjsystest
-            utilities and the pjproject python bindings will be installed in
-            ASTDATADIR/third-party/pjproject.
+         Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b
 
-            The default behavior remains building with the shared pjproject
-            installation, if any.
+2015-04-29 05:17 +0000 [df23c8a86b]  Joshua Colp <jcolp@digium.com>
 
-         Building:
+       * res_pjsip_outbound_registration: Fix build due to removal of transaction.
 
-            All you have to do is include the --with-pjproject-bundled option on
-            the ./configure command line (and remove any existing --with-pjproject
-            option if specified).  Everything else is automatic.
+         Change-Id: I7a8a7beec3334cec304943f2dd7597eabe2e3150
 
-         Behind the scenes:
+2015-04-27 16:56 +0000 [e39bd6ba46]  Mark Michelson <mmichelson@digium.com>
 
-            The top-level Makefile was modified to include 'third-party' in the
-            list of MOD_SUBDIRS.
+       * res_pjsip_outbound_registration: Don't fail on delayed processing: 13.
 
-            The third-party directory was created to contain any third party
-            packages that may be needed in the future.  Its Makefile automatically
-            iterates over any subdirectories passing on targets.
+         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 third-party/pjproject directory was created to house the pjproject
-            source distribution.  Its Makefile contains targets to download, patch
-            configure, generate dependencies, compile libs, apps and python bindings,
-            sanitized build.mak and generate a symbols list.
+         The following is the text from the master version of this commit:
 
-            When bootstrap.sh is run, it automatically includes the configure.m4
-            file in third-party/pjproject.  This file has a macro to download and
-            conifgure pjproject and get and set PJPROJECT_INCLUDE, PJPROJECT_DIR
-            and PJPROJECT_BUNDLED.  It also tests for the capabilities like
-            PJ_TRANSACTION_GRP_LOCK by parsing preprocessor output as opposed to
-            trying to compile.  Of course, bootstrap.sh is only run once and the
-            configure file is incldued in the patch.
+         Odd behaviors have been observed during outbound registrations. The most
+         common problem witnessed has been one where a request with
+         authentication credentials cannot be created after receiving a 401
+         response. Other behaviors include apparently processing an incorrect SIP
+         response.
 
-            When configure is run with the new options, the macro in configure.m4
-            triggers the download, patch, conifgure and tests.  No compilation is
-            performed at this time.  The downloaded tarball is cached in /tmp so
-            it doesn't get downloaded again on a distclean.
+         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.
 
-            When make is run in the top-level Asterisk source directory, it will
-            automatically descend all the subdirectories in third_party just as it
-            does for addons, apps, etc.  The top-level Makefile makes sure that
-            the 'third-party' is built before 'main' so that dependencies from the
-            other directories are built first.
+         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.
 
-            When main does build, a new shared library (libasteriskpj) is created that
-            links statically to the pjproject .a files and exports all their symbols.
-            The asterisk binary links to that, just as it does with libasteriskssl.
+         ASTERISK-25020
+         Reported by Mark Michelson
 
-            When Asterisk is installed, the pjsua and pjsystest apps, and the pjproject
-            python bindings are installed in ASTDATADIR/third-party/pjproject.  This
-            will facilitate testing, including running the testsuite which will be
-            updated to check that directory for the pjsua module ahead of the system
-            python library.
+         Change-Id: If1ee5f601be839479a219424f0358a229f358f7c
+2015-04-27 14:44 +0000 [1bf008fc76]  Mark Michelson <mmichelson@digium.com>
 
-         Modules should continue to depend on pjproject if they use pjproject APIs
-         directly.  They should not care about the implementation.  No changes to any
-         res_pjsip modules were made.
+       * res_pjsip_outbound_registration: Add debugging messages.
 
-         Change-Id: Ia7a60c28c2e9ba9537c5570f933c1ebcb20a3103
+         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.
 
-2016-02-22 16:59 +0000 [18a323e542]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-25020
+         Reported by Mark Michelson
 
-       * chan_sip.c: Fix T.38 issues caused by leaving a bridge.
+         Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45
 
-         chan_sip could not handle AST_T38_TERMINATED frames being sent to it when
-         the channel left the bridge.  The action resulted in overlapping outgoing
-         reINVITEs.  The testsuite tests/fax/sip/directmedia_reinvite_t38 was not
-         happy.
+2015-04-28 05:38 +0000 [0b6410c4f8]  Steve Davies <steve@one47.co.uk>
 
-         * Force T.38 to be remembered as locally bridged.  Now when the channel
-         leaves the native RTP bridge after T.38, the channel remembers that it has
-         already reINVITEed the media back to Asterisk.  It just needs to terminate
-         T.38 when the AST_T38_TERMINATED arrives.
+       * res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS
 
-         * Prevent redundant AST_T38_TERMINATED from causing problems.  Redundant
-         AST_T38_TERMINATED frames could cause overlapping outgoing reINVITEs if
-         they happen before the T.38 state changes to disabled.  Now the T.38 state
-         is set to disabled before the reINVITE is sent.
+         ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created.
+         The resources are linked into a table, but the original alloc refs
+         are never released. ast_strdup leak in rtp_engine.c. If
+         ast_rtp_dtls_cfg_copy() is called twice on the same destination struct,
+         a pointer to an alloc'd string is overwritten before the string is free'd.
 
-         ASTERISK-25582 #close
+         ASTERISK-25022
+         Reported by: one47
 
-         Change-Id: I53f5c6ce7d90b3f322a942af1a9bcab6d967b7ce
+         Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b
 
-2016-02-18 18:27 +0000 [263a39f2cc]  Richard Mudgett <rmudgett@digium.com>
+2015-04-27 12:11 +0000 [99fb87ae13]  gtjoseph <george.joseph@fairview5.com>
 
-       * res_pjsip_t38.c: Back out part of an earlier fix attempt.
+       * res_pjsip: Fix SEGV on pending-qualify contacts
 
-         This backs out item 4 of the 4875e5ac32f5ccad51add6a4216947bfb385245d
-         commit.  Item 4 added the t38_bye_supplement.  Unfortunately, the frame
-         that it puts into the bridge may or may not be processed by the time the
-         bridged peer is kicked out of the bridge.  If it is processed then all is
-         well.  However, if it is not processed then that channel is stuck in fax
-         mode until it hangs up or maybe if it joins another bridge for T.38
-         faxing.
+         Permanent contacts that hadn't been qualified yet were missing
+         their contact_status entries causing SEGVs when running CLI
+         commands.
 
-         ASTERISK-25582
+         This patch makes sure that contact_statuses are created for
+         both dynamic and permanent contacts when they are created.
+         It also adds checks in the CLI code to make sure there's a
+         contact_status, just in case.
 
-         Change-Id: Ib20a03ecadf1bf8a0dcadfadf6c2f2e60919a9f7
+         ASTERISK-25018 #close
+         Reported-by: Ivan Poddubny
+         Tested-by: Ivan Poddubny
+         Tested-by: George Joseph
 
-2016-02-22 13:54 +0000 [221422be50]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: I3cc13e5cedcafb24c400368b515b02d7fb81e029
 
-       * bridge core: Add owed T.38 terminate when channel leaves a bridge.
+2015-04-15 18:55 +0000 [d5dd43856e]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-         The channel is now going to get T.38 terminated when it leaves the
-         bridging system and the bridged peers are going to get T.38 terminated as
-         well.
+       * cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version
 
-         ASTERISK-25582
+         Add new column to INSERT new columns added in cdr 1.8 version. The columns are:
+          * peeraccount
+          * linkedid
+          * sequence
+         This feature is configurable in cdr_odbc.conf using a new configuration
+         option, 'newcdrcolumns'.
 
-         Change-Id: I77a9205979910210e3068e1ddff400dbf35c4ca7
+         ASTERISK-24976 #close
 
-2016-02-19 16:01 +0000 [0a5bc64491]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127
+2015-04-26 17:21 +0000 [e9788056e9]  Matt Jordan <mjordan@digium.com>
 
-       * channel api: Create is_t38_active accessor functions.
+       * channels/chan_skinny: Fix compilation error introduced in f8e21a1adf
 
-         ASTERISK-25582
+         A typo in commit f8e21a1adf resulted in a compilation error in
+         chan_skinny. This patch fixes the typo.
 
-         Change-Id: I69451920b122de7ee18d15bb231c80ea7067a22b
+         ASTERISK-24917
 
-2016-02-19 19:06 +0000 [513638a5f4]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c
 
-       * bridge_channel: Don't settle owed events on an optimization.
+2015-04-23 15:11 +0000 [7e5056b393]  Kevin Harwell <kharwell@digium.com>
 
-         Local channel optimization could cause DTMF digits to be duplicated.
-         Pending DTMF end events would be posted to a bridge when the local channel
-         optimizes out and is replaced by the channel further down the chain.  When
-         the real digit ends, the channel would get another DTMF end posted to the
-         bridge.
+       * app_confbridge: Default the template option to a compatible default profile.
 
-         A -- LocalA;1/n -- LocalA;2/n -- LocalB;1 -- LocalB;2 -- B
+         Confbridge dynamic profiles did not have a default profile unless you
+         explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a
+         template was not set prior to the bridge being created then some
+         options were left with no default values set. This patch makes it so
+         the default templates are set to the default bridge and user profiles.
 
-         1) LocalA has the /n flag to prevent optimization.
-         2) B is sending DTMF to A through the local channel chain.
-         3) When LocalB optimizes out it can move B to the position of LocalB;1
-         4) Without this patch, when B swaps with LocalB;1 then LocalB;1 would
-         settle an owed DTMF end to the bridge toward LocalA;2.
-         5) When B finally ends its DTMF it sends the DTMF end down the chain.
-         6) Without this patch, A would hear the DTMF digit end when LocalB
-         optimizes out and when B ends the original digit.
+         ASTERISK-24749 #close
+         Reported by: philippebolduc
 
-         ASTERISK-25582
+         Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a
 
-         Change-Id: I1bbd28b8b399c0fb54985a5747f330a4cd2aa251
+2015-04-24 09:17 +0000 [1da9ec969d]  Mark Michelson <mmichelson@digium.com>
 
-2016-02-22 12:15 +0000 [7c4495cb70]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_outbound_authenticator: Increase CSeq on authed requests.
 
-       * channel.c: Route all control frames to a channel through the same code.
+         The way PJSIP generates an authenticated request is to use a previous
+         request as a template. This means that the authenticated request will
+         have the same Call-ID, From header (including tag), and CSeq as the
+         original request. PJSIP generates a new branch on the Via header to
+         indicate that this is a new transaction, though.
 
-         Frame hooks can conceivably return a control frame in exchange for an
-         audio frame inside ast_write().  Those returned control frames were not
-         handled quite the same as if they were sent to ast_indicate().  Now it
-         doesn't matter if you use ast_write() to send an AST_FRAME_CONTROL to a
-         channel or ast_indicate().
+         There are some SIP implementations, though, that do not notice the
+         change in the branch and therefore will match the authed request to the
+         original request's transaction. Since the CSeq is the same, the server
+         will repeat the response it sent to the original request.
 
-         ASTERISK-25582
+         This patch aids interoperability by increasing the CSeq of the authed
+         request by one.
 
-         Change-Id: I5775f41421aca2b510128198e9b827bf9169629b
+         ASTERISK-24845 #close
+         Reported by: Carl Fortin
+         Tested by: Carl Fortin
 
-2016-02-25 15:13 +0000 [48d713a832]  gtjoseph <george.joseph@fairview5.com>
+         Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01
 
-       * sorcery:  Refactor create, update and delete to better deal with caches
+2015-04-20 13:06 +0000 [cb318f3960]  Diederik de Groot <ddegroot@talon.nl>
 
-         The ast_sorcery_create, update and delete function have been refactored
-         to better deal with caches and errors.
+       * Example script for scan-build (the llvm static analyzer)
 
-         The action is now called on all non-caching wizards first. If ANY succeed,
-         the action is called on all caching wizards and the observers are notified.
-         This way we don't put something in the cache (or update or delete) before
-         knowing the action was performed in at least 1 backend and we only call the
-         observers once even if there were multiple writable backends.
+          - Added Pre-amble (Options / Flags / Usage Example / GNU License)
+          - Extended Configurability
+          - Made Executable
 
-         ast_sorcery_create was never adding to caches in the first place which
-         was preventing contacts from getting added to a memory_cache when they
-         were created.  In turn this was causing memory_cache to emit errors if
-         the contact was deleted before being retrieved (which would have
-         populated the cache).
+         ASTERISK-24917
+         Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8
 
-         ASTERISK-25811 #close
-         Reported-by: Ross Beer
+2015-04-23 12:54 +0000 [eabf3b5a3c]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: Id5596ce691685a79886e57b0865888458d6e7b46
-2016-02-25 15:39 +0000 [ee947d4a7a]  gtjoseph <george.joseph@fairview5.com>
+       * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX.
 
-       * res_pjsip_mwi:  Turn some NOTICEs and WARNINGs into debug 1s.
+         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.
 
-         There are a few cases where we're emitting notices or warnings
-         for things that really need neither, like a client retrying to subscribe
-         to mwi when they're not conifgured for it.  They get a 404 so there's no
-         need for non-debug messages.
+         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.
 
-         Change-Id: I05e38a7ff6c2f2521146f4be6a79731b9864e61f
-2016-02-25 14:17 +0000 [6e70e8ccdb]  gtjoseph <george.joseph@fairview5.com>
+         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.
 
-       * res_sorcery_memory_cache:  Fix SEGV in some CLI commands
+         This patch also contains some corrections for comments that were
+         incorrect and really confused me when I first started looking at the
+         code.
 
-         A few of the CLI commands weren't checking for enough arguments
-         and were SEGVing.
+         ASTERISK-25004 #close
+         Reported by Mark Michelson
 
-         Change-Id: Ie6494132ad2fe54b4f014bcdc112a37c36a9b413
+         Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0
+2015-04-23 09:16 +0000 [f70d21b2cf]  gtjoseph <george.joseph@fairview5.com>
 
-2016-02-25 10:29 +0000 [4417f64d83]  Leif Madsen <leif@leifmadsen.com>
+       * res_pjsip:  Validate that contact uris start with sip: or sips:
 
-       * Add initial support to build Docker images
+         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.
 
-         This work-in-progress is the first step to being able to reliably
-         build Asterisk containers from the Asterisk source. I'm submitting
-         this based on feedback gained at AstriDevCon 2015.
+         To prevent this, permanent_contact_validate has been updated to check
+         that the scheme is either 'sip' or 'sips'.
 
-         Information about how to use this is provided in contrib/docker/README.md
-         and will result in a local Asterisk container being built right from
-         your source. I believe this can eventually be automated via
-         hub.docker.com.
+         2 uses of possibly-null endpoint have also been fixed in
+         create_out_of_dialog_request.
 
-         Change-Id: Ifa070706d40e56755797097b6ed72c1e243bd0d1
+         ASTERISK-24999
 
-2016-02-22 19:31 +0000 [e7a6abbbd3]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2
+         Reported-by: Brad Latus
 
-       * rtp_engine.h: Remove extraneous semicolons.
+2015-04-23 08:00 +0000 [1bb16bedc7]  Diederik de Groot <ddegroot@talon.nl>
 
-         Change-Id: Ib462633d396fa941379dfef648dcd2245e350084
+       * Clang: change previous tautological-compare fixes.
 
-2016-02-23 14:57 +0000 [6656afffa0]  Richard Mudgett <rmudgett@digium.com>
+         clang can warn about a so called tautological-compare, when it finds
+         comparisons which are logically always true, and are therefor deemed
+         unnecessary.
 
-       * chan_sip.c: Suppress T.38 SDP c= line if addr is the same.
+         Exanple:
+         unsigned int x = 4;
+         if (x > 0)    // x is always going to be bigger than 0
 
-         Use the correct comparison function since we only care if the address
-         without the port is the same.
+         Enum Case:
+         Each enumeration is its own type. Enums are an integer type but they
+         do not have to be *signed*. C leaves it up to the compiler as an
+         implementation option what to consider the integer type of a particu-
+         lar enumeration is. Gcc treats an enum without negative values as
+         an int while clang treats this enum as an unsigned int.
 
-         Change-Id: Ibf6c485f843a1be6dee58a47b33d81a7a8cbe3b0
+         rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
+         The cast does have an effect. For gcc, which seems to treat all enums
+         as int, the cast to unsigned int will eliminate the possibility of
+         negative values being allowed. For clang, which seems to treat enums
+         without any negative members as unsigned int, the cast will have no
+         effect. If for some reason in the future a negative value is ever
+         added to the enum the assert will still catch the negative value.
 
-2016-02-16 08:14 +0000 [ea9deff996]  Christof Lauber <christof.lauber@annax.ch>
+         ASTERISK-24917
 
-       * res_config_sqlite3: Fix crashes when reading peers from sqlite3 tables
+         Change-Id: I0557ae0154a0b7de68883848a609309cdf0aee6a
 
-         Introduced realloaction of ast_str buf in sqlite3_escape functions in case
-         the returned buffer from threadstorage was actually too small.
+2015-04-22 16:22 +0000 [1474bb05f6]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: I3c5eb43aaade93ee457943daddc651781954c445
+       * res_corosync: Add check for config file before calling corosync apis
 
-2016-02-11 11:01 +0000 [d2a1457e0b]  gtjoseph <george.joseph@fairview5.com>
+         On some systems, res_corosync isn't compatible with the installed version of
+         corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE,
+         and Asterisk terminates.  The work around has been to remember to add
+         res_corosync as a noload in modules.conf.  A better solution though is to have
+         res_corosync check for its config file before attempting to call corosync apis
+         and return LOAD_DECLINE if there's no config file.  This lets Asterisk loading
+         continue.
 
-       * res_pjsip/config_transport: Allow reloading transports.
+         If you have a res_corosync.conf file and res_corosync fails, you get the same
+         behavior as today and the fatal error tells you something is wrong with the
+         install.
 
-         The 'reload' mechanism actually involves closing the underlying
-         socket and calling the appropriate udp, tcp or tls start functions
-         again.  Only outbound_registration, pubsub and session needed work
-         to reset the transport before sending requests to insure that the
-         pjsip transport didn't get pulled out from under them.
+         ASTERISK-24998
 
-         In my testing, no calls were dropped when a transport was changed
-         for any of the 3 transport types even if ip addresses or ports were
-         changed. To be on the safe side however, a new transport option was
-         added (allow_reload) which defaults to 'no'.  Unless it's explicitly
-         set to 'yes' for a transport, changes to that transport will be ignored
-         on a reload of res_pjsip.  This should preserve the current behavior.
+         Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889
+2015-04-22 15:17 +0000 [73efb093b8]  Corey Farrell <git@cfware.com>
 
-         Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf
+       * Astobj2: Ensure all calls to __adjust_lock pass a valid object.
 
-2016-02-07 17:34 +0000 [6b921f706d]  gtjoseph <george.joseph@fairview5.com>
+         __adjust_lock doesn't check for invalid objects, and doesn't have an
+         appropriate return value for invalid objects.  Most callers of
+         __adjust_lock pass objects that have already been confirmed valid,
+         this change adds checks before the remaining calls.
 
-       * res_pjproject:  Add ability to map pjproject log levels to Asterisk log levels
+         ASTERISK-24997 #close
+         Reported by: Corey Farrell
 
-         Warnings and errors in the pjproject libraries are generally handled by
-         Asterisk.  In many cases, Asterisk wouldn't even consider them to be warnings
-         or errors so the messages emitted by pjproject directly are either superfluous
-         or misleading.  A good exampe of this are the level-0 errors pjproject emits
-         when it can't open a TCP/TLS socket to a client to send an OPTIONS.  We don't
-         consider a failure to qualify a UDP client an "ERROR", why should a TCP/TLS
-         client be treated any differently?
+         Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f
 
-         A config file for res_pjproject has bene added (pjproject.conf) and a new
-         log_mappings object allows mapping pjproject levels to Asterisk levels
-         (or nothing).  The defaults if no pjproject.conf file is found are the same
-         as those that were hard-coded into res_pjproject initially: 0,1 = LOG_ERROR,
-         2 = LOG_WARNING, 3,4,5 = LOG_DEBUG<level>
+2015-04-22 16:32 +0000 [b0e929219b]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Iba7bb349c70397586889b8f45b8c3d6c6c8c3898
+       * .gitignore:  Add .gcno and .gcda
 
-2016-02-18 10:55 +0000 [f295088764]  Alexei Gradinari <alex2grad@gmail.com>
+         Products of --enable-coverage
 
-       * res_pjsip_outbound_publish: Fix processing 412 response
+         Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3
 
-         When Asterisk receives a 412 (Conditional Request Failed) response
-         it has to recreate publish session.
-         There is bug in res_pjsip_outbound_publish.c
-         The function sip_outbound_publish_client_alloc is called with wrong object
-         while processing 412 (Conditional Request Failed) response.
-         This patch fixes it.
+2015-04-22 04:17 +0000 [d6dfc85666]  Diederik de Groot <ddegroot@talon.nl>
 
-         ASTERISK-25229 #close
+       * Clang: Fix some more tautological-compare warnings.
 
-         Change-Id: I3b62f2debf6bb1e5817cde7b13ea39ef2bf14359
-2016-02-18 11:15 +0000 [f1f79812c1]  Mark Michelson <mmichelson@digium.com>
+         clang can warn about a so called tautological-compare, when it finds
+         comparisons which are logically always true, and are therefor deemed
+         unnecessary.
 
-       * Fix failing threadpool_auto_increment test.
+         Exanple:
+         unsigned int x = 4;
+         if (x > 0)    // x is always going to be bigger than 0
 
-         The threadpool_auto_increment test fails infrequently for a couple of
-         reasons
-         * The threadpool listener was notified of fewer tasks being pushed than
-           were actually pushed
-         * The "was_empty" flag was set to an unexpected value.
+         Enum Case:
+         Each enumeration is its own type. Enums are an integer type but they
+         do not have to be *signed*. C leaves it up to the compiler as an
+         implementation option what to consider the integer type of a particu-
+         lar enumeration is. Gcc treats an enum without negative values as
+         an int while clang treats this enum as an unsigned int.
 
-         The problem is that the test pushes three tasks into the threadpool.
-         Test expects the threadpool to essentially gather those three tasks, and
-         then distribute those to the threadpool threads. It also expects that as
-         the tasks are pushed in, the threadpool listener is alerted immediately
-         that the tasks have been pushed. In reality, a task can be distributed
-         to the threadpool threads quicker than expected, meaning that the
-         threadpool has already emptied by the time each subsequent task is
-         pushed. In addition, the internal threadpool queue can be delayed so
-         that the threadpool listener is not alerted that a task has been pushed
-         even after the task has been executed.
+         rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
+         The cast does have an effect. For gcc, which seems to treat all enums
+         as int, the cast to unsigned int will eliminate the possibility of
+         negative values being allowed. For clang, which seems to treat enums
+         without any negative members as unsigned int, the cast will have no
+         effect. If for some reason in the future a negative value is ever
+         added to the enum the assert will still catch the negative value.
 
-         From the test's point of view, there's no way to be able to predict
-         exactly the order that task execution/listener notifications will occur,
-         and there is no way to know which listener notifications will indicate
-         that the threadpool was previously empty.
+         ASTERISK-24917
+         Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62
 
-         For this reason, the test has been updated to only check the things it
-         can check. It ensures that all tasks get executed, that the threads go
-         idle after the tasks are executed, and that the listener is told the
-         proper number of tasks that were pushed.
+2015-04-14 14:04 +0000 [7b57116833]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I7673120d74adad64ae6894594a606e102d9a1f2c
+       * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers.
 
-2016-02-16 23:37 +0000 [79dc5e2f00]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+         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.
 
-       * app_queue: fix Calculate talktime when is first call answered
+         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.
 
-         Fix calculate of average time for talktime is wrong when is completed the
-         first call beacuse the time for talked would be that call.
+         ASTERISK-24982 #close
+         Reported by: Joshua Colp
 
-         ASTERISK-25800 #close
+         Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58
 
-         Change-Id: I94f79028935913cd9174b090b52bb300b91b9492
+2015-04-21 15:17 +0000 [ad1a118632]  Corey Farrell <git@cfware.com>
 
-2016-02-17 13:30 +0000 [5a3a857dd6]  Richard Mudgett <rmudgett@digium.com>
+       * Check for ao2_alloc failure in __ast_channel_internal_alloc.
 
-       * cel.c: Fix mismatch in ast_cel_track_event() return type.
+         Fix a crash that could occur in __ast_channel_internal_alloc if
+         ao2_alloc fails.
 
-         The return type of ast_cel_track_event() is not large enough to return all
-         64 potential bits of the event enable mask.  Fortunately, the defined CEL
-         events do not really need all 64 bits and the return value is only used to
-         determine if the requested CEL event is enabled.
+         ASTERISK-24991 #close
 
-         * Made the ast_cel_track_event() return 0 or 1 only so the return value
-         can fit inside an int type instead of zero or a truncated 64 bit non-zero
-         value.
+         Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90
 
-         Change-Id: I783d932320db11a95c7bf7636a72b6fe2566904c
+2015-04-20 14:30 +0000 [3327560cb2]  Mark Michelson <mmichelson@digium.com>
 
-2016-02-16 16:37 +0000 [87ab65c557]  gtjoseph <george.joseph@fairview5.com>
+       * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs.
 
-       * res_odbc: Fix exports.in for missing symbols
+         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.
 
-         res_odbc.exports.in was missing a few symbols.
-         Changed to wildcards.
+         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.
 
-         Change-Id: Ieadd76df24e43ea92577f651d478a0f7b742c30c
+         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.
 
-2016-02-16 12:20 +0000 [c0f3062031]  gtjoseph <george.joseph@fairview5.com>
+         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.
 
-       * res_statsd:  Fix exports.in for missing symbols
+         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.
 
-         res_statsd.export.in was missing the _va variations of the log
-         functions causing Asterisk to crash in res_pjsip if OPTIONAL_API
-         wasn't enabled.
+         This commit message is like 50x longer than the actual fix.
 
-         ASTERISK-25727 #close
-         Reported-by: Gergely Dömsödi
+         ASTERISK 24981 #close
+         Reported by Mark Michelson
 
-         Change-Id: I395729f9f51bdd33c5ca757f5f96ebedad74077b
+         Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd
+2015-04-20 18:00 +0000 [d08446ec36]  Richard Mudgett <rmudgett@digium.com>
 
-2016-02-15 21:31 +0000 [5e848dae7b]  gtjoseph <george.joseph@fairview5.com>
+       * chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels.
 
-       * res_pjsip_config_wizard:  Add command to export primitive objects
+         The chan_dahdi channel driver is a very old driver.  The ability for it to
+         support ISDN was added well after the initial analog support.  Setting the
+         softhangup flags is a carry over from the original analog code.  The
+         driver was not updated to call ast_queue_hangup() which will post the AMI
+         HangupRequest event.
 
-         A new command (pjsip export config_wizard primitives) has been added that
-         will export all the pjsip objects it created to the console or a file
-         suitable for reuse in a pjsip.conf file.
+         * Changed sig_pri.c to call ast_queue_hangup() instead of setting the
+         softhangup flag when the remote party initiates a hangup.
 
-         ASTERISK-24919 #close
-         Reported-by: Ray Crumrine
+         ASTERISK-24895 #close
+         Reported by: Andrew Zherdin
 
-         Change-Id: Ica2a5f494244b4f8345b0437b16d06aa0484452b
+         Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325
 
-2016-02-15 15:37 +0000 [34c64707d1]  gtjoseph <george.joseph@fairview5.com>
+2015-04-20 13:01 +0000 [2be9cc2643]  Diederik de Groot <ddegroot@talon.nl>
 
-       * res_pjsip_caller_id: Fix segfault when replacing rpid or pai header
+       * Fix/Update clang-RAII macro implementation
 
-         If the PJSIP_HEADER dialplan function adds a PAI or RPID header and send_rpid
-         or send_pai is set, res_pjsip_caller_id attemps to retrieve, parse and modify
-         the header added by the dialplan function.  Since the header added by the
-         dialplan function is generic string, there are no virtual functions to parse
-         the uri and we get a segfault when we try.  Since the modify, was really only
-         an overwrite, we now just delete the old header if it was type PJSIP_H_OTHER
-         and recreate it.
+         - When you need to refer to 'variable XXX' outside a block, it needs
+         to be declared as '__block XXX', otherwise it will not be available with-
+         in the block, making updating that variable hard to do, and ast_free
+         lead to issues.
 
-         This raises a question for another time though:  What should happen with
-         duplicate headers?  Right now res_pjsip_header_funcs doesn't check for dups
-         so if it's session supplement is loaded after res_pjsip_caller_id's (or any
-         other module that adds headers), there'll be dups in the message.
+         - Removed the #error message
+         because it creates complications when compiling external projects
+         against asterisk For example when using a different compiler than the
+         one used to compile asterisk. The warning/error should be generated
+         during the configure process not the compilation process
 
-         ASTERISK-25337 #close
+         ASTERISK-24917
+         Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2
+2015-04-20 09:53 +0000 [b74b2cdcda]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: I5e296b52d30f106b822c0eb27c4c2b0e0f71c7fa
+       * pjsip_options:  Fix format specifier for int64_t rtt.
 
-2016-02-15 13:08 +0000 [ebe167f792]  Mark Michelson <mmichelson@digium.com>
+         Contact status rtt is an int64_t and needs the PRId64 macro to
+         properly create the format specifier on 32-bit systems.
 
-       * Fix creation race of contact_status structures.
+         Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7
 
-         It is possible when processing a SIP REGISTER request to have two
-         threads end up creating contact_status structures in sorcery.
-         contact_status is created using a "find or create" function. If two
-         threads call into this at the same time, each thread will fail to find
-         an existing contact_status, and so both will end up creating a new
-         contact status.
+2015-04-18 13:36 +0000 [63169e00ff]  gtjoseph <george.joseph@fairview5.com>
 
-         During testing, we would see sporadic failures because the
-         PJSIP_CONTACT() dialplan function would operate on a different
-         contact_status than what had been updated by res_pjsip/pjsip_options.
+       * pjsip_options:  Fix non-qualified contacts showing as unavailable
 
-         The fix here is two-fold:
-         1) The "find or create" function for contact_status now has a lock
-         around the entire operation. This way, if two threads attempt the
-         operation simultaneously, the first to get there will create the object,
-         and the second will find the object created by the first thread.
+         The "Add qualify_timeout processing and eventing" patch introduced
+         an issue where contacts that had qualify_frequency set to 0 were
+         showing Unavailable instead Unknown.  This patch checks for
+         qualify_frequency=0 and create an "Unknown"  contact_status
+         with an RTT = 0.
 
-         2) res_sorcery_memory has had its create callback updated so that it
-         will not allow for objects with duplicate IDs to be created.
+         Previously, the lack of contact_status implied Unknown but since
+         we're now changing endpoint state based on contact_status, I've
+         had to add new UNKNOWN status so that changes could trigger the
+         appropriate contact_status observers.
 
-         Change-Id: I55b1460ff1eb0af0a3697b82d7c2bac9f6af5b97
+         ASTERISK-24977: #close
 
-2016-02-15 12:52 +0000 [1c4f2a920d]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7
 
-       * res_pjsip_pubsub: Move where the subscription is stored to after initialized.
+2015-04-19 15:49 +0000 [f0c82a173a]  Matt Jordan <mjordan@digium.com>
 
-         A problem arose when testing the AMI subscription listing actions where it
-         was possible for a subscription that had not been fully initialized to be
-         listed. This was problematic as the underlying listing code would crash.
+       * main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple
 
-         This change makes it so the subscription tree is fully set up before it is
-         added to the list of subscriptions. This ensures that when the listing actions
-         get the subscription it is valid.
+         When a PBX registrar is unloaded, it will fail to remove its extension from
+         the context root_table if a dialplan application used by that extension is
+         still loaded. This can be the case for AGI, which can be unloaded after several
+         of the standard PBX providers. Often, this is harmless; however, if the
+         extension's priorities are removed during the failed unloading *and* the
+         dialplan application later unregisters, it leaves a ticking timebomb for the
+         next PBX provider that attempts to iterate over the extensions. When that
+         occurs, the peer_table pointer on the extension will already be set to NULL.
+         The current code does not check to see if the pointer is NULL before passing
+         it to a hashtab function this is not NULL tolerant.
 
-         ASTERISK-25738 #close
+         Since it is possible for the peer_table to be NULL when we normally would not
+         expect that to be the case, the solution in this patch is to simply skip over
+         processing an extension's priorities if peer_table is NULL.
 
-         Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48
+         Prior to this patch, the tests/pbx/callerid_match test would crash during
+         module unload. With this patch, the test no longer crashes after running.
 
-2015-02-20 20:51 +0000 [ac00c6bc2d]  Corey Farrell <git@cfware.com>
+         ASTERISK-24774 #close
+         Reported by: Corey Farrell
 
-       * main/asterisk.c: Reverse #if statement in listener() to fix code folding.
+         Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40
 
-         listener() opens the same code block in two places (#if and #else).  This
-         confuses some folding editors causing it to think that an extra code block
-         was opened.  Folding in 'geany' causes all code after listener() to be
-         folded as if it were part of that procedure.
+2015-04-17 18:05 +0000 [82bc0fd3ad]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-24813 #close
+       * res_fax: Fix latent bug exposed by ASTERISK-24841 changes.
 
-         Change-Id: I4b8c766e6c91e327dd445e8c18f8a6f268acd961
+         Three fax related tests started failing as a result of changes made for
+         ASTERISK-24841:
+         tests/fax/pjsip/gateway_t38_g711
+         tests/fax/sip/gateway_mix1
+         tests/fax/sip/gateway_mix3
 
-2016-02-09 17:34 +0000 [b1b797e0e7]  gtjoseph <george.joseph@fairview5.com>
+         Historically, ast_channel_make_compatible() did nothing if the channels
+         were already "compatible" even if they had a sub-optimal translation path
+         already setup.  With the changes from ASTERISK-24841 this is no longer
+         true in order to allow the best translation paths to always be picked.  In
+         res_fax.c:fax_gateway_framehook() code manually setup the channels to go
+         through slin and then called ast_channel_make_compatible().  With the
+         previous version of ast_channel_make_compatible() this was always a
+         no-operation.
 
-       * res_pjsip:  Refactor load_module/unload_module
+         * Remove call to ast_channel_make_compatible() in fax_gateway_framehook()
+         that now undoes what was just setup when the framehook is attached.
 
-         load_module was just too hairy with every step having to clean up all
-         previous steps on failure.
+         * Fixed locking around saving the channel formats in
+         fax_gateway_framehook() to ensure that the formats that are saved are
+         consistent.
 
-         Some of the pjproject init calls have now been moved to a separate
-         load_pjsip function and the unload_pjsip function was enhanced to clean
-         up everything if an error happened at any stage of the load process.
+         * Fix copy pasta errors in fax_gateway_framehook() that confuses read and
+         write when dealing with saved channel formats.
 
-         In the process, a bunch of missing pj_shutdowns, serializer_pool_shutdowns
-         and ast_threadpool_shutdowns were also corrected.
+         ASTERISK-24841
+         Reported by: Matt Jordan
 
-         Change-Id: I5eec711b437c35b56605ed99537ebbb30463b302
+         Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d
 
-2016-02-09 22:42 +0000 [20e9792fbc]  Badalyan Vyacheslav <slavon.net@gmail.com>
+2015-04-17 16:19 +0000 [c59a800707]  Corey Farrell <git@cfware.com>
 
-       * Resources/res_phoneprov: fix memory leak and heap-use-after-free
+       * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled.
 
-         * heap-use-after-free happens when we free "cfg"
-         but then use "value" which refers to it
+         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.
 
-         * A memory leak occurs because in some cases
-         it is not released "defaults"
+         ASTERISK-24975 #close
+         Reported by: Ashley Sanders
 
-         ASTERISK-25721 #close
-         Reported by: Badalyan Vyacheslav
-         Tested by: Badalyan Vyacheslav
+         Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402
 
-         Change-Id: I3807d3f4726df6864430ec144cf6265d3f538469
+2015-04-15 10:38 +0000 [4f1a8dbe92]  Mark Michelson <mmichelson@digium.com>
 
-2016-02-11 11:21 +0000 [962a9d61f8]  Etienne Lessard (license #6394)
+       * Detect potential forwarding loops based on count.
 
-       * func_iconv: Ensure output strings are properly terminated.
+         A potential problem that can arise is the following:
 
-         ASTERISK-25272 #close
-         Reported by: Etienne Lessard
-         patches:
-          AST-25272.patch submitted by Etienne Lessard (license #6394)
+         * Bob's phone is programmed to automatically forward to Carol.
+         * Carol's phone is programmed to automatically forward to Bob.
+         * Alice calls Bob.
 
-         Change-Id: Id75ad202300960a1e91afe15e319d992936ecc17
+         If left unchecked, this results in an endless loops of call forwards
+         that would eventually result in some sort of fiery crash.
 
-2016-02-10 16:16 +0000 [c1bf014ea0]  gtjoseph <george.joseph@fairview5.com>
+         Asterisk's method of solving this issue was to track which interfaces
+         had been dialed. If a destination were dialed a second time, then
+         the attempt to call that destination would fail since a loop was
+         detected.
 
-       * res_pjsip:  Handle pjsip_dlg_create_uas deprecation
+         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:
 
-         Pjproject has deprecated pjsip_dlg_create_uas in 2.5 and replaced it with
-         pjsip_dlg_create_uas_and_inc_lock which, as the name implies, automatically
-         increments the lock on the returned dialog.  To account for this, configure.ac
-         now detects the presence of pjsip_dlg_create_uas_and_inc_lock and res_pjsip.c
-         has an #ifdef HAVE_PJSIP_DLG_CREATE_UAS_AND_INC_LOCK to decide whether to use
-         the original call or the new one.  If the new one was used, the ref count is
-         decremented before returning.
+         * There are legitimate use cases where a device may be dialed multiple
+         times, or
+         * There can be human error when forwarding calls.
 
-         ASTERISK-25751 #close
-         Reported-by Josh Colp
+         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:
 
-         Change-Id: I1be776b94761df03bd0693bc7795a75682615ca8
+         * It is much simpler.
+         * It can detect loops involving local channels.
+         * It is user configurable.
 
-2016-02-09 23:40 +0000 [bd07b6f0dd]  Badalyan Vyacheslav <slavon.net@gmail.com>
+         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.
 
-       * Build: Added testing compiler to support the system sanitizes
+         Address review feedback on gerrit.
 
-         In older versions of the compiler was not sanitizes.
-         Compilers other than GCC can not support the Usan and TSAN
-         or have other options for *FLAGS.
+         * 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-25767 #close
-         Reported by: Badalyan Vyacheslav
-         Tested by: Badalyan Vyacheslav
+         ASTERISK-24958 #close
 
-         Change-Id: Iefce6608221fa87884b82ae3cb5649b7b1804916
+         Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
+2015-04-11 16:56 +0000 [674b18bdf0]  gtjoseph <george.joseph@fairview5.com>
 
-2016-02-09 20:57 +0000 [e9e896abd1]  Badalyan Vyacheslav <v.badalyan@open-bs.ru>
+       * pjsip_options: Add qualify_timeout processing and eventing
 
-       * Build: Fix menuselect USAN conflicts
+         This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the
+         discussion at
+         http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
 
-         USAN can be used together with other sanitizers.
+         The basic issues are that changes in contact status don't cause events to be
+         emitted for the associated endpoint.  Only dynamic contact add/delete actions
+         update the endpoint.  Also, the qualify timeout is fixed by pjsip at 32 seconds
+         which is a long time.
 
-         Reported by: Badalyan Vyacheslav
-         Tested by: Badalyan Vyacheslav
+         This patch makes use of the new transaction timeout feature in r4585 and
+         provides the following capabilities...
 
-         Change-Id: I3bffa350d70965c3026651dba3a12414d0aaa45f
+         1.  A new aor/contact variable 'qualify_timeout' has been added that allows the
+         user to specify the maximum time in milliseconds to wait for a response to an
+         OPTIONS message.  The default is 3000ms.  When the timer expires, the contact is
+         marked unavailable.
 
-2016-02-09 14:21 +0000 [93e8ed0154]  Corey Farrell <git@cfware.com>
+         2.  Contact status changes are now propagated up to the endpoint as follows...
+         When any contact is 'Available', the endpoint is marked as 'Reachable'.  When
+         all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'.  The
+         existing endpoint events are generated appropriately.
 
-       * Simplify and fix conditional in FD_SET.
+         ASTERISK-24863 #close
 
-         FD_SET contains a conditional statement to protect against buffer
-         overruns.  The statement was overly complicated and prevented use
-         of the last array element of ast_fdset.  We now just verify the fd
-         is less than ast_FDMAX.
+         Change-Id: Id0ce0528e58014da1324856ea537e7765466044a
+         Tested-by: Dmitriy Serov
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         Change-Id: I41895c0b497b052aef5bf49d75c817c48b326f40
+2015-04-16 10:51 +0000 [b56c1914fa]  Kevin Harwell <kharwell@digium.com>
 
-2016-02-09 07:11 +0000 [a7c8d4cd6b]  Joshua Colp <jcolp@digium.com>
+       * bridge.c: NULL app causes crash during attended transfer
 
-       * tests/test_sorcery_memory_cache_thrash: Improve termination process.
+         Due to a race condition there was a chance that during an attended transfer the
+         channel's application would return NULL. This, of course, would cause a crash
+         when attempting to access the memory. This patch retrieves the channel's app
+         at an earlier time in processing in hopes that the app name is available.
+         However, if it is not then "unknown" is used instead. Since some string value
+         is now always present the crash can no longer occur.
 
-         When terminating the threads thrashing a sorcery memory cache each
-         would be told to stop and then we would wait on them. During at
-         least one thrashing test this was problematic due to the specific
-         usage pattern in use. It would take some time for termination of the
-         thread to occur.
+         ASTERISK-24869 #close
+         Reported by: viniciusfontes
+         Review:
 
-         This would occur due to contention between the threads retrieving
-         and the threads updating the cache. As the retrieving threads are
-         given priority it may be some time before the updating threads
-         are able to proceed.
+         Change-Id: I5134b84c4524906d8148817719d76ffb306488ac
 
-         This change makes it so all threads are told to stop and then each
-         are joined to ensure they stop. This way all the threads should
-         stop at around the same time instead of waiting for one to stop,
-         the next to stop, then the next, and so on. As a result of this
-         the execution time for each thrash test is much closer to their
-         expected value than previously seen as well.
+2015-04-16 13:20 +0000 [8d4ce7cc2b]  Scott Griepentrog <scott@griepentrog.com>
 
-         Change-Id: I04a53470b0ea4170b8819180b0bd7475f3642827
-2016-01-29 17:56 +0000 [2451d4e455]  gtjoseph <george.joseph@fairview5.com>
+       * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced
 
-       * res_pjsip:  Fix infinite recursion when loading transports from realtime
+         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.
 
-         Attempting to load a transport from realtime was forcing asterisk into an
-         infinite recursion loop.  The first thing transport_apply did was to do a
-         sorcery retrieve by id for an existing transport of the same name. For files,
-         this just returns the previous object from res_sorcery_config's internal
-         container, if any.  For realtime, the res_sourcery_realtime driver looks in the
-         database and finds the existing row but now it has to rehydrate it into a
-         sorcery object which means calling... transport_apply.  And so it goes.
+         ASTERISK-24970 #close
 
-         The main issue with loading from realtime (apart from the loop) was that
-         transport stores structures and pointers directly in the ast_sip_transport
-         structure instead of the separate ast_transport_state structure.  This patch
-         separates those items into the ast_sip_transport_state structure.  The pattern
-         is roughly the same as res_pjsip_outbound_registration.
+         Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf
+2015-04-11 16:39 +0000 [bf46799f0e]  gtjoseph <george.joseph@fairview5.com>
 
-         Although all current usages of ast_sip_transport and ast_sip_transport_state
-         were modified to use the new ast_sip_get_transport_state API, the original
-         items are left in ast_sip_transport and kept updated to maintain ABI
-         compatability for third-party modules.  They are marked as deprecated and
-         noted that they're now in ast_sip_transport_state.
+       * res_pjsip: Refactor endpt_send_request to include transaction timeout
 
-         ASTERISK-25606 #close
-         Reported-by: Martin Moučka
+         This is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the
+         discussion at
+         http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
 
-         Change-Id: Ic7a836ea8e786e8def51fe3f8cce855ea54f5f19
+         Since we currently have no control over pjproject transaction timeout, this
+         patch pulls the pjsip_endpt_send_request function out of pjproject and into
+         res_pjsip/endpt_send_transaction in order to implement that capability.
 
-2016-01-25 17:36 +0000 [6f978fbfe5]  Richard Mudgett <rmudgett@digium.com>
+         Now when the transaction is initiated, we also schedule our own pj_timer with
+         our own desired timeout.
 
-       * app_confbridge: Only use b_profile options from the conference.
+         If the transaction completes before either timeout, pjproject cancels its timer,
+         and calls our tsx callback where we cancel our timer and run the app callback.
 
-         A user cannot set new bridge options after the conference is created by
-         the first user.  Attempting to do so is documented as undefined behavior.
+         If the pjproject timer times out first, pjproject calls our tsx callback where
+         we cancel our timer and run the app callback.
 
-         This patch ensures that the bridge profile options used are from the
-         conference and not what a subsequent user may have tried to set.
+         If our timer times out first, we terminate the transaction which causes
+         pjproject to cancel its timer and call our tsx callback where we run the app
+         callback.
 
-         Change-Id: I1b6383eba654679e5739d5a8de98199cf074a266
+         Regardless of the scenario, pjproject is calling the tsx callback inside the
+         group_lock and there are checks in the callback to make sure it doesn't run
+         twice.
 
-2016-02-05 10:29 +0000 [ec8fd6714d]  gtjoseph <george.joseph@fairview5.com>
+         As part of this patch ast_sip_send_out_of_dialog_request was created to replace
+         its similarly named private function.  It takes a new timeout argument in
+         milliseconds (<= 0 to disable the timeout).
 
-       * chan_misdn: Fix a few issues causing compile errors
+         ASTERISK-24863 #close
+         Reported-by: George Joseph <george.joseph@fairview5.com>
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         Change-Id: I54b48c24d7ca88ed80496fdfd142d08772a7ab98
+         Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747
+2015-04-11 17:04 +0000 [1b6f6ff841]  gtjoseph <george.joseph@fairview5.com>
 
-2016-02-04 16:17 +0000 [6a799cd78f]  Mark Michelson <mmichelson@digium.com>
+       * res_pjsip: Add global option to limit the maximum time for initial qualifies
 
-       * Check for OpenSSL defines before trying to use them.
+         Currently when Asterisk starts initial qualifies of contacts are spread out
+         randomly between 0 and qualify_timeout to prevent network and system overload.
+         If a contact's qualify_frequency is 5 minutes however, that contact may be
+         unavailable to accept calls for the entire 5 minutes after startup.  So while
+         staggering the initial qualifies is a good idea, basing the time on
+         qualify_timeout could leave contacts unavailable for too long.
 
-         The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior
-         to OpenSSL version 1.0.1. A recent commit attempts to, by default, set
-         these options, which can cause problems on systems with older OpenSSL
-         installations.
+         This patch adds a new global parameter "max_initial_qualify_time" that sets the
+         maximum time for the initial qualifies.  This way you could make sure that all
+         your contacts are initialy, randomly qualified within say 30 seconds but still
+         have the contact's ongoing qualifies at a 5 minute interval.
 
-         This commit adds a configure script check for those defines and will not
-         attempt to make use of those if they do not exist. We will print a
-         warning urging the user to upgrade their OpenSSL installation if those
-         defines are not present.
+         If max_initial_qualify_time is > 0, the formula is initial_interval =
+         min(max_initial_interval, qualify_timeout * random().  If not set,
+         qualify_timeout is used.
 
-         Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d
-2016-02-03 14:25 +0000 [953d1cc11a]  gtjoseph <george.joseph@fairview5.com>
+         The default is "0" (disabled).
 
-       * pjsip/alembic:  Add missing columns to system and registration
+         ASTERISK-24863 #close
 
-         ps_systems needed disable_tcp_switch
-         ps_registrations needed line and endpoint
+         Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         ASTERISK-25737 #close
+2015-04-15 16:08 +0000 [5d218cde87]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Iaf9c2d69e62243d9fa53104c28c5339c47d4ac19
+       * More .gitignore updates
 
-2016-02-04 11:39 +0000 [23829b3253]  Mark Michelson <mmichelson@digium.com>
+         Added .pyc and .sha1 to the top-level .gitignore.
 
-       * res_stasis_device_state: Fix refcounting error.
+         Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         Device state subscription lifetimes were governed by when the
-         subscription was established and unsubscribed from. However, it is
-         possible that at the time of unsubscription, there could be device state
-         events still in flight. When those device state events occur, the device
-         state callback could attempt to dereference a freed pointer. Crash.
+2015-04-14 13:16 +0000 [abd56db3e0]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-         This change ensures that the lifetime of the device state subscription
-         does not end until the underlying stasis subscription has confirmed that
-         its final message has been sent.
+       * cel_pgsql: Fix name string for log on unable allocate memory.
 
-         Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2
+         The LOG_ERROR has reference to CDR instead of CEL  for LENGTHEN_BUF1 and
+         LENGTHEN_BUF2.
 
-2016-01-27 10:44 +0000 [4e8e6d3922]  Sean Bright <sean.bright@gmail.com>
+         ASTERISK-24965 #close
+         Reported by: Rodrigo Ramirez Norambuena
 
-       * res_rtp_asterisk: Allow ICE host candidates to be overriden
+         Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744
+2015-04-14 13:48 +0000 [222fbe1d9a]  Corey Farrell <git@cfware.com>
 
-         During ICE negotiation the IPs of the local interfaces are sent to the remote
-         peer as host candidates. In many cases Asterisk is behind a static one-to-one
-         NAT, so these host addresses will be internal IP addresses.
+       * Build System: Replace comment about setting menuselect defaults.
 
-         To help in hiding the topology of the internal network, this patch adds the
-         ability to override the host candidates by matching them against a
-         user-defined list of replacements.
+         The Makefile claims that you can set default menuselect options by creating
+         ~/.asterisk.makeopts or /etc/asterisk.makeopts, but those files have never
+         been respected in Asterisk 11 or 13.  This changes the comment to accurately
+         reflect that these files are not automatically used by the build system.
 
-         Change-Id: I1c9541af97b83a4c690c8150d19bf7202c8bff1f
+         ASTERISK-13721 #close
+         Reported by: pj
 
-2015-12-07 12:46 +0000 [c6b1b2b1c8]  Richard Mudgett <rmudgett@digium.com>
+         Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2
 
-       * AST-2016-003 udptl.c: Fix uninitialized values.
+2015-04-12 09:08 +0000 [07e729cc7b]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
 
-         Sending UDPTL packets to Asterisk with the right amount of missing
-         sequence numbers and enough redundant 0-length IFP packets, can make
-         Asterisk crash.
+       * cdr_pgsql: Fix CLI "cdr show pgsql status" command.
 
-         ASTERISK-25603 #close
-         Reported by: Walter Doekes
+         The command always showed the usage information.
 
-         ASTERISK-25742 #close
-         Reported by: Torrey Searle
+         * Fix the error in command validation for CLI_SHOWUSAGE.
 
-         Change-Id: I97df8375041be986f3f266ac1946a538023a5255
-2016-02-03 12:05 +0000 [f8acadde2c]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-24959 #close
+         Reported by: Rodrigo Ramirez Norambuena
 
-       * AST-2016-001 http: Provide greater control of TLS and set modern defaults.
+         Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5
+         (cherry picked from commit 23a180cade51e84b9def65b05759c3cb9feba225)
 
-         This change exposes the configuration of various aspects of the TLS
-         support and sets the default to the modern standards.
+2015-04-13 19:06 +0000 [7d43d85bea]  gtjoseph <george.joseph@fairview5.com>
 
-         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.
+       * .gitignore updates for master/13
 
-         ASTERISK-24972 #close
+         Added products of ./bootstrap
 
-         Change-Id: I0a10f2883f7559af5e48dee0901251dbf30d45b8
-2015-09-28 17:07 +0000 [3c81a052c8]  Richard Mudgett <rmudgett@digium.com>
+         Added nmenuselect and gmenuselect to menuselect/
 
-       * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow.
+         Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35
 
-         Setting the sip.conf timert1 value to a value higher than 1245 can cause
-         an integer overflow and result in large retransmit timeout times.  These
-         large timeout times hold system file descriptors hostage and can cause the
-         system to run out of file descriptors.
+2015-04-13 14:41 +0000 [3d27c223a5]  David M. Lee <dlee@respoke.io>
 
-         NOTE: The default sip.conf timert1 value is 500 which does not expose the
-         vulnerability.
+       * Fixing extconf compile
 
-         * The overflow is now detected and the previous timeout time is
-         calculated.
+         During the mass code deletion for clang support, a stray backslash was
+         left behind that was causing utils to fail to compile.
 
-         ASTERISK-25397 #close
-         Reported by: Alexander Traud
+         Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1
 
-         Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290
-2016-02-03 14:07 +0000 [2a6ee8caeb]  gtjoseph <george.joseph@fairview5.com>
+2015-04-13 09:54 +0000 [e996d8f728]  Matt Jordan <mjordan@digium.com>
 
-       * logging: Remove/fix some message annoyances
+       * build_tools/make_version: Update version parsing for Git migration
 
-         test_dlinklists doesn't need to NOTICE everyone that every macro worked.
+         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.
 
-         res_phoneprov doesn't need to VERBOSE everyone that a phoneprov extension or
-         provider was registered.
+         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.
 
-         res_odbc was missing a newline at the end of one message.
+         ASTERISK-24954 #close
 
-         Change-Id: I6c06361518ef3711821795e535acd439782a995e
+         Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799
 
-2016-02-02 10:52 +0000 [32fc784284]  Alexei Gradinari License #5691
+2015-04-12 12:59 +0000 [d1a6f1a9f9]  Matt Jordan <mjordan@digium.com>
 
-       * res_sorcery_realtime: Fix regex regression.
+       * git migration: Remove support for file versions
 
-         A regression was introduced where searching for realtime PJSIP objects
-         by regex by starting the regex with a leading "^" would cause no items
-         to be returned.
+         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.
 
-         This was due to a change which attempted to drop the requirement for a
-         leading "^" to be present due to how some CLI commands formulate their
-         regexes. However, the change, rather than simply eliminating the
-         requirement, caused any regexes that did begin with "^" to end up not
-         returning the expected results.
+         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.
 
-         This change fixes the problem by inspecting the regex and formulating
-         the realtime query differently depending on if it begins with "^".
+         * main/manager: The Version key now always reports the Asterisk version.
 
-         ASTERISK-25702 #close
-         Reported by Nic Colledge
+         * UPGRADE: Add notes for:
+           - Modification to the ModuleCheck AMI Action.
+           - Modification of the "core show file version" CLI command.
 
-         Patches:
-             realtime_retrieve_regex.patch submitted by Alexei Gradinari License #5691
+         Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28
 
-         Change-Id: I055df608a6e6a10732044fa737a9fe8dca602693
+2015-04-13 06:19 +0000 [0e4b997cd7]  Corey Farrell <git@cfware.com>
 
-2016-02-02 04:05 +0000 [0405c31756]  Karsten Wemheuer <kwe-digium@iptam.com>
+       * res_monitor: Add dependency on func_periodic_hook.
 
-       * res_xmpp: Does not connect in component mode
+         OPTIONAL_API has conditionals to define AST_OPTIONAL_API and
+         AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined.
+         Unfortunately this is inside the include protection block, so only the
+         first status of AST_API_MODULE is respected.  For example res_monitor
+         is an optional API provider, but uses func_periodic_hook.  This makes
+         func_periodic_hook non-optional to res_monitor.
 
-         The module res_xmpp does not accept usernames in the form used in component
-         mode (XEP-0114). In component mode there is no @something in the name.
-         In component mode the connection is now not dropped anymore.
+         ASTERISK-17608 #close
+         Reported by: Warren Selby
 
-         If the xmpp server sends out a "stream" tag before handshake is finished,
-         the connection gets dropped in res_xmpp. Now this tag will be ignored and
-         the connection will be established.
+         Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679
 
-         After connecting there will be an exchange of presence states. This does
-         not work as expected in component mode. The responsible function
-         "xmpp_pak_presence" is left before the states get sent out. Sending
-         presence states in component mode is now moved to the top of the function.
+2015-04-12 06:12 +0000 [a77c31b99c]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-25735 #close
+       * main/editline: Add .gitignore.
 
-         Change-Id: I70e036f931c3124ebb2ad1e56f93ed35cfdd9d5c
-2016-02-01 13:04 +0000 [8804d0973c]  gtjoseph <george.joseph@fairview5.com>
+         This patch adds a .gitignore for main/editline to ignore all build results.
 
-       * build_system:  Fix some warnings highlighted by clang
+         Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d
 
-         Fix some warnings found with clang.
+2015-04-11 23:22 +0000 [d918c3b78e]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I5195b6189b148c2ee3ed4a19d015a6d4ef3e77bd
+       * .gitignore: Ignore tarballs (*.gz)
 
-2016-02-01 13:16 +0000 [109b0aff6b]  gtjoseph <george.joseph@fairview5.com>
+         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.
 
-       * res/Makefile: Fix bug in "clean" target for ari
+         Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa
 
-         The "clean" target was attempting to clean res/ari from inside
-         the res directory which doesn't remove anything.  Removed the res/
-         prefix.
+2015-04-11 13:20 +0000 [555b5f5d30]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Ib1a518d54efa81b9fd5a42742d43cc3767435bf6
+       * Add .gitignore and .gitreview files
 
-2016-01-31 20:13 +0000 [a85fab7c44]  gtjoseph <george.joseph@fairview5.com>
+         Add the .gitignore and .gitreview files to the asterisk repo.
 
-       * pjsip/alembic: Fix definition of qualify_timeout
+         NB:  You can add local ignores to the .git/info/exclude file
+         without having to do a commit.
 
-         A recent commit set qualify_timeout to Decimal which isn't supported.
-         This path corrects it to Float.
+         Common ignore patterns are in the top-level .gitignore file.
+         Subdirectory-specific ignore patterns are in their own .gitignore
+         files.
 
-         Change-Id: I038f5274ba8cb60f8518a5845ce448d49306aadf
+         Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696
+         Tested-by: George Joseph
 
-2016-01-29 07:39 +0000 [aa9348ab9a]  Stefan Engström <stefanen@kth.se>
+2015-04-11 10:35 +0000 [5807ca519c]  Matt Jordan <mjordan@digium.com>
 
-       * chan_sip.c: AMI & CLI notify methods get different values of asterisk's own ip.
+       * Blocked revisions 434708
 
-         When I ask asterisk to send a SIP NOTIFY message to a sip peer using either a)
-         AMI action: SIPnotify or b) cli command: sip notify <cmd> <peer>, I expect
-         asterisk to include the same value for its own ip in both cases a) and b),
-         but it seems a) produces a contact header like Contact:
-         <sip:asterisk@192.168.1.227:8060> whereas b) produces a contact header like
-         <sip:asterisk@127.0.0.1:8060>. 0.0.0.0:8060 is my udpbindaddr in sip.conf
+         ........
+         main/event: Remove unnecessary assignment of negative value to enum
 
-         My guess is that manager_sipnotify should call
-         ast_sip_ouraddrfor(&p->sa, &p->ourip, p) the same way sip_cli_notify does,
-         because after applying this patch, both cases a) and b) produce
-         the contact header that I expect: <sip:asterisk@192.168.1.227:8060>
+         When cleaning up some clang compiler warnings, the comparison of a negative
+         value to an unsigned enum was removed. However, the initial assignment of a
+         negative value to said enum remained in the variable declaration. This patch
+         removes that assignment.
 
-         Reported by: Stefan Engström
-         Tested by: Stefan Engström
+         Thanks to ibercom in #asterisk-bugs for pointing it out.
 
-         Change-Id: I86af5e209db64aab82c25417de6c768fb645f476
-2015-12-23 15:07 +0000 [65bd4fcc3f]  Mark Michelson <mmichelson@digium.com>
 
-       * res_odbc: Remove connection management
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Asterisk by default will create a single database connection and share
-         it among all threads that attempt to access the database. In previous
-         versions of Asterisk, this was tolerable, because the most used channel
-         driver, chan_sip, mostly accessed the database from a single thread.
-         With PJSIP, however, many threads may be attempting to perform database
-         operations, and there is the potential for many more database accesses,
-         meaning the concurrency is a horrible bottleneck if only one connection
-         is shared.
+2015-04-11 10:26 +0000 [d0d78d5732]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Asterisk has a connection pooling facility built into it, but the
-         implementation has flaws. For one, there is a strict limit on the number
-         of simultaneous connections that could be made to the database. Anything
-         beyond the maximum would result in a failed operation. Attempting to
-         predict what the maximum should be is nearly impossible even for someone
-         intimately familiar with Asterisk's threading model. In addition, use of
-         transactions in the dialplan can cause some severe bugs if connection
-         pooling is enabled.
+       * clang compiler warnings: Fix various warnings for tests
 
-         This commit seeks to fix the concurrency problem by removing all
-         connection management code from Asterisk and leaving that to the
-         underlying unixODBC code instead. Now, Asterisk does not share a single
-         connection, nor does it try to maintain a connection pool. Instead, all
-         Asterisk ever does is request a connection from unixODBC and allow
-         unixODBC to either allocate those connections or retrieve them from a
-         pool.
+         This patch fixes a variety of clang compiler warnings for unit tests. This
+         includes autological comparison issues, ignored return values, and
+         interestingly enough, one embedded function. Fun!
 
-         Doing this has a bit of a ripple effect. For one, since connections are
-         not long-lived objects, several of the safeguards that previously
-         existed have been removed. We don't have to worry about trying to use a
-         connection that has gone stale. In every case, when we request a
-         connection, it has just been made and we don't need to perform any
-         sanity checks to be sure it's still active.
+         Review: https://reviewboard.asterisk.org/r/4555
 
-         Another major player affected by this change is transactions.
-         Transactions and their respective connections were so tightly coupled
-         that it was almost pornographic. This code change moves
-         transaction-related code to its own file separate from the core ODBC
-         functionality. This way, the core of ODBC does not even have to know
-         that transactions exist.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4555.patch submitted by dkdegroot (License 6600)
+         ........
 
-         In making this large change, I had to look at a lot of code and
-         understand it. When making this change, I discovered several places
-         where the behavior is definitely not ideal, but it seemed outside the
-         scope of this change to be fixing it. Instead, any place where I saw
-         some sort of room for improvement has had a XXX comment added explaining
-         what could be altered to improve it.
+         Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I37a84def5ea4ddf93868ce8105f39de078297fbf
 
-2016-01-28 12:44 +0000 [2a9e623ff9]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * config_options.c: Fix warning message wording.
+2015-04-11 10:10 +0000 [4cf7d0bf01]  Juergen Spies (License 6698)
 
-         Change-Id: I915ea437936320393afde0e7552cf0a980a6b2e4
+       * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram
 
-2016-01-25 17:34 +0000 [ed3c9c1512]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * app_confbridge.c: Replace inlined code with existing function.
+         Review: https://reviewboard.asterisk.org/r/4589
 
-         Change-Id: Ida5594e9f8d7c1fc18eeb733a11f8fb96326da51
+         ASTERISK-24928 #close
+         Reported by: Juergen Spies
+         Tested by: Juergen Spies
+         patches:
+           pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698)
 
-2016-01-25 16:05 +0000 [1d0abf86e7]  Richard Mudgett <rmudgett@digium.com>
 
-       * app_confbridge: Add ability to get the muted conference state.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Added CONFBRIDGE_INFO(muted,) for querying the muted conference state.
+2015-04-10 18:29 +0000 [13cd99682d]  Richard Mudgett <rmudgett@digium.com>
 
-         * Added Muted header to AMI ConfbridgeListRooms action response list
-         events to indicate the muted conference state.
+       * chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices.
 
-         * Added Muted column to CLI "confbridge list" output to indicate the muted
-         conference state and made the locked column a yes/no value instead of a
-         locked/unlocked value.
+         With this patch, chan_pjsip/res_pjsip now sets the native formats to the
+         codecs negotiated by a call.
 
-         ASTERISK-20987
-         Reported by: hristo
+         * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native
+         formats to include all the negotiated audio codecs instead of only the
+         initial preferred audio codec and later the currently received audio
+         codec.
 
-         Change-Id: I4076bd8ea1c23a3afd4f5833e9291b49a0c448b1
+         * The audio frame handling in channel.c:ast_read() is more streamlined and
+         will automatically adjust to changes in received frame formats.  The new
+         policy is to remove translation and pass the new frame format to the
+         receiver except if the translation was to a signed linear format.  A more
+         long winded version is commented in ast_read() along with some caveats.
+
+         * The audio frame handling in channel.c:ast_write() is more streamlined
+         and will automatically adjust any needed translation to changes in the
+         frame formats sent.  Frame formats sent can change for many reasons such
+         as a recording is being played back or the bridged peer changed the format
+         it sends.  Since it is a normal expectation that sent formats can change,
+         the codec mismatch warning message is demoted to a debug message.
 
-2016-01-26 17:59 +0000 [f0d40afa69]  Richard Mudgett <rmudgett@digium.com>
+         * Removed the short circuit check in
+         channel.c:ast_channel_make_compatible_helper().  Two party bridges need to
+         make channels compatible with each other.  However, transfers and moving
+         channels among bridges can result in otherwise compatible channels having
+         sub-optimal translation paths if the make compatible check is short
+         circuited.  A result of forcing the reevaluation of channel compatibility
+         is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc
+         options take effect consistently now.  It is unfortunate that these two
+         options are enabled by default and negate some of the benefits to the
+         changes in channel.c:ast_read() by forcing translation through signed
+         linear on a two party bridge.
 
-       * app_confbridge.c: Update CONFBRIDGE and CONFBRIDGE_INFO documentation.
+         * Improved the softmix bridge technology to better control the translation
+         of frames to the bridge.  All of the incoming translation is now normally
+         handled by ast_read() instead of splitting any translation steps between
+         ast_read() and the slin factory.  If any frame comes in with an unexpected
+         format then the translation path in ast_read() is updated for the next
+         frame and the slin factory handles the current frame translation.
 
-         Change-Id: Ic1f9e22ba1f2ff3b3f5cb017c5ddcd9bd48eccc7
+         This is the final patch in a series of patches aimed at improving
+         translation path choices.  The other patches are on the following reviews:
+         https://reviewboard.asterisk.org/r/4600/
+         https://reviewboard.asterisk.org/r/4605/
 
-2016-01-25 15:48 +0000 [3e51e5c7fd]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24841 #close
+         Reported by: Matt Jordan
 
-       * app_confbridge: Make non-admin users join a muted conference muted.
+         Review: https://reviewboard.asterisk.org/r/4609/
 
-         ASTERISK-20987 #close
-         Reported by: hristo
 
-         Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434671 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-27 13:02 +0000 [9da18af992]  gtjoseph <george.joseph@fairview5.com>
+2015-04-10 16:03 +0000 [af458e2e60]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip:  Add res_pjproject dependency to UPGRADE.txt and samples
+       * chan_sip: make progressinband default to no
 
-         Since res_pjsip now depends on res_pjproject, this is now mentioned
-         in UPGRADE.txt and the basic-pbx modules.conf has been updated.
+         After the "progressinband" value setting of "never" was updated to never send a
+         183 this separated its use from the "no" value. Since "never" was the default,
+         but most users probably expect "no" this patch updates the default for the
+         "progressinband" setting to "no."
 
-         Change-Id: I42826597d5e10f08e518208860c44c96e52f1b2d
-2016-01-27 10:29 +0000 [aee8448bc2]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-24835 #close
+         Reported by: Andrew Nagy
+         Review: https://reviewboard.asterisk.org/r/4606/
 
-       * build_system: Prevent goals needing makeopts from running when it's missing
 
-         The Makefile only optionally includes makeopts so when goals like uninstall that
-         dont depend on anything else are run after a distclean, rules like
-         'rm -f "$(DESTDIR)$(ASTMODDIR)/"*' get run as 'rm -f ""/*' which attempts
-         to remove everything in the root directory.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434654 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Although there's a rule defined for makeopts which prints a message and does
-         an 'exit 1', since '-include makepopts' was specified (with the -), the exit
-         was ignored letting the rest of the rules run.
+2015-04-10 12:53 +0000 [88b0fa7755]  yaron nahum (License 6676)
 
-         This patch makes makeopts required unless the goal has the string 'clean' in it.
+       * res_pjsip: Add an 'auto' option for DTMF Mode
 
-         ASTERISK-25730 #close
-         Reported-by: George Joseph
+         This patch adds support for automatically detecting the type of DTMF that a
+         PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto',
+         the channel created for an endpoint will attempt to determine if RFC 4733
+         DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type
+         for the channel will be set to inband.
 
-         Change-Id: I1bce59a7ea4f48e7a468e22b2abbb13c63417ac7
+         Review: https://reviewboard.asterisk.org/r/4438
 
-2016-01-25 09:35 +0000 [f22074e5d9]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-24706 #close
+         Reported by: yaron nahum
+         patches:
+           yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676)
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         If it is expected that a config option has a non-zero or non-empty
-         default value but the config option documentation is unavailable
-         this reasonable expectation will not be met. This can cause obscure
-         crashes and weirdness depending on how the code handles it.
+2015-04-10 11:59 +0000 [16afee4651]  gtjoseph <george.joseph@fairview5.com>
 
-         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.
+       * res_pjsip_config_wizard: Cleanup load unload
 
-         This also does not remove the initial documentation error message that
-         is output on load when registering the configuration option.
+         While investigating other unload issues I realized that the load/unload process 
+         for the config wizard was pretty ugly so I've refactored it as follows...
 
-         ASTERISK-25725 #close
+         When the res_pjsip sorcery instance is created the config_wizard bumps it's own 
+         module reference to prevent it from unloading while the sorcery instance is 
+         still active.  When res_pjsip unloads and it's sorcery instance is destroyed, 
+         the config wizard unrefs itself which then allows itself to unload cleanly.  
+         Since the config wizard now can't load after res_pjsip or unload before it 
+         (which should have been the correct behavior all along), I was able to remove 
+         the chunks of code in both load_module and unload_module that handled that case.
 
-         Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8
+         Ran the testsuite tests to insure there were no functional changes and REF_DEBUG 
+         to insure that Asterisk was shutting down cleanly with no FRACKs or leaks.
 
-2016-01-25 10:23 +0000 [4a3275abb9]  Mark Michelson <mmichelson@digium.com>
+         Tested-by: George Joseph
+         Review: https://reviewboard.asterisk.org/r/4610/
 
-       * Stasis: Use custom structure when setting variables.
 
-         A recent change to queue channel variable setting to the Stasis control
-         queue caused a regression. When setting channel variables, it is
-         possible to give a NULL channel variable value in order to unset the
-         variable (i.e. remove it from the channel variable list). The change
-         introduced a call to ast_variable_new(), which is not tolerant of NULL
-         channel variable values.
 
-         This new change switches from using ast_variable to using a custom
-         channel variable struct that is lighter weight and NULL value-tolerant.
 
-         Change-Id: I784d7beaaa3c036ea936d103e7caf0bb1562162d
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-25 16:56 +0000 [b2c8a99f9e]  Rusty Newton <rnewton@digium.com>
+2015-04-10 11:37 +0000 [125acc52fe]  Richard Mudgett <rmudgett@digium.com>
 
-       * sounds/Makefile: Incremented core and extra sounds versions to 1.5
+       * bridge_softmix.c,channel.c: Minor code simplification and cleanup.
 
-         Core and extra sounds 1.5 was recently released! The tarballs contain
-         change descriptions however I figure more people will see this one so
-         I'll try to be a bit detailed. Approximately 60 sounds were moved from Extra
-         to Core for en, en_GB, fr and added for languages that didn't already
-         have Extra sound sets (it,ja,ru).
+         * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats()
+         and made some debug messages more helpful.
 
-         In addition all of the English and Russian sounds have been completely
-         re-recorded.
+         * Made some debug and warning messages more helpful in
+         channel.c:set_format().
 
-         Sounds moved and added:
-         activated,added,all-circuits-busy-now,astcc-followed-by-pound
-         at-tone-time-exactly,call-forwarding,call-fwd-no-ans,call-fwd-on-busy
-         ,call-fwd-unconditional,calling,call-waiting,cancelled,
-         cannot-complete-as-dialed,check-number-dial-again,conf-full,de-activated
-         ,disabled,do-not-disturb,enabled,enter-num-blacklist,entr-num-rmv-blklist
-         ,extension,feature-not-avail-line,for,from-unknown-caller,goodbye,hello
-         ,if-correct-press,im-sorry,info-about-last-call,is,is-in-use,is-set-to
-         ,location,number,number-not-answering,num-was-successfully,one-moment-please
-         ,please-try-again,pls-hold-while-try,pls-try-call-later,pm-invalid-option
-         ,privacy-to-blacklist-last-caller,removed,simul-call-limit-reached
-         ,something-terribly-wrong,sorry,sorry-youre-having-problems,speed-dial
-         ,speed-dial-empty,telephone-number,time,to-call-this-number,to-extension
-         ,to-listen-to-it,to-rerecord-it,unidentified-no-callback,with,you-entered
-         ,your
+         Review: https://reviewboard.asterisk.org/r/4607/
 
-         There were also a few random fixes here and there to file names for a few
-         of the languages.
 
-         ASTERISK-25068 #close
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434617 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I2b594344ec585d7dfd922b40c1af43b1508828b3
-2016-01-25 16:51 +0000 [8261bda1bf]  Mark Michelson <mmichelson@digium.com>
+2015-04-10 11:28 +0000 [a63f7ad04a]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription.
+       * translate.c: Only select audio codecs to determine the best translation choice.
 
-         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.
+         Given a source capability of h264 and ulaw, a destination capability of
+         h264 and g722 then ast_translator_best_choice() would pick h264 as the
+         best choice even though h264 is a video codec and Asterisk only supports
+         translation of audio codecs.  When the audio starts flowing, there are
+         warnings about a codec mismatch when the channel tries to write a frame to
+         the peer.
 
-         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.
+         * Made ast_translator_best_choice() only select audio codecs.
 
-         Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23
+         * Restore a check in channel.c:set_format() lost after v1.8 to prevent
+         trying to set a non-audio codec.
 
-2016-01-25 11:03 +0000 [a6823bb0c4]  Corey Farrell <git@cfware.com>
+         This is an intermediate patch for a series of patches aimed at improving
+         translation path choices for ASTERISK-24841.
 
-       * chan_sip: Fix buffer overrun in sip_sipredirect.
+         This patch is a complete enough fix for ASTERISK-21777 as the v11 version
+         of ast_translator_best_choice() does the same thing.  However, chan_sip.c
+         still somehow tries to call ast_codec_choose() which then calls
+         ast_best_codec() with a capability set that doesn't contain any audio
+         formats for the incoming call.  The remaining warning message seems to be
+         a benign transient.
 
-         sip_sipredirect uses sscanf to copy up to 256 characters to a stacked buffer
-         of 256 characters.  This patch reduces the copy to 255 characters to leave
-         room for the string null terminator.
+         ASTERISK-21777 #close
+         Reported by: Nick Ruggles
 
-         ASTERISK-25722 #close
+         ASTERISK-24380 #close
+         Reported by: Matt Jordan
 
-         Change-Id: Id6c3a629a609e94153287512c59aa1923e8a03ab
+         Review: https://reviewboard.asterisk.org/r/4605/
+         ........
 
-2016-01-22 15:08 +0000 [1003c2eb05]  Mark Michelson <mmichelson@digium.com>
+         Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * Stasis: Fix potential memory leak of control data.
 
-         When queuing tasks onto the Stasis control queue, you can pass an
-         arbitrary data pointer and a function to free that data. All ARI
-         commands that use the Stasis control queue made the assumption that the
-         destructor function would be called in all paths, whether the task was
-         queued successfully or not. However, this was not correct. If a task was
-         queued onto a control structure that was already completed, the
-         allocated data would not be freed properly.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434615 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch corrects this by making sure that all return paths call the
-         data destructor.
+2015-04-10 09:55 +0000 [c9791dba1f]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: Ibf06522094f8e5c4cce652537dc5d7222b1c4fcb
+       * res/ari: Fix model validation for ChannelHold event
 
-2016-01-21 10:58 +0000 [eedd77fda0]  Mark Michelson <mmichelson@digium.com>
+         When the ChannelHold event was added, the 'musicclass' parameter was
+         erroneously removed. This caused the ChannelHold events to be rejected as
+         they failed model validation. This patch updates the Swagger schema such that
+         it now properly reflects the event that is being created.
 
-       * Stasis: Use control queue to prevent crash.
+         Hooray for tests that catch things like this.
 
-         A crash occurred when attempting to set a channel variable on a channel
-         that had already been hung up. This is because there is a small window
-         between when a control is grabbed and when the channel variable is set
-         that the channel can be hung up.
 
-         The fix here is to queue the setting of the channel variable onto the
-         control queue. This way, the manipulation of the channel happens in a
-         thread where it is safe to be done.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         In this change, I also noticed that the setting of bridge roles on
-         channels was being done outside of the control queue, so I also changed
-         those operations to be done in the control queue.
+2015-04-10 07:39 +0000 [c39faa4729]  Y Ateya (License 6693)
 
-         ASTERISK-25709 #close
-         Reported by Mark Michelson
+       * channels/chan_iax2: Improve POKE expiration time calculation for lossy networks
 
-         Change-Id: I2a0a4d51bce6fba6f1d9954e40935e42f366ea78
+         POKE is used to check for peer availability; however, in networks with packet
+         loss, the current calculations may result in POKE expiration times that are too
+         short. This patch alters the expiration/retry time logic to take into account
+         the last known qualify round trip time, as opposed to always using a static
+         value for each peer.
 
-2016-01-22 11:48 +0000 [1c95b211a0]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4536
 
-       * logger.c: Fix buffer overrun found by address sanitizer.
+         ASTERISK-22352 #close
+         Reported by: Frederic Van Espen
 
-         The null terminator of the tail struct member was not being allocated
-         when no logger.conf config file is installed.
+         ASTERISK-24894 #close
+         Reported by: Y Ateya
+         patches:
+           poke_noanswer_duration.diff submitted by Y Ateya (License 6693)
+         ........
 
-         ASTERISK-25714 #close
-         Reported by: Badalian Vyacheslav
+         Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I45770fdd08af39506a3bc33ba279c4f16e047a30
 
-2016-01-21 16:40 +0000 [6ff945ab87]  Corey Farrell <git@cfware.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * Build System: Add support for checking alembic branches.
+2015-04-09 17:35 +0000 [75c2c85962]  gtjoseph <george.joseph@fairview5.com>
 
-         * Add 'check-alembic' target to root Makefile.
-         * Create build_tools/make_check_alembic to do the actual checks.
+       * res_pjsip_phoneprov_provider: Fix reference leak on unload
 
-         ASTERISK-25685
+         res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to 
+         a missing OBJ_NODATA in an ao2_callback in load_users().  Rather than adding the 
+         OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator.  
+         This plugged the leak but exposed an unload order issue between 
+         res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip.
 
-         Change-Id: Ibb3cae7d1202ac23dc70b0f3b5801571ad46b004
+         res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip.  
+         Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it 
+         unloads, it's objects are still in the sorcery instance.  When res_pjsip 
+         unloads, it destroys all its objects including res_pjsip_phoneprov_provider's.  
+         The phoneprov destructor then attempts to unregister the extension from 
+         res_phoneprov but because res_phoneprov is already cleaned up, its users 
+         container is gone and we get a FRACK.
 
-2016-01-19 18:20 +0000 [02035212de]  Richard Mudgett <rmudgett@digium.com>
+         Simple solution, check for the NULL users container before attempting to remove 
+         the entry. Duh.
 
-       * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case.
+         Ran tests/res_phoneprov/res_phoneprov_provider.  No leaks in 
+         res_pjsip_phoneprov_provider and no FRACKs.
 
-         ASTERISK-25712 #close
-         Reported by: Richard Mudgett
+         Reported-by: Corey Farrell
+         Tested-by: George Joseph
+         Review: https://reviewboard.asterisk.org/r/4608/
+         ASTERISK-24935 #close
 
-         Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f
 
-2016-01-18 03:49 +0000 [c68c66c61f]  Diederik de Groot <ddegroot@talon.nl>
 
-       * main/asterisk.c: ast_el_read_char
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434545 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Make sure buf[res] is not accessed at res=-1 (buffer underrun).
-         Address Sanitizer will complain about this quite loudly.
+2015-04-09 17:31 +0000 [73c286a393]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-24801 #close
+       * loader/main: Don't set ast_fully_booted until deferred reloads are processed
 
-         Change-Id: Ifcd7f691310815a31756b76067c56fba299d3ae9
+         Until we have a true module management facility it's sometimes necessary for one 
+         module to force a reload on another before its own load is complete.  If 
+         Asterisk isn't fully booted yet, these reloads are deferred.  The problem is 
+         that asterisk reports fully booted before processing the deferred reloads which 
+         means Asterisk really isn't quite ready when it says it is.
 
-2016-01-13 16:49 +0000 [f87c3275cc]  Richard Mudgett <rmudgett@digium.com>
+         This patch moves the report of fully booted after the processing of the deferred 
+         reloads is complete.
 
-       * res_pjsip: Add CLI "pjsip dump endpt [details]"
+         Since the pjsip stack has the most number of related modules, I ran the 
+         channels/pjsip testsuite to make sure there aren't any issues.  All tests 
+         passed.
 
-         Dump the res_pjsip endpt internals.
+         Tested-by: George Joseph
+         Review: https://reviewboard.asterisk.org/r/4604/
 
-         In non-developer mode we will not document or make easily accessible the
-         "details" option even though it is still available.  The user has to know
-         it exists to use it.  Presumably they would also be aware of the potential
-         crash warning below.
 
-         Warning: PJPROJECT documents that the function used by this CLI command
-         may cause a crash when asking for details because it tries to access all
-         active memory pools.
 
-         Change-Id: If2d98a3641c9873364d1daaad971376311aef3cb
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434544 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-18 17:16 +0000 [46b2de55f9]  Matt Jordan <mjordan@digium.com>
+2015-04-09 17:03 +0000 [5737650a67]  Kevin Harwell <kharwell@digium.com>
 
-       * funcs/func_cdr: Correctly report high precision values for duration and billsec
+       * res_pjsip: add CLI command to show global and system configuration
 
-         When CDRs were refactored, func_cdr's ability to report high precision values
-         for duration and billsec (the 'f' option) was broken. This was due to func_cdr
-         incorrectly interpreting the duration/billsec values provided by the CDR engine
-         in milliseconds, as opposed to seconds. Since the CDR engine only provides
-         duration and billsec in seconds, and does not expose either attribute with
-         sufficient precision to merely pass back the underlying value, this patch fixes
-         the bug by re-calculating duration and billsec with microsecond precision based
-         on the start/answer/end times on the CDR.
+         Added a new CLI command for res_pjsip that shows both global and system
+         configuration settings: pjsip show settings
 
-         ASTERISK-25179 #close
+         ASTERISK-24918 #close
+         Reported by: Scott Griepentrog
+         Review: https://reviewboard.asterisk.org/r/4597/
 
-         Change-Id: I8bc63822b496537a5bf80baf6102c06206bee841
 
-2016-01-18 19:20 +0000 [137fe5ae01]  gtjoseph <george.joseph@fairview5.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjproject:  Add module providing pjproject logging and utils
+2015-04-09 11:07 +0000 [1695a5b85f]  Richard Mudgett <rmudgett@digium.com>
 
-         res_pjsip_log_forwarder has been renamed to res_pjproject
-         and enhanced as follows:
+       * chan_iax2.c: Fix ref leak in iax2_request().
 
-         As a follow-on to the recent 'Add CLI "pjsip show buildopts"' patch,
-         a new ast_pjproject_get_buildopt function has been added.  It
-         allows the caller to get the value of one of the buildopts.
+         * Increased warning message format capability string buffer size in
+         iax2_request().
 
-         The initial use case is retrieving the runtime value of
-         PJ_MAX_HOSTNAME to insure we don't send a hostname greater
-         than pjproject can handle.  Since it can differ between
-         the version of pjproject that Asterisk was compiled against
-         and the version of pjproject that Asterisk is running against,
-         we can't use the PJ_MAX_HOSTNAME macro directly in Asterisk
-         source code.
+         Review: https://reviewboard.asterisk.org/r/4601/
 
-         Change-Id: Iab6e82fec3d7cf00c1cf6185c42be3e7569dee1e
 
-2016-01-19 17:15 +0000 [b5c13c1545]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * test_threadpool: Wait for each task to complete and fix memory leak.
+2015-04-09 10:54 +0000 [92c1688edb]  Richard Mudgett <rmudgett@digium.com>
 
-         This change makes the thread_timeout_thrash unit test wait for
-         each task to complete. This fixes the problem where the test would
-         prematurely end when all threads were gone and a new one had to be
-         started to handle the last task. It also increases the thrasing as
-         it is now more likely for each task to encounter the above scenario.
+       * bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible().
 
-         This also fixes a memory leak where the data for each task was not
-         being freed.
+         Review: https://reviewboard.asterisk.org/r/4601/
 
-         ASTERISK-25611 #close
 
-         Change-Id: I5017d621a4dc911f509074c16229b86bff2fb3c6
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434508 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-18 19:44 +0000 [0ab89182d9]  Richard Mudgett <rmudgett@digium.com>
+2015-04-09 10:42 +0000 [2679d0100a]  yaron nahum (License 6676)
 
-       * taskprocessor.c: Increase CLI "core ping taskprocessor" timeout.
+       * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests
 
-         Change-Id: I4892d6acbb580d6c207d006341eaf5e0f8f2a029
+         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.
 
-2016-01-18 19:43 +0000 [a2a8ea3330]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24862 #close
+         Reported by: yaron nahum
+         patches:
+           res_pjsip_dlg_options.c submitted by yaron nahum (License 6676)
 
-       * taskprocessor.c: Fix some taskprocessor unrefs.
 
-         You have to call ast_taskprocessor_unref() outside of the taskprocessor
-         implementation code.  Taskprocessor use since v12 has become more
-         transient than just the singleton uses in earlier versions.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434506 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: If7675299924c0cc65f2a43a85254e6f06f2d61bb
+2015-04-09 07:56 +0000 [6ba6e3dffd]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-2016-01-19 13:44 +0000 [d604a9afc8]  Richard Mudgett <rmudgett@digium.com>
+       * clang compiler warnings: Fix autological comparisons
 
-       * Fix alembic branches on v13.
+         This fixes autological comparison warnings in the following:
+          * chan_skinny: letohl may return a signed or unsigned value, depending on the
+            macro chosen
+          * func_curl: Provide a specific cast to CURLoption to prevent mismatch
+          * cel: Fix enum comparisons where the enum can never be negative
+          * enum: Fix comparison of return result of dn_expand, which returns a signed
+            int value
+          * event: Fix enum comparisons where the enum can never be negative
+          * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be
+            negative
+          * presencestate: Use the actual enum value for INVALID state
+          * security_events: Fix enum comparisons where the enum can never be negative
+          * udptl: Don't bother to check if the return value from encode_length is less
+            than 0, as it returns an unsigned int
+          * translate: Since the parameters are unsigned int, don't bother checking
+            to see if they are negative. The cast to unsigned int would already blow
+            past the matrix bounds.
+          * res_pjsip_exten_state: Use a temporary value to cache the return of
+            ast_hint_presence_state
+          * res_stasis_playback: Fix enum comparisons where the enum can never be
+            negative
+          * res_stasis_recording: Add an enum value for the case where the recording
+            operation is in error; fix enum comparisons
+          * resource_bridges: Use enum value as opposed to -1
+          * resource_channels: Use enum value as opposed to -1
 
-         Change-Id: I313449b609ede18ad1e1763a655dd23b9210a8e0
+         Review: https://reviewboard.asterisk.org/r/4533
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4533.patch submitted by dkdegroot (License 6600)
+         ........
 
-2016-01-18 18:45 +0000 [a0c79f3a4f]  gtjoseph <george.joseph@fairview5.com>
+         Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * pjsip_loging_refactor: Rename res_pjsip_log_forwarder to res_pjproject
 
-         Change-Id: I5387821f29e5caa0cba0b7d62b0fc0d341e7e20b
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434470 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-14 09:26 +0000 [018ccf680b]  Rusty Newton <rnewton@digium.com>
+2015-04-08 21:05 +0000 [e05c8ae68e]  Stefan Engström (License 6691)
 
-       * func_channel: Add help text for undocumented CHANNEL function arguments
+       * apps/app_queue: Prevent possible crash when evaluating queue penalty rules
 
-         Adding help text documentation for:
-         * hangupsource
-         * appname
-         * appdata
-         * exten
-         * context
-         * channame
-         * uniqueid
-         * linkedid
+         Although it only occurred once, a crash occurred when a queue attempted to
+         evaluate a queue penalty rule that appeared to have already been destroyed.
+         In many locations in app_queue, a test is done to see if qe->pr is NULL;
+         however, when we dispose of a queue's penalty rules, we don't set the pointer
+         to NULL after free'ing it. This patch does that to prevent any dangling
+         pointers from lingering on the queue object.
 
-         ASTERISK-24097 #close
-         Reported by: Steven T. Wheeler
-         Tested by: Rusty Newton
+         Review: https://reviewboard.asterisk.org/r/4522
 
-         Change-Id: Ib94b00568b0433987df87d5b67ea529b5905754d
+         ASTERISK-23319 #close
+         Reported by: Vadim
+         patches:
+           rb4552.patch submitted by Stefan Engström (License 6691)
+         ........
 
-2016-01-16 13:18 +0000 [5644bca9f9]  Daniel Journo <dan@keshercommunications.com>
+         Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * Update version number in features.conf.sample
 
-         Update the version number in the comments from Asterisk 12 to Asterisk 12+
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ie692ac8cda3c993c3bf10f27f51a1cca3317ec7b
+2015-04-08 13:15 +0000 [f21b45db49]  Jonathan Rose <jrose@digium.com>
 
-2016-01-15 19:52 +0000 [3f5f30cf82]  Corey Farrell <git@cfware.com>
+       * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication
 
-       * main/config: Clean config maps on shutdown.
+         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-25700 #close
+         ASTERISK-24933 #close
+         Reported by: Jonathan Rose
+         Review: https://reviewboard.asterisk.org/r/4577/
 
-         Change-Id: I096da84f9c62c6095f68bcf98eac4b7c7868e808
 
-2016-01-14 14:42 +0000 [660fedecb7]  Kevin Harwell <kharwell@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * bridge_basic: don't cache xferfailsound during an attended transfer
+2015-04-08 13:14 +0000 [4441bb6a25]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * Bridging: Eliminate the unnecessary make channel compatible with bridge operation.
 
-         This makes it so the transfer code instead gets the xferfailsound configuration
-         options from the channel when it is actually going to be used.
+         When a channel enters the bridging system it is first made compatible with
+         the bridge and then the bridge technology makes the channel compatible
+         with the technology.  For all but the DAHDI native and softmix bridge
+         technologies the make channel compatible with the bridge step is an
+         effective noop because the other technologies allow all audio formats.
+         For the DAHDI native bridge technology it doesn't matter because it is not
+         an initial bridge technology and chan_dahdi allows only one native format
+         per channel.  For the softmix bridge technology, it is a noop at best and
+         harmful at worst because the wrong translation path could be setup if the
+         channel's native formats allow more than one audio format.
 
-         This patch also fixes a potential memory leak of the props object as well as
-         making sure the condition variable gets initialized before being destroyed.
+         This is an intermediate patch for a series of patches aimed at improving
+         translation path choices.
 
-         ASTERISK-25696 #close
+         * Removed code dealing with the unnecessary step of making the channel
+         compatible with the bridge.
 
-         Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4
+         ASTERISK-24841
+         Reported by: Matt Jordan
 
-2015-07-10 10:37 +0000 [9cda1de34d]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4600/
 
-       * taskprocessor.c: Simplify ast_taskprocessor_get() return code.
 
-         Change-Id: Id5bd18ef1f60ef8be453e677e98478298358a9d1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-13 18:20 +0000 [a79af2b312]  Richard Mudgett <rmudgett@digium.com>
+2015-04-08 11:40 +0000 [f767440906]  Maciej Szmigiero <mail@maciej.szmigiero.name> (license 6085)
 
-       * astmm.c: Add more stats to CLI "memory show" commands.
+       * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN.
 
-         * Add freed regions totals to allocations and summary.
+         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.
 
-         * Add totals for all allocations and not just the selected allocations.
+         ASTERISK-24847 #close
+         Reported by: Maciej Szmigiero
+         Patches:
+          asterisk-null-in-cn.patch submitted by mhej (license 6085)
+         ........
 
-         Change-Id: I61d5a5112617b0733097f2545a3006a344b4032a
+         Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8
+         ........
 
-2016-01-14 16:00 +0000 [83feb7db3b]  Kevin Harwell <kharwell@digium.com>
+         Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * bridge_basic: don't play an attended transfer fail sound after target hangs up
 
-         If the attended transfer destination answers (picks call up or goes to
-         voicemail) and then hangs up on the transferer then transferer hears the
-         fail sound.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch makes it so the fail sound is not played when the transfer
-         destination/target hangs up after answering.
+2015-04-08 11:23 +0000 [1712d16825]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25697 #close
+       * format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear().
 
-         Change-Id: I97f142fe4fc2805d1a24b7c16143069dc03d9ded
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-14 13:22 +0000 [935d641f3b]  Mark Michelson <mmichelson@digium.com>
+2015-04-08 07:33 +0000 [ae39dd1f46]  Matt Jordan <mjordan@digium.com>
 
-       * Remove res/ari/* content during 'make clean'.
+       * chan_iax2: Fix compilation issue due to funky merge
 
-         'make clean' and 'make distclean' can leave behind .o files in the
-         res/ari/ directory. One observed consequence of this is that running
-         Asterisk with MALLOC_DEBUG can cause Asterisk to crash immediately on
-         startup sometimes.
+         Don't mix declarations and code
 
-         By ensuring that we are making a clean build, we can be sure that stale
-         files are not being included in the build and causing problems when
-         build options should have caused files to be re-built.
 
-         ASTERISK-25683 #close
-         Reported by yaron nahum
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I1f48baa904d2468eddeefb42ee68a56af7adc7b7
+2015-04-08 07:00 +0000 [05397ad01e]  Jaco Kroon (License 5671)
 
-2016-01-13 15:58 +0000 [46f21df302]  Daniel Journo <dan@keshercommunications.com>
+       * chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno]
 
-       * pjsip/alembic:  Fix qualify_timeout column definition
+         This patch fixes an access to the peer callnumber that is unprotected by a
+         corresponding mutex. The peer->callno value can be changed by multiple threads,
+         and all data inside the iaxs array must be procted by a corresponding lock
+         of iaxsl.
 
-         Corrects the qualify_timeout column type from Integer to Decimal
+         The patch moves the unprotected access to a location where the mutex is
+         safely obtained.
 
-         ASTERISK-25686 #close
-         Reported-by: Marcelo Terres
+         Review: https://reviewboard.asterisk.org/r/4599/
 
-         Change-Id: I757d0e3c011ee9be6cd5abd48bc92441a405d3c8
+         ASTERISK-21211 #close
+         Reported by: Jaco Kroon
+         patches:
+           asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671)
+         ........
 
-2016-01-12 11:14 +0000 [32b29d7b02]  Joshua Colp <jcolp@digium.com>
+         Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434292 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-04-08 06:53 +0000 [be13c72142]  Valentin Vidić (License 6697)
 
-         ASTERISK-25690 #close
+       * chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled
 
-         Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea
+         When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will
+         attempt to handle both IPv4 and IPv6 addresses, although the information will
+         be stored in a struct with an AF_INET6 address type. However, the current
+         NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly.
+         This patch adds an additional check for the mapped address case, allowing
+         the NAT code to handle clients even when the address is IPv6.
 
-2016-01-13 07:20 +0000 [e7cfda0b38]  Sean Bright <sean.bright@gmail.com>
+         Review: https://reviewboard.asterisk.org/r/4563/
 
-       * res_musiconhold: Prevent multiple simultaneous reloads.
+         ASTERISK-18032 #close
+         Reported by: Christoph Timm
+         patches:
+           nat_with_ipv6.diff submitted by Valentin Vidić (License 6697)
+         ........
 
-         There are two ways in which the reload() function in res_musiconhold can be
-         called from the CLI:
+         Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-           * module reload res_musiconhold.so
-           * moh reload
 
-         In the former case, the module loader holds a lock that prevents multiple
-         concurrent calls, but in the latter there is no such protection.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434289 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch changes the 'moh reload' CLI command to invoke the module loader
-         directly, rather than call reload() explicitly.
+2015-04-08 06:44 +0000 [f324870dab]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         ASTERISK-25687 #close
+       * clang compiler warnings: Fix pointer-bool-converesion warnings
 
-         Change-Id: I408968b4c8932864411b7f9ad88cfdc7b9ba711c
-2016-01-12 14:25 +0000 [5586abc957]  Richard Mudgett <rmudgett@digium.com>
+         This patch fixes several warnings pointed out by the clang compiler.
+         * chan_pjsip: Removed check for data->text, as it will always be non-NULL.
+         * app_minivm: Fixed evaluation of etemplate->locale, which will always
+           evaluate to 'true'. This patch changes the evaluation to use
+           ast_strlen_zero.
+         * app_queue:
+           - Fixed evaluation of qe->parent->monfmt, which always evaluates to
+             true. Instead, we just check to see if the dereferenced pointer
+             evaluates to true.
+           - Fixed evaluation of mem->state_interface, wrapping it with a call to
+             ast_strlen_zero.
+         * res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero.
 
-       * res_pjsip_log_forwarder.c: Add CLI "pjsip show buildopts".
+         Review: https://reviewboard.asterisk.org/r/4541
 
-         PJPROJECT has a function available to dump the compile time
-         options used when building the library.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4541.patch submitted by dkdegroot (License 6600)
+         ........
 
-         * Add CLI "pjsip show buildopts" command.
+         Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         * Update contrib/scripts/autosupport to get pjproject information.
 
-         Change-Id: Id93a6a916d765b2a2e5a1aeb54caaf83206be748
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-12 10:36 +0000 [4cd58c3b20]  Mark Michelson <mmichelson@digium.com>
+2015-04-07 14:38 +0000 [a6aed7f6f6]  Scott Griepentrog <sgriepentrog@digium.com>
 
-       * res_sorcery_realtime: Remove leading ^ requirement.
+       * Revert accidental change in r434261
 
-         res_sorcery_realtime's search-by-regex callback performed a check to
-         ensure that the passed-in regex began with a caret (^). If it did not,
-         then no results would be returned.
 
-         This callback only started to become used when "like" support was added
-         to PJSIP CLI commands. The CLI command for listing objects would pass an
-         empty regex ("") to the sorcery backend if no "like" statement was
-         present. For most sorcery backends, this resulted in returning all
-         objects. However, for realtime, this resulted in returning no objects.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434262 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This commit seeks to fix the regression by removing the requirement from
-         res_sorcery_realtime for the passed-in-regex to begin with a caret.
+2015-04-07 14:35 +0000 [0584e29300]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         ASTERISK-25689 #close
-         Reported by Marcelo Terres
+       * pjsip: resolve compatibility problem with ast_sip_session
 
-         Change-Id: I22b4dc5d7f3f11bb29ac2e42ef94682e9bab3b20
+         A change in r430179 inserted a variable near the top of a
+         structure caused a problem when running DPMA in a version
+         of Asterisk compiled across the change.  This patch moves
+         the new variable to the end of the structure, eliminating
+         the problem.
 
-2016-01-07 11:57 +0000 [219c204a41]  gtjoseph <george.joseph@fairview5.com>
+         Review: https://reviewboard.asterisk.org/r/4574/
+         ........
 
-       * pjsip_sdp_rtp:  Add option endpoint/bind_rtp_to_media_address
+         Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         On a system with multiple ip addresses in the same subnet, if a
-         transport is bound to a specific ip address and endpoint/media_address
-          is set, the SIP/SDP will have the correct address in all fields but
-         the rtp stream MAY still originate from one of the other ip addresses,
-         most probably the "primary" ip address.  This happens because
-          res_pjsip_sdp_rtp/create_rtp always calls ast_instance_new with
-         the "all" ip address (0.0.0.0 or ::).
 
-         The new option causes res_pjsip_sdp_rtp/create_rtp to call
-         ast_rtp_instance_new with the endpoint's media_address (if specified)
-         instead of the "all" address.  This causes the packets to originate from
-         the specified address.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25632
-         ASTERISK-25637
-         Reported-by: Olivier Krief
-         Reported-by: Dan Journo
+2015-04-07 11:40 +0000 [d754f70239]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: I3dfaa079e54ba7fb7c4fd1f5f7bd9509bbf8bd88
+       * bridge.c: Hangup attended transfer target after it has been swapped out
 
-2016-01-10 16:22 +0000 [22801a06ee]  Daniel Journo <dan@keshercommunications.com>
+         After completing an attended transfer the transfer target channel (the one that
+         gets swapped out) was not being hung up after leaving the bridge. This resulted
+         in a channel possibly being left around. Added an explicit softhangup for the
+         channel in question after the transfer is successfully completed in order to
+         make sure the channel is hung up.
 
-       * pjsip:  Add option global/regcontext
+         ASTERISK-24782 #close
+         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4575/
 
-         Added new global option (regcontext) to pjsip. When set, Asterisk will
-         dynamically create and destroy a NoOp priority 1 extension
-         for a given endpoint who registers or unregisters with us.
 
-         ASTERISK-25670 #close
-         Reported-by: Daniel Journo
 
-         Change-Id: Ib1530c5b45340625805c057f8ff1fb240a43ea62
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-08 15:22 +0000 [1600ebca7d]  Kevin Harwell <kharwell@digium.com>
+2015-04-07 10:33 +0000 [c516981dc7]  Mark Michelson <mmichelson@digium.com>
 
-       * pbx: Deadlock between contexts container and context_merge locks
+       * Do not queue message requests that we do not respond to.
 
-         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.
+         If we receive a MESSAGE request that we cannot send a response
+         to, we should not send the incoming MESSAGE to the dialplan.
 
-         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.
+         This commit should help the bouncing message_retrans test to
+         pass consistently.
 
-         ASTERISK-25640 #close
-         Reported by: Krzysztof Trempala
 
-         Change-Id: If2210ea241afd1585dc2594c16faff84579bf302
 
-2016-01-10 17:08 +0000 [0fc3dad965]  Corey Farrell <git@cfware.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * devicestate: Cleanup engine thread during graceful shutdown.
+2015-04-07 10:21 +0000 [ab803ec342]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-25681 #close
+       * ARI: Add the ability to intercept hold and raise an event
 
-         Change-Id: I64337c70f0ebd8c77f70792042684607c950c8f1
+         For some applications - such as SLA - a phone pressing hold should not behave
+         in the fashion that the Asterisk core would like it to. Instead, the hold
+         action has some application specific behaviour associated with it - such as
+         disconnecting the channel that initiated the hold; only playing MoH to channels
+         in the bridge if the channels are of a particular type, etc.
 
-2016-01-10 13:51 +0000 [f34dd10495]  Corey Farrell <git@cfware.com>
+         One way of accomplishing this is to use a framehook to intercept the
+         hold/unhold frames, raise an event, and eat the frame. Tasty. This patch
+         accomplishes that using a new dialplan function, HOLD_INTERCEPT.
 
-       * manager: Cleanup manager_channelvars during shutdown.
+         In addition, some general cleanup of raising hold/unhold Stasis messages was
+         done, including removing some RAII_VAR usage.
 
-         ASTERISK-25680 #close
+         Review: https://reviewboard.asterisk.org/r/4549/
 
-         Change-Id: I3251d781cbc3f48a6a7e1b969ac4983f552b2446
+         ASTERISK-24922 #close
 
-2016-01-10 13:27 +0000 [1d3a1167fc]  Corey Farrell <git@cfware.com>
 
-       * res_calendar: Cleanup scheduler context at unload.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25679 #close
+2015-04-06 21:09 +0000 [488f093e97]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Change-Id: I839159bf6882cccc1b23494c7aa2bc2a2624613f
+       * clang compiler warnings: Fix sometimes-initialized warning in func_math
 
-2016-01-08 11:49 +0000 [3a160cdbf6]  Joshua Colp <jcolp@digium.com>
+         This patch fixes a bug in a unit test in func_math where a variable could be
+         passed to ast_free that wasn't allocated. This patch corrects the issue and
+         ensures that we only attempt to free a variable if we previously allocated
+         it.
 
-       * res_rtp_asterisk: Revert DTLS negotiation changes.
+         Review: https://reviewboard.asterisk.org/r/4552
 
-         Due to locking issues within pjnath these changes are being
-         reverted until pjnath can be changed.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4552.patch submitted by dkdegroot (License 6600)
+         ........
 
-         ASTERISK-25645
+         Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Revert "res_rtp_asterisk.c: Fix DTLS negotiation delays."
 
-         This reverts commit 24ae124e4f7310cfa64c187b944b2ffc060da28d.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I2986cfb2c43dc14455c1bcaf92c3804f9da49705
+2015-04-06 21:03 +0000 [c027133f6d]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Revert "res_rtp_asterisk: Resolve further timing issues with DTLS negotiation"
+       * clang compiler warnings: Fix non-literal-null-conversion warnings
 
-         This reverts commit 965a0eee46d24321f74c244e23c5a5f45e67e12b.
+         Clang will flag errors when a char pointer is set to '\0', as opposed to a
+         value that the char pointer points to. This patch fixes this warning
+         in a variety of locations.
 
-         Change-Id: Ie68fafde27dad4b03cb7a1e27ce2a8502c3f7bbe
+         Review: https://reviewboard.asterisk.org/r/4551
 
-2016-01-09 17:57 +0000 [4b10fc9173]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4551.patch submitted by dkdegroot (License 6600)
+         ........
 
-       * Revert "pjsip_location: Delete contact_status object when contact is deleted"
+         Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         This reverts commit 0a9941de9d24093b5ff44096d1d7406f29d11e45.
 
-         Matt,
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch causes another problem and should not have been needed.
-         Before this patch, persistent_endpoint_contact_deleted_observer WAS
-         deleting the contact_status when ast_sip_location_delete_contact was
-         called.  By deleting it yourself in ast_sip_location_delete_contact
-         it was gone before the observer could run and the observer therefore
-         was throwing an error and not sending stasis/AMI/statsd messages.
+2015-04-06 14:23 +0000 [2270c40d33]  Kevin Harwell <kharwell@digium.com>
 
-         So, I don't think this was the cause of your original issue.  I also
-         had verified the contact AMI and statsd lifecycle and it was working.
-         I'll double check now though.
+       * res_pjsip: config option 'timers' can't be set to 'no'
 
-         ASTERISK-25675
-         Reported-by: Daniel Journo
+         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.
 
-         Change-Id: Ib586a6b7f90acb641b0c410f659743ab90e84f1a
+         ASTERISK-24910 #close
+         Reported by: Ray Crumrine
+         Review: https://reviewboard.asterisk.org/r/4582/
 
-2016-01-09 18:04 +0000 [79b4309881]  Corey Farrell <git@cfware.com>
 
-       * pbx_dundi: Run cleanup on failed load.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         During failed startup of pbx_dundi no cleanup was performed.  Add a call
-         to unload_module before returning AST_MODULE_LOAD_DECLINE.
+2015-04-06 14:02 +0000 [95de71f247]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25677 #close
+       * build: Fixes for gcc 5 compilation
 
-         Change-Id: I8ffa226fda4365ee7068ac1f464473f1a4ebbb29
+         These are fixes for compilation under gcc 5.0...
 
-2016-01-09 13:28 +0000 [a5406b1f9e]  Corey Farrell <git@cfware.com>
+         chan_sip.c:    In parse_request needed to make 'lim' unsigned.
+         inline_api.h:  Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 
+                        inline semantics (same as clang).
+         ccss.c:        In ast_cc_set_parm, needed to fix weird comparison.
+         dsp.c:         Needed to work around a possible compiler bug.  It was throwing 
+                        an array-bounds error but neither
+                        sgriepentrog, rmudgett nor I could figure out why.
+         manager.c:     In action_atxfer, needed to correct an array allocation.
 
-       * res_crypto: Perform cleanup at shutdown.
+         This patch will go to 11, 13, trunk.
 
-         This change causes res_crypto to unregister CLI at shutdown while still
-         preventing the module from being unloaded.
+         Review: https://reviewboard.asterisk.org/r/4581/
+         Reported-by: Jeffrey Ollie
+         Tested-by: George Joseph
+         ASTERISK-24932 #close
+         ........
 
-         ASTERISK-25673 #close
+         Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: Ie5d57338dc2752abfc0dd05d0eec86413f2304fc
 
-2016-01-06 19:10 +0000 [cf8e7a580b]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip: Create human friendly serializer names.
+2015-04-06 13:18 +0000 [d54ccda3b1]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         PJSIP name formats:
-         pjsip/aor/<aor>-<seq> -- registrar thread pool serializer
-         pjsip/default-<seq> -- default thread pool serializer
-         pjsip/messaging -- messaging thread pool serializer
-         pjsip/outreg/<registration>-<seq> -- outbound registration thread pool
-         serializer
-         pjsip/pubsub/<endpoint>-<seq> -- pubsub thread pool serializer
-         pjsip/refer/<endpoint>-<seq> -- REFER thread pool serializer
-         pjsip/session/<endpoint>-<seq> -- session thread pool serializer
-         pjsip/websocket-<seq> -- websocket thread pool serializer
+       * clang compiler warnings: Remove large chunks of unused code from extconf
 
-         Change-Id: Iff9df8da3ddae1132cb2ef65f64df0c465c5e084
+         This patch fixes a warning caught by clang, in which it detected that large
+         chunks of extconf were unused. Frankly, I wish we could pretend that all of
+         extconf was unused, but alas, that is not yet the case.
 
-2016-01-06 19:09 +0000 [4276f185f0]  Richard Mudgett <rmudgett@digium.com>
+         A few extraneous functions in the parking tests were removed as well, for
+         the same reason.
 
-       * Sorcery: Create human friendly serializer names.
+         Review: https://reviewboard.asterisk.org/r/4553
 
-         Sorcery name formats:
-         sorcery/<type>-<seq> -- Sorcery thread pool serializer
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4553.patch submitted by dkdegroot (License 6600)
+         ........
 
-         Change-Id: Idc2e5d3dbab15c825b97c38c028319a0d2315c47
+         Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2016-01-06 19:09 +0000 [f02ac1b7f9]  Richard Mudgett <rmudgett@digium.com>
 
-       * Stasis: Create human friendly taskprocessor/serializer names.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Stasis name formats:
-         subm:<topic>-<seq> -- Stasis subscription mailbox task processor
-         subp:<topic>-<seq> -- Stasis subscription thread pool serializer
+2015-04-06 13:03 +0000 [0ecd472e4f]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Change-Id: Id19234b306e3594530bb040bc95d977f18ac7bfd
+       * clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config
 
-2016-01-07 16:15 +0000 [ec1f1c6742]  Richard Mudgett <rmudgett@digium.com>
+         This patch fixes a warning caught by clang, in which a char pointer could be
+         assigned to before it was initialized. The patch re-organizes the code to
+         ensure that the pointer is always initialized, even on off nominal paths.
 
-       * taskprocessor.c: New API for human friendly taskprocessor names.
+         Review: https://reviewboard.asterisk.org/r/4529
 
-         * Add new API call to get a sequence number for use in human friendly
-         taskprocessor names.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4529.patch submitted by dkdegroot (License 6600)
+         ........
 
-         * Add new API call to create a taskprocessor name in a given buffer and
-         append a sequence number.
+         Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: Iac458f05b45232315ed64aa31b1df05b875537a9
 
-2016-01-06 17:19 +0000 [d8bc3e0c8b]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434091 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * taskprocessor.c: Fix CLI "core show taskprocessors" output format.
+2015-04-06 12:52 +0000 [4e7be5b2dc]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Update the CLI "core show taskprocessors" output format to not be
-         distorted because UUID names are longer than previously used taskprocessor
-         names.
+       * clang compiler warnings: Fix format specified in framehook
 
-         Change-Id: I1a5c82ce3e8f765a0627796aba87f8f7be077601
+         This patch fixes an invalid format specifier used in the formatting of an
+         ERROR message in the framehook code. The format specifier specifies a
+         type of 'unsigned short', but the argument passed to it is of type 'int'.
+         The patch changes the format specifier to 'i'.
 
-2016-01-07 21:07 +0000 [2c4b7502de]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4540
 
-       * taskprocessor.c: Fix CLI "core show taskprocessors" unref.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4535.patch submitted by dkdegroot (License 6600)
+         ........
 
-         Change-Id: I1d9f4e532caa6dfabe034745dd16d06134efdce5
+         Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2016-01-07 20:44 +0000 [3b33ac7a46]  Richard Mudgett <rmudgett@digium.com>
 
-       * taskprocessor.c: Sort CLI "core show taskprocessors" output.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I71e7bf57c7b908c8b8c71f1816348ed7c5a5d51e
+2015-04-06 11:02 +0000 [2443b40341]  Mark Michelson <mmichelson@digium.com>
 
-2016-01-06 19:00 +0000 [0fc32c4dd3]  Richard Mudgett <rmudgett@digium.com>
+       * Ensure that a non-zero sample rate is returned for all formats.
 
-       * ccss.c: Replace space in taskprocessor name.
+         Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate
+         if one was not provided by a format. In Asterisk 13, this was removed.
+         The result was that some calculations which involve dividing by the
+         sample rate resulted in dividing by 0. The fix being put in place
+         here is to have the same default fallback that was present in previous
+         versions of Asterisk.
 
-         The CLI "core ping taskprocessor" command does not work very
-         well with taskprocessor names that have spaces in them.  You
-         have to put quotes around the name so using tab completion
-         becomes awkward.
+         Asterisk-24914 #close
+         Reported by Marcello Ceschia
 
-         Change-Id: I29e806dd0a8a0256f4e2e0a7ab88c9e19ab0eda0
 
-2016-01-05 16:54 +0000 [0e0c24ad78]  Richard Mudgett <rmudgett@digium.com>
 
-       * taskprocessor.c: Add CLI "core ping taskprocessor" missing unlock.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I78247e0faf978bf850b5ba4e9f4933ab3c59d17b
+2015-04-06 10:16 +0000 [b1102cd642]  Corey Farrell <git@cfware.com>
 
-2016-01-07 03:33 +0000 [0f79c8839b]  Diederik de Groot <ddegroot@talon.nl>
+       * res_pjsip_phoneprov_provider: Revert 433996 / 433997.
 
-       * main: Use ast_strdup instead of strdup
+         res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then
+         ignoring the return.  OBJ_NODATA flag was to prevent a reference leak, but
+         this caused the module to FRACK on unload.  Revert change until this can
+         be investigated further.
 
-         Fix compile error in main/utils.c because strdup was used in dummy_start
+         ASTERISK-24935
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4578/
 
-         Change-Id: Id61a6cf4f3cbf235450441e10e7da101a6335793
 
-2016-01-07 03:21 +0000 [4285dee778]  Diederik de Groot <ddegroot@talon.nl>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * include/asterisk/time.h: Renamed global declaration:tv
+2015-04-06 09:50 +0000 [0f25076f67]  Mark Michelson (license #5049)
 
-         Renamed global declaration:tv to dummy_tv_var_for_types,
-         which would oltherwise cause 'shadow' warnings when 'tv'
-         was declared as a local variable elsewhere.
+       * ParkedCall: Don't allow dialplan fallthrough after retrieving parked call.
 
-         Added comment to note that dummy_tv_var_for_types is never
-         really exported and only used as a place holder.
+         This is a change to align behavior with that of Asterisk 11 and previous versions.
+         In those versions, if a parked call were retrieved, and the call ended, the parked
+         call retriever would be hung up after the ParkedCall application ran. Prior to this
+         patch, in Asterisk 13, the same situation would result in the parked call retriever
+         falling through to additional priorities in the extension where the ParkedCall
+         application was called. With this patch, the behavior between Asterisk 11 and 13
+         aligns.
 
-         ASTERISK-25627 #close
+         ASTERISK-24899 #close
+         Reported by Malcolm Davenport
+         Patches:
+               ASTERISK-24899.patch uploaded by Mark Michelson(license #5049)
 
-         Change-Id: I9a6e17995006584f3627efe8988e3f8aa0f5dc28
 
-2016-01-07 15:37 +0000 [96094feab6]  Mark Michelson <mmichelson@digium.com>
 
-       * PJSIP: Prevent deadlock due to dialog/transaction lock inversion.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A deadlock was observed where the monitor thread was stuck, therefore
-         resulting in no incoming SIP traffic being processed.
+2015-04-05 07:53 +0000 [709fa14b44]  Corey Farrell <git@cfware.com>
 
-         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.
+       * res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator.
 
-         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.
+         res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then
+         ignoring the return.  Added OBJ_NODATA flag to prevent a reference leak.
 
-         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-24935 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4578/
 
-         ASTERISK-25668 #close
-         Reported by Mark Michelson
 
-         Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433996 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2016-01-07 09:39 +0000 [52e9de0016]  Corey Farrell <git@cfware.com>
+2015-04-03 16:53 +0000 [1ee8424f27]  Mark Michelson <mmichelson@digium.com>
 
-       * ast_format_cap_append_by_type: Resolve codec reference leak.
+       * res_pjsip_messaging: Serialize outbound SIP MESSAGEs
 
-         This resolves a reference leak caused by ASTERISK-25535.  The pointer
-         returned by ast_format_get_codec is saved so it can be released.
+         Outbound SIP MESSAGEs had the potential to be sent out
+         of order from how they were specified in a set of
+         dialplan steps.
 
-         ASTERISK-25664 #close
+         This change creates a serializer for sending outbound
+         MESSAGE requests on. This ensures that the MESSAGEs are
+         sent by Asterisk in the same order that they were sent
+         from the dialplan.
 
-         Change-Id: If9941b1bf4320b2c59056546d6bce9422726d1ec
+         ASTERISK-24937 #close
+         Reported by Mark Michelson
 
-2016-01-04 04:26 +0000 [86eae38d7e]  Aaron An <anjb@ti-net.com.cn>
+         Review: https://reviewboard.asterisk.org/r/4579
 
-       * cel/cel_radius: Fix wrong pointer.
 
-         The macro ADD_VENDOR_CODE defined in the cel_radius.c should use the parameter
-         y not the address of y.
 
-         I capture the radius UDP packet via tcpdump, and the AV pairs are not correct,
-         then i review the source code and compare it with cdr/cdr_radius.c. Fix it and
-          it works.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433968 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25647 #close
-         Reported by: Aaron An
-         Tested by: Aaron An
+2015-04-02 09:56 +0000 [169e57d2e0]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         Change-Id: I72889bccd8fde120d47aa659edc0e7e6d4d019f0
+       * pjsip: resolve compatibility problem with ast_sip_session
 
-2016-01-05 14:52 +0000 [881dc862e0]  gtjoseph <george.joseph@fairview5.com>
+         A change in r430179 inserted a variable near the top of a
+         structure caused a problem when running DPMA in a version
+         of Asterisk compiled across the change.  This patch moves
+         the new variable to the end of the structure, eliminating
+         the problem.
 
-       * asterisk.h: Add ASTERISK_REGISTER_FILE macro
+         Review: https://reviewboard.asterisk.org/r/4574/
 
-         The 11/13 branches and master use 2 different file version macros. 11/13
-         uses ASTERISK_FILE_VERSION but master uses ASTERISK_REGISTER_FILE. This
-         means a new file added to 11/13 can't just be cherry-picked to master
-         because the macro has to be changed.
 
-         To make cherry-picking possible, ASTERISK_REGISTER_FILE was added
-         to asterisk.h as a simple alias for ASTERISK_FILE_VERSION(__FILE__, NULL)
-         The "$Revision$" tag doesn't do anything since Asterisk moved to git so
-         just passing NULL as the verison works fine.  asterisk.h was also
-         annotated to deprecate ASTERISK_FILE_VERSION and suggest using
-         ASTERISK_REGISTER_FILE for all new files.
 
-         Finally, 2 recent file additions, pbx_builtins.c and pbx_functions.c,
-         were modified to use the new macro to make sure it actually worked.
-         'core show file version' showed the correct output.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I5867ed898818d26ee49bb6e5c7d4c1a45d4789a5
+2015-04-02 05:31 +0000 [1eb0c5f4e8]  Corey Farrell <git@cfware.com>
 
-2016-01-05 11:06 +0000 [d228b62fd4]  gtjoseph <george.joseph@fairview5.com>
+       * Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS.
 
-       * stasis_cache_pattern:  Backport to 13
+         DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but
+         for this to work correctly MALLOC_DEBUG must also be marked
+         as conflicting with DEBUG_CHAOS.
 
-         Somehow stasis_cache_pattern got out of sync between 13 and master
-         and it was causing duplicate channel message issues in 13 when
-         related to a specific endpoint. I.E. from statsd,
-         'endpoints.PJSIP.1174.channels 0|g' was being emitted twice.
+         Review: https://reviewboard.asterisk.org/r/4557/
 
-         Backporting stasis_cache_pattern from master to 13 solved
-         the issue and running the unit and testsuite tests confirmed
-         that no new ones were created.
 
-         ASTERISK-25317 #close
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433923 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ia8707462f62d15eed14541c37f332a7bbbceb548
-2016-01-04 20:23 +0000 [e462f0063f]  Corey Farrell <git@cfware.com>
+2015-04-01 11:25 +0000 [e301185983]  Ashley Sanders <asanders@digium.com>
 
-       * main/pbx: Move hangup handler routines to pbx_hangup_handler.c.
+       * stasis: set a channel variable on websocket disconnect error
 
-         This is the sixth patch in a series meant to reduce the bulk of pbx.c.
-         This moves hangup handler management functions to their own source.
+         Resolve compile errors caused by r433863 by fixing the
+         documentation xml to comply with the schema.
 
-         Change-Id: Ib25a75aa57fc7d5c4294479e5cc46775912fb104
 
-2016-01-04 19:46 +0000 [ab191d124c]  Corey Farrell <git@cfware.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * main/pbx: Move dialplan application management routines to pbx_app.c.
+2015-03-31 22:26 +0000 [a1f12d9231]  Ashley Sanders <asanders@digium.com>
 
-         This is the sixth patch in a series meant to reduce the bulk of pbx.c.
-         This moves dialplan application management functions to their own source.
+       * stasis: set a channel variable on websocket disconnect error
 
-         Change-Id: I444c10fb90a3cdf9f3047605d6a8aad49c22c44c
+         Resolve compile errors caused by r433839 by included the missing
+         header file, pbx.h.
 
-2016-01-04 18:20 +0000 [09a9b93896]  Corey Farrell <git@cfware.com>
 
-       * main/pbx: Move switch routines to pbx_switch.c.
 
-         This is the fifth patch in a series meant to reduce the bulk of pbx.c.
-         This moves ast_switch functions to their own source.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ic2592a18a5c4d8a3c2dcf9786c9a6f650a8c628e
+2015-03-31 17:00 +0000 [7293ecd90b]  Ashley Sanders <asanders@digium.com>
 
-2016-01-04 18:00 +0000 [c608274a39]  Corey Farrell <git@cfware.com>
+       * stasis: set a channel variable on websocket disconnect error
 
-       * main/pbx: Move timing routines to pbx_timing.c.
+         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).
 
-         This is the fourth patch in a series meant to reduce the bulk of pbx.c.
-         This moves pbx timing functions to their own source.
+         To remedy this scenario, this patch introduces a new channel variable:
+         STASISSTATUS.
 
-         Change-Id: I05c45186cb11edfc901e95f6be4e6a8abf129cd6
+         The possible values for STASISSTATUS are:
+         SUCCESS         - The channel has exited Stasis without any failures
+         FAILED          - Something caused Stasis to croak. Some (not all) possible
+                           reasons for this:
+                             - The app registry is not instantiated;
+                             - The app requested is not registered;
+                             - The app requested is not active;
+                             - Stasis couldn't send a start message
 
-2015-12-29 04:31 +0000 [338a8ffed6]  Martin Tomec <tomec.martin@gmail.com>
+         ASTERISK-24802
+         Reported By: Kevin Harwell
+         Review: https://reviewboard.asterisk.org/r/4519/
 
-       * app_queue: Add member flag "in_call" to prevent reading wrong lastcall time
 
-         Member lastcall time is updated later than member status. There was chance to
-         check wrapuptime for available member with wrong (old) lastcall time.
-         New boolean flag "in_call" is set to true right before connecting call, and
-         reset to false after update of lastcall time. Members with "in_call" set to true
-         are treat as unavailable.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433839 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-19820 #close
+2015-03-31 11:55 +0000 [94949e7f2f]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I1923230cf9859ee51563a8ed420a0628b4d2e500
+       * chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos.
 
-2015-12-28 17:23 +0000 [e13719bff1]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+         Fix misplaced parentheses in original fabs() expression.
+         ........
 
-       * app_queue: Added reason pause of member
+         Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         In app_queue added value Paused Reason on QueueMemberStatus when a member
-         on queue is paused and the reason was set.
 
-         ASTERISK-25480 #close
-         Reporte by: Rodrigo Ramírez Norambuena
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ia5db503482f50764c15e2020196c785f59d4a68e
+2015-03-31 06:47 +0000 [9967739669]  Corey Farrell <git@cfware.com>
 
-2015-12-30 10:49 +0000 [4ec85a9f07]  gtjoseph <george.joseph@fairview5.com>
+       * Re-add _ast_mem_backtrace_buffer variable for ABI compatibility.
 
-       * voicemail: Move app_voicemail / res_mwi_external conflict to runtime
+         Modules built prior to commit of r4502 expect to link at runtime
+         to the variable _ast_mem_backtrace_buffer.  This change re-adds
+         the variable to the C file only.
 
-         The menuselect conflict between app_voicemail and res_mwi_external
-         makes it hard to package 1 version of Asterisk.  There no actual
-         build dependencies between the 2 so moving this check to runtime
-         seems like a better solution.
+         Review: https://reviewboard.asterisk.org/r/4558/
 
-         The ast_vm_register and ast_vm_greeter_register functions in app.c
-         were modified to return AST_MODULE_LOAD_DECLINE instead of -1 if there
-         is already a voicemail module registered. The modules' load_module
-         functions were then modified to return DECLINE instead of -1 to the
-         loader.  Since -1 is interpreted by the loader as AST_MODULE_LOAD_FAILURE,
-         the modules were incorrectly causing Asterisk to stop so this needed
-         to be cleaned up anyway.
 
-         Now you can build both and use modules.conf to decide which voicemail
-         implementation to load.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The default menuselect options still build app_voicemail and not
-         res_mwi_external but if both ARE built, res_mwi_external will load
-         first and become the voicemail provider unless modules.conf rules
-         prevent it.  This is noted in CHANGES.
+2015-03-30 06:42 +0000 [2d39bc5528]  Corey Farrell <git@cfware.com>
 
-         Change-Id: I7d98d4e8a3b87b8df9e51c2608f0da6ddfb89247
+       * Fix an ABI compatibility issue with ast_log_safe for modules.
 
-2016-01-04 16:22 +0000 [7fdcfd7724]  Corey Farrell <git@cfware.com>
+         Binary modules are sometimes built against the latest release of
+         Asterisk in each branch, and need to be compatible with all
+         releases of that branch.  This change ensures that utils.h only
+         uses ast_log_safe from the core.  For modules and utilities ast_log
+         is used instead.
 
-       * main/pbx: Move variable routines to pbx_variables.c.
+         Review: https://reviewboard.asterisk.org/r/4548/
+         ........
 
-         This is the third patch in a series meant to reduce the bulk of pbx.c.
-         This moves channel and global variable routines to their own source.
+         Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: Ibe8fb4647db11598591d443a99e3f99200a56bc6
 
-2015-12-04 17:22 +0000 [80a8b2a4cd]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_dial: Immediately exit dial if the caller is already hung up.
+2015-03-29 21:44 +0000 [5f8faf16af]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         If a caller hangs up before dial is executed within an AGI then the AGI
-         has likely eaten all queued frames before executing the dial in DeadAGI
-         mode.  With the caller hung up and no pending frames from the caller's
-         read queue, dial would not know that the call has hung up until a called
-         channel answers.  It is rather annoying to whoever just answered the
-         non-existent call.
+       * clang compiler warnings: Fix -Wabsolute-value warnings
 
-         Dial should not continue execution in DeadAGI mode, hangup handlers, or
-         the h exten.
+         This patch fixes several warnings caught by clang - in this case, usage of the
+         abs function on non-integer values. This patch uses labs and fabs, as
+         appropriate, in the various affected files.
 
-         * Added a check early in dial to abort dialing if the caller has hungup.
+         Review: https://reviewboard.asterisk.org/r/4525
 
-         ASTERISK-25307 #close
-         Reported by: David Cunningham
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4525.patch submitted by dkdegroot (License 6600)
+         ........
 
-         Change-Id: Icd1bc0764726ef8c809f76743ca008d0f102f418
+         Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2016-01-02 10:26 +0000 [1087b0c6ed]  Matt Jordan <mjordan@digium.com>
 
-       * main/cdr: Allow setting properties on a finalized CDR if it is the last one
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Prior to this patch, we explicitly disallowed setting any properties on a
-         finalized CDR. This seemed like a good idea at the time; in practice, it was
-         more restrictive.
+2015-03-29 21:39 +0000 [09b681e344]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         There are weird and strange scenarios where setting a property on a finalized
-         CDR is definitely wrong. For example, we may Fork a CDR, finalizing the
-         previous one, then change a property. In said case, the old CDR is supposed
-         to now be 'immutable' (so to speak), and should not be updated. From the
-         perspective of the code, a forked CDR that is finalized is just finalized.
-         Hence why we decided these should not be updated.
+       * clang compiler warnings: Fix invalid enum conversion
 
-         In practice, it is much more common to want to set a property on a CDR in
-         the h extension or in a hangup handler. Disallowing a common scenario to make
-         an esoteric behaviour work isn't good. This patch fixes this by allowing
-         callers to set a property IF we are the last CDR in the chain. This preserves
-         the finalized CDR if it was forked, while allowing the more common case to
-         function.
+         This patch fixes some invalid enum conversion warnings caught by clang. In
+         particular:
+         * chan_sip: Several functions mixed usage of the st_refresher_param
+           enum and st_refresher enum. This patch corrects the functions to use the
+           right enum.
+         * chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state.
+         * strings: Fixed incorrect usage of AO2 flags with strings container.
+         * res_stasis: Change a return enumeration to stasis_app_user_event_res.
 
-         ASTERISK-25458 #close
+         Review: https://reviewboard.asterisk.org/r/4535
 
-         Change-Id: Icf3553c607b9f561152a41e6d8381d594ccdf4b9
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4535.patch submitted by dkdegroot (License 6600)
+         ........
 
-2016-01-02 10:23 +0000 [1f23e65b89]  Matt Jordan <mjordan@digium.com>
+         Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * main/cdr: Set the end time on a CDR if endbeforehexten is Yes
 
-         Prior to this patch, the CDR engine attempted to set the end time on a CDR
-         that was executing hangup logic and with endbeforehexten set to Yes by
-         calling a function that inspects the properties on the Party A snapshot to
-         determine if we are ready to set the end time. That always failed. This is
-         because a Party A snapshot is not updated for CDRs that are executing hangup
-         logic with endbeforehexten=Yes.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Instead of calling a function that looks at the Party A snapshot, we just
-         simply set the end time on the CDR. This is safe to call multiple times, and is
-         safe to call at this point as we know that (a) we are executing hangup logic,
-         and (b) we are supposed to set the end time at this point.
+2015-03-29 21:29 +0000 [7f33abb827]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-25458
+       * main/stdtime/localtime: Fix warning introduced in r433720
 
-         Change-Id: I0c27b493861f9c13c43addbbb21257f79047a3b3
+         The patch in r433720 caused a warning to be kicked back by gcc. It occurred
+         due to this check in unistd.h:
 
-2015-12-30 20:51 +0000 [2ffade4574]  Corey Farrell <git@cfware.com>
+             if (__nbytes > __bos0 (__buf))
+                 return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf));
 
-       * main/pbx: Move custom function routines to pbx_functions.c.
+         That is, if __nbytes is greater than the result of GCC's built-in object size
+         for the struct, we'll kick back a warning.
 
-         This is the second patch in a series meant to reduce the bulk of pbx.c.
-         This moves custom function management routines to their own source.
+         As it turns out, this is because there is an error in the code in the patch.
+         We are passing the address of the pointer to the struct, not iev, which is a
+         pointer to the struct. Hence, the number of bytes is probably going to be lot
+         larger than the number of bytes that make up a pointer! This patch changes
+         the code just read from the pointer to the struct - which fixes the warning.
 
-         Change-Id: I34a6190282f781cdbbd3ce9d3adeac3c3805e177
+         ASTERISK-24917
+         ........
 
-2015-12-28 19:18 +0000 [20b8474f20]  gtjoseph <george.joseph@fairview5.com>
+         Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * main/pbx: Move pbx_builtin dialplan applications to pbx_builtins.c
 
-         We joked about splitting pbx.c into multiple files but this first step was
-         fairly easy.  All of the pbx_builtin dialplan applications have been moved
-         into pbx_builtins.c and a new pbx_private.h file was added. load_pbx_builtins()
-         is called by asterisk.c just after load_pbx().
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433744 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A few functions were renamed and are cross-exposed between the 2 source files.
+2015-03-29 20:56 +0000 [47eeb67e14]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Change-Id: I87066be3dbf7f5822942ac1449d98cc43fc7561a
+       * clang compiler warnings: Ignore -Wunused-command-line-argument
 
-2015-12-24 20:26 +0000 [e4a566918a]  Matt Jordan <mjordan@digium.com>
+         Asterisk's build system has a tendency to pass include directives for libraries
+         to everything compiled within a particular group of source files. This means
+         we pass the header for libxml2 to things that don't necessarily need it. As a
+         result, we ignore this particular warning.
 
-       * tests/test_stasis_endpoints: Remove expected duplicate events
+         Review: https://reviewboard.asterisk.org/r/4545/
 
-         The cache_clear test was written to expect duplicate Stasis messages
-         sent from the technology endpoint to the all caching topic. This patch
-         fixes the test to no longer expect these duplicate messages.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4545.patch submitted by dkdegroot (License 6600)
+         ........
 
-         ASTERISK-25137
+         Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I58075d70d6cdf42e792e0fb63ba624720bfce981
 
-2015-12-28 14:02 +0000 [a280400758]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * test_time: Provide a timeout when waiting.
+2015-03-29 20:52 +0000 [dbb4d6f9e7]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         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.
+       * clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end
 
-         This change adds a timeout to the condition so it will return
-         regardless after a period of time.
+         This patch fixes a warning caught by clang, wherein a variable sized struct is
+         not located at the end of a struct. While the code in question actually
+         expected this, this is a good warning to watch for. Hence, this patch refactors
+         the code in question to not have two variable length elements in the same
+         struct.
 
-         Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
+         Review: https://reviewboard.asterisk.org/r/4530/
 
-2015-05-27 13:22 +0000 [3a1c4885be]  gtjoseph <george.joseph@fairview5.com>
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4530.patch submitted by dkdegroot (License 6600)
+         ........
 
-       * endpoint/stasis: Eliminate duplicate events on endpoint status change
+         Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         When an endpoint is created, its messages are forwarded to both the tech
-         endpoint topic and the all endpoints topic. This is done so that various
-         parties interested in endpoint messages can subscribe to just the tech
-         endpoint and receive all messages associated with that particular technology,
-         as opposed to subscribing to the all endpoints topic. Unfortunately, when the
-         tech endpoint is created, it also forwards all of its messages to the all
-         topic. This results in duplicate messages whenever an endpoint publishes its
-         messages.
 
-         This patch resolves the duplicate message issue by creating a new function
-         for Stasis caching topics, stasis_cp_sink_create. In most respects, this acts
-         as a normal caching topic, save that it no longer forwards messages it receives
-         to the all endpoints topic. This allows it to act as an aggregation "sink",
-         while preserving the necessary caching behaviour.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25137 #close
-         Reported-by: Vitezslav Novy
+2015-03-28 07:56 +0000 [e126ab9eeb]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         ASTERISK-25116 #close
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+       * clang compiler warnings: Fix a variety of "unused" warnings
 
-         Change-Id: Ie47784adfb973ab0063e59fc18f390d7dd26d17b
-2015-12-24 22:19 +0000 [136c537695]  Dade Brandon <dade@xencall.com>
+         This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable
+         errors caught by clang. Specifically:
 
-       * res_http_websocket.c: prevent avoidable disconnections caused by write errors
+         * apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[],
+                             qsmp_cmd_usage[]
+         * cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom"
+         * channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel"
+         * codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$"
+         * funcs/func_env.c:729: Fixed ast_str_append_substr.
+         * main/editline/np/strlcat.c: removed unused rcsid variable
+         * main/editline/np/strlcpy.c: removed unused rcsid variable
+         * main/security_events.c: removed unused TIMESTAMP_STR_LEN
+         * utils/conf2ael.c: removed unused cfextension_states
+         * utils/extconf.c: removed unused cfextension_states
 
-         Updated ast_websocket_write to encode the entire frame in to one
-         write operation, to ensure that we don't end up with a situation
-         where the websocket header has been sent, while the body can not
-         be written.
+         Review: https://reviewboard.asterisk.org/r/4526
 
-         Previous to August's patch in commit b9bd3c14, certain network
-         conditions could cause the header to be written, and then the
-         sub-sequent body to fail - which would cause the next successful
-         write to contain a new header, and a new body (resulting in
-         the peer receiving two headers - the second of which would be
-         read as part of the body for the first header).
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4526.patch submitted by dkdegroot (License 6600)
+         ........
 
-         This was patched to have both write operations individually fail
-         by closing the websocket.
+         Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         In a case available to the submitter of this patch, the same
-         body which would consistently fail to write, would succeed
-         if written at the same time as the header.
 
-         This update merges the two operations in to one, adds debug messages
-         indicating the reason for a websocket connection being closed during
-         a write operation, and clarifies some variable names for code legibility.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I4db7a586af1c7a57184c31d3d55bf146f1a40598
+2015-03-28 07:48 +0000 [2f6534527d]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-2015-12-27 22:38 +0000 [f2efbb5d75]  Corey Farrell <git@cfware.com>
+       * clang compiler warnings: Fix -Wself-assign
 
-       * Remove res_jabber file that was left behind.
+         Assigning a variable to itself isn't super useful. However, the WAV format
+         modules make use of this in order to perform byte endian checks. This patch
+         works around the warning by only performing the self assignment if we are
+         going to do more than just assign it to ourselves. Which is odd, but true.
 
-         Change-Id: I9d88fac0394d5bbaff0900a2ee911c4e4478846b
+         Review: https://reviewboard.asterisk.org/r/4544/
 
-2015-12-13 13:09 +0000 [dde7f3c1c4]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4544.patch submitted by dkdegroot (License 6600)
+         ........
 
-       * res_pjsip_history: Add a module that provides PJSIP history for debugging
+         Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         This patch adds a new module, res_pjsip_history, that provides a slightly
-         better way of debugging SIP message traffic on a busy Asterisk system. The
-         existing mechanisms all rely on passively dumping a SIP message to the CLI.
-         While this is perfectly fine for logging purposes and well controlled
-         environments, on many installations, the amount of SIP messages Asterisk
-         receives will quickly swamp the CLI. This makes it difficult to view/capture
-         those messages that you want to diagnose in real time.
 
-         This patch provides another way of handling this. When enabled, the module
-         will store SIP message traffic in memory. This traffic can then be queried
-         at leisure.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433691 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         In order to make the querying useful, a CLI command has been implemented,
-         'pjsip show history', that supports a basic expression syntax similar to
-         SQL or other query languages. A small number of useful fields have been
-         added in this initial patch; additional fields can easily be added in
-         later improvements. Those fields are:
-          - number: The entry index in the history
-          - timestamp: The time the message was recieved
-          - addr: The source/destination address of the message
-          - sip.msg.request.method: The request method
-          - sip.msg.call-id: The Call-ID header
+2015-03-28 07:40 +0000 [eb70993a50]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Note - this is a resurrection of the module initially proposed on Review Board
-         here: https://reviewboard.asterisk.org/r/4053/
+       * clang compiler warnings: Fix -Wparantheses-equality warnings
 
-         Change-Id: I39bd74ce998e99ad5ebc0aab3e84df3a150f8e36
+         Clang will treat ((a == b)) as a warning, as it reasonably expects that the
+         developer may have intended to write (a == b) or ((a = b)). This patch cleans
+         up all instances where equality, not assignment, was intended between two
+         parantheses.
 
-2015-12-25 09:56 +0000 [be050f2638]  Dade Brandon <dade@xencall.com>
+         Review: https://reviewboard.asterisk.org/r/4531/
 
-       * chan_sip.c: fix websocket_write_timeout default value
+         ASTERISK-24917
+         Repoted by: dkdegroot
+         patches:
+           rb4531.patch submitted by dkdegroot (License 6600)
+         ........
 
-         websocket_write_timeout was not being set to its default value
-         during sip config reload, which meant that prior to this commit,
-         1) the default value of 100 was not used, unless an invalid value
-         (or 1) was specified in sip.conf for websocket_write_timeout, and
-         2) if the websocket_write_timeout directive was removed from sip.conf
-         without a full restart of asterisk, then the previous value would
-         continue to be used indefinitely.
+         Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         This essentially lead to a 0ms write timeout (the first write attempt
-         in ast_careful_fwrite must have succeeded) in websocket write requests
-         from chan_sip, unless websocket_write_timeout was explicitely set in sip.conf.
 
-         Changes to websocket_write_timeout still only apply to new websocket
-         sessions, after the sip reload -- timeouts on existing sessions are
-         not adjusted during sip reload.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ibed3816ed29cc354af6564c5ab3e75eab72cb953
+2015-03-28 07:31 +0000 [c0ff16036a]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-2015-12-23 17:40 +0000 [b3024cad10]  Richard Mudgett <rmudgett@digium.com>
+       * clang compiler warnings: Fix -Wbitfield-constant-conversion warning
 
-       * bridge_basic.c: Fix GOTO_ON_BLINDXFR
+         In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by
+         clang, as it will truncate the -1 to a 1 implicitly.
 
-         Use of GOTO_ON_BLINDXFR would not work at all.  The target location would
-         never be executed by the transferring channel.
+         Instead, we just assign the value a '1'.
 
-         * Made feature_blind_transfer() call ast_bridge_set_after_go_on() with
-         valid context, exten, and priority parameters from the transferring
-         channel.
+         Review: https://reviewboard.asterisk.org/r/4537/
 
-         * Renamed some feature_blind_transfer() local variables for clarity.
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4537.patch submitted by dkdegroot (License 6600)
+         ........
 
-         ASTERISK-25641 #close
-         Reported by Dmitry Melekhov
+         Merged revisions 433683 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I19bead9ffdc4aee8d58c654ca05a198da1e4b7ac
 
-2015-12-24 12:19 +0000 [0a9941de9d]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433684 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_pjsip_location: Delete contact_status object when contact is deleted
+2015-03-28 07:27 +0000 [844bc76bef]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         In 450579e908, a change was made that removed the deletion of the
-         'contact_status' object when a 'contact' object is deleted in sorcery.
-         This unfortunately means that the 'contact_status' object persists, even when
-         something has explicitly removed a contact. The result is that the state of
-         the contact will not be regenerated if that contact is re-created, and the
-         stale state will be reported/used for that contact. It also results in
-         no ContactStatusChanged events being generated for either ARI or AMI.
+       * clang compiler warnings: Fix -Winitializer-overrides
 
-         This patch restores the deletion logic that was removed. Doing so now
-         results in the expected events being generated again.
+         This patch fixes clange compiler warnings for initializer overrides.
+         Specifically:
 
-         Change-Id: I28789a112e845072308b5b34522690e3faf58f07
+         res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration
+         value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing
+         those enum values, we therefore initialize the value twice to two different
+         values, "tlsv1" and "default". This patch changes it to just initialize
+         the index in the array to "tlsv1".
 
-2015-12-24 10:18 +0000 [1e24a0ca8a]  Kevin Harwell <kharwell@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4539/
 
-       * res_rtp_asterisk: rtp->ice check not wrapped in HAVE_PJPROJECT ifdef
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4539.patch submitted by dkdegroot (License 6600)
 
-         Change-Id: I19b49112e1b630bd04e859f14ccf96f8ebd6b151
 
-2015-12-20 21:33 +0000 [1d3d20dd68]  Dade Brandon <dade@xencall.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_amd: Correct documentation to reflect functionality
+2015-03-28 07:19 +0000 [5e204042d9]  Diederik de Groot <dkgroot@talon.nl> (License 6600)
 
-         Update documentation to reflect that maximum_number_of_words
-         has functionality inconsistent with the variable name (and inconsistent
-         with prior documentation.)
+       * clang compiler warnings: Fix -Wunused-function; make inline function static
 
-         Update documentation for silence_threshold, which previously implied
-         that it was measuring time, rather than noise averages in the sample.
+         This patch fixes clang compilers warnings for unused functions. Specifically:
+          * channels/chan_iax2: removed user_ref function
+          * main/dsp.c: removed goertzel_update function
+          * main/config.c: made variable_list_switch static
 
-         Update the comments in amd.conf.sample.
+         Review: https://reviewboard.asterisk.org/r/4527
 
-         ASTERISK-25639 #close
-         Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093
+         ASTERISK-24917
+         Reported by: dkdegroot
+         patches:
+           rb4527.patch submitted by dkdegroot (License 6600)
+         ........
 
-2015-12-17 19:05 +0000 [965a0eee46]  Dade Brandon <dade@xencall.com>
+         Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_rtp_asterisk: Resolve further timing issues with DTLS negotiation
 
-         Resolves an edge case dtls negotiation delay for certain networks which
-         somehow manage to drop the rtcp side's packet when these are both sent
-         ast_rtp_remote_address_set, causing it to have to time-out and restart
-         the handshake.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433680 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Move dtls pending bio flush in to it's own function, and call it from
-         ast_rtp_on_ice_complete, when we're rtp->ice, rather than when
-         ast_rtp_remote_address_set.
+2015-03-27 17:34 +0000 [cfbf5fbe91]  Jonathan Rose <jrose@digium.com>
 
-         Keep the existing flush from the recent change to res_rtp_remote_address_set
-         if ice is not being used.
+       * SAC: Add a few basic queues
 
-         ASTERISK-25614 #close
-         Reported-by: XenCALL
-         Tested by: XenCALL
+         Review: https://reviewboard.asterisk.org/r/4503/
 
-         Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5
 
-2015-12-18 09:54 +0000 [ae428d8460]  Carlos Oliva <carlos.oliva@invoxcontact.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_queue: update RT members when the 1st call joins a queue with no agents
+2015-03-27 17:25 +0000 [1a50d8d4c2]  Jonathan Rose <jrose@digium.com>
 
-         If a call enters on a queue and the members on that queue are updated in
-         realtime (ex: using mysql inserting a new agent) the queue members are
-         never refreshed and the call will stay in the queue until other event occurs.
-         This happens only if this is the first call of the queue and there is no
-         agents servicing.
-         This patch prevent this issue, ensuring realtime members are updated if
-         there is one call in the queue and no available agents
+       * SAC: Add conferencing extensions and configuration
 
-         ASTERISK-25442 #close
+         Review: https://reviewboard.asterisk.org/r/4504/
 
-         Change-Id: If1e036d013a5c1d8b0bf60d71d48fe98694a8682
 
-2015-12-05 10:01 +0000 [59d5bb0613]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_sorcery_memory_cache: Add support for a full backend cache.
+2015-03-27 16:15 +0000 [c6c08d755d]  Rusty Newton <rnewton@digium.com>
 
-         This change introduces the configuration option 'full_backend_cache'
-         which changes the cache to be a full mirror of the backend instead
-         of a per-object cache. This allows all sorcery retrieval operations
-         to be carried out against it and is useful for object types which
-         are used in a "retrieve all" or "retrieve some" pattern.
+       * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2
 
-         ASTERISK-25625 #close
+         Example configuration files for a "basic PBX" deployment for the fictitious
+         Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/
+         and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
 
-         Change-Id: Ie2993487e9c19de563413ad5561c7403b48caab5
+         Patch 4488 includes all functionality needed for SAC's outside connectivity
+         and some externally accessed features, as well as outbound dialing.
 
-2015-12-17 10:25 +0000 [0cefcabd58]  Joshua Colp <jcolp@digium.com>
+         Reported by: Malcolm Davenport
+         Tested by: Rusty Newton
 
-       * rtp_engine: Ignore empty filenames in DTLS configuration.
+         Review: https://reviewboard.asterisk.org/r/4488/
 
-         When applying an empty DTLS configuration the filenames in the
-         configuration will be empty. This is actually valid to do and
-         each filename should simply be ignored.
 
-         Change-Id: Ib761dc235638a3fb701df337952f831fc3e69539
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433624 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-17 08:10 +0000 [158a0a5422]  Joshua Colp <jcolp@digium.com>
+2015-03-27 16:04 +0000 [13557675d4]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_sip: Enable WebSocket support by default.
+       * res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage.
 
-         Per the documentation the WebSocket support in chan_sip is
-         supposed to be enabled by default but is not. This change
-         corrects that.
+         * Converted the contact_autoexpire container to use the ao2 template hash
+         and cmp functions.  Also made use the OBJ_SEARCH_xxx names instead of the
+         deprecated names.
 
-         Change-Id: Icb02bbcad47b11a795c14ce20a9bf29649a54423
+         * Eliminates several unnecessary uses of RAII_VAR().
 
-2015-12-14 12:04 +0000 [a9d6fc571d]  Joshua Colp <jcolp@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4524/
 
-       * json: Audit ast_json_* usage for thread safety.
 
-         The JSON library Asterisk uses, jansson, is not thread
-         safe for us in a few ways. To help with this wrappers for JSON
-         object reference count increasing and decreasing were added
-         which use a global lock to ensure they don't clobber over
-         each other. This does not extend to reference count manipulation
-         within the jansson library itself. This means you can't safely
-         use the object borrowing specifier (O) in ast_json_pack and
-         you can't share JSON instances between objects.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This change removes uses of the O specifier and replaces them
-         with the o specifier and an explicit ast_json_ref. Some cases
-         of instance sharing have also been removed.
+2015-03-27 15:30 +0000 [85feac857c]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25601 #close
+       * Add stateful PJSIP response API call, and use it for out-of-dialog responses.
 
-         Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1
+         Asterisk had an issue where retransmissions of MESSAGE requests resulted in
+         Asterisk processing the retransmission as if it were a new MESSAGE request.
 
-2015-12-16 11:28 +0000 [53bd5a539a]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * Alembic: Increase column size of PJSIP AOR "contact".
+         ASTERISK-24920 #close
+         Reported by Mark Michelson
 
-         When running the PJSIP AMI "show_endpoint" test with automatic
-         conversion to realtime, the test would fail. This was because the AOR
-         "contact" column was sized at 40, and the configured contact was larger
-         than that.
+         Review: https://reviewboard.asterisk.org/r/4532/
 
-         This commit increases the size of the contact column to 255 characters.
 
-         Change-Id: Ia65bc7fd37699b7c0eaef9629a1a31eab9a24ba1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-16 11:25 +0000 [da17dc4d75]  Mark Michelson <mmichelson@digium.com>
+2015-03-27 12:50 +0000 [dc2cf21144]  Richard Mudgett <rmudgett@digium.com>
 
-       * Alembic: Add PJSIP global keep_alive_interval.
+       * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown.
 
-         The keep_alive_interval option was added about a year ago, but no
-         alembic revision was created to add the appropriate column to the
-         database.
+         Contact expiration object refs were leaked when the module was unloaded.
 
-         This commit fixes the problem and adds the column. This was discovered
-         by running the testsuite with automatic conversion to realtime enabled.
+         * Made empty the scheduler of entries before destroying it to release the
+         object ref held by the scheduler entry.
 
-         Change-Id: If3ef92a7c4f4844d08f8aae170d2178aec5c4c1a
+         Review: https://reviewboard.asterisk.org/r/4523/
 
-2015-12-08 13:04 +0000 [fe8011cc50]  sungtae kim <pchero21@gmail.com>
 
-       * AMI: Fixed OriginateResponse message
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         When the asterisk sending OriginateResponse message,
-         it doesn't set the "Uniqueid".
-         And it didn't support correct response message for
-         Application originate.
+2015-03-27 09:41 +0000 [6e6f5b3a1f]  Justin T. Gibbs <gibbs@scsiguy.org> (License 6692)
 
-         ASTERISK-25624 #close
+       * res/res_timing_kqueue: Update the module to conform to current timer API
 
-         Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d
+         This patch updates the kqueue timing module to conform to current timer API.
 
-2015-12-15 18:01 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         This fixes issues with using the kqueue timing source on Asterisk 13 on
+         FreeBSD 10. These issues include:
+
+         - Remove support for kevent64().  The values used to support Asterisk timers
+           fit within 32bits and so can be handled on all platforms via kevent().
 
-       * asterisk 13.7.0-rc1 Released.
+         - Provide debug logging for, but do not track, unacked events.  This matches
+           the behavior of all other timer implementations.
 
-2015-12-15 11:57 +0000 [0370acecfc]  Kevin Harwell <kharwell@lunkwill>
+         - Implement continuous mode by triggering and leaving active, a user event.
+           This ensures that the file descriptor for the timer returns immediately from
+           poll(), without placing the load of a high speed timer on the kernel.
 
-       * Release summaries: Add summaries for 13.7.0-rc1
+         - In kqueue_timer_get_max_rate(), don't overstate the capability of the timer.
+           On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer
+           type kqueue supports for timers.
 
-2015-12-15 11:54 +0000 [d1bb33fe0b]  Kevin Harwell <kharwell@lunkwill>
+         - In kqueue_timer_get_event(), assume the caller woke up from poll() and just
+           return the mode the timer is currently in. This matches all other timer
+           implementations.
 
-       * .version: Update for 13.7.0-rc1
+         - Adjust the test code now that unacked events are not tracked.
 
-2015-12-15 11:54 +0000 [d06a65de01]  Kevin Harwell <kharwell@lunkwill>
+         Review: https://reviewboard.asterisk.org/r/4465/
 
-       * .lastclean: Update for 13.7.0-rc1
+         ASTERISK-24857 #close
+         Reported by: scsiguy
+         Tested by: Ed Hynan
+         patches:
+           rb4465.patch submitted by scsiguy (License 6692)
 
-2015-12-15 11:54 +0000 [fb37b44660]  Kevin Harwell <kharwell@lunkwill>
 
-       * realtime: Add database scripts for 13.7.0-rc1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-15 11:48 +0000 [20b7164b8c]  Kevin Harwell <kharwell@lunkwill>
+2015-03-27 07:26 +0000 [b0df413fb2]  Corey Farrell <git@cfware.com>
 
-       * .version: Update for 13.7.0-rc1
+       * Fix link error for utils/aelparse.
 
-2015-12-15 11:48 +0000 [6cbf2414c3]  Kevin Harwell <kharwell@lunkwill>
+         Use the standard ast_log instead of ast_log_safe for STANDALONE programs.
 
-       * .lastclean: Update for 13.7.0-rc1
+         Review: https://reviewboard.asterisk.org/r/4538/
+         ........
 
-2015-12-15 11:48 +0000 [ba1794464d]  Kevin Harwell <kharwell@lunkwill>
+         Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * realtime: Add database scripts for 13.7.0-rc1
 
-2015-12-15 11:39 +0000 [b3e9753a23]  Kevin Harwell <kharwell@lunkwill>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * .version: Update for 13.7.0-rc1
+2015-03-27 02:09 +0000 [d01706ce1e]  Corey Farrell <git@cfware.com>
 
-2015-12-15 11:39 +0000 [b0df64b5f0]  Kevin Harwell <kharwell@lunkwill>
+       * Improved and portable ast_log recursion avoidance
 
-       * .lastclean: Update for 13.7.0-rc1
+         This introduces a new logger routine ast_log_safe.  This routine should be
+         used for all error messages in code that can be run as a result of ast_log.
+         ast_log_safe does nothing if run recursively.  All error logging in
+         astobj2.c, strings.c and utils.h have been switched to ast_log_safe.
 
-2015-12-15 11:39 +0000 [ce9a59faf6]  Kevin Harwell <kharwell@lunkwill>
+         This required adding support for raw threadstorage.  This provides direct
+         access to the void* pointer in threadstorage.  In ast_log_safe, NULL is used
+         to signify that this thread is not already running ast_log_safe, (void*)1 when
+         it is already running.  This was done since it's critical that ast_log_safe
+         do nothing that could log during recursion checking.
 
-       * realtime: Add database scripts for 13.7.0-rc1
+         ASTERISK-24155 #close
+         Reported by: Timo Teräs
+         Review: https://reviewboard.asterisk.org/r/4502/
+         ........
 
-2015-12-15 11:28 +0000 [2e26bef5bb]  Kevin Harwell <kharwell@lunkwill>
+         Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * .version: Update for 13.7.0-rc1
 
-2015-12-15 11:28 +0000 [5e9b47516d]  Kevin Harwell <kharwell@lunkwill>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * .lastclean: Update for 13.7.0-rc1
+2015-03-26 18:07 +0000 [4b225e2104]  Corey Farrell <git@cfware.com>
 
-2015-12-15 11:28 +0000 [034112c574]  Kevin Harwell <kharwell@lunkwill>
+       * Fix compile errors caused by r4500 / r4501.
 
-       * realtime: Add database scripts for 13.7.0-rc1
+         * Add ast_register_cleanup to utils/clicompat.c to deal with
+           any utils that copy sources from main.
+         * Asterisk 13+: remove unused variables from core_local.c.
 
-2015-12-15 11:19 +0000 [d1f8ff1789]  Kevin Harwell <kharwell@lunkwill>
+         Review: https://reviewboard.asterisk.org/r/4534/
+         ........
 
-       * .version: Update for 13.7.0-rc1
+         Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-12-15 11:19 +0000 [9376488bef]  Kevin Harwell <kharwell@lunkwill>
 
-       * .lastclean: Update for 13.7.0-rc1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-15 11:19 +0000 [a894c9e7a9]  Kevin Harwell <kharwell@lunkwill>
+2015-03-26 17:19 +0000 [6adf26f14d]  Corey Farrell <git@cfware.com>
 
-       * realtime: Add database scripts for 13.7.0-rc1
+       * Replace most uses of ast_register_atexit with ast_register_cleanup.
 
-2015-12-15 11:12 +0000 [52afb0f112]  Kevin Harwell <kharwell@lunkwill>
+         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.
 
-       * .version: Update for 13.7.0-rc1
+         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.
 
-2015-12-15 11:12 +0000 [2de343eb85]  Kevin Harwell <kharwell@lunkwill>
+         ASTERISK-24142 #close
+         Reported by: David Brillert
 
-       * .lastclean: Update for 13.7.0-rc1
+         ASTERISK-24683 #close
+         Reported by: Peter Katzmann
 
-2015-12-15 11:12 +0000 [184de2a160]  Kevin Harwell <kharwell@lunkwill>
+         ASTERISK-24805 #close
+         Reported by: Badalian Vyacheslav
 
-       * realtime: Add database scripts for 13.7.0-rc1
+         ASTERISK-24881 #close
+         Reported by: Corey Farrell
 
-2015-12-14 13:53 +0000 [24ae124e4f]  server-pandora <server-pandora@xencall.com>
+         Review: https://reviewboard.asterisk.org/r/4500/
+         Review: https://reviewboard.asterisk.org/r/4501/
+         ........
 
-       * res_rtp_asterisk.c: Fix DTLS negotiation delays.
+         Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         - Trigger pending DTLS packets to send out, once the RTP instance's remote
-           address is set.
-         - Avoids locking the DTLS structure unnecessarily by only doing this if
-           DTLS is passive.
-         - Add DTLS locks around the structurally sensitive calls in the SSL
-           portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock
-           inside of itself, and we're dealing with the SSL BIO in at least two
-           threads.
 
-         WebRTC channels may receive a DTLS handshake before
-         ast_rtp_remote_address_set is called, which causes there to be a pending
-         response to send out.   Previous to 1ad827, this was handled by calling
-         dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP
-         packet could trigger the pending handshake response.  Since that was
-         rightfully removed, whenever the DTLS handshake is received before the
-         remote address is set, we would have to wait until another SSL packet
-         arrives.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         As of Chrome M47's optimizations to their handshake process, WebRTC
-         conversations between Chrome M47+ and Asterisk, where Asterisk is passive,
-         experience a 1 second delay without this patch, because the SSL handshake
-         is received before ICE negotation stores the remote_address, and the next
-         SSL packet isn't received until after a 1 second timeout in Chrome, which
-         causes a new handshake request.
+2015-03-26 12:46 +0000 [d0df545a44]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-25614 #close
+       * res_pjsip: Enable unload of all modules at shutdown.
 
-         Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908
+         * Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes
+           caused by running PJSIP functions from non-PJSIP threads.
+         * Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing
+           crashes in some cases.  In theory pj_shutdown() should take care of this.
+         * Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at
+           shutdown.
+         * Resolve leaked config global in res_pjsip_notify.
+         * Unregister pubsub pjsip service module.
+         * Implement cleanup for res_pjsip_session.
 
-2015-12-14 15:25 +0000 [36097a185d]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24731 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4498/
 
-       * Fix sscanf() format string type mismatch.
 
-         ASTERISK-25615
-         Reported by: George Joseph
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ieff35307254ca193f3d473cff2e396ca57c7ce0b
+2015-03-26 12:04 +0000 [fd434a210f]  Kevin Harwell <kharwell@digium.com>
 
-2015-12-13 13:13 +0000 [94f9927784]  Matt Jordan <mjordan@digium.com>
+       * app_confbridge: file playback blocks dtmf
 
-       * main/utils: Don't emit an ERROR message if the read end of a pipe closes
+         Attempting to execute DTMF in a confbridge while file playback (prompt,
+         announcement, etc) is occurring is not allowed. You have to wait until
+         the sound file has completed before entering DTMF. This patch fixes it
+         so that app_confbridge now monitors for dtmf key presses during menu
+         driven file playback. If a key is pressed playback stops and it executes
+         the matched menu option.
 
-         An ERROR or WARNING message should generally indicate that something has gone
-         wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not
-         in control of when the far end closes its reading on a file descriptor. If the
-         far end does close the file descriptor in an unclean fashion, this isn't a bug
-         or error in Asterisk, particularly when the situation can be gracefully
-         handled in Asterisk.
+         ASTERISK-24864 #close
+         Reported by: Steve Pitts
+         Review: https://reviewboard.asterisk.org/r/4510/
+         ........
 
-         Currently, when this happens, a user would see the following somewhat cryptic
-         ERROR message:
+         Merged revisions 433445 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-           "utils.c: write() returned error: Broken pipe"
 
-         There's a few problems with this:
-         (1) It doesn't provide any context, other than 'something broke a pipe'
-         (2) As noted, it isn't actually an error in Asterisk
-         (3) It can get rather spammy if the thing breaking the pipe occurs often, such
-             as a FastAGI server
-         (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even
-             mask legitimate issues
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch changes ast_carefulwrite to only log an ERROR if we actually had one
-         that was reasonably under our control. For debugging purposes, we still emit
-         a debug message if we detect that the far side has stopped reading.
+2015-03-25 13:37 +0000 [dea885a607]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566
+       * A couple minor cleanup tweaks.
 
-2015-12-12 11:08 +0000 [5b867fa904]  gtjoseph <george.joseph@fairview5.com>
+         * In res/res_sorcery_realtime.c: Broke long line.
 
-       * pjsip/config_transport: Check pjproject version at runtime for async ops
+         * In main/bucket.c: Eliminated unnecessary NULL check as
+         ast_sorcery_unref() is NULL tolerant and set the global object to NULL
+         after unref in the system shutdown bucket_cleanup().
 
-         pjproject < 2.5.0 will segfault on a tls transport if async_operations
-         is greater than 1.  A runtime version check has been added to throw
-         an error if the version is < 2.5.0 and async_operations > 1.
 
-         To assist in the check, a new api "ast_compare_versions" was added
-         to utils which compares 2 major.minor.patch.extra version strings.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25615 #close
+2015-03-25 10:30 +0000 [05de9082a5]  Simon Arlott (License 5756)
 
-         Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98
-         Reported-by: George Joseph
-         Tested-by: George Joseph
+       * res_xmpp: Buddies are always auto-registered when processing the roster
 
-2015-12-10 11:44 +0000 [14b41115e3]  Jonathan Rose <jrose@digium.com>
+         Due to a quirk in the configuration handling of res_xmpp, the 'autoregister'
+         setting was never actually processed. This was due to not properly copying
+         over the global settings to the client settings when applying the
+         configuration to the run-time object.
 
-       * chan_sip: Add TCP/TLS keepalive to TCP/TLS server
+         Review: https://reviewboard.asterisk.org/r/4496/
 
-         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-14233
+         ASTERISK-24780 #close
+         Reported by: Simon Arlott
+         patches:
+           asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756)
+         ........
 
-         ASTERISK-25364 #close
-         Reported by: Hiroaki Komatsu
+         Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36
-2015-12-09 09:48 +0000 [cd119ed4a2]  Tyler Cambron <tcambron@digium.com>
 
-       * res_chan_stats: Fix bug to send correct statistics to StatsD
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Fixed a bug that originally would show a negative number of
-         active calls occuring in Asterisk. A gauge is persistent so
-         incrementing and decrementing it results in a more consistent
-         performance. Also changed to the call to StatsD to use
-         ast_statsd_log_string() so that a "+" could be sent to StatsD.
+2015-03-24 14:26 +0000 [b1e9552b08]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25619 #close
+       * chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages.
 
-         Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7
+         Incoming PJSIP call legs that have not been answered yet send unnecessary
+         "180 Ringing" or "183 Progress" messages every time a connected line
+         update happens.  If the outgoing channel is also PJSIP then the incoming
+         channel will always send a "180 Ringing" or "183 Progress" message when
+         the outgoing channel sends the INVITE.
 
-2015-12-07 13:07 +0000 [ddf4dddf4f]  Corey Farrell <git@cfware.com>
+         Consequences of these unnecessary messages:
 
-       * app_meetme: Set default value for audio_buffers.
+         * The caller can start hearing ringback before the far end even gets the
+         call.
 
-         The default value was never set for audio_buffers, causing bad
-         audio quality.  This ensures the default is always set.
+         * Many phones tend to grab the first connected line information and refuse
+         to update the display if it changes.  The first information is not likely
+         to be correct if the call goes to an endpoint not under the control of the
+         first Asterisk box.
 
-         ASTERISK-25569 #close
+         When connected line first went into Asterisk in v1.8, chan_sip received an
+         undocumented option "rpid_immediate" that defaults to disabled.  When
+         enabled, the option immediately passes connected line update information
+         to the caller in "180 Ringing" or "183 Progress" messages as described
+         above.
 
-         Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44
-2015-12-08 01:57 +0000 [142d4fefb8]  Filip Jenicek <phill@janevim.cz>
+         * Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or
+         "183 Progress" messages.  The default is "no" to disable sending the
+         unnecessary messages.
 
-       * chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)
+         ASTERISK-24781 #close
+         Reported by: Richard Mudgett
 
-         Asterisk may crash when calling ast_channel_get_t38_state(c)
-         on a locked channel which is being hung up.
+         Review: https://reviewboard.asterisk.org/r/4473/
 
-         ASTERISK-25609 #close
 
-         Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-08 17:49 +0000 [21962dad93]  gtjoseph <george.joseph@fairview5.com>
+2015-03-22 18:58 +0000 [a3fe43fbdc]  snuffy <snuffy22@gmail.com> (License 5024)
 
-       * res_pjsip:  Add existence and readablity checks for tls related files
+       * Fix compilations errors on 64-bit OpenBSD systems
 
-         Both transport and endpoint now check for the existence and readability
-         of tls certificate and key files before passing them on to pjproject.
-         This will cause the object to not load rather than waiting for pjproject
-         to discover that there's a problem when a session is attempted.
+         In versiong 5.5, OpenBSD went to 64-bit time values. This requires a cast to
+         (long) when printing members of certain time structs.
 
-         NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located
-         in build_peer which is gigantic and I didn't want to disturb it.
-         Error messages will emit but it won't interrupt chan_sip loading.
+         Review: https://reviewboard.asterisk.org/r/4507
 
-         ASTERISK-25618 #close
+         ASTERISK-24879 #close
+         Reported by: snuffy
+         Tested by: snuffy
+         patches:
+           openbsd-time64.diff uploaded by snuffy (License 5024)
+         ........
 
-         Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9
-         Reported-by: George Joseph
-         Tested-by: George Joseph
+         Merged revisions 433268 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-12-02 12:42 +0000 [28d9243079]  Eugene Voityuk <eugene@thirdlane.com>
 
-       * chan_sip.c: Start ICE negotiation when response is sent or received.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The current logic for ICE negotiation starts it
-         when receiving an SDP with ICE candidates. This is
-         incorrect as ICE negotiation can only start when each 
-         call party have at least one pair of local and remote 
-         candidate. Starting ICE negotiation early would result 
-         in negotiation failure and ultimately no audio.
+2015-03-22 18:04 +0000 [08a88aab15]  snuffy <snuffy22@gmail.com> (License 5024)
 
-         This change makes it so ICE negotiation is only started
-         when a response with SDP is received or when a response
-         with SDP is sent.
+       * Fix compilation issues for OpenBSD
 
-         ASTERISK-24146
+         This patch addresses compilation issues for OpenBSD. Specifically, it
+         addresses:
+          * It allows including <sys/vmmeter.h> in asterisk.c
+          * Provides a needed (size_t) cast in xmldoc.c
 
-         Change-Id: I55a632bde9e9827871b09141d82747e08379a8ca
-2015-12-08 11:03 +0000 [e03582a1c2]  gtjoseph <george.joseph@fairview5.com>
+         In 13+, it also addresses a conditional inclusion in loader.c.
 
-       * res_pjsip/config_transport: Prevent async_operations > 1 when protocol = tls
+         Review: https://reviewboard.asterisk.org/r/4506
 
-         See ASTERISK-25615.
-         If the transport protocol is tls and async_operations > 1, pjproject
-         will segfault if more than one operation is attempted on the same socket.
-         Until this is fixed upstream, a check has been added to throw an error
-         if a tls transport config has async_operations set to > 1.
+         ASTERISK-24880 #close
+         Reported by: snuffy
+         Tested by: snuffy
+         patches:
+           misc-openbsd.diff uploaded by snuffy (License 5024)
+         ........
 
-         ASTERISK-25615
+         Merged revisions 433245 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I76b9a5b2a5a0054fe71ca5851e635f2dca7685a6
-         Reported-by: George Joseph
-         Tested-by: George Joseph
 
-2015-12-08 08:39 +0000 [876600ce6e]  Alexander Traud <pabstraud@compuserve.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433247 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * codec_resample: Increase buffer for Opus Codec with FEC.
+2015-03-20 14:52 +0000 [6ca98524bf]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25599 #close
+       * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks.
 
-         Change-Id: Idbd187f711b2ec63dda949ca0f79aa0c1a0a0b6e
+         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.
 
-2015-12-08 03:46 +0000 [69e3d40ad7]  Alexander Traud <pabstraud@compuserve.com>
+         * 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().
 
-       * translate: Avoid a warning message when doing FEC within Opus Codec.
+         * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in
+         res/res_pjsip_nat.c:nat_on_rx_message().
 
-         ASTERISK-25616 #close
+         * Fixed inconsistent but benign return value in
+         res/res_pjsip/pjsip_options.c:options_on_rx_request().
 
-         Change-Id: Ibe729aaf2e6e25506cff247cec5149ec1e589319
+         Review: https://reviewboard.asterisk.org/r/4511/
 
-2015-12-04 15:36 +0000 [2b992014dc]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_sip: Fix crash involving the bogus peer during sip reload.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433222 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A crash happens sometimes when performing a CLI "sip reload".  The bogus
-         peer gets refreshed while it is in use by a new call which can cause the
-         crash.
+2015-03-20 13:23 +0000 [1c09028171]  Richard Mudgett <rmudgett@digium.com>
 
-         * Protected the global bogus peer object with an ao2 global object
-         container.
+       * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively.
 
-         ASTERISK-25610 #close
+         Valgrind found a memory leak and invalid access.
 
-         Change-Id: I5b528c742195681abcf713c6e1011ea65354eeed
+         * Fix invalid access by sscanf() being fed a non-nul terminated string of
+         digits in res/res_pjsip_sdp_rtp.c:get_codecs().
 
-2015-12-06 16:32 +0000 [529535f0c2]  Matt Jordan <mjordan@digium.com>
+         * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor().
 
-       * Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state"
+         * Fix potential NULL pointer dereference in
+         main/xmldoc.c:xmldoc_get_syntax_config_option().
 
-         This reverts commit 6614babea27fbafbe11820ea03737dd5c4f9ecec.
+         Review: https://reviewboard.asterisk.org/r/4513/
 
-         Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks
-         in core_unreal/chan_local. Local channels attempt to reach across both their
-         peer and the peer's bridge to inspect T.38 state. Given the propensity of
-         Local channel chains, managing the locking situation in such a scenario is
-         practically infeasible.
 
-         Change-Id: Ic687397ffea08dfb899345a443bd990ec3d0416a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433199 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-04 16:23 +0000 [450579e908]  gtjoseph <george.joseph@fairview5.com>
+2015-03-19 14:19 +0000 [73dcea59bd]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip/contacts/statsd:  Make contact lifecycle events more consistent
+       * funcs/func_env: Fix regression caused in FILE read operation
 
-         It will never be perfect or even pretty, mostly because of the differences
-         between static and dynamic contacts.
+         When r432935 was merged, it did correctly fix a situation where a FILE read
+         operation on the middle of a file buffer would not read the requested length
+         in the parameters passed to the FILE function. Unfortunately, it would also
+         allow the FILE function to append more bytes than what was available in the
+         buffer if the length exceeded the end of the buffer length.
 
-         Created:
+         This patch takes the minimum of the remaining bytes in the buffer along with
+         the calculated length to append provided by the original patch, and uses
+         that as the length to append in the return result. This patch also updates
+         the unit tests with the scenarios that were originally pointed out in
+         ASTERISK-21765 that the original implementation treated incorrectly.
 
-         Can't use the contact or contact_status alloc functions
-         because the objects come and go regardless of the actual state.
+         ASTERISK-21765
+         ........
 
-         Can't use the contact_apply_handler, ast_sip_location_add_contact or
-         a sorcery created handler because they only get called for dynamic
-         contacts.  Similarly, permanent_uri_handler only gets called for
-         static contacts.
+         Merged revisions 433173 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         So, Matt had it right. :)  ast_res_pjsip_find_or_create_contact_status is
-         the only place it can go and not have duplicated code.  Both
-         permanent_uri_handler and contact_apply_handler call find_or_create.
 
-         Removed:
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433174 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Can't use the destructors for the same reason as above.  The only
-         place to put this is in persistent_endpoint_contact_deleted_observer
-         which I believe is the "correct" place but even that will handle only
-         dynamic contacts.  This doesn't called on shutdown however.  There is
-         no hook to use for static contacts that may be removed because of a
-         config change while asterisk is in operation.
+2015-03-19 05:20 +0000 [4c84dca2d8]  Corey Farrell <git@cfware.com>
 
-         I moved the cleanup of contact_status from ast_sip_location_delete_contact
-         to the handler as well.
+       * logger: Apply default console logging when configuration cannot be loaded.
 
-         Status Change and RTT:
+         When logger.conf is missing or invalid enable console logging and display
+         an error message.
 
-         Although they worked fine where they were (in update_contact_status) I
-         moved them to persistent_endpoint_contact_status_observer to make it
-         more consistent with removed.  There was logic there already to detect
-         a state change.
+         ASTERISK-24817 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4497/
+         ........
 
-         Finally, fixed a nit in permanent_uri_handler rmudgett reported
-         eralier.
+         Merged revisions 433122 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25608 #close
 
-         Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d
-         Reported-by: George Joseph
-         Tested-by: George Joseph
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433126 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-21 06:02 +0000 [5a18193dc0]  Alexander Traud <pabstraud@compuserve.com>
+2015-03-19 04:53 +0000 [958bc84caf]  Corey Farrell <git@cfware.com>
 
-       * res_format_attr_vp8: In SDP, forward max-fr and max-fs for video-codec VP8.
+       * chan_sip: Simplify dialog/peer references, improve REF_DEBUG output.
 
-         ASTERISK-25584 #close
+         * Replace functions for ref/undef of dialogs and peers with macro's
+           to call ao2_t_bump/ao2_t_cleanup.
+         * Enable passthough of REF_DEBUG caller information to sip_alloc and
+           find_call.
 
-         Change-Id: Iae00071b4ff1ae76f24995aeac4d00284fd14f91
+         ASTERISK-24882 #close 
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4189/
 
-2015-11-21 05:21 +0000 [3e2178c05e]  Alexander Traud <pabstraud@compuserve.com>
 
-       * res_format_attr_opus: Update to latest RFC 7587.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433115 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Beside that, the format-attribute module sends only non-default values in the
-         line fmtp, now. This avoids unnecessary overhead in SDP messages. Furthermore,
-         previously the parameter stereo was not parsed when being the first parameter.
+2015-03-19 04:44 +0000 [7fddae99dd]  Corey Farrell <git@cfware.com>
 
-         ASTERISK-25583 #close
+       * chan_sip: Fix dialog reference leaked to scheduler for reinvite_timeout.
 
-         Change-Id: Iae85ba3e5960bfd5d51cf65bcffad00dd4875a73
-2015-12-02 14:11 +0000 [072d94183c]  Jonathan Rose <jrose@digium.com>
+         Release the scheduler reference to the dialog for reinvite timeout during
+         dialog_unlink_all.
 
-       * Fix crash in audiohook translate to slin
+         ASTERISK-24876 #close 
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4491/
+         ........
 
-         This patch fixes a crash which would occur when an audiohook was
-         applied to a channel using an audio codec that could not be translated
-         to signed linear (such as when using pass-through codecs like OPUS or
-         when the codec translator module for the format in use is not loaded).
+         Merged revisions 433112 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25498 #close
-         Reported by: Ben Langfeld
 
-         Change-Id: Ib6ea7373fcc22e537cad373996136636201f4384
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433113 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-12-03 12:07 +0000 [9184fbeb34]  gtjoseph <george.joseph@fairview5.com>
+2015-03-17 21:34 +0000 [dba0f1ad67]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip: Use a MD5 hash for static Contact IDs
+       * res_pjsip_session: Fix off-nominal extra unref of session.
 
-         When 90d9a70789 was merged, it mostly tested dynamic contacts created as
-         a result of registering a PJSIP endpoint. Contacts generated in this
-         fashion typically have a long alphanumeric string as their object identifier,
-         which maps reasonably well for StatsD. Unfortunately, this doesn't work in the
-         general case. StatsD treats both '.' and ':' characters as special characters.
-         In particular, having a ':' appear in the middle of a StatsD metric will
-         result in the metric being rejected.
 
-         This causes some obvious issues with SIP URIs.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The StatsD API should not be responsible for escaping the metric name passed
-         to it. The metric is treated as a single long string, and it would be
-         challenging to know what to escape in the string passed to the function.
-         Likewise, we don't want to escape the metric in PJSIP, as that involves
-         overhead that is wasted when either res_statsd isn't loaded or enabled.
+2015-03-17 17:15 +0000 [2c7b945149]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         This patch takes an alternative approach. The Contact ID has been changed
-         to be "aor@@uri_hash" instead of "aor@@uri". This (a) won't contain any of the
-         aforementioned special characters, (b) can be done on Contact creation,
-         which has minimal impact on run-time performance, and (c) also conforms to an
-         earlier commit that changed the ID for dynamic contacts.
+       * Various: bugfixes found via chaos
 
-         The downside of this is that StatsD users will have to map SHA1 hashes back to
-         the Contacts that are emitting the statistics. To that end, the CLI commands
-         have been updated to include the first 10 characters of the MD5 hash, which
-         should be enough to match what is shown in Graphite (or some other StatsD
-         backend).
+         Using DEBUG_CHAOS several instances of a null
+         pointer crash, and one uninitialized variable
+         were uncovered and fixed.  Also added details
+         on why Asterisk failed to initialize.
 
-         ASTERISK-25595 #close
+         Review: https://reviewboard.asterisk.org/r/4468/
 
-         Change-Id: Ic674a3307280365b4a45864a3571c295b48a01e2
-         Reported-by: Matt Jordan
-         Tested-by: George Joseph
 
-2015-11-30 22:19 +0000 [ed9134282e]  gtjoseph <george.joseph@fairview5.com>
 
-       * res_pjsip:  Update logging to show contact->uri in messages
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         An earlier commit changed the id of dynamic contacts to contain
-         a hash instead of the uri.  This patch updates status change
-         logging to show the aor/uri instead of the id.  This required
-         adding the aor id to contact and contact_status and adding
-         uri to contact_status.  The aor id gets added to contact and
-         contact_status in their allocators and the uri gets added to
-         contact_status in pjsip_options when the contact_status is
-         created or updated.
+2015-03-17 16:57 +0000 [1fb1c81923]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         ASTERISK-25598 #close
+       * core: Introduce chaos into memory allocations
 
-         Reported-by: George Joseph
-         Tested-by: George Joseph
+         Locate potential crashes by exercising seldom
+         used code paths.  This patch introduces a new
+         define DEBUG_CHAOS, and mechanism to randomly
+         return an error condition from functions that
+         will seldom do so.  Functions that handle the
+         allocation of memory get the first treatment.
 
-         Change-Id: I56cbec1d2ddbe8461367dd8b6da8a6f47f6fe511
+         Review: https://reviewboard.asterisk.org/r/4463/
 
-2015-12-01 16:11 +0000 [eadad24b59]  Jonathan Rose <jrose@digium.com>
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433060 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25600 #close
-         Reported by: Mark Michelson
+2015-03-17 16:49 +0000 [2122c205e6]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da
+       * Audit ast_sockaddr_resolve() usage for memory leaks.
 
-2015-11-30 14:22 +0000 [bb0b60619d]  Richard Mudgett <rmudgett@digium.com>
+         Valgrind found some memory leaks associated with ast_sockaddr_resolve().
+         Most of the leaks had already been fixed by earlier memory leak hunt
+         patches.  This patch performs an audit of ast_sockaddr_resolve() and found
+         one more.
 
-       * res_sorcery_memory_cache.c: Fix off nominal ref leak.
+         * Fix ast_sockaddr_resolve() memory leak in
+         apps/app_externalivr.c:app_exec().
 
-         Change-Id: If83d63cf11cbc6df9b15251848b01feb570ade49
+         * 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().
 
-2015-11-30 16:42 +0000 [e7c88e11aa]  Richard Mudgett <rmudgett@digium.com>
+         * 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.
 
-       * sched.c: Make not return a sched id of 0.
+         Review: https://reviewboard.asterisk.org/r/4509/
+         ........
 
-         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.
+         Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25476
 
-         Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433057 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-25 12:23 +0000 [4aed349a7b]  Richard Mudgett <rmudgett@digium.com>
+2015-03-17 13:34 +0000 [94fe4a9178]  Kevin Harwell <kharwell@digium.com>
 
-       * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-         chan_sip.c:
-         * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to
-         ao2 conversion.
+         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'
 
-         * Initialize register scheduler ids earlier because of ASTOBJ to ao2
-         conversion.
+         ASTERISK-24840
+         Reported by: Mark Michelson
 
-         chan_skinny.c:
-         * Fix more scheduler usage for the valid 0 id value.
 
-         ASTERISK-25476
 
-         Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433031 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-24 12:44 +0000 [6d9156d10f]  Richard Mudgett <rmudgett@digium.com>
+2015-03-17 13:20 +0000 [1f428f25f0]  Kevin Harwell <kharwell@digium.com>
 
-       * Audit improper usage of scheduler exposed by 5c713fdf18f.
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-         channels/chan_iax2.c:
-         * Initialize struct chan_iax2_pvt scheduler ids earlier because of
-         iax2_destroy_helper().
+         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.
 
-         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.
+         ASTERISK-24840
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4489/
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433028 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25476
+2015-03-17 11:10 +0000 [522f063186]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8
+       * res_pjsip: Add reason comment.
 
-2015-12-01 07:55 +0000 [b76c196e13]  Alexander Traud <pabstraud@compuserve.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433005 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * codec_resample: Increase buffer for Opus Codec.
+2015-03-13 21:28 +0000 [5c03a5f2e7]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-25599 #close
+       * main/frame: Don't report empty disallow values as an error
 
-         Change-Id: I1f88a88c59fb4e1e62bbdbb100c7152d48e73f10
+         In realtime, it is normal to have a database with both 'allow' and 'disallow'
+         columns in the schema. It is perfectly valid to have an 'allow' value of
+         '!all,g722,ulaw,alaw' and no 'disallow' value. Unlike in static conf files,
+         you can't *not* provide the disallow value. Thus, the empty disallow value
+         causes a spurious WARNING message, which is kind of annoying.
 
-2015-11-28 08:46 +0000 [6614babea2]  Matt Jordan <mjordan@digium.com>
+         This patch makes it so that a 'disallow' value with no ... value ... is
+         ignored. Granted, you can still screw this up as well, as technically
+         specifying 'disallow=all,!ulaw' allows only ulaw, and then you would have no
+         'allow' value in your database. But really, why would you do that? WHY?
 
-       * bridges/bridge_t38: Add a bridging module for managing T.38 state
+         ASTERISK-16779 #close
+         Reported by: Atis Lezdins
+         ........
 
-         When 4875e5ac32 was merged, it fixed several issues with a direct media bridge
-         transitioning to handling a T.38 fax. However, it uncovered a race condition
-         caused by the bridging core. When a channel involved in a T.38 fax leaves a
-         bridge, the frame queued by the channel driver that should inform the far side
-         that it is no longer in a T.38 fax may not make it across the bridge. The
-         bridging framework is *extremely* aggressive in tearing down the bridge, and
-         control frames that are currently in flight *may* get dropped.
+         Merged revisions 432970 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         This patch adds a new module to the bridging framework, bridge_t38. This module
-         maintains some notion of the T.38 state for the two channels in a bridge. When
-         the bridge detects that it is being torn down or when one of the two channels
-         leaves, it informs the respective channel(s) that they should stop faxing. This
-         ensures that channels switch back to audio if they survive and are ejected out
-         of a bridge while faxing.
 
-         ASTERISK-25582
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432971 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: If5b0bb478eb01c4607c9f4a7fc17c7957d260ea0
+2015-03-13 21:00 +0000 [f7c6bedb06]  Joshua Colp <jcolp@digium.com>
 
-2015-11-27 07:39 +0000 [3fcf160fae]  Niklas Larsson <niklas@tese.se>
+       * func_curl: Don't hold exclusive lock when performing HTTP request.
 
-       * CHANGES: Fix a typo
+         This code originally kept a lock held when performing the HTTP
+         request to ensure that the options provided to curl remain valid.
+         This doesn't seem to be necessary these days and holding the lock
+         caused requests to happen sequentially instead of in parallel.
 
-         Change-Id: Iceb3d9bb78140c376174a7bee197dfcf8ef9cda7
-2015-11-25 15:26 +0000 [45efbf8503]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-18708 #close
+         Reported by: Dave Cabot
+         ........
 
-       * fastagi: record file closed after sending result
+         Merged revisions 432948 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         The fastagi record-file testsuite test sometimes fails reporting an empty
-         recorded file. This was happening because Asterisk was sending the agi result
-         notification prior to actually closing the file and the data, being buffered,
-         had not been written to the file yet when the test attempts to check the file
-         size.
 
-         This patch makes it so the record file stream is closed prior to sending the
-         agi result notification.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432949 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25593 #close
+2015-03-13 20:36 +0000 [287a22435f]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I6b2b3be3ae37f7c7b18e672c419a89b3b8513cde
+       * core: Fix tab completion of "core set debug channel" CLI command.
 
-2015-11-25 13:29 +0000 [b2787876d6]  Walter Doekes <walter+asterisk@wjd.nu>
+         The "core set debug channel" CLI command mistakenly had source filenames
+         added to its tab completion. This occurred because the CLI generator fell back
+         to the "core set debug" command which permits setting debug at a source
+         filename level.
 
-       * main: Slight refactor of main. Improve color situation.
+         ASTERISK-21038 #close
+         Reported by: Richard Kenner
+         ........
 
-         Several issues are addressed here:
-         - main() is large, and half of it is only used if we're not rasterisk;
-           fixed by spliting up the daemon part into a separate function.
-         - Call ast_term_init from rasterisk as well.
-         - Remove duplicate code reading/writing asterisk history file.
-         - Attempt to tackle background color issues and color changes that
-           occur. Tested by starting asterisk -c until the colors stopped
-           changing at odd locations.
+         Merged revisions 432944 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25585 #close
 
-         Change-Id: Ib641a0964c59ef9fe6f59efa8ccb481a9580c52f
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432945 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-24 13:54 +0000 [59881fbb99]  David M. Lee <dlee@respoke.io>
+2015-03-13 20:21 +0000 [37d33ed997]  Di-Shi Sun (License 5076)
 
-       * Fixed some typos
+       * FILE: fix retrieval of file contents when offset is specified
 
-         Fixes some minor typos in the CHANGES file, plus an embarrasing typo in
-         the StatsD API.
+         The loop that reads in a file was not correctly using the offset when
+         determining what bytes to append to the output. This patch corrects
+         the logic such that the correct portion of the file is extracted when an
+         offset is specified.
 
-         Change-Id: I9ca4858c64a4a07d2643b81baa64baebb27a4eb7
+         ASTERISK-21765
+         Reported by: John Zhong
+         Tested by: Matt Jordan, Di-Shi Sun
+         patches:
+           file_read_390821.patch uploaded by Di-Shi Sun (License 5076)
+         ........
 
-2015-11-24 13:07 +0000 [b75f587d15]  Corey Farrell <git@cfware.com>
+         Merged revisions 432935 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_pjsip_notify: Fix CLI usage info
 
-         The usage info for 'pjsip send notify' previously referenced the
-         chan_sip configuration sip_notify.conf.  Fix this to reference
-         the correct configuration pjsip_notify.conf.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432938 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25590 #close
+2015-03-13 19:18 +0000 [a4c27baf47]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I3898271a8e8a8b1db201741e790ebe2c6bf5cdea
+       * apps/app_amd: Document maximum_word_length option; fix AMDCAUSE documentation
 
-2015-11-23 14:27 +0000 [fc45f4040d]  Richard Mudgett <rmudgett@digium.com>
+         This patch corrects the documentation for the AMD application. Specifically:
+         * It documents the maximum_word_length option, which limits the maximum allowed
+           length of a single utterance.
+         * It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH. MAXWORDLENGTH
+           was documented as MAXWORDS, while MAXWORDS was undocumented.
 
-       * res_sorcery_realtime.c: Fix crash from NULL sorcery object type.
+         Thanks to the issue reporter, Frank DiGennaro, for pointing out the issues.
 
-         If the sorcery object type is not found a NULL is returned.
-         Unfortunately, sorcery_realtime_filter_objectset() will crash after
-         complaining about not finding the object type and saying to expect errors.
+         ASTERISK-19470 #close
+         Reported by: Frank DiGennaro
+         ........
 
-         * Use ao2_cleanup() instead of ao2_ref() to prevent the crash.
+         Merged revisions 432918 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25165
-         Reported by Corey Farrell
 
-         Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432920 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-20 21:08 +0000 [4875e5ac32]  Matt Jordan <mjordan@digium.com>
+2015-03-13 12:04 +0000 [a3292230b8]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_pjsip: Handle T.38 faxes with direct media bridges
+       * chan_pjsip: AMI action PJSIPShowEndpoint closes AMI connection on error.
 
-         When a channel is in a direct media bridge, a re-INVITE may arrive that forces
-         Asterisk to re-negotiate the media to a T.38 fax. When this occurs, the bridge
-         must change its technology to a simple bridge, and re-INVITE the media back
-         to Asterisk.
+         Also fixed similar problem with AMI action PJSIPShowEndpoints.
 
-         Generally, this logic mostly already exists in Asterisk. However, prior to this
-         patch, there were a few bugs:
-         (1) The T.38 framehook currently prevents a channel capable of T.38 faxes from
-             ever entering into a direct media bridge. This applies even when the only
-             media being passed over the channel is audio. This patch fixes this bug
-             by having the framehook specify that it defers caring about any frame type.
-             This allows the channels to enter into a direct media bridge, which will
-             be broken when a re-INVITE is received.
-         (2) When a re-INVITE is received, nothing instructed the bridging layer to
-             re-inspect the allowed bridging technology. This now occurs when either
-             a re-INVITE is received from a peer, or when a response is received from
-             the far end (that is, when the T.38 state changes to either
-             T38_PEER_REINVITE or T38_LOCAL_REINVITE).
-         (3) chan_pjsip needs to do a small amount of work to prevent a direct media
-             bridge from being chosen when a T.38 session is in progress. When a T.38
-             session supplement has a t38 datastore - which is added when we detect
-             we should start thinking about T.38 on a channel - we now refuse a native
-             RTP bridge.
-         (4) When a BYE request is received, we don't terminate the T.38 session. If
-             the other side of a T.38 fax survives the hangup (due to the 'g' flag
-             in Dial, for example), we don't currently re-INVITE the media on the
-             other channel back to audio. This patch now has res_pjsip_t38 intercept
-             BYE requests and inform the far side that the T.38 session is terminated.
-             This naturally causes the correct re-INVITEs to be sent.
+         ASTERISK-24872 #close
+         Reported by: Dmitriy Serov
 
-         ASTERISK-25582
+         Review: https://reviewboard.asterisk.org/r/4487/
 
-         Change-Id: Iabd6aa578e633d16e6b9f342091264e4324a79eb
 
-2015-11-20 21:07 +0000 [2b94d9a10d]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_pjsip_t38: Add debug statements
+2015-03-13 11:26 +0000 [34aa0214eb]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch adds some debug statements to res_pjsip_t38. These statements help
-         to determine which SDP negotiation callbacks are being executed, and, when
-         a particular callback exits, why a callback may not have applied its logic
-         to the local or remote SDP.
+       * chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and consistent.
 
-         Change-Id: I61b3fb9183b7ebbb5da8e9f48b59a5d9d7042d77
+         The res_pjsip modules were manually checking both name and number
+         presentation values when there is a function that determines the combined
+         presentation for a party ID struct.  The function takes into account if
+         the name or number components are valid while the manual code rarely
+         checked if the data was even valid.
 
-2015-10-22 09:44 +0000 [af288b2d96]  Matt Jordan <mjordan@digium.com>
+         * Made use ast_party_id_presentation() rather than manually checking party
+         ID presentation values.
 
-       * main/cli: Use proper string methods to check existence of context/exten/app
+         * Ensure that set_id_from_pai() and set_id_from_rpid() will not return
+         presentation values other than what is pulled out of the SIP headers.  It
+         is best if the code doesn't assume that AST_PRES_ALLOWED and
+         AST_PRES_USER_NUMBER_UNSCREENED are zero.
 
-         Because the context, extension, and application are stored in stringfields,
-         checking for them being NULL doesn't work so well. This patch uses the
-         appropriate string library call, ast_strlen_zero, to see if there is a value
-         in the context/exten/app values.
+         * Fixed copy paste error in add_privacy_params() dealing with RPID
+         privacy.
 
-         Change-Id: Ie09623bfdf35f5a8d3b23dd596647fe3c97b9a23
+         * Pulled the id->number.valid test from add_privacy_header() and
+         add_privacy_params() up into the parent function add_id_headers() to skip
+         adding PAI/RPID headers earlier.
 
-2015-11-18 09:43 +0000 [d27aac0a9d]  Matt Jordan <mjordan@digium.com>
+         * Made update_connected_line_information() not send out connected line
+         updates if the connected line number is invalid.  Lower level code would
+         not add the party ID information and thus the sent message would be
+         unnecessary.
 
-       * res/res_endpoint_stats: Add module to emit endpoint StatsD statistics
+         * Eliminated RAII_VAR usage in send_direct_media_request().
 
-         This patch adds a module that emits StatsD statistics about Asterisk
-         endpoints. This includes:
-          * A GUAGE statistic for endpoint states, tracking how many endpoints are in
-            a particular state.
-          * A GUAGE statistic for each endpoint, counting the number of channels
-            currently associated with an endpoint.
+         Review: https://reviewboard.asterisk.org/r/4472/
 
-         ASTERISK-25572
 
-         Change-Id: If7e1333c5aeda8d136850b30c2101c0ee1c97305
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432892 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-18 10:07 +0000 [90d9a70789]  Matt Jordan <mjordan@digium.com>
+2015-03-13 09:48 +0000 [0497b7b155]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip/pjsip_options: Add StatsD statistics for PJSIP contacts
+       * Revert - res_pjsip: Allow configuration of endpoint identifier query order
 
-         This patch adds the ability to send StatsD statistics related to the
-         state of PJSIP contacts. This includes:
-          * A GUAGE statistic measuring the count of contacts in a particular state.
-            This measures how many contacts are reachable, unreachable, etc.
-          * The RTT time for each contact, if those contacts are qualified. This
-            provides StatsD engines useful time-based data about each contact.
+         Due to a break in binary compatibility with some other modules these changes
+         are being reverted until the issue can be resolved.
 
-         ASTERISK-25571
+         ASTERISK-24840
+         Reported by: Mark Michelson
 
-         Change-Id: Ib8378d73afedfc622be0643b87c542557e0b332c
 
-2015-11-13 10:34 +0000 [75097a0955]  Matt Jordan <mjordan@digium.com>
 
-       * res/res_pjsip_outbound_registration: Add registration statistics for StatsD
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch adds outbound registration statistics for StatsD. This includes
-         the following:
-          * A GUAGE metric for the overall count of outbound registrations.
-          * A GUAGE metric for each state an outbound registration can be in. As the
-            outbound registrations change state, the overall count of how many
-            outbound registrations are in the particular state is changed.
+2015-03-12 07:58 +0000 [b9fd61f2c7]  Matt Jordan <mjordan@digium.com>
 
-         These statistics are particularly useful for systems with a large number of
-         SIP trunks, and where measuring the change in state of the trunks is useful
-         for monitoring.
+       * main/audiohook: Update internal sample rate on reads
 
-         ASTERISK-25571
+         When an audiohook is created (which is used by the various Spy applications
+         and Snoop channel in Asterisk 13+), it initially is given a sample rate of
+         8kHz. It is expected, however, that this rate may change based on the media
+         that passes through the audiohook. However, the read/write operations on the
+         audiohook behave very differently.
 
-         Change-Id: Iba6ff248f5d1c1e01acbb63e9f0da1901692eb37
+         When a frame is written to the audiohook, the format of the frame is checked
+         against the internal sample rate. If the rate of the format does not match
+         the internal sample rate, the internal sample rate is updated and a new SLIN
+         format is chosen based on that sample rate. This works just fine.
 
-2015-11-19 09:40 +0000 [8f71263e72]  Matt Jordan <mjordan@digium.com>
+         When a frame is read, however, we do something quite different. If the format
+         rate matches the internal sample rate, all is fine. However, if the rates
+         don't match, the audiohook attempts to "fix up" the number of samples that
+         were requested. This can result in some seriously large number of samples
+         being requested from the read/write factories.
 
-       * res/res_pjsip_outbound_registration: Apply configuration on object type load
+         Consider the worst case - 192kHz SLIN. If we attempt to read 20ms worth of
+         audio produced at that rate, we'd request 3840 samples (192000 / (1000 / 20)).
+         However, if the audiohook is still expecting an internal sample rate of 8000,
+         we'll attempt to "fix up" the requested samples to:
 
-         When Asterisk is configured to use a dynamic sorcery backend (such as
-         res_sorcery_astdb) with 'registration' objects, it will fail to create the
-         internal state objects associated with the registration objects on module
-         load. This is due to nothing actually querying for the specific objects
-         and calling their sorcery apply handler during module load.
+           samples_converted = samples * (ast_format_get_sample_rate(format) /
+                                          (float) audiohook->hook_internal_samp_rate);
 
-         This patch fixes that by calling get_registrations in the sorcery observer's
-         object_type_loaded handler. Doing this causes the sorcery backends to be
-         asked for the current state of all registration objects, which causes the
-         apply handler to be called and the internal run-time state to be created.
+           which is:
 
-         ASTERISK-25575 #close
+           92160 = 3840 * (192000 / 8000)
 
-         Change-Id: Ie9306e797098c6d4da7bcf4a5434a15891508b23
+         This results in us attempting to read 92160 samples from our factories, as
+         opposed to the 3840 that we actually wanted. On a 64-bit machine, this
+         miraculously survives - despite allocating up to two buffers of length 92160
+         on the stack. The 32-bit machines aren't quite so lucky. Even in the case where
+         this works, we will either (a) get way more samples than we wanted; or (b) get
+         about 3840 samples, assuming the timing is pretty good on the machine.
 
-2015-11-11 11:51 +0000 [0b508789ab]  Alexander Traud <pabstraud@compuserve.com>
+         Either way, the calculation being performed is wrong, based on the API users
+         expectations.
 
-       * translate: Provide translation modules the result of SDP negotiation.
+         My first inclination was to allocate the buffers on the heap. As it is,
+         however, there's at least two drawbacks with doing this:
+         (1) It's a bit complicated, as the size of the buffers may change during the
+             lifetime of the audiohook (ew).
+         (2) The stack is faster (yay); the heap is slower (boo).
 
-         Previously, a trancoding module did not have access to the joint but cached
-         format. Therefore, the module did not have access to the attributes negotiated
-         via SDP (line fmtp). Now, a translation module receives the joint format.
+         Since our calculation is flat out wrong in the first place, this patch fixes
+         this issue by instead updating the internal sample rate based on the format
+         passed into the read operation. This causes us to read the correct number of
+         samples, and has the added benefit of setting the audihook with the right
+         SLIN format.
 
-         ASTERISK-25545 #close
+         Note that this issue was caught by the Asterisk Test Suite as a result of
+         r432195 in the 13 branch. Because this issue is also theoretically possible
+         in Asterisk 11, the change is being made here as well.
 
-         Change-Id: Id6878a989b50573298dab115d3371ea369e1a718
+         Review: https://reviewboard.asterisk.org/r/4475/
+         ........
 
-2015-11-19 01:14 +0000 [1aa552b2a2]  Alexander Traud <pabstraud@compuserve.com>
+         Merged revisions 432810 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_format_attr_h264: Do not reset string buffer.
 
-         When no parameter is present, Asterisk does not generate the line fmtp, as
-         expected. However, because a buffer was reset, even rtpmap and fmtp of previous
-         media codecs got removed. Now, Asterisk does not reset other codecs in case of
-         no parameter for H.264.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432811 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25573 #close
+2015-03-12 07:39 +0000 [f5bc032567]  Diederik de Groot (License 6600)
 
-         Change-Id: I93811331f4a28c45418a9e14ee46c0debd47a286
+       * Add support for the clang compiler; update RAII_VAR to use BlocksRuntime
 
-2015-11-18 10:05 +0000 [3354b325c6]  Matt Jordan <mjordan@digium.com>
+         RAII_VAR, which is used extensively in Asterisk to manage reference counted
+         resources, uses a GCC extension to automatically invoke a cleanup function
+         when a variable loses scope. While this functionality is incredibly useful
+         and has prevented a large number of memory leaks, it also prevents Asterisk
+         from being compiled with clang.
 
-       * res_statsd: Add functions that support variable arguments
+         This patch updates the RAII_VAR macro such that it can be compiled with clang.
+         It makes use of the BlocksRuntime, which allows for a closure to be created
+         that performs the actual cleanup.
 
-         Often, the metric names of statistics we are generating for StatsD have some
-         dynamic component to them. This can be the name of a particular resource, or
-         some internal status label in Asterisk. With the current set of functions,
-         callers of the statsd API must first build the metric name themselves, then
-         pass this to the API functions. This results in a large amount of boilerplate
-         code and usage of either fixed length static buffers or dynamic memory
-         allocation, neither of which is desireable.
+         Note that this does not attempt to address the numerous warnings that the clang
+         compiler catches in Asterisk.
 
-         This patch adds two new functions to the StatsD API that support a printf
-         style format specifier for constructing the metric name. A dynamic string,
-         allocated in threadstorage, is used to build the metric name. This eases
-         the burden on users of the StatsD API.
+         Much thanks for this patch goes to:
+         * The folks on StackOverflow who asked this question and Leushenko for
+           providing the answer that formed the basis of this code:
+           http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang
+         * Diederik de Groot, who has been extremely patient in working on getting this
+           patch into Asterisk.
 
-         Change-Id: If533c72d1afa26d807508ea48b4d8c7b32f414ea
+         Review: https://reviewboard.asterisk.org/r/4370/
 
-2015-11-17 14:53 +0000 [d4a522d587]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24133
+         ASTERISK-23666
+         ASTERISK-20399
+         ASTERISK-20850 #close
+         Reported by: Diederik de Groot
+         patches:
+           RAII_CLANG.patch uploaded by Diederik de Groot (License 6600)
+         ........
 
-       * res_pjsip_outbound_registration.c: Be tolerant of short registration timeouts.
+         Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: Ie16f5053ebde0dc6507845393709b4d6a3ea526d
 
-2015-11-17 14:53 +0000 [e44ab3816c]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432808 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_outbound_registration.c: Fix 423 response handling.
+2015-03-11 11:38 +0000 [bd029688cd]  Richard Mudgett <rmudgett@digium.com>
 
-         Receiving a 423 Interval Too Brief response after authentication for an
-         outbound registration attempt results in assuming that the registrar has
-         rejected the registration permanently.  If there are no configured retries
-         for fatal responses then the outbound registration is stopped for that
-         endpoint.
+       * res_pjsip: Move internal init/destroy prototypes to private header file.
 
-         For registrations, PJSIP/PJPROJECT intercepts the handling of 423
-         responses and does not include any authentication in the updated
-         registration request.  When the updated request is challenged then the
-         Asterisk code assumes that we were challenged again because the peer
-         rejected the authentication we sent earlier.
+         Done as a separate commit from a finding in
+         https://reviewboard.asterisk.org/r/4467/
 
-         * Made registration challenges keep track of the CSeq number to determine
-         if the received challenge response was for the request we thought we sent.
-         If the response's CSeq number differs from the CSeq number we last sent
-         with authentication then authenticate again because it is a challenge to a
-         different request.
 
-         Change-Id: I81b4bd36d1be095bab606e34b8b44e6302971b09
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432787 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-03 14:36 +0000 [1e0040b88f]  Tyler Cambron <tcambron@digium.com>
+2015-03-11 10:24 +0000 [c24a294f0b]  Richard Mudgett <rmudgett@digium.com>
 
-       * StatsD: Add res_statsd compatibility
+       * res_pjsip: Fix pjsip.conf type=global object default value handling.
 
-         Added a new api to res_statsd.c to allow it to receive a
-         character pointer for the value argument. This allows for a
-         '+' and a '-' to easily be sent with the value.
+         When a type=global section is not defined in pjsip.conf the global
+         defaults are not applied.  As a result the mandatory Max-Forwards header
+         is not added to SIP messages for res_pjsip/chan_pjsip.
 
-         ASTERISK-25419
-         Reported By: Ashley Sanders
+         The handling of pjsip.conf type=global objects has several problems:
 
-         Change-Id: Id6bb53600943d27347d2bcae26c0bd5643567611
+         1) If the global object is missing the defaults are not applied.
 
-2015-11-16 13:56 +0000 [f62b642fe3]  Matt Jordan <mjordan@digium.com>
+         2) If the global object is missing the default_outbound_endpoint's default
+         value is not returned by ast_sip_global_default_outbound_endpoint().
 
-       * res/res_pjsip: Fix off nominal crash with requests that fail and have a timer
+         3) Defines are needed so default values only need to be changed in one
+         place.
 
-         When a request is sent using pjsip_endpt_send_request and fails, a condition
-         exists where the request wrapper, which is an AO2 object, may be de-ref'd
-         more times than it should. This occurs when the request's callback is called,
-         and, in the callback, the timer on the PJSIP heap is cancelled. When that
-         occurs, the request wrapper's lifetime is decremented. When
-         pjsip_endpt_send_request fails, we unilaterally decrement the lifetime of
-         the request wrapper again, even though we've already cancelled the reference
-         associated with the timer.
+         * Added a sorcery instance observer callback to check if there were any
+         type=global sections loaded.  If there were more than one then issue an
+         error message.  If there were none then apply the global defaults.
 
-         This patch checks the return result of pj_timer_heap_cancel_if_active before
-         removing the reference associated with the timer. We now only decrement it
-         in this case if a timer is cancelled as a result of the function call.
+         * Fixed ast_sip_global_default_outbound_endpoint() to return the
+         documented default when no type=global object is defined.
 
-         Change-Id: I21332343a1a019c1117076f9bf2df27be2850102
+         * Made defines for the global default values.
 
-2015-11-13 14:03 +0000 [fdd2afcd16]  Mark Michelson <mmichelson@digium.com>
+         * Increased the default_useragent[] size because SVN version strings can
+         get lengthy and 128 characters may not be enough.
 
-       * Confbridge: Add a user timeout option
+         * Fixed an off-nominal code path ref leak in global_alloc() if the string
+         fields fail to initialize.
 
-         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".
+         * Eliminated RAII_VAR in get_global_cfg() and
+         ast_sip_global_default_outbound_endpoint().
 
-         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-24807 #close
+         Reported by: Anatoli
 
-         ASTERISK-25549 #close
-         Reported by Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4467/
 
-         Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98
 
-2015-11-16 04:29 +0000 [7debb986a5]  Alec Davis <sivad.a@paradise.net.nz>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432766 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked!
+2015-03-11 10:18 +0000 [737064bfa4]  Richard Mudgett <rmudgett@digium.com>
 
-         commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525)
-         refer ASTERISK-24958
+       * res_pjsip: Fixed invalid empty Server and User-Agent SIP headers.
 
-         above commit removed ast_channel_lock(qe->chan);
-         but failed to remove corresponding ast_channel_unlock(qe->chan);
+         Setting pjsip.conf useragent to an empty string results in an empty SIP
+         header being sent.
 
-         ASTERISK-25561 #close
-         Reported Alec Davis
+         * Made not add an empty SIP header item to the global SIP headers list.
 
-         Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a
+         Review: https://reviewboard.asterisk.org/r/4467/
 
-2015-11-14 07:02 +0000 [afd9a89e5a]  Joshua Colp <jcolp@digium.com>
 
-       * hashtab: Add NULL check when destroying iterator.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432764 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The hashtab API is pretty NULL tolerant which has resulted
-         in remaining callers not doing much checks themselves.
-         Unfortunately the function to destroy an iterator does not
-         do a NULL check and will result in a crash if passed NULL.
-         This change fixes that.
+2015-03-10 18:09 +0000 [bc357c1d7e]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25552 #close
+       * core: Don't create snapshots with locks.
 
-         Change-Id: Ic1bf8eec3639e5a440f1c941d3ae3893ac6ed619
+         Snapshots are immutable and are never changed. Allocating them
+         with a lock is wasteful.
 
-2015-11-13 14:32 +0000 [c0f2f8de45]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4469/
 
-       * res_pjsip_rfc3326.c: Fix crash when channel goes away.
 
-         If an authenticated incoming caller does not respond to our 200 OK INVITE
-         response with an ACK then PJSIP will hangup the call.  Unfortunately,
-         there is a chance that the session's channel will go away between one use
-         of the channel pointer and another when building the BYE request because
-         the BYE is being built by the monitor thread and not the call's serializer
-         thread.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432742 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Added a check to ensure that the thread trying to add the Reason header
-         is the call's serializer thread.  This ensures that the channel will not
-         go away on us.
+2015-03-10 16:33 +0000 [afea98dc73]  Javier Acosta (License 6690)
 
-         Change-Id: I866388d2b97ea2032eaae3f3ab3f1ca6cbd2df89
+       * res/res_config_odbc: Fix improper escaping of backslashes with MySQL
 
-2015-11-13 14:19 +0000 [4f43b85c92]  Mark Michelson <mmichelson@digium.com>
+         When escaping backslashes with MySQL, the proper way to escape the characters
+         in a LIKE clause is to escape the '\' four times, i.e., '\\\\'. To quote the
+         MySQL manual:
 
-       * Taskprocessors: Increase high-water mark
+         "Because MySQL uses C escape syntax in strings (for example, “\n” to represent
+         a newline character), you must double any “\” that you use in LIKE strings.
+         For example, to search for “\n”, specify it as “\\n”. To search for “\”,
+         specify it as “\\\\”; this is because the backslashes are stripped once by the
+         parser and again when the pattern match is made, leaving a single backslash to
+         be matched against."
 
-         In practical tests, we have seen certain taskprocessors, specifically
-         Stasis subscription taskprocessors, cross the recently-added high-water
-         mark and emit a warning. This high-water mark warning is only intended
-         to be emitted when things have tanked on the system and things are
-         heading south quickly. In the practical tests, the Stasis taskprocessors
-         sometimes had a max depth of 180 tasks in them, and Asterisk wasn't in
-         any danger at all.
+         ASTERISK-24808 #close
+         Reported by: Javier Acosta
+         patches:
+           res_config_odbc.diff uploaded by Javier Acosta (License 6690)
+         ........
 
-         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.
+         Merged revisions 432720 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce
 
-2015-11-11 11:46 +0000 [d8d3991390]  Alexander Traud <pabstraud@compuserve.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * format: Register format-attribute module with cached formats.
+2015-03-10 13:13 +0000 [055001716c]  Graham Barnett (License 6685)
 
-         In Asterisk 13, cached formats are created before their corresponding format-
-         attribute module is registered. Cached formats are involved when a local
-         extension is called. Therefore, ast_format_generate_sdp_fmtp did not work
-         on local extensions. This change affects the Opus Codec, H.263 (Plus), H.264,
-         and format-attribute modules provided externally.
+       * app_voicemail: Fix crash with IMAP backends when greetings aren't present
 
-         ASTERISK-25160 #close
+         When an IMAP backend is in use and greetings are set to be used, but aren't
+         present for a user in their IMAP folder, Asterisk will crash. This occurs
+         due to the mailstream being set to the 'greetings' folder and being left
+         in that particular state, regardless of the success/failure of the attempt
+         to access the folder the mailstream points to. Later access of the mailstream
+         assumes that it points to the 'INBOX' (or some other folder), resulting in
+         either a crash (if the greetings folder didn't exist and the mailstream is
+         invalid) or an inability to read messages from the 'INBOX' folder.
 
-         Change-Id: I1ea1f0483e5261e2a050112e4ebdfc22057d1354
+         This patch restores the mailstream to its correct state after accessing the
+         greetings. This fixes the crash, and sets the mailstream to the state that
+         VoiceMailMain expects.
 
-2015-11-12 11:17 +0000 [367972e42d]  Mark Michelson <mmichelson@digium.com>
+         Note that while ASTERISK-23390 also contained a patch for this issue, the
+         patch on ASTERISK-24786 is the one being merged here.
 
-       * res_pjsip distributor: Don't send 503 response to responses.
+         Review: https://reviewboard.asterisk.org/r/4459/
 
-         When the SIP threadpool is backed up with tasks, we send 503 responses
-         to ensure that we don't try to overload ourselves. The problem is that
-         we were not insuring that we were not trying to send a 503 to an
-         incoming SIP response.
+         ASTERISK-23390 #close
+         Reported by: Ben Smithurst
 
-         This change makes it so that we only send the 503 on incoming requests.
+         ASTERISK-24786 #close
+         Reported by: Graham Barnett
+         Tested by: Graham Barnett
+         patches:
+           app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett (License 6685)
+         ........
 
-         Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404
+         Merged revisions 432695 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-11-11 17:11 +0000 [2f9cb7d62b]  Mark Michelson <mmichelson@digium.com>
 
-       * res_pjsip: Deny requests when threadpool queue is backed up.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-03-10 12:47 +0000 [92178247ee]  Ed Hynan (Licnese 6680)
 
-         This change makes it so that incoming traffic gets rejected with a 503
-         response if the queue is backed up too much.
+       * localtime: Fix file descriptor leak on kqueue(2) systems
 
-         Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816
+         The localtime management in the Asterisk core contains a thread that watches
+         for changes in the local timezone. On systems where the directory containing
+         /etc/localtime is modified frequently, the thread monitoring the changes will
+         be woken up to determine if any changes in timezone have occurred. When using
+         kqueue(2), this can cause a leak of file descriptors due to some improper
+         management of resources.
 
-2015-11-12 06:24 +0000 [4e5bf12b33]  Joshua Colp <jcolp@digium.com>
+         This patch updates the kqueue(2) handling in localtime, such that is no longer
+         leaks resources.
 
-       * format_cap: Don't append the 'none' format when appending all.
+         Review: https://reviewboard.asterisk.org/r/4450/
 
-         When appending all formats of a type all the codecs are iterated
-         and added. This operation was incorrectly adding the ast_format_none
-         format which is special in that it is supposed to be used when no
-         format is present. It shouldn't be appended.
+         ASTERISK-24739 #close
+         Reported by: Ed Hynan
+         patches:
+           11.15.0-u.diff uploaded by Ed Hynan (Licnese 6680)
+           11.7.0-u.diff uploaded by Ed Hynan (License 6680)
+           svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License 6680)
+         ........
 
-         ASTERISK-25535
+         Merged revisions 432691 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I7b00f3bdf4a5f3022e483d6ece602b1e8b12827c
 
-2015-11-11 04:16 +0000 [07583c2888]  Steve Davies <steve@one47.co.uk>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * Further fixes to improper usage of scheduler
+2015-03-10 11:04 +0000 [cae712d986]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * res_pjsip_refer: Fix occasional unexpected BYE sent after receiving a REFER.
 
-         This patch attempts to collect all of the scheduler issues discovered so
-         far and address them sensibly.
+         A race condition happened between initiating a transfer and requesting
+         that a dialog termination be delayed.  Occasionally, the transferrer
+         channels would exit the bridge and hangup before the dialog termination
+         delay was requested.
 
-         ASTERISK-25476 #close
+         * Made request dialog termination delay before initiating the transfer
+         action.  If the transfer fails then cancel the delayed dialog termination
+         request.
 
-         Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b
+         ASTERISK-24755 #close
+         Reported by: John Bigelow
 
-2015-11-11 11:04 +0000 [b818d70533]  Joshua Colp <jcolp@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4460/
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432668 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A unit test has also been added which thrashes the idle timeout
-         and thread activation to exploit any race conditions between the
-         two.
+2015-03-09 11:12 +0000 [110b99646c]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-25546 #close
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-         Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143
+         It's possible to have a scenario that will create a conflict between endpoint
+         identifiers. For instance an incoming call could be identified by two different
+         endpoint identifiers and the one chosen depended upon which identifier module
+         loaded first. This of course causes problems when, for example, the incoming
+         call is expected to be identified by username, but instead is identified by ip.
+         This patch adds a new 'global' option to res_pjsip called
+         'endpoint_identifier_order'. It is a comma separated list of endpoint
+         identifier names that specifies the order by which identifiers are processed
+         and checked.
 
-2015-11-10 09:27 +0000 [4bf84459c7]  Alexander Traud <pabstraud@compuserve.com>
+         ASTERISK-24840 #close
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4455/
 
-       * rtp_engine: Init a format-attribute module to its RFC defaults.
 
-         Previously, format-attribute modules relied on an existing fmtp line in SDP
-         negotiation. However, fmtp is optional for several formats like the Opus Codec.
-         Now, the format-attribute module is called with an empty fmtp, which allows the
-         module to initialise itself to RFC defaults. Furthermore now, Asterisk is able
-         to differentiate between internally and externally created formats.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432638 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25537 #close
+2015-03-07 19:46 +0000 [714cb27000]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I28f680cef7fdf51c0969ff8da71548edad72ec52
+       * res_rtp_asterisk: Fix wrongful use of USE_PJPROJECT define.
 
-2015-11-09 03:04 +0000 [1bff400df7]  Alexander Traud <pabstraud@compuserve.com>
+         As pjproject is now used as a shared library a different define,
+         HAVE_PJPROJECT, is used to specify if pjproject is present.
 
-       * ast_format_cap_get_names: To display all formats, the buffer was increased.
+         ASTERISK-24830 #close
+         Reported by: Stefan Engström
 
-         ASTERISK-25533 #close
 
-         Change-Id: Ie1a9d1a6511b3f1a56b93d04475fbf8a4e40010a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432614 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-09 07:04 +0000 [f3ac4d8090]  Alexander Traud <pabstraud@compuserve.com>
+2015-03-06 16:50 +0000 [e158517a9c]  Richard Mudgett <rmudgett@digium.com>
 
-       * ast_format_cap: Avoid format creation on module load, use cache instead.
+       * res_pjsip_refer: Make safely get the context for a blind transfer.
 
-         Since Asterisk 13, formats are immutable and cached. However while loading a
-         module like chan_sip, some formats were created instead using cached ones.
+         Made safely get the TRANSFER_CONTEXT channel value while the channel is
+         locked in refer_incoming_attended_request() and
+         refer_incoming_blind_request().  The pointer returned by
+         pbx_builtin_getvar_helper() is only valid while the channel is locked.
 
-         ASTERISK-25535 #close
 
-         Change-Id: I479cdc220d5617c840a98f3389b3bd91e91fbd9b
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432594 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-06 07:54 +0000 [6d1bdb9d3b]  Walter Doekes <walter+asterisk@wjd.nu>
+2015-03-06 16:12 +0000 [5d16d80b59]  Richard Mudgett <rmudgett@digium.com>
 
-       * func_callerid: Document that CALLERID(pres) is available.
+       * res_pjsip_refer: Made refer_attended_alloc() not create the ao2 object with a lock.
 
-         CALLERPRES() says that it's deprecated in favor of CALLERID(num-pres)
-         and CALLERID(name-pres).  But for channel driver that don't make a
-         distinction between the two (e.g. SIP), it makes more sense to get/set
-         both at once.  This change reveals the availability of CALLERID(pres),
-         CONNECTEDLINE(pres), REDIRECTING(orig-pres), REDIRECTING(to-pres) and
-         REDIRECTING(from-pres).
+         The lock is unused.
 
-         ASTERISK-25373 #close
 
-         Change-Id: I5614ae4ab7d3bbe9c791c1adf147e10de8698d7a
-2015-11-06 07:52 +0000 [8410336681]  Walter Doekes <walter+asterisk@wjd.nu>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * docs: Fix a few typo's in app docs (more then, resourse).
+2015-03-06 15:11 +0000 [772793f18e]  Jonathan Rose <jrose@digium.com>
 
-         Change-Id: Iba57efadf6c0b822e762c7a001bc89611d98afd7
+       * app: Add functions to swap voicemail function table for testing purposes
 
-2015-11-06 07:36 +0000 [0d425f2eb4]  Walter Doekes <walter+asterisk@wjd.nu>
 
-       * xmldoc: Improve xmldoc wrapping of 'core show ...' output.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432556 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Previously, the wrapping did both lookahead and lookback, which,
-         together with color escape sequences, caused some lines to be wrapped
-         way earlier than other lines.  This led to inconsistent output.
+2015-03-06 14:18 +0000 [8cced7767c]  Richard Mudgett <rmudgett@digium.com>
 
-         This simplifies the wrapping code and makes it more sane: if maxcolumns
-         is hit, we simply jump back to the last space and wrap there.
+       * chan_dahdi/sig_analog: Fix distinctive ring detection to suck less.
 
-         ASTERISK-25527 #close
+         The distinctive ring feature interferes with detecting Caller ID and
+         appears to have been broken for years.  What happens is if you have a
+         ring-ring cadence as used in the UK you get too many DAHDI events for the
+         distinctive ring pattern array and Caller ID detection is aborted.  I
+         think when Zapata/DAHDI added the ring begin event it broke distinctive
+         ring.  More events happen than before and the code does no filtering of
+         which event times are recorded in the pattern array.
 
-         Change-Id: I56d01c6f9a812642b1b05535c98d4db48d17c957
+         * Made distinctive ring only record the ringt count when the ring ends
+         instead of on just any DAHDI event.  Distinctive ring can be ring,
+         ring-ring, ring-ring-ring, or different ring durations for the up to three
+         rings.
 
-2015-11-06 06:57 +0000 [33752e0837]  Sean Bright (license #5060)
+         * Fixed the distinctive ring detection enable (chan_dahdi.conf option
+         usedistinctiveringdetection) to be per port instead of somewhat per port
+         and somewhat global.  This has been broken since v1.8.
 
-       * res_pjsip_sdp_rtp: Enable Opus to be negotiated via SIP/SDP.
+         * Fixed using the default distinctive ring context when the detected
+         pattern does not match any configured dringX patterns.  The default
+         context did not get set when the previous call was a matched distinctive
+         ring pattern and the current call is not matched.  This has been broken
+         since v1.8.
 
-         In SIP/SDP, Opus has two channels always (see RFC 7587 section 7). The actual
-         amount of channels is negotiated in-band. Therefore now, the Opus codec and its
-         attribute rtpmap are registered with two channels.
+         * Made distinctive ring have no effect on Caller ID detection when it is
+         disabled.  Caller ID detection just monitors for 10 seconds before giving
+         up.
 
-         ASTERISK-24779 #close
-         Reported by: PowerPBX
-         Tested by: Alexander Traud
-         patches:
-           asterisk-24779.patch submitted by Sean Bright (license #5060)
+         * Fixed leak of struct callerid_state memory when a polarity reversal
+         during Caller ID detection causes the incoming call to be aborted.
 
-         Change-Id: Ic7ac13cafa1d3450b4fa4987350924b42cbb657b
+         DAHDI-1143
+         AST-1545
+         ASTERISK-24825 #close
+         Reported by: Richard Mudgett
 
-2015-11-03 16:19 +0000 [6ff48319d9]  Jonathan Rose <jrose@digium.com>
+         ASTERISK-17588
+         Reported by: Daniel Flounders
 
-       * taskprocessor: Add high water mark warnings
+         Review: https://reviewboard.asterisk.org/r/4444/
+         ........
 
-         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.
+         Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25518 #close
-         Reported by: Jonathan Rose
 
-         Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432534 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-11-04 14:31 +0000 [506aea26e6]  Matt Jordan <mjordan@digium.com>
+2015-03-06 13:31 +0000 [13e715b30c]  Richard Mudgett <rmudgett@digium.com>
 
-       * main/dial: Protect access to the format_cap structure of the requesting channel
+       * chan_sip: Fix realtime locking inversion when poking a just built peer.
 
-         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.
+         When a realtime peer is built it can cause a locking inversion when the
+         just built peer is poked.  If the CLI command "sip show channels" is
+         periodically executed then a deadlock can happen because of the locking
+         inversion.
 
-         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.
+         * Push the peer poke off onto the scheduler thread to avoid the locking
+         inversion of the just built realtime peer.
 
-         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.
+         AST-1540
+         ASTERISK-24838 #close
+         Reported by: Richard Mudgett
 
-         ASTERISK-25522 #close
+         Review: https://reviewboard.asterisk.org/r/4454/
+         ........
 
-         Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f
+         Merged revisions 432526 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-10-30 22:57 +0000 [d098d00424]  Corey Farrell <git@cfware.com>
 
-       * Fix cli display of build options.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A previous commit reduced the AST_BUILDOPTS compiler define to
-         only include options that affected ABI.  This included some options
-         that were previously displayed by cli "core show settings".  This
-         change corrects the CLI display while still restricting buildopts.h
-         to ABI effecting options only.
+2015-03-05 10:38 +0000 [06fa8db864]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25434 #close
-         Reported by: Rusty Newton
+       * app_voicemail: Fix compile breaking in app_voicemail with IMAP_STORAGE.
 
-         Change-Id: Id07af6bedd1d7d325878023e403fbd9d3607e325
+         There is a leftover "assert" in app_voicemail/__messagecount that references 
+         variables that don't exist.  This causes the compile to fail when 
+         --enable-dev-mode and IMAP_STORAGE are selected.
 
-2015-11-03 11:15 +0000 [afec1b1b64]  Matt Jordan <mjordan@digium.com>
+         This patch removes the assert.
 
-       * res_pjsip/location: Destroy contact_status objects on contact deletion
+         Tested-by: George Joseph
 
-         The contact_status Sorcery objects are currently not destroyed when a contact
-         is deleted. This causes the contact's last known RTT/status to be 'sticky'
-         when the contact itself may no longer exist. This patch causes the
-         contact_status objects associated with both dynamic and static contacts to
-         be destroyed if the AoR holding those contacts is also destroyed (or via
-         other paths where a contact may be deleted.)
+         Review: https://reviewboard.asterisk.org/r/4461/
+         ........
 
-         Change-Id: I7feec8b9278cac3c5263a4c0483f4a0f3b62426e
+         Merged revisions 432484 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-11-03 10:58 +0000 [715f770c9f]  Matt Jordan <mjordan@digium.com>
 
-       * pjsip_configuration: On delete, remove the persistent version of an endpoint
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432485 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         When an endpoint is deleted (such as through an API), the persistent endpoint
-         currently continues to lurk around. While this isn't harmful from a memory
-         consumption perspective - as all persistent endpoints are reclaimed on
-         shutdown - it does cause Stasis endpoint related operations to continue
-         to believe that the endpoint may or may not exist.
+2015-03-04 12:52 +0000 [999d96d405]  Matt Jordan <mjordan@digium.com>
 
-         This patch causes the persistent endpoint related to a PJSIP endpoint to be
-         destroyed if the PJSIP endpoint is deleted.
+       * translate: Prevent invalid memory accesses on fast shutdown
 
-         Change-Id: I85ac707b4d5e6aad882ac275b0c2e2154affa5bb
-2015-11-03 08:15 +0000 [f0f190af08]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * main/stasis_endpoints: Fix ContactStatusChange JSON for roundtrip_usec field
+         This patch does two things:
+         (1) We now only clean up the translation matrix on a graceful shutdown. In that
+             case, there are no channels, and so there is no risk of this occurring.
+         (2) We also now set the __matrix and __indextable to NULL. In some initial
+             backtraces when this occurred, it looked as if there was a memory corruption
+             occurring, and it wasn't until we determined that something had restarted
+             Asterisk that the issue became clear. By setting these to NULL on shutdown,
+             it becomes a bit easier to determine why a crash is occurring.
 
-         The JSON packing for the ContactStatusChange event forgot to include the
-         roundtrip_usec field. As a result, the field never showed up in any event,
-         even when the data was available. This patch corrects that error by properly
-         packing the JSON blob with the data.
+         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.
 
-         Change-Id: I8df80da659a44010afbd48f645967518ff5daa17
+         Review: https://reviewboard.asterisk.org/r/4457/
 
-2015-11-02 20:24 +0000 [0393bd6bed]  Corey Farrell <git@cfware.com>
 
-       * chan_sip: Allow websockets to be disabled.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432453 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch adds a new setting "websockets_enabled" to sip.conf.
-         Setting this to false allows chan_sip to be used without causing
-         conflicts with res_pjsip_transport_websocket.
+2015-03-02 13:14 +0000 [9cdadc168c]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-24106 #close
-         Reported by: Andrew Nagy
+       * res/res_pjsip_sdp_rtp: Revert portion of r432195
 
-         Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7
+         Unfortunately, while initial testing with ConfBridge did not reproduce the
+         audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing
+         did show that bridge_softmix and/or ConfBridge has a severe problem bridging
+         two or more participants at different sampling rates. Sometimes, it even picks
+         odd sampling rates that cause hideous audio problems.
 
-2015-11-02 17:19 +0000 [6fbffe42e1]  Mark Michelson <mmichelson@digium.com>
+         This patch backs out the offending portion of the code until the issues in
+         the affected bridging modules can be more properly analyzed.
 
-       * res_pjsip: Set threadpool max size default to 50.
+         ASTERISK-24841
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25513 #close
-         Reported by John Bigelow
+2015-02-27 12:23 +0000 [9d85e855de]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be
+       * ARI: Fix crash if integer values used in JSON payload 'variables' object.
 
-2015-11-02 06:57 +0000 [11e54b1932]  Matt Jordan <mjordan@digium.com>
+         Sending the following ARI commands caused Asterisk to crash if the JSON
+         body 'variables' object passes values of types other than strings.
 
-       * pjsip_options: Schedule/unschedule qualifies on AoR creation/destruction
+         POST /ari/channels
+         POST /ari/channels/{channelid}
+         PUT /ari/endpoints/sendMessage
+         PUT /ari/endpoints/{tech}/{resource}/sendMessage
 
-         When an AoR is created or destroyed dynamically, the scheduled OPTIONS
-         requests that qualify the contacts on the AoR are not necessarily started
-         or destroyed, particularly for persistent contacts created for that AoR.
-         This patch adds create/update/delete sorcery observers for an AoR, which
-         schedule/unschedule the qualifies as expected.
+         * Eliminated RAII_VAR usage in ast_ari_channels_originate_with_id(),
+         ast_ari_channels_originate(), ast_ari_endpoints_send_message(), and
+         ast_ari_endpoints_send_message_to_endpoint().
 
-         Change-Id: Ic287ed2e2952a7808ee068776fe966f9554bdf7d
+         ASTERISK-24751 #close
+         Reported by:  jeffrey putnam
 
-2015-10-30 13:22 +0000 [118d628e08]  Matt Jordan <mjordan@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4447/
 
-       * Makefile: Add a rule 'basic-pbx' that installs the Basic PBX configs
 
-         This patch adds a rule for installing the Super Awesome Company based 'Basic
-         PBX' configuration files. As part of adding this rule, a bit of the content
-         that makes up installing the configuration files under the 'samples' target
-         was refactored into a make subroutine for usage by additional later config
-         make targets.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432404 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I6c2e27906f73e2919a2b691da0be20ae70302404
-2015-10-29 08:28 +0000 [9a021a42ad]  Joshua Colp <jcolp@digium.com>
+2015-02-26 12:52 +0000 [c33c5183a5]  Scott Griepentrog <sgriepentrog@digium.com>
 
-       * res_pjsip_pubsub: Fix assertion when UAS dialog creation fails.
+       * Dial API: add self destruct option when complete
 
-         When compiled with assertions enabled one will occur when destroying
-         the subscription tree when UAS dialog creation fails. This is because
-         the code assumes that a dialog will always exist on a subscription
-         tree when in reality during this specific scenario it won't.
+         This patch adds a self-destruction option to the
+         dial api.  The usefulness of this is mostly when
+         using async mode to spawn a separate thread used
+         to handle the new call, while the calling thread
+         is allowed to go on about other business.
 
-         This change makes it so a dialog is not removed from the subscription
-         tree if it is not present.
+         The only alternative to this option would be the
+         calling thread spawning a new thread, or hanging
+         around itself waiting to destroy the dial struct
+         after completion.
 
-         ASTERISK-25505 #close
+         Example of use (minus error checking):
 
-         Change-Id: Id5c182b055aacc5e66c80546c64804ce19218dee
+           struct ast_dial *dial = ast_dial_create();
 
-2015-10-26 11:42 +0000 [1256aedf66]  Alexander Traud <pabstraud@compuserve.com>
+           ast_dial_append(dial, "PJSIP", "200", NULL);
 
-       * chan_sip: Do not send all codecs on INVITE.
+           ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo");
+           ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL);
 
-         Since version 13, Asterisk sent all allowed codecs as callee, even when the
-         caller did not request/support them. In case of dynamic RTP payloads, this led
-         to the same ID for different codecs, which is not allowed by SIP/SDP. Now, the
-         intersection between the requested and the supported codecs is send again.
+           ast_dial_run(dial, NULL, 1);
 
-         ASTERISK-24543 #close
+         The dial_run call will return almost immediately
+         after spawning the new thread to run and monitor
+         the dial.  If the call is answered, it is placed
+         into the echo app.  When completed, it will call
+         ast_dial_destroy() on the dial structure.
 
-         Change-Id: Ie90cb8bf893b0895f8d505e77343de3ba152a287
+         Note that any allocations made to pass values to
+         ast_dial_set_user_data() or dial options must be
+         free'd in a state callback function on any of:
+           AST_DIAL_RESULT_UNASWERED,
+           AST_DIAL_RESULT_ANSWERED,
+           AST_DIAL_RESULT_HANGUP, or 
+           AST_DIAL_RESULT_TIMEOUT.
 
-2015-10-24 13:08 +0000 [5f593e7c38]  gtjoseph <george.joseph@fairview5.com>
+         Review: https://reviewboard.asterisk.org/r/4443/
 
-       * build: GCC 5.1.x catches some new const, array bounds and missing paren issues
 
-         Fixed 1 issue in each of the affected files.
 
-         ASTERISK-25494 #close
-         Reported-by: George Joseph
-         Tested-by: George Joseph
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I818f149cd66a93b062df421e1c73c7942f5a4a77
+2015-02-26 11:07 +0000 [169058e73f]  Kevin Harwell <kharwell@digium.com>
 
-2015-10-20 16:02 +0000 [162acd45f7]  gtjoseph <george.joseph@fairview5.com>
+       * app_chanspy, channel: fix frame leaks
 
-       * res_pjsip:  Add "like" processing to pjsip list and show commands
+         Fixed a couple of frame leaks that were found during testing.
 
-         Add the ability to filter output from pjsip list and show commands
-         using the "like" predicate like chan_sip.
+         ASTERISK-24828 #close
+         Reported by: John Hardin
+         Review: https://reviewboard.asterisk.org/r/4445/
+         ........
 
-         For endpoints, aors, auths, registrations, identifyies and transports,
-         the modification was a simple change of an ast_sorcery_retrieve_by_fields
-         call to ast_sorcery_retrieve_by_regex.  For channels and contacts a
-         little more work had to be done because neither of those objects are
-         true sorcery objects.  That was just removing the non-matching object
-         from the final container.  Of course, a little extra plumbing in the
-         common pjsip_cli code was needed to parse the "like" and pass the regex
-         to the get_container callbacks.
+         Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Some of the get_container code in res_pjsip_endpoint_identifier was also
-         refactored for simplicity.
 
-         ASTERISK-25477 #close
-         Reported by: Bryant Zimmerman
-         Tested by: George Joseph
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432363 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I646d9326b778aac26bb3e2bcd7fa1346d24434f1
+2015-02-25 22:58 +0000 [de86b30dba]  Matt Jordan <mjordan@digium.com>
 
-2015-10-21 11:51 +0000 [c58091737d]  Kevin Harwell <kharwell@digium.com>
+       * make: Remove 'res_features' from libraries to link against with cygwin/mingw32
 
-       * res_pjsip_outbound_registration: registration stops due to fatal 4xx response
+         Both the apps and channels Makefiles still listed 'res_features' as modules to
+         link against when compiling for cygwin or mingw32. This module hasn't existed
+         for quite some time.
 
-         During outbound registration it is possible to receive a fatal (any permanent/
-         non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due
-         to a problem with the registrar itself. Upon receiving the failure response
-         Asterisk terminates outbound registration for the given endpoint.
+         ASTERISK-18105 #close
+         Reported by: feyfre
+         ........
 
-         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.
+         Merged revisions 432341 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25485 #close
 
-         Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432342 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-10-22 17:07 +0000 [ebe69dee0d]  Mark Michelson <mmichelson@digium.com>
+2015-02-25 21:03 +0000 [34989bd9c8]  Makoto Dei (License 5027)
 
-       * format_cap: Detect vector allocation failures.
+       * channels/chan_sip: Don't send a BYE after final response when PBX thread fails
 
-         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.
+         When Asterisk fails to start a PBX thread for a new channel - for example, when
+         the maxcalls setting in asterisk.conf is exceeded - we currently send a final
+         response, and then attempt to send a BYE request to the UA. Since that's all
+         sorts of wrong, this patch fixes that by setting sipalreadygone on the sip_pvt
+         such that we don't get stuck sending BYE requests to something that does not
+         want it.
 
-         Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8
+         Note that this patch is a slight modification of the one on ASTERISK-15434.
+         For clarity, it explicitly calls sipalreadygone with the calls to transmit a
+         final response.
 
-2015-10-02 15:32 +0000 [3b19efefef]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-21845
+         ASTERISK-15434 #close
+         Reported by: Makoto Dei
+         Tested by: Matt Jordan
+         patches:
+           sip-pbxstart-failed.patch uploaded by Makoto Dei (License 5027)
+         ........
 
-       * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog.
+         Merged revisions 432320 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432321 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-02-25 17:48 +0000 [53aec7a969]  Rusty Newton <rnewton@digium.com>
 
-         In doing this, some NULL checks for subscription tree dialogs have been
-         removed since NULL dialogs are no longer actually possible.
+       * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 1
 
-         Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5
+         Example configuration files for a "basic PBX" deployment for the fictitious
+         Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4379/
+         and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
 
-2015-09-29 14:53 +0000 [0a346f095f]  Mark Michelson <mmichelson@digium.com>
+         Reported by: Malcolm Davenport
+         Tested by: Rusty Newton
 
-       * res_pjsip_pubsub: Ensure dialog lock balance.
+         Review: https://reviewboard.asterisk.org/r/4379/
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432301 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a
+2015-02-25 17:09 +0000 [474fec4f92]  Matt Jordan <mjordan@digium.com>
 
-2015-09-28 16:36 +0000 [ad39508095]  Mark Michelson <mmichelson@digium.com>
+       * configure: Promote SQLite3 "not installed" warning to error
 
-       * res_pjsip_pubsub: Prevent crashes on final NOTIFY.
+         Since Asterisk won't build without the library, not having it is definitely
+         an error. Thanks to Kyle Kurz for pointing this out.
+         ........
 
-         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.
+         Merged revisions 432280 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432281 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-17 17:28 +0000 [067f408760]  Mark Michelson <mmichelson@digium.com>
+2015-02-25 17:02 +0000 [ddff640f94]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip_pubsub: Remove serializer when sending final NOTIFY.
+       * channels/chan_sip: Clarify WARNING message in mismatched SRTP scenario
 
-         There have been crashes seen where a taskprocessor's listener is NULL
-         unexpectedly.
+         When we receive an SDP as part of an offer/answer for a peer/friend has been
+         configured to require encryption, and that SDP offer/answer failed to provide
+         acceptable crypto attributes, we currently issue a WARNING that uses the phrase
+         "we" and "requested". In this case, both of those terms are ambiguous - the
+         user will probably think "we" is Asterisk (it most likely isn't) and it may
+         not be a "request", so much as an SDP that was received in some fashion.
 
-         Looking at backtraces, the problem was specifically seen in PJSIP
-         serializers.
+         This patch makes the WARNING messages slightly less bad and a bit more
+         accurate as well.
 
-         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.
+         ASTERISK-23214 #close
+         Reported by: Rusty Newton
+         ........
 
-         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.
+         Merged revisions 432277 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I21f5dac33529f65cec45679bdace60670800ff66
 
-2015-09-02 09:14 +0000 [1bcc592765]  Mark Michelson <mmichelson@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432278 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree.
+2015-02-25 15:42 +0000 [dd8ac00f24]  Olle Johansson <oej@edvina.net> (License 5267)
 
-         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.
+       * channels/sip/sdp_crypto: Handle SRTP keys negotiated with key lifetime/MKI
 
-         A simple NULL check fixes this problem.
+         Prior to this patch, SDP offers negotiating SDES-SRTP crypto attributes would
+         be rejected if those crypto attributes contained either a key lifetime or a
+         MKI parameter. While from a theoretical point of view this was defensible -
+         Asterisk does not support key lifetimes or multiple crypto keys - from a
+         practical point of view, this is quite a problem. A large number of endpoints
+         offer lifetimes/MKI, which Asterisk can tolerate so long as it doesn't actually
+         have to support anything more than a single key or refresh the key.
+         In reality, this is (so far as we've seen) always the case.
 
-         Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac
+         This patch is a forward port of Olle's work in the lingon-srtp-key-lifetime-1.8
+         branch. To quote Olle from ASTERISK-17721, it handles lifetime/MKI parameters
+         in the following fashion:
 
-2015-09-01 15:47 +0000 [b3cc2bd7df]  Mark Michelson <mmichelson@digium.com>
+         > The Lingon branch now handle lifetime and MKI parameters.
+         >
+         > We only accept lifetimes up to max for the crypto and higher than 10 hours
+         > for packetization of 20 ms (50 pps).
+         >
+         > We only handle MKI with index 1.
+         >
+         > We do not really bother with counting packets and reinviting at end of
+         > lifetime, so the min of 10 hours kind of takes care of most calls. If there
+         > are longer ones, we rely on the other side for re-invites.
+         >
+         > It's still not perfect, but I personally think this is an improvement. A
+         > configuration option for minimum lifetime accepted could be added.
 
-       * res_pjsip_pubsub: Solidify lifetime and ownership of objects.
+         When the patch was ported forward, I decided against adding a configuration
+         option as Olle's handling was more than sufficient for every case I've seen
+         come through the issue tracker or through interoperability testing. We can
+         revisit that decision if it proves to be false.
 
-         There have been crashes and general instability seen in the pubsub code,
-         so this patch introduces three changes to increase the stability.
+         A few small other tweaks were made to the surrounding code to reduce
+         indentation and provide better type safety for the 'tag' parameter.
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4419/
+         Review: https://reviewboard.asterisk.org/r/4418/
 
-         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.
+         ASTERISK-17721 #close
+         Reported by: Terry Wilson
 
-         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.
+         ASTERISK-17899 #close
+         Reported by: Dwayne Hubbard
+         patches:
+           lingon-srtp-key-lifetime-1.8.diff uploaded by oej (License 5267)
 
-         Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5
+         ASTERISK-20233
+         Reported by: tootai
 
-2015-10-19 15:28 +0000 [c8c65dfa41]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-22748
+         Reported by: Alejandro Mejia
+         ........
 
-       * strings.c: Fix __ast_str_helper() to always return a terminated string.
+         Merged revisions 432239 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Users of functions which call __ast_str_helper() such as the ones listed
-         below are likely to not check the return value for failure so ensuring
-         that the string is always nil terminated is a good safety measure.
 
-         ast_str_set_va()
-         ast_str_append_va()
-         ast_str_set()
-         ast_str_append()
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432258 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I36ab2d14bb6015868b49329dda8639d70fbcae07
+2015-02-25 14:44 +0000 [43a3e80be1]  David M. Lee <dlee@digium.com>
 
-2015-10-19 15:27 +0000 [b271d4a28a]  Richard Mudgett <rmudgett@digium.com>
+       * Increase WebSocket frame size and improve large read handling
 
-       * Add missing failure checks to ast_str_set_va() callers.
+         Some WebSocket applications, like [chan_respoke][], require a larger
+         frame size than the default 8k; this patch bumps the default to 16k.
+         This patch also fixes some problems exacerbated by large frames.
 
-         Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f
+         The sanity counter was decremented on every fread attempt in
+         ws_safe_read(), regardless of whether data was read from the socket or
+         not. For large frames, this could result in loss of sanity prior to
+         reading the entire frame. (16k frame / 1448 bytes per segment = 12
+         segments).
 
-2015-10-21 11:44 +0000 [f2725c8b77]  Joshua Colp <jcolp@digium.com>
+         This patch changes the sanity counter so that it only decrements when
+         fread() doesn't read any bytes. This more closely matches the original
+         intention of ws_safe_read(), given that the error message is
+         "Websocket seems unresponsive".
 
-       * res_pjsip: Move URI validation to use time.
+         This patch also properly logs EOF conditions, so disconnects are no
+         longer confused with unresponsive connections.
 
-         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.
+          [chan_respoke]: https://github.com/respoke/chan_respoke
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4431/
+         ........
 
-         ASTERISK-25486 #close
+         Merged revisions 432236 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a
 
-2015-10-21 08:08 +0000 [84ff075d41]  Alexander Traud <pabstraud@compuserve.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432237 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * format: Update the maximum packetization time for iLBC 30.
+2015-02-24 16:14 +0000 [978649a568]  Matt Jordan <mjordan@digium.com>
 
-         In September 2006, the maximum packetization time (ptime) were set to such a
-         low value, packetization was disabled for many codecs actually. This was fixed
-         for many codecs but not for iLBC 30. This enables packetization for iLBC which
-         can be enabled for example via allow=ilbc:60,gsm,alaw,ulaw in the file sip.conf.
+       * channels/chan_sip: Fix crash when transmitting packet after thread shutdown
 
-         ASTERISK-7803
+         When the monitor thread is stopped, its pthread ID is set to a specific value
+         (AST_PTHREADT_STOP) so that later portions of the code can determine whether
+         or not it is safe to manipulate the thread. Unfortunately, __sip_reliable_xmit
+         failed to check for that value, checking instead only for AST_PTHREAD_STOP.
+         Passing the invalid yet very specific value to pthread_kill causes a crash.
 
-         Change-Id: I2ef90023d35efb7cb8fe96ed74f53f6846ffad12
-2015-10-21 09:51 +0000 [869ef2a8ee]  Alexander Traud <pabstraud@compuserve.com>
+         This patch adds a check for AST_PTHREADT_STOP in __sip_reliable_xmit such that
+         it doesn't attempt to poke the thread if the thread has already been stopped.
 
-       * chan_sip: Fix autoframing=yes.
+         ASTERISK-24800 #close
+         Reported by: JoshE
+         ........
 
-         With Asterisk 13, the structures ast_format and ast_codec changed. Because of
-         that, the paketization timing (framing) of the RTP channel moved away from the
-         formats/codecs. In the course of that change, the ptime of the callee was not
-         honored anymore, when the optional autoframing was enabled.
+         Merged revisions 432198 from http://svn.asterisk.org/svn/asterisk/branches/11
+
+
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432199 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+
+2015-02-24 15:58 +0000 [3d1a1533bf]  Matt Jordan <mjordan@digium.com>
+
+       * 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
 
-         ASTERISK-25484 #close
 
-         Change-Id: Ic600ccaa125e705922f89c72212c698215d239b4
 
-2015-10-20 22:24 +0000 [9fd2adc204]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432195 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * rest-api-templates: Wikify error code response reasons
+2015-02-24 12:32 +0000 [5b73246a9d]  Kevin Harwell <kharwell@digium.com>
 
-         Error response code descriptions may contain wiki markup that need to be
-         escaped. Without this patch, Confluence will reject the document being sent
-         and the responsible script will raise an exception.
+       * bridge_softmix: G.729 codec license held
 
-         Change-Id: I21fcb66fee7f6332381f2b99b1b0195dff215ee5
+         When more than one call using the same codec type enters into a softmix bridge
+         and no audio is present for a channel the bridge optimizes the out frame by
+         using the same one for all channels with the same codec type. Unfortunately,
+         when that number (channels with same codec type) dropped to <= 1 the codec
+         was not dereferenced. At least not until all parties left the bridge. Thus in
+         the case of G.729 the license was not released. This patch ensures that the
+         codec is dereferenced immediately when the optimization no longer applies.
 
-2015-10-20 12:06 +0000 [72cbb6df55]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24797 #close
+         Reported by: Luke Hulsey
+         Review: https://reviewboard.asterisk.org/r/4429/
+         ........
 
-       * funcs/func_holdintercept: Actually add the HOLD_INTERCEPT function
+         Merged revisions 432174 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         When ab803ec342 was committed, it accidentally forgot to actually *add* the
-         HOLD_INTERCEPT function. This highlights two interesting points:
-         * Gerrit forces you to put the patch as it is going to into the repo up for
-           review, which Review Board did not. Yay Gerrit.
-         * No one apparently bothered to use this feature, or else they don't know about
-           it. I'm going to go with the latter explanation.
 
-         ASTERISK-24922
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432175 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ida38278f259dd07c334a36f9b7d5475b5db72396
+2015-02-21 14:47 +0000 [f726304283]  Joshua Colp <jcolp@digium.com>
 
-2015-10-19 19:59 +0000 [9fc9777fa3]  Matt Jordan <mjordan@digium.com>
+       * res_ari_channels: Return a 404 response when a requested channel variable does not exist.
 
-       * contrib/scripts/autosupport: Update for Asterisk 13
+         This change makes it so that if a channel variable is requested and it does not exist
+         a 404 response will be returned instead of an allocation failed response. This makes
+         it easier to debug and figure out what is going on for a user.
 
-         This patch adds some minor tweaks for autosupport to update it for Asterisk 13.
-         This includes:
-         * Finally removing most references to Zaptel
-         * Adding support for some additional 'core' commands, and fixing nomenclature
-           that generally hasn't been used for some time
-         * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels
+         ASTERISK-24677 #close
+         Reported by: Joshua Colp
 
-         Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1
 
-2015-10-14 14:15 +0000 [dc6ec661b3]  mdu113 <mulitskiy@acedsl.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432154 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_config_pgsql.c: Fix deadlock loading realtime configuration.
+2015-02-21 13:26 +0000 [7a507ae31a]  Joshua Colp <jcolp@digium.com>
 
-         On v13, loading several thousand PJSIP endpoints on Asterisk start causes
-         a deadlock most of the time.
+       * res_pjsip_registrar: Add Expires header to 200 OK if present in REGISTER.
 
-         Thanks to mdu113 for discovering that there was a call to pgsql_exec() not
-         protected by the pgsql_lock reentrancy lock.
+         Some implementations don't pay attention to the expires for individual contacts.
+         In this case they may consider the lack of an Expires header in the 200 OK as
+         unregistered. This change makes it so if an Expires header is present in the REGISTER
+         we will add one in the 200 OK.
 
-         {quote}
-         I believe a code path exists that attempts to use pgsql connection without
-         locking pgsql_lock.  I believe what happens during that deadlock that I
-         see is two concurrent threads are both attempting to send query to pgsql,
-         one of the thread is using a code path without locking pgsql_lock.  If
-         they managed to send queries at the same time, it seems postgres ignores
-         one of the queries and replies only to the one of them.  If it happens so
-         that the thread holding the lock didn't receive the reply it will wait for
-         it (and hold the lock) forever (or at least for very long time), thus
-         completely blocking all access to db.
-         {quote}
+         ASTERISK-24785 #close
+         Reported by: Ross Beer
 
-         * Added missing reentrancy locking around pgsql_exec() in find_table().
 
-         * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion
-         between the psql_tables list lock and the pgsql_lock.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432136 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25455 #close
-         Reported by:  mdu113
-         Patches:
-               res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113
+2015-02-21 12:51 +0000 [f0d018e249]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2
+       * res_pjsip: Add a log message when creating a UAC dialog to a target URI that is invalid.
 
-2015-10-13 14:13 +0000 [f8707ae9a5]  Olle Johansson (License 5267)
+         ASTERISK-24499 #close
+         Reported by: Rusty Newton
 
-       * channels/chan_sip: Set cause code to 44 on RTP timeout
 
-         To quote Olle:
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432118 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         "When issuing a hangup due to RTP timeouts the cause code is not set. I have
-         selected 44 based on Cisco's implementation..."
+2015-02-21 11:35 +0000 [c40d78c31e]  Graham Barnett (License 6685)
 
-         ASTERISK-25135 #close
-         Reported by: Olle Johansson
-         patches:
-           rtp-timeout-cause-1.8.diff uploaded by Olle Johansson (License 5267)
+       * apps/app_voicemail: Demote an ERROR message to a WARNING message
 
-         Change-Id: Ia62100c55077d77901caee0bcae299f8dc7375fc
+         When using IMAP voicemail with FreePBX, you will often get ERROR messages
+         complaining about not being able to find a mailbox. This is due to how FreePBX
+         handles voicemail mailboxes. Unfortunately, app_voicemail has to consider this
+         a configuration error, as in any other system it would be indicative of
+         someone misconfiguring their system.
 
-2015-10-10 15:20 +0000 [486b172b50]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         Regardless, a misconfiguration is a WARNING, and not an ERROR. This patch
+         demotes the message so that system administrators can hopefully reduce some
+         of the noise in their log files.
 
-       * Build: Add menuselect options for using compiler sanitizers
+         Note that in the original patch this was made into a NOTICE, but that's a
+         too forgiving.
 
-         This patch adds menuselect options for building Asterisk with
-         various sanitizers provided by gcc and clang.
+         ASTERISK-24790 #close
+         Reported by: Graham Barnett
+         patches:
+           app_voicemail.c.patch_noise uploaded by Graham Barnett (License 6685)
+         ........
 
-         When one of *SANITIZER flags is set in menuselect, the appropriate
-         option is added to CFLAGS ad LDFLAGS for the build.
+         Merged revisions 432098 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Information on sanitizers in the project wiki:
-         https://github.com/google/sanitizers/wiki
 
-         GCC Manual:
-         https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432099 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Clang Compiler User's Manual:
-         http://clang.llvm.org/docs/UsersManual.html#controlling-code-generation
+2015-02-21 08:05 +0000 [bf9d416536]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-24718 #close
-         Reported by: Badalian Vyacheslav
+       * http: Add missing html tag to 'httpstatus' functionality.
 
-         Change-Id: Iafa51b792b7bcb20e848b99d16cf362d08590fa0
+         ASTERISK-24724 #close
+         Reported by: Ashley Sanders
+         ........
 
-2015-10-12 11:21 +0000 [e14023ca35]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 432078 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * config.c: Fix off-nominal memory leak.
 
-         Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432079 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-10-12 11:20 +0000 [a99e821520]  Richard Mudgett <rmudgett@digium.com>
+2015-02-20 20:56 +0000 [93c9c3af2f]  Corey Farrell <git@cfware.com>
 
-       * config.c: Fix potential memory corruption after [section](+).
+       * Allow shutdown to unload modules that register bucket scheme's or codec's.
 
-         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 __ast_module_shutdown_ref to be NULL safe (11+).
+         * Allow modules that call ast_bucket_scheme_register or ast_codec_register
+           to be unloaded during graceful shutdown only (13+ only).
 
-         Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93
+         ASTERISK-24796 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4428/
+         ........
 
-2015-10-12 11:21 +0000 [8d31d2526b]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 432058 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Fix section association by setting the current section to the appended
-         section.
+2015-02-20 20:46 +0000 [54a699fb64]  Corey Farrell <git@cfware.com>
 
-         * 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/lock.h: Fix syntax errors for non-gcc OSX with 64-bit integers.
 
-         ASTERISK-25461 #close
-         Reported by: Sean Pimental
+         Add a couple of missing closing brackets / parenthesis.
 
-         Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3
+         ASTERISK-24814 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4436/
+         ........
 
-2015-10-06 18:01 +0000 [3329c714f7]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 432054 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_pjsip: Fix deadlock when sending out-of-dialog requests.
 
-         The struct send_request_wrapper has a pjsip lock associated with it that
-         is created non-recursive.  There is a code path for the struct
-         send_request_wrapper lock that will attempt to lock it recursively.  The
-         reporter's deadlock showed that the thread calling endpt_send_request()
-         deadlocked itself right after the wrapper object got created.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432055 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited
-         MWI NOTIFY messages can hit this deadlock.
+2015-02-20 11:51 +0000 [89b48af3e5]  Richard Mudgett <rmudgett@digium.com>
 
-         * Replaced the struct send_request_wrapper pjsip lock with the mutex lock
-         that can come with an ao2 object since all of Asterisk's mutexes are
-         recursive.  Benefits include removal of code maintaining the pjsip
-         non-recursive lock since ao2 objects already know how to maintain their
-         own lock and the lock will show up in the CLI "core show locks" output.
+       * chan_dahdi/sig_analog: Put log message strings on one line.
 
-         ASTERISK-25435 #close
-         Reported by: Dmitriy Serov
+         With the log messages on one line, you can search for the log message seen
+         in the log and expect to find it.
+         ........
 
-         Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d
+         Merged revisions 432032 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-10-06 11:05 +0000 [a1435aa3fa]  Stefan Engström <stefanen@kth.se>
 
-       * res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         In ast_rtp_read, the value of the variable 'mark' which we try to assign to a
-         frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate
-         it to 0 or 1.
+2015-02-20 11:46 +0000 [8e806f9e12]  Matt Hoskins (license 6688)
 
-         ASTERISK-25451 #close
-         Change-Id: I53bdf5c026041730184a6a809009c028549ce626
+       * ASTERISK-24811: Add ast_sorcery_apply_config() to res_pjsip_publish_asterisk.
 
-2015-10-07 01:24 +0000 [3357678b94]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         Matt Hoskins reported that res_pjsip_publish_asterisk wouldn't pull config from 
+         realtime.  Turns out it was just missing a call ast_sorcery_apply_config().
 
-       * func_presencestate: Return "not_set" when no data is set in AstDB
+         res_pjsip_acl was missing it as well, so I added it.  The other pjsip modules 
+         looked OK.
 
-         Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not
-         exist, i.e. when a new CustomPresence is added in the dialplan.
+         ASTERISK-24811 #close
+         Reported-by: Matt Hoskins
+         Tested-by: George Joseph
+         Tested-by: Matt Hoskins
+         patches:
+               res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins (license 6688)
 
-         ASTERISK-25400 #close
-         Reported by: Andrew Nagy
+         Review: https://reviewboard.asterisk.org/r/4433/
 
-         Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a
 
-2015-10-06 20:43 +0000 [b714b2152d]  Matt Jordan <mjordan@digium.com>
 
-       * res/res_rtp_asterisk: Fix assignment after ao2 decrement
 
-         When we decide we will no longer schedule an RTCP write, we remove the
-         reference to the RTP instance, then assign -1 to the stored scheduler ID
-         in case something else comes along and wants to see if anything is scheduled.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         That scheduler ID is on the RTP instance. After 60a9172d7ef2 was merged to
-         fix the regression introduced by 3cf0f29310, this improper assignment on a
-         potentially destroyed object started getting tripped on the build agents.
+2015-02-20 09:47 +0000 [c7bdf62a95]  Graham Barnett (License 6685)
 
-         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.
+       * apps/app_voicemail: Fix IMAP header compatibility issue with Microsoft Exchange
 
-         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.
+         When interfacing with Microsoft Exchange, custom headers will be returned as
+         all lower case. Currently, the IMAP header code will fail to parse the returned
+         custom headers, as it will be performing a case sensitive comparison. This can
+         cause playback of messages to fail, as needed information - such as origtime -
+         will not be present.
 
-         (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.)
+         This patch updates app_voicemail's header parsing code to perform a case
+         insensitive lookup for the requested custom headers. Since the headers are
+         specific to Asterisk, e.g., 'x-asterisk-vm-orig-time', and headers should be
+         unique in an IMAP message, this should cause no issues with other systems.
 
-         ASTERISK-25449
+         ASTERISK-24787 #close
+         Reported by: Graham Barnett
+         patches:
+           app_voicemail.c.patch_MSExchange uploaded by Graham Barnett (License 6685)
+         ........
 
-         Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
+         Merged revisions 432012 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-10-06 12:40 +0000 [f939e2bd48]  Florian Sauerteig <ffs@ccn.net>
 
-       * chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@432013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         If a Via header containes an IPv6 address and a port number is ommitted,
-         as it is the standard port, we now leave the port empty and to not set it
-         to the value after the first colon of the IPv6 address.
+2015-02-19 15:25 +0000 [e0ff83c272]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25443 #close
+       * chan_dahdi: Remove some dead code.
+         ........
 
-         Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70
+         Merged revisions 431992 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-10-05 16:53 +0000 [426263a64d]  Richard Mudgett <rmudgett@digium.com>
 
-       * chan_pjsip: Fix crash on reINVITE before initial INVITE completes.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431993 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Apparently some endpoints attempt to send a reINVITE before completing the
-         initial INVITE transaction.  In this case PJSIP responds appropriately to
-         the reINVITE with a 491 INVITE request pending.  Unfortunately chan_pjsip
-         is using the initial INVITE transaction state to determine if an INVITE is
-         the initial INVITE or a reINVITE.  Since the initial INVITE transaction
-         has not been confirmed yet chan_pjsip thinks the reINVITE is an initial
-         INVITE and starts another PBX thread on the channel.  The extra PBX thread
-         ensures that hilarity ensues.
+2015-02-19 12:25 +0000 [40547e7210]  Richard Mudgett <rmudgett@digium.com>
 
-         * Fix checks for a reINVITE on incoming requests to look for the presence
-         of a to-tag instead of the initial INVITE transaction state.
+       * ISDN AOC: Fix crash from an AOC-E message that doesn't have a channel association.
 
-         * 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.
+         Processing an AOC-E event that does not or no longer has a channel
+         association causes a crash.
 
-         ASTERISK-25404 #close
-         Reported by: Chet Stevens
+         The problem with posting AOC events to the channel topic is that AOC-E
+         events don't always have a channel association and posting the event to
+         the all channels topic is just wrong.  AOC-E events do however have their
+         own charging association method to refer to the agreement with the
+         charging entity.
 
-         Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be
+         * Changed the AOC events to post to the AMI manager topic instead of the
+         channel topics.  If a channel is associated with the event then channel
+         snapshot information is supplied with the AMI event.
 
-2015-10-05 21:34 +0000 [50fa9ff997]  Matt Jordan <mjordan@digium.com>
+         * Eliminated RAII_VAR() usage in aoc_to_ami() and ast_aoc_manager_event().
 
-       * Fix improper usage of scheduler exposed by 5c713fdf18f
+         This patch supercedes the patch on Review: https://reviewboard.asterisk.org/r/4427/
 
-         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.
+         ASTERISK-22670 #close
+         Reported by: klaus3000
 
-         This patch corrects the users such that they view '0' as valid, and a returned
-         ID of -1 as being invalid.
+         ASTERISK-24689 #close
+         Reported by: Marcel Manz
 
-         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-24740 #close
+         Reported by: Panos Gkikakis
 
-         ASTERISK-25449 #close
+         Review: https://reviewboard.asterisk.org/r/4430/
 
-         Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
-2015-08-26 16:58 +0000 [8f777ab584]  Debian Amtelco <dan@amtelco.com>
 
-       * chan_pjsip: Add Referred-By header to the PJSIP REFER packet.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431974 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Some systems require the REFER packet to include a Referred-By header.
-         If the channel variable SIPREFERREDBYHDR is set, it passes that value as the
-         Referred-By header value.  Otherwise, it adds the current dialog’s local info.
+2015-02-19 11:30 +0000 [2181c9443f]  Richard Mudgett <rmudgett@digium.com>
 
-         Reported by: Dan Cropp
-         Tested by: Dan Cropp
+       * res_pjsip_refer: Handle INVITE with Replaces failure after answer.
 
-         Change-Id: I3d17912ce548667edf53cb549e88a25475eda245
+         * Fixed hangup handling of the session->channel after answer if the
+         ast_channel_move() or ast_bridge_impart() fails.  We are still the thread
+         controlling the session->channel so we need to call ast_hangup() to kill
+         the channel.
 
-2015-10-03 06:27 +0000 [74635b5638]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         * Fixed debug messages in refer_incoming_invite_request() referencing
+         incorrect channnels on success.  Code comments now say why the
+         session->channel cannot be used.
 
-       * manager: Fix GetConfigJSON returning invalid JSON
+         Review: https://reviewboard.asterisk.org/r/4422/
 
-         When GetConfigJSON was introduced back in 1.6, it returned each
-         section as an array of strings: ["key=value", "key2=value2"].
-         Afterwards, it was changed a few times and became
-         ["key": "value", "key2": "value2"], which is not a correct JSON.
-         This patch fixes that by constructing a JSON object {} instead of
-         an array [].
 
-         Also, the keys "istemplate" and "tempates" that are used to
-         indicate templates and their inherited categories are now wrapped in
-         quotes.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431956 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25391 #close
-         Reported by: Bojan Nemčić
+2015-02-19 09:28 +0000 [374013d817]  Alexander Traud (License 6520)
 
-         Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8
+       * tcptls: Handle new OpenSSL compile time option to disable SSLv3
 
-2015-09-30 17:28 +0000 [40c69e78f5]  Richard Mudgett <rmudgett@digium.com>
+         Some distributions are going to disable SSLv3 at compile time. This option can
+         be checked using the directive OPENSSL_NO_SSL3_METHOD. This patch updates the
+         TCP/TLS handling in Asterisk to look for that directive before attempting to
+         use the SSLv3 specific methods.
 
-       * res_sorcery_memory_cache.c: Fix deadlock with scheduler.
+         ASTERISK-24799 #close
+         Reported by: Alexander Traud
+         patches:
+           no-ssl3-method.patch uploaded by Alexander Traud (License 6520)
+         ........
 
-         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.
+         Merged revisions 431936 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         * 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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431937 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc
+2015-02-18 20:01 +0000 [eb9448a1ae]  Corey Farrell <git@cfware.com>
 
-2015-10-01 14:30 +0000 [dfeb513e85]  Richard Mudgett <rmudgett@digium.com>
+       * Create work around for scheduler leaks during shutdown.
 
-       * res_sorcery_memory_cache.c: Replace inline code with function.
+         * Added ast_sched_clean_by_callback for cleanup of scheduled events
+           that have not yet fired.
+         * Run all pending peercnt_remove_cb and replace_callno events in chan_iax2.
+           Cleanup of replace_callno events is only run 11, since it no longer
+           releases any references or allocations in 13+.
 
-         Make sorcery_memory_cache_close() call remove_all_from_cache() instead of
-         partially inlining it.
+         ASTERISK-24451 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4425/
+         ........
 
-         ASTERISK-25441
+         Merged revisions 431916 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c
 
-2015-10-01 14:27 +0000 [ced0a2d71b]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431917 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_sorcery_memory_cache.c: Shutdown in a less crash potential order.
+2015-02-17 09:31 +0000 [6d3fcfc3c2]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * res_pjsip_refer: Fix crash from a REFER and BYE collision.
 
-         Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e
+         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.
 
-2015-09-30 17:27 +0000 [cc279eea11]  Richard Mudgett <rmudgett@digium.com>
+         * Made check the session channel pointer before processing an incoming
+         REFER request in res_pjsip_refer.
 
-       * res_sorcery_memory_cache.c: Misc tweaks.
+         * 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.
 
-         Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
+         * Made res_pjsip_messaging respond to a message body too large with a 413
+         instead of ignoring it.
 
-2015-09-30 17:27 +0000 [9af3b613f6]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24700 #close
+         Reported by: Zane Conkle
 
-       * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK.
+         Review: https://reviewboard.asterisk.org/r/4417/
 
-         Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
 
-2015-09-30 13:42 +0000 [56ed7b9dd5]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431898 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_rtp_asterisk: Move "Set role" warning to be debug.
+2015-02-16 15:29 +0000 [562b7bf6f0]  Matt Jordan <mjordan@digium.com>
 
-         In practice the set_role API callback can be invoked even
-         when no ICE is present on an RTP instance. This can occur
-         if ICE has not been enabled on it.
+       * res/res_rtp_asterisk: Fix crash in debug from RTCP reports without report block
 
-         ASTERISK-25438 #close
+         When RTCP debugging was enabled, an RTCP report without a report block would
+         cause a crash. This was due to the verbose output not checking to see if the
+         report_block pointer was NULl before dereferencing it.
 
-         Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69
+         This patch adds the necessary check to prevent printing any verbose output
+         if the far side hasn't provided us the information they should have.
 
-2015-09-28 15:31 +0000 [ddebb217f0]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24791 #close
+         Reported by: JoshE
+         Tested by: JoshE
 
-       * sched.c: Add warning about negative time interval request.
 
-         Change-Id: Ib91435fb45b7f5f7c0fc83d0eec20b88098707bc
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431879 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-29 21:15 +0000  Asterisk Development Team <asteriskteam@digium.com>
+2015-02-15 13:00 +0000 [7890d0ad07]  Joshua Colp <jcolp@digium.com>
 
-       * asterisk 13.6.0-rc1 Released.
+       * pjsip: Remove "contact" type from pjsip.conf.sample
 
-2015-09-29 16:12 +0000 [bba1c4066b]  Kevin Harwell <kharwell@lunkwill>
+         The "contact" object is not meant to be configured from the pjsip.conf
+         configuration file. It is meant to be created as a result of a registration
+         and stored elsewhere.
 
-       * Release summaries: Add summaries for 13.6.0-rc1
+         ASTERISK-24085 #close
+         Reported by: Rusty Newton
 
-2015-09-29 16:08 +0000 [82c4aecdbb]  Kevin Harwell <kharwell@lunkwill>
 
-       * .version: Update for 13.6.0-rc1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431860 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-29 16:08 +0000 [bc18db7388]  Kevin Harwell <kharwell@lunkwill>
+2015-02-15 11:59 +0000 [cbe63ab283]  Joshua Colp <jcolp@digium.com>
 
-       * .lastclean: Update for 13.6.0-rc1
+       * install_prereq: Tweak flags when configuring pjproject.
 
-2015-09-29 16:08 +0000 [b9c53f95e3]  Kevin Harwell <kharwell@lunkwill>
+         This change does two things:
+         1. Disables debugging so assertions which can return an error do,
+         instead of asserting.
+         2. Enables IPv6 support.
 
-       * realtime: Add database scripts for 13.6.0-rc1
+         ASTERISK-24632 #close
+         Reported by: Rusty Newton
 
-2015-09-29 14:53 +0000 [d30939b6e8]  Kevin Harwell <kharwell@digium.com>
 
-       * ARI: Changed version from 1.8.0 to 1.9.0
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431843 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I510991c60d28d171f47c4b58bba4947f7fc71b13
+2015-02-15 11:42 +0000 [c8f3074cc4]  Joshua Colp <jcolp@digium.com>
 
-2015-09-25 18:37 +0000 [5f19c9bade]  Richard Mudgett <rmudgett@digium.com>
+       * res_sorcery_config: Improve object lookup times.
 
-       * res/ari/config.c: Fix user sort compare function.
+         The res_sorcery_config module currently uses a fixed bucket
+         size of 53. This means that depending on the number of objects
+         you either end up with excess buckets or a lot of collisions.
+         Due to the way that res_sorcery_config is implemented it's actually
+         possible to make the bucket size dynamic based on the number of
+         objects. This is due to the fact that each loading of the config file
+         produces a new container and does not modify the existing one.
+         This change uses the number of expected objects and finds a prime
+         number near it. In practice depending on the number of objects this
+         can speed up lookups anywhere from 2X to 15X. This change also removes
+         the lock from the container as it is not needed.
 
-         Made use the ao2 sort compare template function and OBJ_SEARCH_xxx
-         identifiers.
+         Review: https://reviewboard.asterisk.org/r/4423/
 
-         Change-Id: Ic53005dc5aafa7a36c72300dd89b75fb63c92f4c
 
-2015-09-25 17:26 +0000 [3a85764039]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431841 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/ari/config.c: Optimize conf_alloc() object init.
+2015-02-15 10:00 +0000 [a3044cbf02]  Joshua Colp <jcolp@digium.com>
 
-         * Now conf_alloc() has more off nominal error checking.
+       * res_pjsip: Add "pjsip show version" CLI command.
 
-         * Eliminated RAII_VAR() use in conf_alloc().
+         When debugging things it can be useful to know absolutely what
+         version of pjproject res_pjsip is running against. This change
+         adds a "pjsip show version" CLI command which can be used to
+         query for this.
 
-         * Eliminated a dubius shortcut when destroying cfg->general in
-         conf_destructor() that would cause a crash if cfg->general failed to get
-         allocated.
+         ASTERISK-24685 #close
+         Reported by: Joshua Colp
 
-         * Add some ACO registration section comments.
+         Review: https://reviewboard.asterisk.org/r/4424/
 
-         Change-Id: Ia40c2b1b2d0777d641605118ae019c5a73865e1a
 
-2015-09-25 16:48 +0000 [028033e5a8]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431824 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/ari/config.c: Fix conf_alloc() object init.
+2015-02-15 06:39 +0000 [ce70587ba6]  Matthias Urlichs (license 5508)
 
-         Need to finish initializing the string fields in the ao2 object before
-         putting any default strings into them.
+       * res_timing_pthread: Fix leaky pipes.
 
-         ASTERISK-25383 #close
-         Reported by:  yaron nahum
+         During some refactoring the way private information for timers
+         was stored was changed. As a result of this the action which normally
+         removed the timer upon closure in res_timing_pthread was also removed
+         causing the timer to remain after it should using up resources.
+         This change ensures that the timer is removed upon closure.
 
-         Change-Id: I9f7f3a03f0c4991a01593abf8697b9a587c0ea84
+         ASTERISK-24768 #close
+         Reported by: Matthias Urlichs
+         patches:
+          timer.patch submitted by Matthias Urlichs (license 5508)
 
-2015-09-27 20:45 +0000 [90165e306d]  Matt Jordan <mjordan@digium.com>
 
-       * res/res_stasis: Fix accidental subscription to 'all' bridge topic
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431807 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         When b99a7052621700a1aa641a1c24308f5873275fc8 was merged, subscribing to a
-         NULL bridge will now cause app_subscribe_bridge to implicitly subscribe to
-         all bridges. Unfortunately, the res_stasis control loop did not check that
-         a bridge changing on a channel's control object was actually also non-NULL.
-         As a result, app_subscribe_bridge will be called with a NULL bridge when a
-         channel leaves a bridge. This causes a new subscription to be made to the
-         bridge. If an application has also subscribed to the bridge, the application
-         will now have two subscriptions:
-         (1) The explicit one created by the app
-         (2) The implicit one accidentally created by the control structure
+2015-02-14 18:32 +0000 [4f4d03fdd1]  Matt Jordan <mjordan@digium.com>
 
-         As a result, the 'BridgeDestroyed' event can be sent multiple times. This
-         patch corrects the control loop such that it only subscribes an application
-         to a new bridge if the bridge pointer is non-NULL.
+       * apps/app_mixmonitor: Move Test Event for MIXMONITOR_END to after it finishes
 
-         ASTERISK-24870
+         The Test Event for MIXMONITOR_END - which signals that a MixMonitor has
+         completed - technically fired before the filestream was closed. If a test
+         used this to trigger a condition to verify that the file was written, it
+         could result in a race condition where the file size would not be what the
+         test expected.
 
-         Change-Id: I3510e55f6bc36517c10597ead857b964463c9f4f
+         Luckily, no tests were using this (although they should have been). Since the
+         test event needed to be moved after the point where the MixMonitor autochan has
+         been destroyed, the test event no longer emits the channel name. Luckily,
+         nothing needs it.
+         ........
 
-2015-09-04 13:51 +0000 [e1223ff6db]  Scott Griepentrog <scott@griepentrog.com>
+         Merged revisions 431788 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * Scripts: check file versions of Asterisk and dependencies
 
-         To help in diagnosing mismatched modules and libraries, this
-         script scans for version, repository, and source information
-         and reports what is found.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431789 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25376 #close
-         Reported by: Ashley Sanders
+2015-02-14 13:45 +0000 [758a897876]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Ib0642d0fb96712476f59760d6d137a24633fe2d6
+       * sorcery: Output an error message if a wizard is specified for an object type and it isn't found.
 
-2015-09-24 14:56 +0000 [6b1e7583c1]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24612 #close
+         Reported by: Joshua Colp
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431771 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Note: Forwarded calls are handled in a controlled manner so the original
-         channel name is replaced with the forwarded channel.
+2015-02-14 12:30 +0000 [8c6e3ad3b4]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25423 #close
-         Reported by: John Hardin
+       * res_pjsip_exten_state: Improve log message when a subscription is attempted to a non-existent extension.
 
-         Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172
+         ASTERISK-24716 #close
+         Reported by: Rusty Newton
 
-2015-09-24 14:20 +0000 [6bf304bf25]  Richard Mudgett <rmudgett@digium.com>
 
-       * app_queue.c: Factor out a connected line update routine.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431754 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Replace inlined code with update_connected_line_from_peer().
+2015-02-14 12:20 +0000 [3543a36362]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25423
-         Reported by: John Hardin
+       * 'information' ends with an 'n'.
 
-         Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3
 
-2015-09-24 13:27 +0000 [e36b5f1e8e]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431752 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_dial.c: Make 'A' option pass COLP updates.
+2015-02-14 12:19 +0000 [5d26236758]  Joshua Colp <jcolp@digium.com>
 
-         While the 'A' option is playing the announcement file allow the caller and
-         peer to exchange COLP update frames.
+       * chan_pjsip: Fix crash when CHANNEL dialplan function is invoked with pjsip argument and no type.
 
-         ASTERISK-25423
-         Reported by: John Hardin
+         ASTERISK-24771 #close
+         Reported by: Niklas Larsson
 
-         Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9
 
-2015-09-24 12:59 +0000 [747bfac895]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431751 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * app_dial.c: Force COLP update if outgoing channel name changed.
+2015-02-13 11:21 +0000 [4d797f17c5]  Richard Mudgett <rmudgett@digium.com>
 
-         * 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.
+       * res_pjsip_session: Fix double re-INVITE collision crash.
 
-         Note: Forwarded calls are handled in a controlled manner so the original
-         channel name is replaced with the forwarded channel.
+         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.
 
-         ASTERISK-25423
-         Reported by: John Hardin
+         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.
 
-         Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c
+         * 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.
 
-2015-09-24 12:37 +0000 [14481d9aa0]  Richard Mudgett <rmudgett@digium.com>
+         * 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.
 
-       * app_dial.c: Factor out a connected line update routine.
+         * 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.
 
-         Replace inlined code with update_connected_line_from_peer().
+         * 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.
 
-         ASTERISK-25423
-         Reported by: John Hardin
+         * 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.
 
-         Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091
+         ASTERISK-24727 #close
+         Reported by: Mark Michelson
 
-2015-09-23 17:41 +0000 [bbeda190c3]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4414/
 
-       * app_dial.c: Remove some no-op code.
 
-         Change-Id: Ice1884a94315d3cb7e3bbd47a9fba76a27276c54
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-23 14:02 +0000 [f050fa76eb]  Mark Michelson <mmichelson@digium.com>
+2015-02-12 14:32 +0000 [1995baad71]  Matt Jordan <mjordan@digium.com>
 
-       * logger: Prevent duplicate dynamic channels from being added.
+       * ARI/PJSIP: Add the ability to redirect (transfer) a channel in a Stasis app
 
-         There was a problem observed where the "logger add channel" CLI command
-         would allow for a channel with the same name to be added multiple times.
-         This would result in each message being written out to the same file
-         multiple times.
+         This patch adds a new feature to ARI to redirect a channel to another server,
+         and fixes a few bugs in PJSIP's handling of the Transfer dialplan
+         application/ARI redirect capability.
 
-         The problem was due to the difference in how logger channel filenames
-         are stored versus the format they are allowed to be presented when they
-         are added. For instance, if adding the logger channel "foo" through the
-         CLI, the result would be a logger channel with the file name
-         /var/log/asterisk/foo being stored. So when trying to add another "foo"
-         channel, "foo" would not match "/var/log/asterisk/foo" so we'd happily
-         add the duplicate channel.
+         *New Feature*
+         A new operation has been added to the ARI channels resource, redirect. With
+         this, a channel in a Stasis application can be redirected to another endpoint
+         of the same underlying channel technology.
 
-         The fix presented here is to introduce two new methods in the logger
-         code:
-          * make_filename(): given a logger channel name, this creates the
-            filename for that logger channel.
-          * find_logchannel(): given a logger channel name, this calls
-            make_filename() and then traverses the list of logchannels in order
-            to find a match.
+         *Bug fixes*
+         In the process of writing this new feature, two bugs were fixed in the PJSIP
+         stack:
+         (1) The existing .transfer channel callback had the limitation that it could
+             only transfer channels to a SIP URI, i.e., you had to pass
+             'PJSIP/sip:foo@my_provider.com' to the dialplan application. While this is
+             still supported, it is somewhat unintuitive - particularly in a world full
+             of endpoints. As such, we now also support specifying the PJSIP endpoint to
+             transfer to.
+         (2) res_pjsip_multihomed was, unfortunately, trying to 'help' a 302 redirect by
+             updating its Contact header. Alas, that resulted in the forwarding
+             destination set by the dialplan application/ARI resource/whatever being
+             rewritten with very incorrect information. Hence, we now don't bother
+             updating an outgoing response if it is a 302. Since this took a looong time
+             to find, some additional debug statements have been added to those modules
+             that update the Contact headers.
 
-         This change has made use of make_filename() and find_logchannel()
-         throughout to more consistently behave.
+         Review: https://reviewboard.asterisk.org/r/4316/
 
-         ASTERISK-25305 #close
-         Reported by Mark Michelson
+         ASTERISK-24015 #close
+         Reported by: Private Name
 
-         Change-Id: I892d52954d6007d8bc453c3cbdd9235dec9c4a36
+         ASTERISK-24703 #close
+         Reported by: Matt Jordan
 
-2015-09-24 14:49 +0000 [629458d349]  Mark Michelson <mmichelson@digium.com>
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431717 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-02-11 12:02 +0000 [e8ec15a9ef]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-25418 #close
-         Reported by Mark Michelson
+       * res_pjsip: dtls_handler causes Asterisk to crash
 
-         Change-Id: If6115204dfa0551c050974ee138fabd15f978949
+         There have been a couple of times where a crash occurred in the dtls_handler
+         section of the code for res_pjsip. Unfortunately, in working this issue the
+         problem was unable to be reproduced. After looking at the backtraces and
+         through the code the current best guess as to why this happened might be due
+         to a reentrance problem and the strtok function. So, the current fix is to
+         convert the strtok function into the reentrant version of the function,
+         strtok_r.
 
-2015-09-22 17:08 +0000 [5f15cd93f0]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24741 #close
+         Reported by: Zane Conkle
+         Review: https://reviewboard.asterisk.org/r/4409/
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431698 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * 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.
+2015-02-11 11:36 +0000 [e64d151fae]  Kevin Harwell <kharwell@digium.com>
 
-         * 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.
+       * ari_websockets: removed extra check on websocket session read
 
-         ASTERISK-25384 #close
-         Reported by: Chet Stevens
+         When merging the websocket timeout issue (ASTERISK-24701) an extra, almost
+         duplicate, check was left in the code that should not have been. This removes
+         it.
 
-         Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981
+         ASTERISK-24701 #close
+         Reported by: Matt Jordan
+         Review: https://reviewboard.asterisk.org/r/4412/
 
-2015-09-03 21:19 +0000 [b50e372394]  Matt Jordan <mjordan@digium.com>
 
-       * ARI: Add events for Contact and Peer Status changes
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431693 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch adds support for receiving events regarding Peer status changes
-         and Contact status changes. This is particularly useful in scenarios where
-         we are subscribed to all endpoints and channels, where we often want to know
-         more about the state of channel technology specific items than a single
-         endpoint's state.
+2015-02-11 11:28 +0000 [feddab7944]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-24870
+       * HTTP: Stop accepting requests on final system shutdown.
 
-         Change-Id: I6137459cdc25ce27efc134ad58abf065653da4e9
+         There are three CLI commands to stop and restart Asterisk each.
 
-2015-09-04 12:24 +0000 [3502c0431d]  Matt Jordan <mjordan@digium.com>
+         1) core stop/restart now - Hangup all calls and stop or restart Asterisk.
+         New channels are prevented while the shutdown request is pending.
 
-       * res/res_stasis_device_state: Allow for subscribing to 'all' device state
+         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.
 
-         This patch adds support for subscribing to all device state changes. This is
-         done either by subscribing to an empty device, e.g., 'eventSource=deviceState:',
-         or by the WebSocket connection specifying that it wants all state in the
-         system.
+         3) core stop/restart when convenient - Stop or restart Asterisk when there
+         are no calls in the system.  New calls are not prevented while the
+         shutdown request is pending.
 
-         ASTERISK-24870
+         ARI has made stopping/restarting Asterisk more problematic.  While a
+         shutdown request is pending it is desirable to continue to process ARI
+         HTTP requests for current calls.  To handle the current calls while a
+         shutdown request is pending, a new committed to shutdown phase is needed
+         so ARI applications can deal with the calls until the system is fully
+         committed to shutdown.
 
-         Change-Id: I9cfeca1c9e2231bd7ea73e45919111d44d2eda32
+         * Added a new shutdown committed phase so ARI applications can deal with
+         calls until the final committed to shutdown phase is reached.
 
-2015-09-04 12:25 +0000 [4c9f613309]  Matt Jordan <mjordan@digium.com>
+         * 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.
 
-       * ARI: Add the ability to subscribe to all events
+         * 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.
 
-         This patch adds the ability to subscribe to all events. There are two possible
-         ways to accomplish this:
-         (1) On initial WebSocket connection. This patch adds a new query parameter,
-             'subscribeAll'. If present and True, Asterisk will subscribe the
-             applications to all ARI events.
-         (2) Via the applications resource. When subscribing in this manner, an ARI
-             client should merely specify a blank resource name, i.e., 'channels:'
-             instead of 'channels:12354'. This will subscribe the application to all
-             resources of the 'channels' type.
+         * 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-24870 #close
+         ASTERISK-24752 #close
+         Reported by: Matthew Jordan
 
-         Change-Id: I4a943b4db24442cf28bc64b24bfd541249790ad6
+         Review: https://reviewboard.asterisk.org/r/4399/
 
-2015-09-21 08:16 +0000 [ec514ad64d]  Elazar Broad <elazar@thebroadfamily.com>
 
-       * core/logging: Fix logging to more than one syslog channel
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Currently, Asterisk will log to the last configured syslog
-         channel in logger.conf. This is due to the fact that the
-         final call to openlog() supersedes all of the previous calls.
-         This commit removes the call to openlog() and passes the
-         facility to ast_log_vsyslog(), along with utilizing the
-         LOG_MAKEPRI macro to ensure that the message is routed to
-         the correct facility and with the correct priority.
+2015-02-11 11:12 +0000 [29f3ff0b61]  Richard Miller (License 5685)
 
-         ASTERISK-25407 #close
-         Reported by: Elazar Broad
-         Tested by: Elazar Broad
+       * channels/chan_sip: Fix RealTime error during SIP unregistration with MariaDB
 
-         Change-Id: Ie2a2416bc00cce1b04e99ef40917c2011953ddd2
+         When a SIP device that has its registration stored in RealTime unregisters,
+         the entry for that device is updated with blank values, i.e., "", indicating
+         that it is no longer registered. Unfortunately, one of those values that is
+         'blanked' is the device's port. If the column type for the port is not a
+         string datatype (the recommended type is integer), an ODBC or database error
+         will be thrown. MariaDB does not coerce empty strings to a valid integer value.
 
-2015-09-21 18:06 +0000 [aeddee39fb]  Kevin Harwell <kharwell@digium.com>
+         This patch updates the query run from chan_sip such that it replaces the port
+         value with a value of '0', as opposed to a blank value. This is the value that
+         other database backends coerce the empty string ("") to already, and the
+         handling of reading a RealTime registration value from a backend already
+         anticipates receiving a port of '0' from the backends.
 
-       * app_record: RECORDED_FILE variable not being populated
+         ASTERISK-24772 #close
+         Reported by: Richard Miller
+         patches:
+           chan_sip.diff uploaded by Richard Miller (License 5685)
+         ........
 
-         The RECORDED_FILE variable is empty unless a '%d' is specified in the filename.
-         This patch makes it so the variable is always set to the filename.
+         Merged revisions 431673 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25410 #close
 
-         Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431674 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-16 08:22 +0000 [2bd27d1222]  Joshua Colp <jcolp@digium.com>
+2015-02-11 10:51 +0000 [72e5ba2ce8]  Kevin Harwell <kharwell@digium.com>
 
-       * pbx: Update device and presence state when changing a hint extension.
+       * res_http_websocket: websocket write timeout fails to fully disconnect
 
-         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).
+         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.
 
-         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-24701 #close
+         Reported by: Matt Jordan
+         Review: https://reviewboard.asterisk.org/r/4412/
+         ........
 
-         ASTERISK-25394 #close
+         Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f
 
-2015-09-17 16:34 +0000 [c94f46080f]  Scott Griepentrog <scott@griepentrog.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431670 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * CHAOS: avoid crash if string create fails
+2015-02-11 09:51 +0000 [2531f75057]  Corey Farrell <git@cfware.com>
 
-         Validate string buffer allocation before using them.
+       * Enable REF_DEBUG for ast_module_ref / ast_module_unref.
 
-         ASTERISK-25323
+         Add ast_module_shutdown_ref for use by modules that can
+         only be unloaded during graceful shutdown.
 
-         Change-Id: Ib9c338bdc1e53fb8b81366f0b39482b83ef56ce0
+         When REF_DEBUG is enabled:
+         * Add an empty ao2 object to struct ast_module.
+         * Allocate ao2 object when the module is loaded.
+         * Perform an ao2_ref in each place where mod->usecount is manipulated.
+         * ao2_cleanup on module unload.
 
-2015-09-17 04:52 +0000 [b59c4d82b5]  Walter Doekes <walter+asterisk@wjd.nu>
+         ASTERISK-24479 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4141/
+         ........
 
-       * chan_sip: Fix From header truncation for extremely long CALLERID(name).
+         Merged revisions 431662 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         The CALLERID(num) and CALLERID(name) and other info are placed into the
-         `char from[256]` in initreqprep. If the name was too long, the addr-spec
-         and params wouldn't fit.
 
-         Code is moved around so the addr-spec with params is placed there first,
-         and then fitting in as much of the display-name as possible.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431663 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25396 #close
+2015-02-10 17:16 +0000 [4d8ab20a8a]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: I33632baf024f01b6a00f8c7f35c91e5f68c40260
+       * res_pjsip_config_wizard: Add ability to auto-create hints.
 
-2015-09-17 16:59 +0000 [4cc59533b9]  Richard Mudgett <rmudgett@digium.com>
+         Looking at the Super Awesome Company sample reminded me that creating hints is 
+         just plain gruntwork.  So you can now have the pjsip conifg wizard auto-create 
+         them for you.
 
-       * CHAOS: res_pjsip_diversion avoid crash if allocation fails
+         Specifying 'hint_exten' in the wizard will create 
+         'exten => <hint_exten>,hint/PJSIP/<wizard_id>'
+         in whatever is specified for 'hint_context'.
 
-         Validate ast_malloc buffer returned before using it in
-         set_redirecting_value().
+         Specifying 'hint_application' in the wizard will create
+         'exten => <hint_exten>,1,<hint_application>'
+         in whatever is specified for 'hint_context'.
 
-         ASTERISK-25323
+         The default for 'hint_context' is the endpoint's context.
+         There's no default for 'hint_application'.  If not specified, no app is added.
+         There's no default for 'hint_exten'.  If not specified, neither the hint itself 
+         nor the application will be created.
 
-         Change-Id: I15d2ed7cb0546818264c0bf251aa40adeae83253
+         Some may think this is the slippery slope to users.conf but hints are a basic 
+         necessity for phones unlike voicemail, manager, etc that users.conf creates.
 
-2015-09-17 16:47 +0000 [4fb95bbc4e]  Kevin Harwell <kharwell@digium.com>
+         Tested-by: George Joseph
+         Review: https://reviewboard.asterisk.org/r/4383/
 
-       * app_queue: AgentComplete event has wrong reason
 
-         When a queued caller transfers an agent to another extension sometimes the
-         raised AgentComplete event has a reason of "caller" and sometimes "transfer".
-         Since a transfer has taken place this should always be transfer. This occurs
-         because sometimes the stasis hangup event arrives before the transfer event
-         thus writing a different reason out.
 
-         With this patch, when a hangup event is received during a transfer it will
-         check to see if the channel that is hanging up is part of a transfer. If so
-         it will return and let the subsequently received transfer event handler take
-         care of the cleanup.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431643 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25399 #close
+2015-02-08 21:10 +0000 [32e42e50cc]  Ben Merrills (License 6678)
 
-         Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d
+       * res/ari/resource_channels: Add missing 'no_answer' reason to DELETE /channels
 
-2015-09-17 13:09 +0000 [fb6b5c684b]  Scott Griepentrog <scott@griepentrog.com>
+         One of the canonical reasons for hanging up a channel is because the far end
+         failed to answer - or because someone else answered, and we want to get rid of
+         this channel. This patch adds the missing value to the 'reason' query parameter
+         for the DELETE /channels operation.
 
-       * PJSIP: avoid crash when getting rtp peer
+         Review: https://reviewboard.asterisk.org/r/4400
 
-         Although unlikely, if the tech private is returned as
-         a NULL, chan_pjsip_get_rtp_peer() would crash.
+         ASTERISK-24745 #close
+         Reported by: Ben Merrills
+         patches:
+           add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills (License 6678)
 
-         ASTERISK-25323
 
-         Change-Id: Ie231369bfa7da926fb2b9fdaac228261a3152e6a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-17 11:31 +0000 [6409e7b11a]  Kevin Harwell <kharwell@digium.com>
+2015-02-08 21:01 +0000 [03445a147e]  Jeremiah Gowdy (License 6358)
 
-       * app_queue: Crash when transferring
+       * Blocked revisions 431620
 
-         During some transfer scenarios involving queues Asterisk would sometimes
-         crash when trying to obtain a channel snapshot (could happen on caller or
-         member channels). This occurred because the underlying channel had already
-         disappeared when trying to obtain the latest snapshot.
+         While it may not be obvious, r431620 should not occur in Asterisk 13.
+         * We no longer set the SIP_DEFER_BYE_ON_TRANSFER flag during the handling of
+           the INVITE with Replaces. This is now set and handled explicitly in the
+           attended transfer and blind transfer code.
+         * An INVITE with Replaces replacing a channel in a Bridge will now safely eject
+           the channel being replaced. No masquerade occurs.
+         * An INVITE with Replaces replacing a channel not in a Bridge will masquerade,
+           but will do so in such a fashion that we can ensure that we are hanging up
+           the channel when completed.
 
-         This patch adds a reference to both the member and caller channels that
-         extends to the lifetime of the queue'd call, thus making sure the channels
-         will always exist when retrieving the latest snapshots.
+         Since the code the patch fixes no longer exists due to core framework changes,
+         we should send a BYE naturally without the need for the flag.
 
-         ASTERISK-25185 #close
-         Reported by: Etienne Lessard
+         ........
+         channels/chan_sip: Ensure that a BYE is sent during INVITE w/Replaces transfer
 
-         Change-Id: Ic397fa68fb4ff35fbc378e745da9246a7b552128
+         Consider a scenario where Alice and Bob have an established dialog with each
+         other external to Asterisk. Bob decides to perform an attended transfer of
+         Alice to Asterisk. In this case, Alice will send an INVITE with Replaces
+         to Asterisk, where the Replaces specifies Bob's dialog with Asterisk. In this
+         particular scenario, Asterisk will complete the transfer, but - since Bob's
+         channel has had Alice masqueraded into it and is now a Zombie - a BYE
+         request will not be sent.
 
-2015-09-16 17:36 +0000 [fe5077b1f8]  Mark Michelson <mmichelson@digium.com>
+         This patch fixes that issue by adding a new flag to chan_sip that tracks
+         whether or not we have an INVITE with Replaces. If we do, the flag is used
+         on the sip_pvt to ensure that a BYE request is sent, even if the channel has
+         been masqueraded away.
 
-       * res_pjsip_pubsub: Eliminate race during initial NOTIFY.
+         Review: https://reviewboard.asterisk.org/r/4362/
 
-         There is a slim chance of a race condition occurring where two threads
-         can both attempt to manipulate the same area.
+         ASTERISK-22436 #close
+         Reported by: Eelco Brolman
+         Tested by: Jeremiah Gowdy, Kristian Høgh
+         patches:
+           asterisk-11-hangup-replaced-3.diff uploaded by Jeremiah Gowdy (License 6358)
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431621 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-02-08 20:34 +0000 [8582411344]  ibercom <ibercom123@gmail.com> (License 6599)
 
-         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.
+       * res/res_odbc: Remove unneeded queries when determining if a table exists
+
+         This patch modifies the ast_odbc_find_table function such that it only performs
+         a lookup of the requested table if the table is not already known. Prior to
+         this patch, a queries would be executed against the database even if the table
+         was already known and cached.
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4405/
 
-         Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815
+         ASTERISK-24742 #close
+         Reported by: ibercom
+         patches:
+           patch.diff uploaded by ibercom (License 6599)
+         ........
 
-2015-08-28 15:42 +0000 [b88c54fa4b]  Alexander Traud <pabstraud@compuserve.com>
+         Merged revisions 431617 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * translate: Fix transcoding while different in frame size.
 
-         When Asterisk translates between codecs, each with a different frame size (for
-         example between iLBC 30 and Speex-WB), too large frames were created by
-         ast_trans_frameout. Now, ast_trans_frameout is called with the correct frame
-         length, creating several frames when necessary. Affects all transcoding modules
-         which used ast_trans_frameout: GSM, iLBC, LPC10, and Speex.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25353 #close
+2015-02-08 11:24 +0000 [675b2b8103]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I2e229569d73191d66a4e43fef35432db24000212
+       * res/res_pjsip_sdp_rtp: Fix leak of local ICE candidates when applying to SDP
 
-2015-09-10 17:19 +0000 [5c713fdf18]  Mark Michelson <mmichelson@digium.com>
+         When an SDP is created for an outgoing request/response, the ICE candidates
+         obtained from the RTP instance are currently leaked. This causes the ao2
+         container that holds the candidates to never properly be reclaimed when the
+         RTP instance is destroyed.
 
-       * scheduler: Use queue for allocating sched IDs.
+         This patch properly decrements the ICE candidates' container if it is
+         successfully obtained.
 
-         It has been observed that on long-running busy systems, a scheduler
-         context can eventually hit INT_MAX for its assigned IDs and end up
-         overflowing into a very low negative number. When this occurs, this can
-         result in odd behaviors, because a negative return is interpreted by
-         callers as being a failure. However, the item actually was successfully
-         scheduled. The result may be that a freed item remains in the scheduler,
-         resulting in a crash at some point in the future.
+         ASTERISK-24769 #close
+         Reported by: Matt Jordan
 
-         The scheduler can overflow because every time that an item is added to
-         the scheduler, a counter is bumped and that counter's current value is
-         assigned as the new item's ID.
 
-         This patch introduces a new method for assigning scheduler IDs. Instead
-         of assigning from a counter, a queue of available IDs is maintained.
-         When assigning a new ID, an ID is pulled from the queue. When a
-         scheduler item is released, its ID is pushed back onto the queue. This
-         way, IDs may be reused when they become available, and the growth of ID
-         numbers is directly related to concurrent activity within a scheduler
-         context rather than the uptime of the system.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431600 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2
+2015-02-06 15:26 +0000 [323c0927ac]  Scott Griepentrog <sgriepentrog@digium.com>
 
-2015-08-21 21:50 +0000 [865377fc38]  Rodrigo Ramírez Norambuena <a@rodrigoramirez.com>
+       * various: cleanup issues found during leak hunt
 
-       * chan_sip.c: Validation on module reload
+         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.
 
-         Change validation on reload module because now used the cli function for
-         reload. The sip_reload() function never fail and ever return NULL for this
-         reason on reload() now use the call the sip_reload() and return
-         AST_MODULE_LOAD_SUCCESS.
+         Review: https://reviewboard.asterisk.org/r/4407/
 
-         This problem is dectected on reload by PUT method on ARI, getting always
-         404 http code when the module is reloaded.
 
-         ASTERISK-25325 #close
-         Reporte by: Rodrigo Ramírez Norambuena
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431583 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I41215877fb2cfc589e0d4d464000cf6825f4d7fb
+2015-02-03 19:27 +0000 [18c8c1bae3]  Joshua Colp <jcolp@digium.com>
 
-2015-08-21 17:39 +0000 [e75aff53e6]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_keepalive: Don't crash if PJSIP module is not loaded.
 
-       * res_pjsip_pubsub.c: Mark ast_sip_create_subscription() as not used.
 
-         Change-Id: I2b8db18eac36c01a5c7eb9467699124e203fd093
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431555 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-09 12:24 +0000 [4d91d01df1]  Richard Mudgett <rmudgett@digium.com>
+2015-02-03 18:58 +0000 [2f2eb1931a]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip_pubsub.c: Add some notification comments.
+       * sorcery: Don't try to load object types which haven't been defined.
 
-         Change-Id: Ie62ff1f4b7adc1a12fa0303f53926af249b25e20
+         The act of defining wizards for an object type in sorcery.conf will
+         create a minimal object type. This can cause a problem when a module
+         has multiple sorcery instances (which all get the wizards from sorcery.conf
+         applied) but the sorcery instances do not all contain full information
+         about the object types. Upon loading errors will occur stating that
+         the objects can not be created. This is confusing and is actually
+         perfectly fine.
 
-2015-08-21 18:01 +0000 [f36a9d1221]  Richard Mudgett <rmudgett@digium.com>
+         This change makes it so that only object types which have been fully
+         defined will be loaded.
 
-       * res_pjsip_pubsub.c: Set dlg_status code instead of sending SIP response.
+         ASTERISK-24748 #close
+         Reported by: Joshua Colp
 
-         We should not try to send a SIP response message because we may be
-         restoring a persistent subscription where we are not responding to a SIP
-         request.
 
-         Change-Id: Id89167ef90320c5563f37e632db0dda6cb9e7dec
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431538 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-21 17:40 +0000 [94582f8fab]  Richard Mudgett <rmudgett@digium.com>
+2015-01-31 10:27 +0000 [f67402a52a]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip_pubsub.c: Fix off-nominal memory leak.
+       * res_format_attr_h264: Fix crash when determining joint capability.
 
-         Fix off-nominal visited vector leak in build_resource_tree().
+         The res_format_attr_h264 module currently incorrectly attempts to
+         copy SPS and PPS information from the wrong attribute. This change
+         fixes that.
 
-         Change-Id: If0399c7941c9c0b1038bcfb7b9a371760977831c
+         ASTERISK-24616 #close
+         Reported by: Yura Kocyuba
 
-2015-08-21 15:26 +0000 [8b3ed52239]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4392/
 
-       * res_pjsip_pubsub.c: Fix one byte buffer overrun error.
 
-         ast_sip_pubsub_register_body_generator() did not account for the null
-         terminator set by sprintf() in the allocated output buffer.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431521 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I388688a132e479bca6ad1c19275eae0070969ae2
+2015-01-30 11:44 +0000 [05e2832b35]  Richard Mudgett <rmudgett@digium.com>
 
-2015-08-21 15:25 +0000 [4329bd1e4c]  Richard Mudgett <rmudgett@digium.com>
+       * app_agent_pool: Fix initial module load agent device state reporting.
 
-       * res_pjsip_pubsub.c: Use ast_alloca() instead of alloca().
+         When the app_agent_pool module initially loads there is a race condition
+         between the thread loading agents.conf and the device state internal
+         processing thread.  If the device state internal processing thread handles
+         the agent creation state updates before the thread that loaded agents.conf
+         registers the device state provider callback then the cached agent state
+         is "Invalid".  When a consumer module like app_queue asks for the agent state
+         it gets the cached "Invalid" state instead of the real state from the provider.
 
-         Change-Id: Ia396096b4fedc2874649ca11137612c3f55e83e3
+         * Moved loading the agents.conf configuration to the last thing setup by
+         app_agent_pool in load_module().  Now the device state provider callback
+         is registered before the config is loaded so the agent creation state
+         updates are guaranteed to get the initial device state.
 
-2015-08-21 11:04 +0000 [a456a20ecf]  Richard Mudgett <rmudgett@digium.com>
+         * Removed some now redundant config cleanup on error in load_config().
 
-       * res_pjsip_pubsub.c: Add missing error return in load_module().
+         * Added lock protection when accessing the device state in
+         agent_pvt_devstate_get() and eliminated the RAII_VAR() usage.
 
-         Change-Id: I15debd0f717f16ee2f78e7f56151c3b3b97b72fc
+         ASTERISK-24737 #close
+         Reported by: Steve Pitts
 
-2015-08-21 11:03 +0000 [f58f4c6e27]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4390/
 
-       * res_pjsip/location.c: Use the builtin ao2_callback() match function instead.
 
-         Change-Id: I364906d6d2bad3472929986704a0286b9a2cbe3f
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431492 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-10 09:49 +0000 [9d1f176e29]  Mark Michelson <mmichelson@digium.com>
+2015-01-30 11:38 +0000 [6583b4de98]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip: Copy default_from_user to avoid crash.
+       * res_pjsip_outbound_publish: eventually crashes when no response is ever received
 
-         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.
+         When Asterisk attempts to send SIP outbound publish information and no response
+         is ever received (no 200 okay, 412, 423) the system eventually crashes. A
+         response is never received because the system Asterisk is attempting to send
+         publish information to is not available. The underlying pjsip framework attempts
+         to send publish information. After several attempts it calls back into the
+         Asterisk outbound publish code. At this point if the "client->queue" is empty
+         Asterisk attempts to schedule a refresh which utilizes "rdata" and since no
+         response was received the given "rdata" struture is NULL. Attempting to
+         dereference a NULL object of course results in a crash.
 
-         The fix here is to copy the default_from_user value out of the global
-         configuration struct.
+         The fix here removes the dependency on rdata for schedule_publish_refresh.
+         Instead param->expiration is now passed to it as this is set to -1 if no
+         response is received. Also added a notification when no response is received.
 
-         Thanks go to John Hardin for discovering this problem and proposing the
-         patch on which this fix is based.
+         ASTERISK-24635 #close
+         Reported by: Marco Paland
+         Review: https://reviewboard.asterisk.org/r/4384/
 
-         ASTERISK-25390 #close
-         Reported by Mark Michelson
 
-         Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431490 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-10 08:39 +0000 [1dd0e220bf]  Matt Jordan <mjordan@digium.com>
+2015-01-30 10:52 +0000 [112d23c73e]  Ashley Sanders <asanders@digium.com>
 
-       * res/res_pjsip_nat: Ignore REGISTER requests when looking for a Record-Route
+       * HTTP: For httpd server, need option to define server name for security purposes
 
-         We will only rewrite the Contact header if there is no Record-Route header in
-         the received request. If a malfunctioning proxy places a Record-Route header
-         into a REGISTER request, we will decide that we shouldn't update the IP/port
-         in the Contact header, and we will end up storing a contact with an AoR that
-         contains the NAT'd IP address.
+         Added a new config property [servername] to the http.conf file; updated the http server to use the new property when sending responses, for showing http status through the CLI and when reporting status through the 'httpstatus' webpage.
 
-         While it is nice to have the proxy *not* send a Record-Route in a REGISTER
-         request, it's also a good idea to not process the header in a non-dialog
-         message. This patch updates the code to explicitly ignore the Record-Route
-         header in REGISTER requests.
+         ASTERISK-24316 #close
+         Reported By: Andrew Nagy
+         Review: https://reviewboard.asterisk.org/r/4374/
 
-         ASTERISK-25387 #close
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431471 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I4bd3bcccc4003d460cc354d986b0dea2e433ef3f
+2015-01-30 10:47 +0000 [43dd42d8ae]  Mark Michelson <mmichelson@digium.com>
 
-2015-09-03 21:15 +0000 [4eedd9ef9d]  Matt Jordan <mjordan@digium.com>
+       * Fix some memory leaks.
 
-       * main/config_options: Check for existance of internal object before derefing
+         These memory leaks were found and fixed by John Hardin. I'm just
+         committing them for him.
 
-         Asterisk can load and register an object type while still having an invalid
-         sorcery mapping. This can cause an issue when a creation call is invoked.
-         For example, mis-configuring PJSIP's endpoint identifier by IP address mapping
-         in sorcery.conf will cause the sorcery mechanism to be invalidated; however, a
-         subsequent ARI invocation to create the object will cause a crash, as the
-         internal type may not be registered as sorcery expects.
+         ASTERISK-24736 #close
+         Reported by Mark Michelson
 
-         Merely checking for a NULL pointer here solves the issue.
+         Review: https://reviewboard.asterisk.org/r/4389
 
-         Change-Id: I54079fb94a1440992f4735a9a1bbf1abb1c601ac
-2015-09-09 16:46 +0000 [71408df2b8]  Alexander Anikin <may213@yandex.ru>
 
-       * chan_ooh323: Add ProgressIndicator IE with inband info available
 
-         Add ProgressIndicator IE with inband info present to Progress and
-         Alerting Q.931 message
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431468 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25227 #close
-         Reported by: Alexandr Dranchuk
+2015-01-29 17:02 +0000 [f7d23dfcc6]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         Change-Id: I326ad13cb1db9a72b3fd902bafed3c28a3684203
-2015-09-08 10:35 +0000 [f72f9ceefc]  Scott Griepentrog <scott@griepentrog.com>
+       * stasis transfer: fix stasis bridge push race part two
 
-       * pjsip: avoid possible crash req_caps allocation failure
+         When swapping a Local channel in place of one already
+         in a bridge (to complete a bridge attended transfer),
+         the channel that was swapped out can actually be hung
+         up before the stasis bridge push callback executes on
+         the independant transfer thread.  This results in the
+         stasis app loop dropping out and removing the control
+         that has the the app name which the local replacement
+         channel needs so it can re-enter stasis.
 
-         Make certain that the pjsip session has not failed to
-         allocate the format capabilities structure, which can
-         otherwise cause a crash when referenced.
+         To avoid this race condition a new push_peek callback
+         has been added, and called from the ast_bridge_impart
+         thread before it launches the independant thread that
+         will complete the transfer.  Now the stasis push_peek
+         callback can copy the stasis app name before the swap
+         channel can hang up.
 
-         ASTERISK-25323
+         ASTERISK-24649
+         Review: https://reviewboard.asterisk.org/r/4382/
 
-         Change-Id: I602790ba12714741165e441cc64a3ecde4cb5750
 
-2015-09-03 14:07 +0000 [fbf720db91]  Jonathan Rose <jrose@digium.com>
 
-       * ParkAndAnnounce: Add variable inheritance
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431450 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-01-29 14:58 +0000 [e8896ac008]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25369 #close
-         Review: https://gerrit.asterisk.org/#/c/1180/
+       * Use SIPS URIs in Contact headers when appropriate.
 
-         Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e
+         RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific
+         scenarios when we are required to use SIPS URIs in Contact
+         headers. Asterisk's non-compliance with this could actually
+         cause calls to get dropped when communicating with clients
+         that are strict about checking the Contact header.
 
-2015-09-04 16:33 +0000 [695f26cbb7]  David M. Lee <dlee@respoke.io>
+         Both of the SIP stacks in Asterisk suffered from this issue.
+         This changeset corrects the behavior in res_pjsip/chan_pjsip.c
 
-       * res_rtp_asterisk: Add more ICE debugging
+         Review: https://reviewboard.asterisk.org/r/4345
 
-         In working through a recent ICE negotiation bug, I found the debug
-         logging in res_rtp_asterisk to be lacking. This patch adds a number of
-         debug and warning statements that were helpful.
 
-         Change-Id: I950c6d8f13a41f14b3d6334b4cafe7d4e997be80
-2015-09-01 10:16 +0000 [4ed9c9a280]  Guido Falsi <madpilot@freebsd.org>
 
-       * Core/General: Add #ifdef needed on FreeBSD.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431426 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         pthread_attr_init() defaults to PTHREAD_EXPLICIT_SCHED on FreeBSD
-         too.
+2015-01-29 14:44 +0000 [22fc3359da]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25310 #close
-         Reported by: Guido Falsi
+       * Use SIPS URIs in Contact headers when appropriate.
 
-         Change-Id: Iae6befac9028b5b9795f86986a4a08a1ae6ab7c4
+         RFC 3261 sections 8.1.1.8 and 12.1.1 dictate specific
+         scenarios when we are required to use SIPS URIs in Contact
+         headers. Asterisk's non-compliance with this could actually
+         cause calls to get dropped when communicating with clients
+         that are strict about checking the Contact header.
 
-2015-09-08 07:21 +0000 [5469caa9dd]  Joshua Colp <jcolp@digium.com>
+         Both of the SIP stacks in Asterisk suffered from this issue.
+         This changeset corrects the behavior in chan_sip.
 
-       * res_pjsip: Use hash for contact object identity instead of Contact URI.
+         ASTERISK-24646 #close
+         Reported by Stephan Eisvogel
 
-         In the wild it is possible for Contact URIs to be quite long as
-         parameters can exist on them. This can present a problem when storing
-         them in the AstDB as the URI is used as part of the object name and
-         there is a fixed length limit for the AstDB. This will cause
-         the contact to not get stored.
+         Review: https://reviewboard.asterisk.org/r/4346
+         ........
 
-         This change uses the MD5 hash of the Contact URI as part of the
-         object name instead. This has a fixed length which is guaranteed
-         to not exceed the AstDB length limit.
+         Merged revisions 431423 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25295 #close
 
-         Change-Id: Ie8252a75331ca00b41b9f308f42cc1fbdf701a02
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-09-07 13:19 +0000 [480c443e26]  Alexander Anikin <may213@yandex.ru>
+2015-01-29 13:52 +0000 [b8ea23b0d1]  Mark Michelson <mmichelson@digium.com>
 
-       * chan_ooh323: call ast_rtp_instance_stop on ooh323_destroy
+       * Allow disabling of 100rel support on PJSIP endpoints.
 
-             Call ast_rtp_instance_stop on ooh323_destroy to free resources
-             allocated by rtp instance
+         Due to an inversion error, setting 100rel=no would not actually
+         change the current value of the setting (which defaulted to "yes").
+         With this fix, the inversion is corrected.
 
-             ASTERISK-25299 #close
-             Report by: Alexandr Dranchuk
 
-         Change-Id: I455096bd7da016b871afe90af86067c2c7c9f33f
 
-2015-09-07 11:15 +0000 [c3e6debdb9]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_pjsip: Purge contacts when an AoR is deleted
+2015-01-29 10:46 +0000 [6e5eb9af88]  gtjoseph <george.joseph@fairview5.com>
 
-         When an AoR is deleted by an external mechanism, such as through ARI, we
-         currently do not remove dynamic contacts that were created for that AoR as a
-         result of a received REGISTER request. As a result, re-creating the AoR will
-         cause the dynamic contact to be interpreted as a persistent contact, leading
-         to some rather strange state being created for the contacts/endpoints.
+       * res_pjsip_exten_state: Reduce log clutter... change a WARNING to a VERBOSE/2
 
-         This patch adds a sorcery observer for the 'aor' object. When a delete is
-         issued on the underlying sorcery object, the observer is called, and all
-         contacts created and persisted in sorcery for that AoR are also removed. Note
-         that we don't want to perform this action when an AO2 object that is an AoR is
-         destroyed, as the AoR can still exist in the backing storage (and we would
-         thus be removing valid contacts from an AoR that still "exists".)
+         Reduce log clutter by changing the "Watcher for hint %s (removed|deactivated)"
+         message from WARNING to VERBOSE/2.
 
-         ASTERISK-25381 #close
+         Tested-by: George Joseph
 
-         Change-Id: I6697e51ef6b2858b5d63401f35dc378bb0f90328
+         Review: https://reviewboard.asterisk.org/r/4387/
 
-2015-09-05 14:58 +0000 [78d0b9d97e]  Matt Jordan <mjordan@digium.com>
 
-       * channels/pjsip/dialplan_functions: Add an option for extracting the SIP call-id
 
-         This patch adds a new option to the CHANNEL function that allows for the
-         extraction of the SIP call-id. It is used in conjunction with the 'pjsip'
-         option, and will return the Call-ID of the INVITE request that established
-         the PJSIP channel.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25352
+2015-01-29 06:09 +0000 [e0461290d0]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I278d1f8bcfe3a53c5aa1dadebc14e92b0abd476a
+       * res_rtp_asterisk: Fix DTLS when used with OpenSSL 1.0.1k
 
-2015-09-04 16:06 +0000 [61c6c6aa6c]  David M. Lee <dlee@respoke.io>
+         A recent security fix for OpenSSL broke DTLS negotiation for many
+         applications. This was caused by read ahead not being enabled when it
+         should be. While a commit has gone into OpenSSL to force read ahead
+         on for DTLS it may take some time for a release to be made and the
+         change to be present in distributions (if at all). As enabling read
+         ahead is a simple one line change this commit does that and fixes
+         the issue.
 
-       * Fix when remote candidates exceed PJ_ICE_MAX_CAND
+         ASTERISK-24711 #close
+         Reported by: Jared Biel
+         ........
 
-         We were passing the wrong count into pj_ice_sess_create_check_list(),
-         causing the create to fail if we ever received more than PJ_ICE_MAX_CAND
-         candidates.
+         Merged revisions 431384 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I0303d8e1ecb20a8de9fe629a3209d216c4028378
 
-2015-09-04 14:40 +0000 [ac62928d6b]  Mark Michelson <mmichelson@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431385 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip: Change default from user value.
+2015-01-28 11:37 +0000 [8c068fc096]  Mark Michelson <mmichelson@digium.com>
 
-         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.
+       * Fix file descriptor leak in RTP code.
 
-         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.
+         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-25377 #close
-         Reported by Mark Michelson
+         ASTERISK-24666 #close
+         Reported by Y Ateya
 
-         Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190
+         Review: https://reviewboard.asterisk.org/r/4323
 
-2015-09-04 09:26 +0000 [6002472a62]  Scott Griepentrog <scott@griepentrog.com>
+         AST-2015-001
+         ........
 
-       * endpoint snapshot: avoid second cleanup on alloc failure
+         Merged revisions 431300 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         In ast_endpoint_snapshot_create(), a failure to init the
-         string fields results in two attempts to ao2_cleanup the
-         same pointer.  Removed RAII_VAR to eliminate problem.
 
-         ASTERISK-25375 #close
-         Reported by: Scott Griepentrog
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: If4d9dfb1bbe3836b623642ec690b6d49b25e8979
+2015-01-28 11:34 +0000 [25a67d561c]  Mark Michelson <mmichelson@digium.com>
 
-2015-09-04 05:33 +0000 [d32e516c7c]  Martin Tomec <tomec.martin@gmail.com>
+       * Multiple revisions 431297-431298
 
-       * res/pjsip: Mark WSS transport as secure
+         ........
+           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.
+         ........
 
-         Pjsip is refusing to use unsecure transport with "sips" in url.
-         WSS should be considered as secure transport.
+         Merged revisions 431297-431298 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ........
 
-         ASTERISK-24602 #comment Partially fixed by setting WSS as secure
+         Merged revisions 431299 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Change-Id: Iddac406c6deba6240c41a603b8859dfefe1a5353
 
-2015-09-02 17:26 +0000 [ad9cb6c2ce]  Mark Michelson <mmichelson@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431301 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip: Fix contact refleak on stateful responses.
+2015-01-28 06:18 +0000 [c3add776af]  Sean Bright <sean@malleable.com>
 
-         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.
+       * media formats: update res_format_attr_opus & silk
 
-         This patch adds the missing deref and fixes the reference leak.
+         In r419044, we changed how formats were handled, but the return value
+         of the format_parse_sdp_fmtp functions in res_format_attr_opus and
+         res_format_attr_silk were not updated, causing calls to fail.  Ran
+         into this when getting codec_opus working with Asterisk 13.
 
-         Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07
+         Once the return value was corrected, we were crashing in opus_getjoint
+         because of NULL format attributes.  I've fixed this as well in this
+         patch.
 
-2015-09-02 12:41 +0000 [cc1363209e]  Joshua Colp <jcolp@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4371/
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431267 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This change makes it so the construction of the combined hint extension
-         and context can not exceed the size of the buffer.
+2015-01-27 22:09 +0000 [88fbe4e917]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25367 #close
+       * res_pjsip_outbound_registration: Fix reload race condition.
 
-         Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499
+         Performing a CLI "module reload" command when there are new pjsip.conf
+         registration objects defined frequently failed to load them correctly.
 
-2015-09-01 09:05 +0000 [d58c8d73af]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * res_pjsip_pubsub: re-re-fix persistent subscription storage.
+         * 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.
 
-         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.
+         * 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().
 
-         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.
+         * 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.
 
-         ASTERISK-25365 #close
-         Reported by Mark Michelson
+         * Added some global current_states NULL pointer checks in case the
+         container disappears because of unload_module().
 
-         Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b
+         * Made sorcery's struct ast_sorcery_instance_observer.object_type_loaded
+         callbacks guaranteed to be called before any struct
+         ast_sorcery_observer.loaded callbacks will be called.
 
-2015-08-31 15:24 +0000 [03fe79f29e]  Mark Michelson <mmichelson@digium.com>
+         * 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.
 
-       * Fix deadlock on presence state changes.
+         ASTERISK-24729 #close
+         Review: https://reviewboard.asterisk.org/r/4381/
 
-         A deadlock was observed where three threads were competing for different
-         locks:
 
-         * One thread held the hints lock and was attempting to lock a specific
-           hint.
-         * One thread was holding the specific hint's lock and was attempting to
-           lock the contexts lock
-         * One thread was holding the contexts lock and attempting to lock the
-           hints lock.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431243 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Clearly the second thread was doing the wrong thing here. The fix for
-         this is to make sure that the hint's lock is not held on presence state
-         changes. Something similar is already done (and commented about) for
-         device state changes.
+2015-01-27 16:56 +0000 [61822e78ae]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-25362 #close
-         Reported by Mark Michelson
+       * tcptls: Bad file descriptor error when reloading chan_sip
 
-         Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2
+         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:
 
-2015-08-29 10:36 +0000 [a676ba2aad]  Joshua Colp <jcolp@digium.com>
+         tcptls.c:712 ast_tcptls_server_root: Accept failed: Bad file descriptor
 
-       * taskprocessor: Fix race condition between unreferencing and finding.
+         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.
 
-         When unreferencing a taskprocessor its reference count is checked
-         to determine if it should be unlinked from the taskprocessors
-         container and its listener shut down. In between the time when the
-         reference count is checked and unlinking it is possible for
-         another thread to jump in, find it, and get a reference to it. If
-         the thread then uses the taskprocessor it may find that it is not
-         in the state it expects.
+         ASTERISK-24728 #close
+         Reported by: Thomas Thompson
+         Review: https://reviewboard.asterisk.org/r/4380/
+         ........
 
-         This change locks the taskprocessors container during almost the
-         entire unreference operation to ensure that any other thread which
-         may attempt to find the taskprocessor has to wait.
+         Merged revisions 431218 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25295
 
-         Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431219 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-28 20:22 +0000 [1b1561f4c8]  Joshua Colp <jcolp@digium.com>
+2015-01-27 13:21 +0000 [e2b493b8f0]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items.
+       * chan_sip: stale nonce causes failure
 
-         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.
+         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.
 
-         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.
+         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-25356 #close
+         ASTERISK-24715 #close
+         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4367/
+         ........
 
-         Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de
+         Merged revisions 431187 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-08-28 19:57 +0000 [85e1cb51b2]  Joshua Colp <jcolp@digium.com>
 
-       * sched: ast_sched_del may return prematurely due to spurious wakeup
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431194 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-01-27 13:08 +0000 [9e3d316dd1]  Corey Farrell <git@cfware.com> (license 5909)
 
-         This change adds a loop around the ast_cond_wait to make sure that
-         it only exits when the executing task has really completed.
+       * res_pjsip: make it unloadable (take 2)
 
-         ASTERISK-25355 #close
+         Due to the original patch causing memory corruptions it was removed until the
+         problem could be resolved. This patch is the original patch plus some added
+         locking around stasis router subcription that was needed to avoid the memory
+         corruption.
 
-         Change-Id: I51198270eb0b637c956c61aa409f46283432be61
+         Description of the original problem and patch (still applicable):
 
-2015-08-27 12:26 +0000 [c2c7319082]  Joshua Colp <jcolp@digium.com>
+         The res_pjsip module was previously unloadable. With this patch it can now
+         be unloaded.
 
-       * res_pjsip_session: Don't invoke session supplements twice for BYE requests.
+         This patch is based off the original patch on the issue (listed below) by Corey
+         Farrell with a few modifications. Namely, removed a few changes not required to
+         make the module unloadable and also fixed a bug that would cause asterisk to
+         crash on unloading.
 
-         When a BYE request is received the PJSIP invite session implementation
-         creates and sends a 200 OK response before we are aware of it. This
-         causes the INVITE session state callback to be called into and ultimately
-         the session supplements run on the BYE request. Once this response has
-         been sent the normal transaction state callback is invoked which
-         invokes the session supplements on the BYE request again. This can
-         be problematic in particular with res_pjsip_rfc3326 as it may
-         attempt to update the hangup cause code on the channel while it is
-         in the process of being hung up.
+         This patch is the first step (should hopefully be followed by another/others at
+         some point) in allowing res_pjsip and the modules that depend on it to be
+         unloadable. At this time, res_pjsip and some of the modules that depend on
+         res_pjsip cannot be unloaded without causing problems of some sort.
 
-         This change makes it so the session supplements are only invoked
-         once by the INVITE session state callback.
+         The goal of this patch is to get res_pjsip and only res_pjsip to be able to
+         unload successfully and/or shutdown without incident (crashes, leaks, etc...).
+         Other dependent modules may still cause problems on unload.
 
-         ASTERISK-25318 #close
+         Basically made sure, with the patch applied, that res_pjsip (with no other
+         dependent modules loaded) could be succesfully unloaded and Asterisk could
+         shutdown without any leaks or crashes that pertained directly to res_pjsip.
 
-         Change-Id: I69c17df55ccbb61ef779ac38cc8c6b411376c19a
+         ASTERISK-24485 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4363/
+         patches:
+           pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909)
 
-2015-08-26 15:26 +0000 [6862c2a167]  Scott Griepentrog <scott@griepentrog.com>
 
-       * Chaos: handle failed allocation in get_media_encryption_type
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431179 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         If the ast_strndup() call fails to allocate a copy of the
-         transport string for parsing, fail gracefully.
+2015-01-27 11:36 +0000 [eda125f98d]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25323
-         Reported by: Scott Griepentrog
+       * app_confbridge: Repeatedly starting and stopping recording ref leaks the recording channel.
 
-         Change-Id: Ia4b905ce6d03da53fea526224455c1044b1a5a28
+         Starting and stopping conference recording more than once causes the
+         recording channels to be leaked.  For v13 the channels also show up in the
+         CLI "core show channels" output.
 
-2015-08-26 14:25 +0000 [f1cd636658]  Scott Griepentrog <scott@griepentrog.com>
+         * 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.
 
-       * Chaos: make hangup NULL tolerant
+         ASTERISK-24719 #close
+         Reported by: John Bigelow
 
-         In chan_pjsip_new, if allocation of the pvt
-         structure fails, ast_hangup is called.  But
-         it was written to assume pvt was valid, and
-         this change corrects that.
+         Review: https://reviewboard.asterisk.org/r/4368/
+         Review: https://reviewboard.asterisk.org/r/4369/
+         ........
 
-         ASTERISK-25323
-         Reported by: Scott Griepentrog
+         Merged revisions 431135 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I5f47860fe9cee4cd56abd3f79b108678ab72cc87
 
-2015-08-26 05:40 +0000 [c01111223f]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431160 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * chan_sip: Allow call pickup to set the hangup cause.
+2015-01-27 11:32 +0000 [b64f4bb6ee]  Joshua Colp <jcolp@digium.com>
 
-         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.
+       * bridge / res_pjsip_sdp_rtp: Fix issues with media not being reinvited during direct media.
 
-         This change sets the hangup cause to "normal clearing" as a
-         default initially but allows the call pickup to change it as
-         needed.
+         This change fixes two issues:
 
-         ASTERISK-25346 #close
+         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.
 
-         Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff
+         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.
 
-2015-08-25 07:17 +0000 [2a4eee0cd9]  Joshua Colp <jcolp@digium.com>
+         AST-1524 #close
 
-       * res_pjsip: Add common ast_sip_get_host_ip API.
+         Review: https://reviewboard.asterisk.org/r/4378/
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431157 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25342 #close
+2015-01-27 11:22 +0000 [a620b287bd]  Jonathan Rose <jrose@digium.com>
 
-         Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e
+       * Manager: Fix Manager Action ModuleLoad to give correct response when reloading
 
-2015-08-24 11:04 +0000 [7c4d0c3506]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced
+         Review: https://reviewboard.asterisk.org/r/4373/
+         ASTERISK-24721 #close
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-24 06:21 +0000 [6c2dab1e88]  Joshua Colp <jcolp@digium.com>
+2015-01-27 11:20 +0000 [7f9b28b0c6]  Matt Jordan <mjordan@digium.com>
 
-       * bridge: Kick channel from bridge if hung up during action.
+       * ARI: Improve wiki documentation
 
-         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.
+         This patch improves the documentation of ARI on the wiki. Specifically, it
+         addresses the following:
+         * Allowed values and allowed ranges weren't documented. This was particularly
+           frustrating, as Asterisk would reject query parameters with disallowed values
+           - but we didn't tell anyone what the allowed values were.
+         * The /play/id operation on /channels and /bridges failed to document all of
+           the added media resource types.
+         * Documentation for creating a channel into a Stasis application failed to
+           note when it occurred, and that creating a channel into Stasis conflicts with
+           creating a channel into the dialplan.
+         * Some other minor tweaks in the mustache templates, including italicizing the
+           parameter type, putting the default value on its own sub-bullet, and some
+           other nicities.
 
-         ASTERISK-25341 #close
+         Review: https://reviewboard.asterisk.org/r/4351
 
-         Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062
 
-2015-08-23 18:26 +0000 [bc6fe07f5c]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip/pjsip_configuration: Disregard empty auth values
+2015-01-27 11:10 +0000 [1a17693789]  Matt Jordan <mjordan@digium.com>
 
-         When an endpoint is backed by a non-static conf file backend (such as
-         the AstDB or Realtime), the 'auth' object may be returned as being an
-         empty string. Currently, res_pjsip will interpret that as being a valid
-         auth object, and will attempt to authenticate inbound requests. This
-         isn't desired; is an auth value is empty (which the name of an auth
-         object cannot be), we should instead interpret that as being an invalid
-         auth object and skip it.
+       * app_confbridge: Restore user's menu name to CLI output of 'confbridge list'
 
-         ASTERISK-25339 #close
+         When issuing a 'confbridge list XXXX' CLI command, the resulting output no
+         longer displays the menu associated with a ConfBridge participant.
 
-         Change-Id: Ic32b0c6eb5575107d5164a8c40099e687cd722c7
+         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.
 
-2015-08-19 12:10 +0000 [0582776f7f]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * ari/ari_websockets.c: Fix ast_debug parameter type mismatch.
+         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.
 
-         This is a type mismatch fix of the debugging commit
-         c63316eec10e1990a88bf4712238d6deb375bfa9 made to find out why
-         a testsuite test was failing only on one of the continuous
-         integration build agents.
+         Review: https://reviewboard.asterisk.org/r/4372/
 
-         Change-Id: Iba34f6e87cec331f6ac80e4daff6476ea6f00a75
+         ASTERISK-24723 #close
+         Reported by: Steve Pitts
 
-2015-08-19 10:30 +0000 [504213f542]  Scott Griepentrog <scott@griepentrog.com>
 
-       * contrib: script install_prereq should install sqlite3
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431134 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Asterisk needs the sqlite 3 library, which is package
-         sqlite-devel in CentOS. By adding this package to the
-         script, a problem with configure failing is resolved.
+2015-01-27 05:47 +0000 [ceedd40370]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25331 #close
-         Reported by: Kevin Harwell
+       * res_parking: Fix crash due to race condition when unloading.
 
-         Change-Id: I90efaf6a01914fea03f21e5cdbd91c348f44b0ec
+         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.
 
-2015-08-18 16:06 +0000 [77518d5434]  Richard Mudgett <rmudgett@digium.com>
+         This change makes it use stasis_unsubscribe_and_join which is documented
+         for usage in this exact scenario.
 
-       * res_http_websocket.c: Fix some off nominal path cleanup.
+         AST-1520 #close
 
-         * Remove extraneous unlock on off-nominal path.
-         * Add missing HTTP error reply.
+         Review: https://reviewboard.asterisk.org/r/4375/
 
-         Change-Id: I1f402bfe448fba8696b507477cab5f060ccd9b2b
 
-2015-08-18 14:46 +0000 [c61547fee6]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_ari.c: Add missing off nominal unlock and remove a RAII_VAR().
+2015-01-26 08:49 +0000 [702d79de2a]  David M. Lee <dlee@digium.com>
 
-         Change-Id: I0c5e7b34057f26dadb39489c4dac3015c52f5dbf
+       * Various fixes for OS X
 
-2015-08-17 16:41 +0000 [bd867cd078]  Richard Mudgett <rmudgett@digium.com>
+         This patch addresses compilation errors on OS X. It's been a while, so
+         there's quite a few things.
 
-       * app_queue.c: Extract some functions for simpler code.
+          * Fixed __attribute__ decls in route.h to be portable.
+          * Fixed htonll and ntohll to work when they are defined as macros.
+          * Replaced sem_t usage with our ast_sem wrapper.
+          * Added ast_sem_timedwait to our ast_sem wrapper.
+          * Fixed some GCC 4.9 warnings using sig*set() functions.
+          * Fixed some format strings for portability.
+          * Fixed compilation issues with res_timing_kqueue (although tests still fail
+            on OS X).
+          * Fixed menuconfig /sbin/launchd detection, which disables res_timing_kqueue
+            on OS X).
 
-         * Extract set_queue_member_pause() from set_member_paused() for simpler
-         and more consistent code.
+         ASTERISK-24539 #close
+         Reported by: George Joseph
 
-         * Extract set_queue_member_ringinuse() from
-         set_member_ringinuse_help_members() for simpler code.
+         ASTERISK-24544 #close
+         Reported by: George Joseph
 
-         Change-Id: Iecc1f4119c63347341d7ea6b65f5fc4963706306
+         Review: https://reviewboard.asterisk.org/r/4327/
 
-2015-08-14 12:55 +0000 [e5f5b9f384]  Richard Mudgett <rmudgett@digium.com>
 
-       * app_queue.c: Fix setting QUEUE_MEMBER 'paused' and 'ringinuse'.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Setting the 'paused' and 'ringinuse' options on a queue member using the
-         dialplan function QUEUE_MEMBER did not behave the same way as the
-         equivalent dialplan applications or AMI actions.
+2015-01-25 07:42 +0000 [1fc823c770]  Matt Jordan <mjordan@digium.com>
 
-         * Made queue_function_mem_write() call the set_member_paused() and
-         set_member_value() for the 'paused' and 'ringinuse' options respectively.
-         A beneficial side effect is that the queue name is now optional and sets
-         the value in all queues the interface is a member.
+       * dynamic realtime: Updates fail to work due to update fields being passed over
 
-         * Update QUEUE_MEMBER XML documentation.
+         When a crash was fixed due to usage of the REALTIME function in r423003, a
+         regression was introduced into ast_update2_realtime where the update fields
+         passed to the function would be skipped and the lookup field processed twice.
 
-         * Fix error checking in QUEUE_MEMBER() write.
+         The use of this function is a bit interesting: A variable argument list is
+         used with two sentinel values - the first marks the end of the lookup
+         fields/values; the second marks the end of the update fields/values.
+         Unfortunately, ast_update2_realtime parses over the lookup fields twice, as
+         opposed to parsing over the update fields. This causes the lookups to succeed,
+         but the updates itself to have no effect.
 
-         ASTERISK-25215 #close
-         Reported by: Lorne Gaetz
+         Note that the most common instance of this problem occurred in app_voicemail
+         during the updating of a mailbox password.
 
-         Change-Id: I3a016be8dc94d63a9cc155295ff9c9afa5f707cb
+         Thanks to the issue reporter, Paddy Grice, for pointing out the problem.
 
-2015-08-17 13:34 +0000 [ded51e3d77]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4356/
 
-       * app_queue.c: Fix error checking in QUEUE_MEMBER() read.
+         ASTERISK-24231
 
-         Change-Id: I7294e13d27875851c2f4ef6818adba507509d224
+         ASTERISK-24626 #close
+         Reported by: Paddy Grice
 
-2015-08-17 11:00 +0000 [ab373f2cef]  Scott Griepentrog <scott@griepentrog.com>
 
-       * CHAOS: prevent sorcery object with null id
 
-         When allocating a sorcery object, fail if the
-         id value was not allocated.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431072 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25323
-         Reported by: Scott Griepentrog
+2015-01-23 14:13 +0000 [e302116e40]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I152133fb7545a4efcf7a0080ada77332d038669e
+       * app_confbridge: Make CBRec channel names more unique.
 
-2015-08-14 15:46 +0000 [b719f56c72]  Mark Michelson <mmichelson@digium.com>
+         Channel names should be different from other channels in the system while
+         the channel exists.
 
-       * res_pjsip_sdp_rtp: Restore removed NULL check.
+         * Use a sequence number for CBRec channels instead of a random number
+         because the same random number could be picked again for the next CBRec
+         channel.
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431052 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+
+2015-01-23 13:44 +0000 [f8b3fb6e2f]  Richard Mudgett <rmudgett@digium.com>
+
+       * app_confbridge: Whitespace
 
-2015-08-13 12:30 +0000 [cea5dc7b8a]  Richard Mudgett <rmudgett@digium.com>
+         Because there is sometimes no sence to any whitespace.
+         ........
 
-       * audiohook.c: Simplify variable usage in audiohook_read_frame_both().
+         Merged revisions 431049 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I58bed58631a94295b267991c5b61a3a93c167f0c
 
-2015-08-13 12:22 +0000 [b3a56bee83]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431050 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * audiohook.c: Fix MixMonitor crash when using the r() or t() options.
+2015-01-23 11:08 +0000 [197265438e]  David M. Lee <dlee@digium.com>
 
-         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.
+       * Add depend on pjproject to res_pjsip_config_wizard.c
 
-         ASTERISK-25322 #close
-         Reported by Sean Pimental
 
-         Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@431030 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-12 12:59 +0000 [25af2d71c8]  Kevin Harwell <kharwell@digium.com>
+2015-01-23 09:12 +0000 [630eea087d]  Kevin Harwell <kharwell@digium.com>
 
-       * chan_sip.c: wrong peer searched in sip_report_security_event
+       * Investigate and fix memory leaks in Asterisk
 
-         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.
+         Fixed memory leaks that were found in Asterisk.
 
-         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-24693 #close
+         Reported by:  Kevin Harwell
+         Review: https://reviewboard.asterisk.org/r/4347/
 
-         ASTERISK-25320 #close
 
-         Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4
-2015-08-13 05:26 +0000 [e18c300550]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430999 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_http_websocket: When shutting down a session don't close closed socket
+2015-01-23 09:03 +0000 [e23f07beb8]  Walter Doekes <walter+asterisk@wjd.nu>
 
-         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.
+       * Fix typo's (retrieve, specified, address).
+         ........
 
-         Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b
-2015-08-11 05:24 +0000 [b4e9416138]  Joshua Colp <jcolp@digium.com>
+         Merged revisions 430996 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430998 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This change forcefully terminates the connection if the
-         WebSocket is to be closed but is unable to send the close frame.
+2015-01-23 08:38 +0000 [9210648bbe]  HZMI8gkCvPpom0tM (License 6658)
 
-         ASTERISK-25312 #close
+       * chan_sip: Case insensitive comparison of "defaultuser" parameter.
 
-         Change-Id: I10973086671cc192a76424060d9ec8e688602845
+         All the other configuration options are case insensitive, so this one
+         should be too.
 
-2015-08-10 13:43 +0000 [256bc52b66]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24355 #close
+         Reported by: HZMI8gkCvPpom0tM
+         patches:
+           ast.patch uploaded by HZMI8gkCvPpom0tM (License 6658)
+         ........
 
-       * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF.
+         Merged revisions 430993 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Pressing DTMF digits on a phone to go out on a DAHDI channel can result in
-         the digit not being recognized or even heard by the peer.
 
-         Phone -> Asterisk -> DAHDI/channel
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430994 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Turns out the DAHDI behavior with DTMF generation (and any other generated
-         tones) is exposed by the "buffers=" setting in chan_dahdi.conf.  When
-         Asterisk requests to start sending DTMF then DAHDI waits until its write
-         buffer is empty before generating any samples for the DTMF tones.  When
-         Asterisk subsequently requests DAHDI to stop sending DTMF then DAHDI
-         immediately stops generating the DTMF samples.  As a result, the more
-         samples there are in the DAHDI write buffer the shorter the time DTMF
-         actually gets sent on the wire.  If there are more samples in the write
-         buffer than the time DTMF is supposed to be sent then no DTMF gets sent on
-         the wire.  With the "buffers=12,half" setting and each buffer representing
-         20 ms of samples then the DAHDI write buffer is going to contain around
-         120 ms of samples.  For DTMF to be recognized by the peer the actual sent
-         DTMF duration needs to be a minimum of 40 ms.  Therefore, the intended
-         duration needs to be a minimum of 160 ms for the peer to receive the
-         minimum DTMF digit duration to recognize it.
+2015-01-22 13:24 +0000 [355eb9d22f]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * Bridge core: Pass a ref with the swap channel when joining a bridge.
 
-         * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting
-         to send a DTMF digit.
+         When code imparts a channel into a bridge to swap with another channel, a
+         ref needs to be held on the swap channel to ensure that it cannot
+         dissapear before finding it in the bridge.
 
-         ASTERISK-25315 #close
-         Reported by John Hardin
+         * The ast_bridge_join() swap channel parameter now always steals a ref for
+         the swap channel.  This is the only change to the bridge framework's
+         public API semantics.
 
-         Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a
+         * bridge_channel_internal_join() now requires the bridge_channel->swap
+         channel to pass in a ref.
 
-2015-08-05 14:21 +0000 [800e0ea48d]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24649
+         Reported by: John Bigelow
 
-       * chan_dahdi.c: Lock private struct for ast_write().
+         Review: https://reviewboard.asterisk.org/r/4354/
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430975 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25315
-         Reported by John Hardin
+2015-01-22 13:13 +0000 [c73b4b2a46]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb
+       * res_pjsip_outbound_registration.c: Minor code cleanup.
 
-2015-08-10 18:23 +0000 [c126afe18f]  Richard Mudgett <rmudgett@digium.com>
+         * Add an allocation failure check and assert in
+         sip_outbound_registration_response_cb().
 
-       * res_pjsip.c: Fix crash from corrupt saved SUBSCRIBE message.
+         * Made sip_outbound_registration_state_destroy() handle partially created
+         state objects from sip_outbound_registration_state_alloc().
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4366/
 
-         * 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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430957 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ie0677f69f707503b1a37df18723bd59418085256
+2015-01-22 12:09 +0000 [bdfdb01bcf]  Scott Griepentrog <sgriepentrog@digium.com>
 
-2015-08-10 07:40 +0000 [f68c995bc9]  Alexander Traud <pabstraud@compuserve.com>
+       * stasis transfer: fix a race condition on stasis bridge push
 
-       * chan_sip: Fix negotiation of iLBC 30.
+         After a bridge transfer completes where a local replacement
+         channel is used, a stasis transfer message with the details
+         of the transfer is sent.  This is processed by stasis which
+         then sets the stasis app name and replaced channel snapshot
+         on the replacement channel.
 
-         iLBC 20 was advertised in a SIP/SDP negotiation. However, only iLBC 30 is
-         supported. Removes "a=fmtp:x mode=y" from SDP. Because of RFC 3952 section 5,
-         only iLBC 30 is negotiated now.
+         However, since a separate thread was already started to run
+         stasis on the new replacement channel, a race was on to see
+         if the message processing would be completed before the app
+         name was needed, otherwise the channel would be hung up.
 
-         ASTERISK-25309 #close
+         This change moves the calls used to set the stasis app name
+         and the replace snapshot to the bridge_stasis_push function
+         callback from the bridge transfer logic, allowing the steps
+         to be completed earlier and more deterministically, and the
+         race elimianted.
 
-         Change-Id: I92d724600a183eec3114da0ac607b994b1a793da
+         NOTE: the swap channel parameter to bridge_stasis_push (and
+         thus all bridge push callbacks) must always be present when
+         performing a swap with another channel.
 
-2015-08-09 18:42 +0000 [8e194047ac]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24649 #close
+         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4341/
 
-       * res/res_format_attr_silk: Expose format attributes to other modules
 
-         This patch adds the .get callback to the format attribute module, such
-         that the Asterisk core or other third party modules can query for the
-         negotiated format attributes.
 
-         Change-Id: Ia24f55cf9b661d651ce89b4f4b023d921380f19c
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430939 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-09 17:56 +0000 [a0f451c35e]  Matt Jordan <mjordan@digium.com>
+2015-01-22 08:23 +0000 [beb20440e0]  Gareth Palmer (License 5169)
 
-       * main/format: Add an API call for retrieving format attributes
+       * apps/app_voicemail: Trigger MWI notification with MixMonitor m() option
 
-         Some codecs that may be a third party library to Asterisk need to have
-         knowledge of the format attributes that were negotiated. Unfortunately,
-         when the great format migration of Asterisk 13 occurred, that ability
-         was lost.
+         The MixMonitor m() option allows a recording to be pushed to a specific
+         voicemail mailbox. If the message is delivered to the mailbox's INBOX, however,
+         no MWI notification is currently raised.
 
-         This patch adds an API call, ast_format_attribute_get, to the core
-         format API, along with updates to the unit test to check the new API
-         call. A new callback is also now available for format attribute modules,
-         such that they can provide the format attribute values they manage.
+         This patch corrects the issue by properly calling notify_new_state from the
+         msg_create_from_file function. This will cause MWI to be triggered if the
+         message was placed in the mailbox's INBOX.
 
-         Note that the API returns a void *. This is done as the format attribute
-         modules themselves may store format attributes in any particular manner
-         they like. Care should be taken by consumers of the API to check the
-         return value before casting and dereferencing. Consumers will obviously
-         need to have a priori knowledge of the type of the format attribute as
-         well.
+         ASTERISK-24709 #close
+         Reported by: Gareth Palmer
+         patches:
+           app_voicemail-430919.patch uploaded by Gareth Palmer (License 5169)
+         ........
 
-         Change-Id: Ieec76883dfb46ecd7aff3dc81a52c81f4dc1b9e3
+         Merged revisions 430920 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-08-07 22:11 +0000 [26f0559a94]  David M. Lee <dlee@respoke.io>
 
-       * Replace htobe64 with htonll
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430921 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         We don't have a compatability function to fill in a missing htobe64; but
-         we already have one for the identical htonll.
+2015-01-21 15:53 +0000 [5e10007dbd]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ic0a95db1c5b0041e14e6b127432fb533b97e4cac
+       * res_pjsip_outbound_registration.c: Move unref to a better place.
 
-2015-08-07 14:20 +0000 [df9ce36366]  Scott Emidy <jemidy@digium.com>
+         Move an unconditional unref of client_state so it doesn't look like it
+         could be used after the last ref has destroyed it.
 
-       * ARI: Retrieve existing log channels
 
-         An http request can be sent to get the existing Asterisk logs.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430902 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The command "curl -v -u user:pass -X GET 'http://localhost:8088
-         /ari/asterisk/logging'" can be run in the terminal to access the
-         newly implemented functionality.
+2015-01-21 07:33 +0000 [74a13629e2]  Matt Jordan <mjordan@digium.com>
 
-         * Retrieve all existing log channels
+       * channels/chan_sip: Fix registration leak during reload
 
-         ASTERISK-25252
+         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.
 
-         Change-Id: I7bb08b93e3b938c991f3f56cc5d188654768a808
+         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.
 
-2015-08-07 11:14 +0000 [e9f1bc08cb]  Scott Emidy <jemidy@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4355/
 
-       * ARI: Creating log channels
+         ASTERISK-24640 #close
+         Reported by: Max Man
 
-         An http request can be sent to create a log channel
-         in Asterisk.
+         ASTERISK-24673 #close
+         Reported by: Stefan Engström
+         Tested by: Stefan Engström
 
-         The command "curl -v -u user:pass -X POST
-         'http://localhost:088/ari/asterisk/logging/mylog?
-         configuration=notice,warning'" can be run in the terminal
-         to access the newly implemented functionality for ARI.
 
-         * Ability to create log channels using ARI
 
-         ASTERISK-25252
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I9a20e5c75716dfbb6b62fd3474faf55be20bd782
+2015-01-21 07:27 +0000 [452f0eeb57]  Matt Jordan <mjordan@digium.com>
 
-2015-08-06 15:18 +0000 [78364132ce]  Scott Emidy <jemidy@digium.com>
+       * AMI: Add documentation for the missing Cdr/CEL events.
 
-       * ARI: Deleting log channels
+         This patch adds AMI event documentation for the Cdr and CEL AMI events.
 
-         An http request can be sent to delete a log channel
-         in Asterisk.
+         Note that while these events do share fields with each other and with other
+         channel related events, they do not contain all of the fields in a standard
+         channel snapshot, nor is the description of the fields identical. As such,
+         the patch opts for documentation for each field, for each event.
 
-         The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
-         /ari/asterisk/logging/mylog'" can be run in the terminal
-         to access the newly implemented functionally for ARI.
+         Review: https://reviewboard.asterisk.org/r/4350/
 
-         * Able to delete log channels using ARI
+         ASTERISK-24671 #close
+         Reported by: Dan Jenkins
 
-         ASTERISK-25252
 
-         Change-Id: Id6eeb54ebcc511595f0418d586ff55914bc3aae6
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430862 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-06 12:48 +0000 [e25569ef95]  Mark Michelson <mmichelson@digium.com>
+2015-01-21 07:10 +0000 [894d4d781c]  Matt Jordan <mjordan@digium.com>
 
-       * res_pjsip_pubsub: More accurately persist packet.
+       * apps/app_dial: Don't publish DialEnd twice on unexpected GoSub/Macro values
 
-         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.
+         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.
 
-         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.
+         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.
 
-         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.
+         This patch fixes the bug by ensuring that we only publish a DialEnd message to
+         Stasis if the Dial application's mid-call Macro/GoSub returns something that
+         Dial cares about.
 
-         ASTERISK-25306 #close
-         Reported by Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4336
 
-         Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2
+         ASTERISK-24682 #close
+         Reported by: Matt Jordan
 
-2015-08-04 16:12 +0000 [8521a86367]  Joshua Colp <jcolp@digium.com>
 
-       * res_pjsip: Ensure sanitized XML is NULL terminated.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430842 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-01-21 06:56 +0000 [98c3983c89]  Matt Jordan <mjordan@digium.com>
 
-         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.
+       * main/rtp_engine: Format NTP timestamps as unsigned longs
 
-         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.
+         When the RTCP reports are created, the NTP timestamps are stored as strings,
+         as JSON does not have an integer type long enough to store the value. However,
+         on 32-bit systems, a signed long may overflow for some portion of the
+         timestamp.
 
-         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.
+         This patch corrects the overflow by formatting the timestamps as unsigned
+         longs.
 
-         ASTERISK-25304 #close
 
-         Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430840 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-08-05 05:23 +0000 [9a12804e59]  Joshua Colp <jcolp@digium.com>
+2015-01-20 10:51 +0000 [a7ba8a58a8]  Ashley Sanders <asanders@digium.com>
 
-       * res_rtp_asterisk: Don't leak temporary key when enabling PFS.
+       * ARI: Fixed crash that occurred when updating a bridge when the optional query parameter 'name' was not supplied.
 
-         A change recently went in which enabled perfect forward secrecy for
-         DTLS in res_rtp_asterisk. This was accomplished two different ways
-         depending on the availability of a feature in OpenSSL. The fallback
-         method created a temporary instance of a key but did not free it.
-         This change fixes that.
+         Prior to this changeset, posting to the: /ari/bridges/{bridgeId} endpoint without specifying a value for the [name] query parameter, would crash Asterisk if the bridge you are attempting to create (or update) had the same ID as an existing bridge. The internal mechanism of the POST operation interpreted a null value for name, thus resulting in an error condition that crashed Asterisk.
 
-         ASTERISK-25265
+         ASTERISK-24560 #close
+         Reported By: Kinsey Moore
 
-         Change-Id: Iadc031b67a91410bbefb17ffb4218d615d051396
-2015-08-04 09:47 +0000 [27dc2094e9]  Mark Michelson <mmichelson@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4349/
 
-       * res_http_websocket: Debug write lengths.
 
-         Commit 39cc28f6ea2140ad6d561fd4c9e9a66f065cecee attempted to fix a
-         test failure observed on 32 bit test agents by ensuring that a cast from
-         a 32 bit unsigned integer to a 64 bit unsigned integer was happening in
-         a predictable place. As it turns out, this did not cause test runs to
-         succeed.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430818 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This commit adds several redundant debug messages that print the payload
-         lengths of websocket frames. The idea here is that this commit will not
-         cause tests to succeed for the faulty test agent, but we might deduce
-         where the fault lies more easily this way by observing at what point the
-         expected value (537) changes to some ungangly huge number.
+2015-01-20 10:46 +0000 [6af6a216a1]  Richard Mudgett <rmudgett@digium.com>
 
-         If you are wondering why something like this is being committed to the
-         branch, keep in mind that in commit
-         39cc28f6ea2140ad6d561fd4c9e9a66f065cecee I noted that the observed test
-         failures only happen when automated tests are run. Attempts to run the
-         tests by hand manually on the test agent result in the tests passing.
+       * CHANNEL(peer), chan_iax2, res_fax, SNMP agent: Fix deadlock from reaching across a bridge.
 
-         Change-Id: I14a65c19d8af40dadcdbd52348de3b0016e1ae8d
+         Calling ast_channel_bridge_peer() cannot be done while holding any channel
+         locks.  The reported issue hit the deadlock in chan_iax2, but an audit of
+         the ast_channel_bridge_peer() calls found three more locations where the
+         same deadlock can occur.
 
-2015-08-03 11:06 +0000 [39cc28f6ea]  Mark Michelson <mmichelson@digium.com>
+         * Made CHANNEL(peer), res_fax, and the SNMP agent not call
+         ast_channel_bridge_peer() with any channel locked.  For CHANNEL(peer) I
+         had to rework the logic to not hold the channel lock.
 
-       * res_http_websocket: Avoid passing strlen() to ast_websocket_write().
+         * Made chan_iax2 no longer call ast_channel_bridge_peer().  It was done
+         for legacy reasons that no longer apply.
 
-         We have seen a rash of test failures on a 32-bit build agent. Commit
-         48698a5e21d7307f61b5fb2bd39fd593bc1423ca solved an obvious problem where
-         we were not encoding a 64-bit value correctly over the wire. This
-         commit, however, did not solve the test failures.
+         * Removed the iax.conf forcejitterbuffer option.  It is now always enabled
+         when the jitterbuffer option is enabled.  If you put a jitter buffer on a
+         channel it will be on the channel.
 
-         In the failing tests, ARI is attempting to send a 537 byte text frame
-         over a websocket. When sending a frame this small, 16 bits are all that
-         is required in order to encode the payload length on the websocket
-         frame. However, ast_websocket_write() thinks that the payload length is
-         greater than 65535 and therefore writes out a 64 bit payload length.
-         Inspecting this payload length, the lower 32 bits are exactly what we
-         would expect it to be, 537 in hex. The upper 32 bits, are junk values
-         that are not expected to be there.
+         ASTERISK-24600 #close
+         Reported by: Jeff Collell
 
-         In the failure, we are passing the result of strlen() to a function that
-         expects a uint64_t parameter to be passed in. strlen() returns a size_t,
-         which on this 32-bit machine is 32 bits wide. Normally, passing a 32-bit
-         unsigned value to somewhere where a 64-bit unsigned value is expected
-         would cause no problems. In fact, in manual runs of failing tests, this
-         works just fine. However, ast_websocket_write() uses the Asterisk
-         optional API, which means that rather than a simple function call, there
-         are a series of macros that are used for its declaration and
-         implementation. These macros may be causing some sort of error to occur
-         when converting from a 32 bit quantity to a 64 bit quantity.
+         Review: https://reviewboard.asterisk.org/r/4342/
 
-         This commit changes the logic by making existing ast_websocket_write()
-         calls use ast_websocket_write_string() instead. Within
-         ast_websocket_write_string(), the 64-bit converted strlen is saved in a
-         local variable, and that variable is passed to ast_websocket_write()
-         instead.
 
-         Note that this commit message is full of speculation rather than
-         certainty. This is because the observed test failures, while always
-         present in automated test runs, never occur when tests are manually
-         attempted on the same test agent. The idea behind this commit is to fix
-         a theoretical issue by performing changes that should, at the least,
-         cause no harm. If it turns out that this change does not fix the failing
-         tests, then this commit should be reverted.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I4458dd87d785ca322b89c152b223a540a3d23e67
+2015-01-19 20:39 +0000 [072db5e1b9]  Ben Klang (License 5876)
 
-2015-07-28 05:33 +0000 [aed068844c]  Mark Duncan <mark@syon.co.jp>
+       * contrib/scripts/install_prereq: Don't install 32-bit packages on 64-bit hosts
 
-       * res/res_rtp_asterisk: Add ECDH support
+         On Debian based systems, the install_prereq tool uses a search command on
+         Debian that results in selecting both 64-bit and 32-bit packages. Besides the
+         waste of disk space, this can actually cause aptitude use 100% of memory on a
+         VM with 1GB of RAM as it tried to work out all of the 32-bit package
+         dependencies.
 
-         This will add ECDH support to Asterisk. It will
-         detect auto ECDH support in OpenSSL
-         (1.0.2b and above) during ./configure. If this is
-         available, it will use it,
-         otherwise it will fall back to prime256v1 (this
-         behavior is consistent with
-         other projects such as Apache and nginx).
+         This patch filters out the 32-bit packages on a 64-bit machine, and leaves
+         32-bit machines alone.
 
-         This fixes WebRTC being broken in Firefox 38+ due
-         to Firefox now only supporting
-         ciphers with perfect forward secrecy.
+         ASTERISK-24048 #close
+         Reported by: Ben Klang
+         Tested by: Ben Klang, Matt Jordan
+         patches:
+           install_prereq_64-bit_compat.patch uploaded by Ben Klang (License 5876)
+         ........
 
-         ASTERISK-25265 #close
+         Merged revisions 430798 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I8c13b33a2a79c0bde2e69e4ba6afa5ab9351465b
 
-2015-07-29 14:17 +0000 [1ae762634c]  Benjamin Ford <bford@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430799 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * ARI: Rotate log channels.
+2015-01-19 20:32 +0000 [e659b3e53d]  LEI FU (License 6640)
 
-         An http request can be sent to rotate a specified log channel.
-         If the channel does not exist, an error response will be
-         returned.
+       * app_voicemail: Temp message left after review/hangup with ODBC/IMAP backend
 
-         The command "curl -v -u user:pass -X PUT 'http://localhost:8088
-         /ari/asterisk/logging/logChannelName/rotate'" can be run in the
-         terminal to access this new functionality.
+         When using ODBC or IMAP storage, temporary files created on the file system
+         must be disposed of using the DISPOSE macro. The DELETE macro will map to a
+         deletion function for the backend storage, but does not clean up any local
+         files created as a result of the operation.
 
-         * Added the ability to rotate log files through ARI
+         When using voicemail with the operator and review options enabled, pressing
+         0 to enter the menu, followed by 1 to save the message, followed by any
+         other DTMF press to delete the message, will result in the temporary file
+         lingering on the file system.
 
-         ASTERISK-25252
+         This patch properly calls DISPOSE after the DELETE. This causes the local
+         file to be disposed of.
 
-         Change-Id: Iaefa21cbbc1b29effb33004ee3d89c977e76ab01
+         ASTERISK-24288 #close
+         Reported by: LEI FU
+         patches:
+           voicemail_odbc_review_fix.diff uploaded by LEI FU (License 6640)
+         ........
 
-2015-07-29 13:49 +0000 [aeeb170fc4]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 430795 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * rtp_engine.c: Fix performance issue with several channel drivers that use RTP.
 
-         ast_rtp_codecs_get_payload() gets called once or twice for every received
-         RTP frame so it would be nice to not allocate an ao2 object to then have
-         it destroyed shortly thereafter.  The ao2 object gets allocated only if
-         the payload type is not set by the channel driver as a negotiated value.
-         The issue affects chan_skinny, chan_unistim, chan_rtp, and chan_ooh323.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430796 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Made static_RTP_PT[] an array of ao2 objects that
-         ast_rtp_codecs_get_payload() can return instead of an array of structs
-         that must be copied into a created ao2 object.
+2015-01-19 12:05 +0000 [ab5af1f3d8]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25296 #close
-         Reported by: Richard Mudgett
+       * Call extension state callbacks at hint creation.
 
-         Change-Id: Icb6de5cd90bfae07d44403a1352963db9109dac0
+         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.
 
-2015-07-29 17:00 +0000 [84262749d2]  Richard Mudgett <rmudgett@digium.com>
+         Patch contributed by John Hardin (License #6512)
 
-       * res_rtp_asterisk.c: Fix off-nominal crash potential.
 
-         ASTERISK-25296
-         Reported by: Richard Mudgett
 
-         Change-Id: I08549fb7c3ab40a559f41a3940f3732a4059b55b
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430776 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-29 13:48 +0000 [1519eb44a7]  Richard Mudgett <rmudgett@digium.com>
+2015-01-19 07:18 +0000 [643b81d98e]  Joshua Colp <jcolp@digium.com>
 
-       * rtp_engine.c: Must protect mime_types_len with mime_types_lock.
+       * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions.
 
-         Change-Id: I44220dd369cc151ebf5281d5119d84bb9e54d54e
+         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.
 
-2015-07-24 18:42 +0000 [a93b7a927c]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * res_pjsip_sdp_rtp.c: Fix processing wrong SDP media list.
+         ASTERISK-24615 #close
+         Reported by: David Justl
 
-         Change-Id: I7c076826c2d3c6ae8c923ca73b7a71980cca11f2
+         Review: https://reviewboard.asterisk.org/r/4331/
 
-2015-07-24 18:38 +0000 [741fa0d26d]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_sdp_rtp.c: Fixup some whitespace.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430755 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ib4eb7ef7dcaf93ddc26538f0a498aaf110d7a973
+2015-01-16 18:31 +0000 [34c220203f]  Kevin Harwell <kharwell@digium.com>
 
-2015-07-27 19:10 +0000 [89b21fd9a3]  Richard Mudgett <rmudgett@digium.com>
+       * REVERTING res_pjsip: make it unloadable
 
-       * rtp_engine.h: No sense allowing payload types larger than RFC allows.
+         Due to the original patch causing memory corruptions the patch is
+         being removed until the problem can be resolved.
 
-         * Tweaked add_static_payload() to not use magic numbers.
 
-         Change-Id: I1719ff0f6d3ce537a91572501eae5bcd912a420b
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-23 14:04 +0000 [7427c7f13b]  Richard Mudgett <rmudgett@digium.com>
+2015-01-16 16:13 +0000 [e257244bbb]  Mark Michelson <mmichelson@digium.com>
 
-       * rtp_engine.c: Minor tweaks.
+       * Change PJProject version requirement for ca_list_path transport option in CHANGES file.
 
-         * Fix off nominial ref leak of new_type in
-         ast_rtp_codecs_payloads_set_m_type().
 
-         * No need to lock static_RTP_PT_lock in
-         ast_rtp_codecs_payloads_set_m_type() and
-         ast_rtp_codecs_payloads_set_rtpmap_type_rate() before the payload type
-         parameter sanity check.
 
-         * No need to create ast_rtp_payload_type ao2 objects with a lock since the
-         lock is not used.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430716 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I64dd1bb4dfabdc7e981e3f61448beac9bb7504d4
+2015-01-16 16:12 +0000 [821c15ae53]  Mark Michelson <mmichelson@digium.com>
 
-2015-07-23 12:41 +0000 [e20f435b60]  Richard Mudgett <rmudgett@digium.com>
+       * Fix problem where a hung channel could occur on a failed blind transfer.
 
-       * rtp_engine.h: Misc comment fixes.
+         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.
 
-         Change-Id: If98139264d5d97427b4685ecbdc54518f725bc43
+         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.
 
-2015-07-17 16:23 +0000 [bc5d7f9c37]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24624 #close
+         Reported by Zane Conkle
 
-       * chan_sip.c: Tweak glue->update_peer() parameter nil value.
+         Review: https://reviewboard.asterisk.org/r/4339
 
-         Change glue->update_peer() parameter from 0 to NULL to better indicate it
-         is a pointer.
 
-         Change-Id: I8ff2e5087f0e19f6998e3488a712a2470cc823bd
 
-2015-07-30 17:05 +0000 [13eb491e35]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430714 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_session.c: Fix crashes seen when call cancelled.
+2015-01-16 11:45 +0000 [8bc4a89e1f]  cloos <cloos@jhcloos.com> (License #5956)
 
-         Two testsuite tests crashed in the same place as a result of an INVITE
-         being CANCELed.
+       * Add support for the ca_list_path option for PJSIP transports.
 
-         tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_unspecified
-         tests/channels/pjsip/resolver/srv/failover/in_dialog/transport_tcp
+         This allows for a path to be specified that has a collection of CA
+         certificates in it.
 
-         The session pointer is no longer in the inv->mod_data[session_module.id]
-         location because the INVITE transaction has reached the terminated state.
+         ASTERISK-24575 #close
+         Reported by cloos
+         Patches:
+               pj-ca-path-trunk.diff uploaded by cloos (License #5956)
 
-         ASTERISK-25297 #close
-         Reported by: Richard Mudgett
+         Review: https://reviewboard.asterisk.org/r/4344
 
-         Change-Id: Idb75fdca0321f5447d5dac737a632a5f03614427
 
-2015-07-29 14:35 +0000 [48698a5e21]  Mark Michelson <mmichelson@digium.com>
 
-       * res_http_websocket: Properly encode 64 bit payload
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         A test agent was continuously failing all ARI tests when run against
-         Asterisk 13. As it turns out, the reason for this is that on those test
-         runs, for some reason we decided to use the super extended 64 bit
-         payload length for websocket text frames instead of the extended 16 bit
-         payload length. For 64-bit payloads, the expected byte order over the
-         network is
+2015-01-15 11:35 +0000 [fa80d9658d]  Richard Mudgett <rmudgett@digium.com>
 
-         7, 6, 5, 4, 3, 2, 1, 0
+       * res_fax.c, res_fax_spandsp.c: Remove redundant locking.
 
-         However, we were sending the payload as
+         When FAX was developed, apparently the faxregistry.container used to be a
+         linked list that was converted to an ao2 container.  Some of the
+         replacement ao2 container operations still had explicit lock/unlocks
+         around them.
 
-         3, 2, 1, 0, 7, 6, 5, 4
+         Three off nominal code paths in res_fax.c and res_fax_spandsp.c unlock the
+         channel even though the routine did not lock the channel and other code
+         paths in the routine do not unlock the channel.
 
-         This meant that we were saying to expect an absolutely MASSIVE payload
-         to arrive. Since we did not follow through on this expected payload
-         size, the client would sit patiently waiting for the rest of the payload
-         to arrive until the test would time out.
+         Review: https://reviewboard.asterisk.org/r/4340/
 
-         With this change, we use the htobe64() function instead of htonl() so
-         that a 64-bit byte-swap is performed instead of a 32 bit byte-swap.
 
-         Change-Id: Ibcd8552392845fbcdd017a8c8c1043b7fe35964a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430687 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-29 12:23 +0000 [10ba72a927]  Mark Michelson <mmichelson@digium.com>
+2015-01-15 11:18 +0000 [6c426e86bd]  Richard Mudgett <rmudgett@digium.com>
 
-       * Add a test event for inband ringing.
+       * res_fax.c, res_fax_spandsp.c: Fix some curlies on the end of function definitions.
 
-         This event is necessary for the bridge_wait_e_options test to be able to
-         confirm that ringing is being played on the local channel that runs the
-         BridgeWait() application with the e(r) option.
 
-         ASTERISK-25292 #close
-         Reported by Kevin Harwell
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430685 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: Ifd3d3d2bebc73344d4b5310d0d55c7675359d72e
+2015-01-15 06:09 +0000 [c95391f23c]  Joshua Colp <jcolp@digium.com>
 
-2015-07-16 12:16 +0000 [8458b8d441]  Jonathan Rose <jrose@digium.com>
+       * res_pjsip_outbound_registration: Fix race condition when reloading and listing registrations.
 
-       * holding_bridge: ensure moh participants get frames
+         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.
 
-         Currently, if a blank musiconhold.conf is used, musiconhold will fail
-         to start for a channel going into a holding bridge with an anticipation
-         of getting music on hold. That being the case, no frames will be written
-         to the channel and that can pose a problem for blind transfers in PJSIP
-         which may rely on frames being written to get past the REFER framehook.
-         This patch makes holding bridges start a silence generator if starting
-         music on hold fails and makes it so that if no music on hold functions
-         are installed that the ast_moh_start function will report a failure so
-         that consumers of that function will be able to respond appropriately.
+         AST-1506 #close
 
-         ASTERISK-25271 #close
+         Review: https://reviewboard.asterisk.org/r/4338/
 
-         Change-Id: I06f066728604943cba0bb0b39fa7cf658a21cd99
 
-2015-07-24 22:20 +0000  Asterisk Development Team <asteriskteam@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430664 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * asterisk 13.5.0-rc1 Released.
+2015-01-14 20:18 +0000 [f6630e2481]  abelbeck <lonnie@abelbeck.com> (License 5903)
 
-2015-07-24 17:15 +0000 [a4b527393b]  Matt Jordan <mjordan@digium.com>
+       * configure: If cross-compiling, assume we have working semaphores
 
-       * Release summaries: Add summaries for 13.5.0-rc1
+         The Asterisk 13 configure.ac checks for HAS_WORKING_SEMAPHORE but does not have
+         an option for cross-compiling so it fails with an exit. Since we're cross-
+         compiling, we can't exactly go looking for the header. The semaphore.h header
+         is relatively common:
+         * It's part of the POSIX standard
+         * It's part of GNU C Library
+         As such, we assume that it will be present when cross-compiling.
 
-2015-07-24 17:11 +0000 [158b0b8ebf]  Matt Jordan <mjordan@digium.com>
+         As such, this patch defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling
+         is detected.
 
-       * .version: Update for 13.5.0-rc1
+         If you're cross-compiling to a platform that doesn't support this, then make
+         sure you re-define this to 0.
 
-2015-07-24 17:11 +0000 [a0a7650e34]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24663 #close
+         Reported by: abelbeck
+         patches:
+           asterisk-13-anonymous-semaphores.patch uploaded by abelbeck (License 5903)
 
-       * .lastclean: Update for 13.5.0-rc1
 
-2015-07-24 17:11 +0000 [4d238af086]  Matt Jordan <mjordan@digium.com>
 
-       * realtime: Add database scripts for 13.5.0-rc1
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430646 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-24 12:56 +0000 [f78a4b52b8]  Matt Jordan <mjordan@digium.com>
+2015-01-14 17:14 +0000 [77a036bf3f]  Corey Farrell <git@cfware.com> (license 5909)
 
-       * Bump the ARI version to 1.8.0
+       * res_pjsip: make it unloadable
 
-         Due to backwards compatible changes, the ARI version should be bumped to
-         1.8.0 prior to the release of 13.5.0. Note that a previous patch already
-         bumped the version of AMI for this release.
+         The res_pjsip module was previously unloadable. With this patch it can now
+         be unloaded.
 
-         Change-Id: I419033bfbbc0d3533a29ccb32b2981f39e0883e7
+         This patch is based off the original patch on the issue (listed below) by Corey
+         Farrell with a few modifications. Namely, removed a few changes not required to
+         make the module unloadable and also fixed a bug that would cause asterisk to
+         crash on unloading.
 
-2015-07-18 11:16 +0000 [2749721791]  Joshua Colp <jcolp@digium.com>
+         This patch is the first step (should hopefully be followed by another/others at
+         some point) in allowing res_pjsip and the modules that depend on it to be
+         unloadable. At this time, res_pjsip and some of the modules that depend on
+         res_pjsip cannot be unloaded without causing problems of some sort.
 
-       * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options.
+         The goal of this patch is to get res_pjsip and only res_pjsip to be able to
+         unload successfully and/or shutdown without incident (crashes, leaks, etc...).
+         Other dependent modules may still cause problems on unload.
 
-         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.
+         Basically made sure, with the patch applied, that res_pjsip (with no other
+         dependent modules loaded) could be succesfully unloaded and Asterisk could
+         shutdown without any leaks or crashes that pertained directly to res_pjsip.
 
-         ASTERISK-25259 #close
+         ASTERISK-24485 #close
+         Reported by: Corey Farrell
+         Review: https://reviewboard.asterisk.org/r/4311/
+         patches:
+           pjsip_unload-broken-r1.patch submitted by Corey Farrell (license 5909)
 
-         Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9
 
-2015-07-24 09:46 +0000 [b4e19e414a]  Mark Michelson <mmichelson@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430628 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip: Add rtp_keepalive to sample config file.
+2015-01-14 14:27 +0000 [e370c9e68e]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I5f62d0c5684f8b2335f9f8ac2d79ee04fbdafb19
+       * Prevent slow graceful shutdown when outbound publications never started.
 
-2015-07-23 13:11 +0000 [f635520527]  Mark Michelson <mmichelson@digium.com>
+         The code was missing the case for explicitly destroying an outbound publication
+         when Asterisk had never actually published anything. The result was that Asterisk
+         would hang for a while on a graceful shutdown.
 
-       * Local channels: Alternate solution to ringback problem.
+         With this change, the case is taken into account, and on a graceful shutdown, these
+         publications are destroyed without the need to actually send a PUBLISH request.
 
-         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.
+         ASTERISK-24655 #close
+         Reported by Kevin Harwell
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4325
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430608 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-22 12:24 +0000 [f509730cb9]  Joshua Colp <jcolp@digium.com>
+2015-01-14 09:39 +0000 [89a431df84]  Diederik de Groot (License 6600)
 
-       * audiohook: Use manipulated frame instead of dropping it.
+       * build_tools/mkpkgconfig: Fix Cflags concatenation error in asterisk.pc
 
-         Previous changes to sample rate support in audiohooks accidentally
-         removed code responsible for allowing the manipulate audiohooks
-         to work. Without this code the manipulated frame would be dropped
-         and not used. This change restores it.
+         The mkpkgconfig script incorrectly concatenates Cflags options together. As an
+         example, the following:
+         Cflags: -I/usr/include/libxml2 -g3
 
-         ASTERISK-25253 #close
+         Is instead generated as:
+         Cflags: -I/usr/include/libxml2-g3
 
-         Change-Id: I3ff50664cd82faac8941f976fcdcb3918a50fe13
+         This patch corrects the generation of Cflags in mkpkgconfig such that the
+         Cflags options are output correctly.
 
-2015-07-22 09:46 +0000 [54b25c80c8]  Mark Michelson <mmichelson@digium.com>
+         Review: https://reviewboard.asterisk.org/r/3707/
 
-       * Local channels: Do not block control -1 payloads.
+         ASTERISK-23991 #close
+         Reported by: Diederik de Groot
+         patches:
+           fix_mkpkgconfig.diff uploaded by Diederik de Groot (License 6600)
+         ........
 
-         Control frames with a -1 payload are used as a special signal to stop
-         playtones generators on channels. This indication is sent both by
-         app_dial as well as by ast_answer() when a call is answered in case any
-         tones were being generated on a calling channel.
+         Merged revisions 430589 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         This control frame type was made to stop traversing local channel pairs
-         as an optimization, because it was thought that it was unnecessary to
-         send these indications, and allowing such unnecessary control frames to
-         traverse the local channels would cause the local channels to optimize
-         away less quickly.
 
-         As it turns out, through some special magic dialplan code, it is
-         possible to have a tones being played on a non-local channel, and it is
-         important for the local channel to convey that the tones should be
-         stopped. The result of having tones continue to be played on the
-         non-local channel is that the tones play even once the channel has been
-         bridged. By not blocking the -1 control frame type, we can ensure that
-         this situation does not happen.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430590 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25250 #close
-         Reported by Etienne Lessard
+2015-01-13 12:16 +0000 [1f94b96749]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0bcaac3d70b619afdbd0ca8a8dd708f33fd2f815
+       * app_macro: Don't restore the calling location on a channel redirect.
 
-2015-07-22 05:16 +0000 [f1493f900e]  Joshua Colp <jcolp@digium.com>
+         v11: If a channel redirect to a macro exten of a macro that is active
+         happens, the redirect location doesn't get executed.  Instead the original
+         macro location is restored and gets reexecuted.
 
-       * audiohook: Read the correct number of samples based on audiohook format.
+         v13: An additional effect happens if a parked call times out to an
+         extension in the macro that parked the call then the macro is reexecuted
+         instead of the expected park return location.
 
-         Due to changes in audiohooks to support different sample rates the
-         underlying storage of samples is in the format of the audiohook
-         itself and not of the format being requested. This means that if a
-         channel is using G722 the samples stored will be at 16kHz. If
-         something subsequently reads from the audiohook at a format which
-         is not the same sample rate as the audiohook the number of samples
-         needs to be adjusted.
+         * Made not restore the macro calling location on an
+         AST_SOFTHANGUP_ASYNCGOTO.
 
-         Given the following example:
-         1. Channel writing into audiohook at 16kHz (as it is using G722).
-         2. Chanspy reading from audiohook at 8kHz.
+         * Increased the locked channel range when setting up the macro execution
+         environment to cover things that should be done while the channel is
+         locked.
+
+         * Removed unnecessary NULL tests before calling ast_free() in
+         _macro_exec().
+
+         ASTERISK-23850 #close
+         Reported by: Andrew Nagy
 
-         The original code would read 160 samples from the audiohook for
-         each 20ms of audio. This is incorrect. Since the audio in the
-         audiohook is at 16kHz the actual number needing to be read is 320.
-         Failure to read this much would cause the audiohook to reset
-         itself constantly as the buffer became full.
+         Review: https://reviewboard.asterisk.org/r/4292/
+         ........
 
-         This change adjusts the requested number of samples by determining
-         the duration of audio requested and then calculating how many
-         samples that would be in the audiohook format.
+         Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         ASTERISK-25247 #close
 
-         Change-Id: Ia91ce516121882387a315fd8ee116b118b90653d
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-20 12:39 +0000 [62c64c3bd1]  Rusty Newton <rnewton@digium.com>
+2015-01-13 06:06 +0000 [056f11ac65]  Joshua Colp <jcolp@digium.com>
 
-       * Documentation: A couple of trivial fixes in sip.conf.sample and func_cdr.c
+       * chan_pjsip: Add configure check for 'pjsip_get_dest_info' function.
 
-          * In sip.conf.sample fix sentence where we said that WS or WSS are supported
-            transports for use in an outbound register definition. They are not
-            supported in that case.
-          * In func_cdr.c made it clear that the Disable option for CDR_PROP can be used
-            to enable CDR on a channel.
+         The 'pjsip_get_dest_info' function is used to determine if the signaling transport
+         of the dialog is secure or not. This function was added in PJSIP 2.3 and does not
+         exist in earlier versions.
 
-         ASTERISK-24867 #close
-         Reported by: Rusty Newton
+         This configure check allows Asterisk to build and run with older versions at the
+         loss of the 'secure' argument for the PJSIP CHANNEL dialplan function. Usage of
+         this argument will require upgrading to PJSIP 2.3.
 
-         ASTERISK-24853 #close
-         Reported by: PSDK
+         ASTERISK-24665 #close
+         Reported by: Mark Michelson
 
-         Change-Id: I3d698bc6302b9d00a0a995b5c4ad9a42d69b48ca
+         Review: https://reviewboard.asterisk.org/r/4329/
 
-2015-07-09 14:17 +0000 [d9094ddd73]  Mark Michelson <mmichelson@digium.com>
 
-       * res_pjsip: Add rtp_keepalive endpoint option.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This adds an "rtp_keepalive" option for PJSIP endpoints. Similar to the
-         chan_sip option, this specifies an interval, in seconds, at which we
-         will send RTP comfort noise frames. This can be useful for keeping RTP
-         sessions alive as well as keeping NAT associations alive during lulls.
+2015-01-12 12:34 +0000 [368ecf13bf]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25242 #close
-         Reported by Mark Michelson
+       * AMI: Revert non-backwards compatible changes from earlier commit.
 
-         Change-Id: I06660ba672c0a343814af4cec838e6025cafd54b
+         * Reverted the change to astman_send_listack() to not use the listflag
+         parameter and always set the value to "Start" so the start capitalization
+         is consistent.  Unfortunately changing the case of a returned value is not
+         a backward compatible change so for now FAXSessions is going to have to
+         remain inconsistent with all of the other AMI list actions.
 
-2015-07-16 09:13 +0000 [a23adcca3d]  Michael Cargile <mikec@vicidial.com>
+         * Reverted the minor protocol error fix in action_getconfig() when no
+         requested categories are found.  Each line needs to be formatted as
+         "Header: text".
 
-       * res/res_musiconhold: Add a warning when MOH does not exist
+         Caught by the testsuite.
 
-         Change-Id: Ifdfbd0b97cf31478d29923ec30aabce28d01740b
+         ASTERISK-24049
 
-2015-07-19 09:11 +0000 [03064daeb2]  Matt Jordan <mjordan@digium.com>
 
-       * res/res_sorcery_config: Prevent crash from misconfigured sorcery.conf
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430528 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Misconfiguring sorcery.conf with a 'config' wizard with no extra data
-         will currently crash Asterisk on startup, as the wizard requires a comma
-         delineated list to parse. This patch updates res_sorcery_config to check
-         for the presence of the data before it starts manipulating it.
+2015-01-12 12:28 +0000 [7d606d87bf]  Niklas Larsson (License 5068)
 
-         Change-Id: I4c97512e8258bc82abe190627a9206c28f5d3847
+       * configs/samples/features.conf.sample: Document attended transfer DTMF options
 
-2015-07-16 09:46 +0000 [2c626ceb64]  Joshua Colp <jcolp@digium.com>
+         The sample config was missing the configuration options for DTMF attended
+         transfer completion scenarios. The configuration options 'atxferabort',
+         'atxfercomplete', 'atxferthreeway', and 'atxferswap' are now documented in the
+         appropriate configuration file.
 
-       * chan_pjsip: Don't change formats when frame of unsupported format is received.
+         ASTERISK-24678 #close
+         Reported by: Niklas Larsson
+         patches:
+           features.conf.sample.diff uploaded by Niklas Larsson (License 5068)
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430526 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: If93d641fb6418a285928839300d7854cab8c1020
+2015-01-12 12:01 +0000 [4e2be8fb8f]  Michael L. Young (license 5026)
 
-2015-07-17 04:59 +0000 [abb14ac5b8]  Patric Marschall <patric.marschall@1und1.de>
+       * main/syslog: Allow dynamic logs, such as security events, to log to the syslog
 
-       * sig_pri.h: force_restart_unavailable_chans in wrong scope
+         The security event log uses a dynamic log level (SECURITY) that is registered
+         with the Asterisk logging core. Unfortunately, the syslog would ignore log
+         statements that had a dynamic log level associated with them. Because the
+         syslog cannot handle ad hoc dynamic log levels, this patch treats any dynamic
+         log entries sent to the syslog as logs with a level of NOTICE.
 
-         In channels/sig_pri.h, struct sig_pri_span, the field
-         force_restart_unavailable_chans is only defined if
+         ASTERISK-20744 #close
+         Reported by: Michael Keuter
+         Tested by: Michael L. Young, Jacek Konieczny
+         patches:
+           asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by Michael L. Young (license 5026)
+         ........
 
-         #if defined(HAVE_PRI_MCID) is true.
+         Merged revisions 430506 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         All other occurences of force_restart_unavailable_chans are outside of the
 
-         #if defined(HAVE_PRI_MCID)
-         endif
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430507 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         scope.
+2015-01-12 09:18 +0000 [dc993db55c]  Kristian Hogh (License 6639)
 
-         ASTERISK-25257 #close
-         Reported by: Patric Marschall
+       * funcs/func_curl: Fix memory leak when CURLOPT channel datastore is destroyed
 
-         Change-Id: I071de89cc2cd0d85927a013036e235851f672549
-2015-07-14 16:55 +0000 [875aee4c09]  Richard Mudgett <rmudgett@digium.com>
+         When the channel datastore associated with the usage of CURLOPT on a specific
+         channel is freed, the underlying structure holding the list of options is not
+         disposed of. This patch properly frees the structure in the datastore .destroy
+         callback.
 
-       * pbx.c: Post AMI VarSet event if delete a non-empty dialplan variable.
+         ASTERISK-24672 #close
+         Reported by: Kristian Hogh
+         patches:
+           func_curl-memory-leak.diff uploaded by Kristian Hogh (License 6639)
+         ........
 
-         ASTERISK-25256 #close
-         Reported by: Richard Mudgett
+         Merged revisions 430487 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I0b6be720b66fa956f6a798cd22ef8934eb0c0ff3
 
-2015-07-08 16:39 +0000 [8bcf6d2801]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430488 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * ARI: Add support for push configuration of dynamic object
+2015-01-09 16:08 +0000 [4791d629d1]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         This patch adds support for push configuration of dynamic, i.e.,
-         sorcery, objects in Asterisk. It adds three new REST API calls to the
-         'asterisk' resource:
-          * GET /asterisk/{configClass}/{objectType}/{id}: retrieve the current
-            object given its ID. This returns back a list of ConfigTuples, which
-            define the fields and their present values that make up the object.
-          * PUT /asterisk/{configClass}/{objectType}/{id}: create or update an
-            object. A body may be passed with the request that contains fields to
-            populate in the object. The same format as what is retrieved using
-            the GET operation is used for the body, save that we specify that the
-            list of fields to update are contained in the "fields" attribute.
-          * DELETE /asterisk/{configClass}/{objectType}/{id}: remove a dynamic
-            object from its backing storage.
+       * sip_to_pjsip: improve ability to parse input files
 
-         Note that the success/failure of these operations is somewhat
-         configuration dependent, i.e., you must be using a sorcery wizard that
-         supports the operation in question. If a sorcery wizard does not support
-         the create or delete mechanisms, then the REST API call will fail with a
-         403 forbidden.
+         General improvements to SIP to PJSIP conversion utility:
 
-         ASTERISK-25238 #close
+         1) track default section of input file to allow parsing
+            an include file that doesn't specify a [section]
 
-         Change-Id: I28cd5c7bf6f67f8e9e437ff097f8fd171d30ff5c
+         2) informatively handle case of assignment without [section]
 
-2015-07-15 15:40 +0000 [e31cb6b248]  Richard Mudgett <rmudgett@digium.com>
+         3) correctly handle getting sections from included files
+            - [section]'s are inherited by included file
 
-       * strings.h: Fix issues with escape string functions.
+         4) provide null string as default transport bind ip
 
-         Fixes for issues with the ASTERISK-24934 patch.
+         5) gracefully handle missing portions of registration string
 
-         * 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.
+         6) denote steps of operation during conversion and confirm
+            top level files as a convenience
 
-         * 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.
+         ASTERISK-24474 #close
+         Review: https://reviewboard.asterisk.org/r/4280/
+         Reported by: John Kiniston
 
-         * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25255 #close
-         Reported by: Richard Mudgett
+2015-01-09 15:44 +0000 [2b0d522dbb]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         Change-Id: Id77fc704600ebcce81615c1200296f74de254104
+       * app_bridge: return to the next dialplan priority
 
-2015-07-14 14:29 +0000 [243c0d1609]  Richard Mudgett <rmudgett@digium.com>
+         When app_bridge grabs a channel and puts it into
+         a bridge, the channel should then continue where
+         it left off in the dialplan after the bridge has
+         ended.   Although it stores the current dialplan
+         location as an after bridge goto on the channel,
+         it was executing the same priority again instead
+         of going to the next priority.   By swapping the
+         "specific" version of bridge_set_after_goto with
+         bridge_set_after_go_on, the next priority in the
+         dialplan is executed instead.
 
-       * parking_applications.c: Fix ast_verb() line terminator.
+         ASTERISK-24637 #close
+         Review: https://reviewboard.asterisk.org/r/4322/
+         Reported by: John Bigelow
 
-         Change-Id: I8797238c71563e243c48c6145b4f1ae58f91f775
 
-2015-07-14 14:36 +0000 [c782320c68]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430467 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+
+2015-01-09 11:54 +0000 [4b363688d4]  Richard Mudgett <rmudgett@digium.com>
+
+       * AMI: Make AMI actions that generate event lists consistent.
+
+         * Made the following AMI actions use list API calls for consistency:
+         Agents
+         BridgeInfo
+         BridgeList
+         BridgeTechnologyList
+         ConfbridgeLIst
+         ConfbridgeLIstRooms
+         CoreShowChannels
+         DAHDIShowChannels
+         DBGet
+         DeviceStateList
+         ExtensionStateList
+         FAXSessions
+         Hangup
+         IAXpeerlist
+         IAXpeers
+         IAXregistry
+         MeetmeList
+         MeetmeListRooms
+         MWIGet
+         ParkedCalls
+         Parkinglots
+         PJSIPShowEndpoint
+         PJSIPShowEndpoints
+         PJSIPShowRegistrationsInbound
+         PJSIPShowRegistrationsOutbound
+         PJSIPShowResourceLists
+         PJSIPShowSubscriptionsInbound
+         PJSIPShowSubscriptionsOutbound
+         PresenceStateList
+         PRIShowSpans
+         QueueStatus
+         QueueSummary
+         ShowDialPlan
+         SIPpeers
+         SIPpeerstatus
+         SIPshowregistry
+         SKINNYdevices
+         SKINNYlines
+         Status
+         VoicemailUsersList
+
+         * Incremented the AMI version to 2.7.0.
+
+         * Changed astman_send_listack() to not use the listflag parameter and
+         always set the value to "Start" so the start capitalization is consistent.
+         i.e., The FAXSessions used "Start" while the rest of the system used
+         "start".  The corresponding complete event always used "Complete".
+
+         * Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the
+         AMI ActionID for all of its list events.
+
+         * Fixed off-nominal AMI protocol error in manager_bridge_info(),
+         manager_parking_status_single_lot(), and
+         manager_parking_status_all_lots().  Use of astman_send_error() after
+         responding to the original AMI action request violates the action response
+         pattern by sending two responses.
+
+         * Fixed minor protocol error in action_getconfig() when no requested
+         categories are found.  Each line needs to be formatted as "Header: text".
+
+         * Fixed off-nominal memory leak in manager_build_parked_call_string().
+
+         * Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail().
+
+         ASTERISK-24049 #close
+         Reported by: Jonathan Rose
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4315/
 
-         * 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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430434 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I9a9c174b33f354f35f82cc6b7cea8303adbaf9c2
+2015-01-09 08:51 +0000 [eb9ce791d8]  Kinsey Moore <kmoore@digium.com>
 
-2015-07-10 18:01 +0000 [2735dd5b2d]  Richard Mudgett <rmudgett@digium.com>
+       * res_fax: Add T.38 negotiation timeout option
 
-       * res_pjsip_session.c: Extract sip_session_defer_termination_stop_timer().
+         This change makes the T.38 negotiation timeout configurable via
+         't38timeout' in res_fax.conf or FAXOPT(t38timeout). It was previously
+         hard coded to be 5000 milliseconds.
 
-         Change-Id: I9e115dee74bd72e06081d0ee73ecdeb886caa5fb
+         This change also handles T.38 switch failures by aborting the fax since
+         in the case where this can happen, both sides have agreed to switch to
+         T.38 and Asterisk is unable to do so.
 
-2015-07-10 10:42 +0000 [3d0ca343ca]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4320/
+         ........
 
-       * res_pjsip_session.c: Add some helpful comments and minor tweaks.
+         Merged revisions 430415 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I742aeeaf5f760593f323a00fb691affe22e35743
 
-2015-07-10 10:43 +0000 [8d08bb179c]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430416 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_session.c: Fix off nominal crash potential in debug message.
+2015-01-08 15:40 +0000 [b937438c17]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: I09928297927ee85f7655289acee3a586816466bc
+       * res_pjsip_pubsub: Fix persistent subscriptions not surviving graceful shutdown
 
-2015-07-15 10:31 +0000 [0a1a550593]  Matt Jordan <mjordan@digium.com>
+         If you do a 'core (shutdown|restart) graceful' persistent subscriptions won't 
+         survive.  If you do a 'core (shutdown|restart) now' or asterisk terminates for 
+         some reason, they do.  Here's why...
 
-       * apps/app_dictate: Fix typo in attribution
+         When asterisk shuts down gracefully, it sends a 'NOTIFY/terminated' to 
+         subscribers for each subscription.  This not only tells the subscribers that the 
+         dialog/state machine is done, it also frees the last reference to the 
+         subscription tree which causes the persistent subscription to get deleted from 
+         astdb.  When asterisk restarts, nothing's left.  Just preventing the delete from 
+         astdb doesn't work because we already told the subscriber to terminate the 
+         dialog so we can't restart it even if it was still in astdb.  Everything works 
+         OK if asterisk terminates unexpectedly because we never send the 'terminated' 
+         message so on restart, the subscription is still in astdb and the subscriber is 
+         none the wiser.
 
-         Last time I checked, it's "Sangoma", not "Samgoma". Thanks to Brian
-         (GameGamer43) for pointing that out.
+         This patch suppresses the sending of 'NOTIFY/terminated' on shutdown for 
+         persistent connections.
 
-         Change-Id: I43d7b196f6d7a2b2517b84915e3a8dfbc2894106
+         Tested-by: George Joseph
 
-2015-07-15 10:28 +0000 [3384e64ef6]  Benjamin Ford <bford@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4318/
 
-       * ARI: Fixed unload mode for unload module.
 
-         Changed the unload mode to AST_FORCE_SOFT from AST_FORCE_FIRM,
-         which would unload a module even if it was in use.
 
-         * Changed unload mode to proper mode
 
-         ASTERISK-25173
 
-         Change-Id: If2402487b5bce05d9770f25f65f5c8e292ad5533
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430397 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-08 16:38 +0000 [0b6ff77afb]  Matt Jordan <mjordan@digium.com>
+2015-01-08 15:37 +0000 [143bec54ee]  gtjoseph <george.joseph@fairview5.com>
 
-       * res/res_sorcery_astdb: Add a debugging message for when retrieval by ID fails
+       * res_pjsip_outbound_registration: Fix reference leak.
 
-         Having a debug message tell us that we attempted to look up an item but
-         failed is nice in circumstances when it isn't clear if the wizard was
-         queried correctly or not.
+         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.
 
-         Change-Id: I2600c3bbea87f252196358f62e73f4c7da8632f7
+         This patch adds the unreffs to handle_registration_response.
 
-2015-07-08 16:37 +0000 [2f0d6d346c]  Matt Jordan <mjordan@digium.com>
+         Tested-by: George Joseph
 
-       * res/res_pjsip_outbound_registration: Fix WARNING message
+         Review: https://reviewboard.asterisk.org/r/4303/
 
-         Newlines are nice.
 
-         Change-Id: Icf0d915db02882e47cd9077ed9009f5d44140d42
 
-2015-07-08 16:35 +0000 [cd2213f1ae]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430395 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip/configuration: Fix a variety of default value problems
+2015-01-08 11:48 +0000 [6e59bf6491]  gtjoseph <george.joseph@fairview5.com>
 
-         This patch fixes some bad default value handling in the following
-         settings:
+       * res_pjsip_outbound_registration: Fix several reload issues
 
-         * The 'message_context' and 'accountcode' settings are not mandatory. As
-           such, we can allow their stringfield values to be empty.
-         * The 'media_encryption' setting applies a default value of 'none' to
-           the setting, which it then can't parse or understand. Since the value
-           is documented to be 'no', this will now apply that as the default
-           value.
+         There are 2 issues with reloading registrations...
 
-         Change-Id: Ib9be7f97a7a5b9bc7aee868edf5acf38774cff83
+         1.  The 'can_reuse_registration' test wasn't considering the intervals or 
+         expiration in its determination of whether a registration changed or not so if 
+         you changed any of the intervals or the expiration and reloaded, the object 
+         would get reloaded but the actual timers wouldn't change.  
+         can_reuse_registration now does a sorcery diff on the old and new objects 
+         instead of discretely testing certain fields.  Now if you change expiration for 
+         instance, and reload, the timer is updated and re-registration will occur on the 
+         new value.
 
-2015-07-08 16:32 +0000 [2e4bdbd78a]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * main/sorcery: Provide log messages when a wizard does not support an operation
+         Tested-by: George Joseph
 
-         If a sorcery wizard does not support one of the 'optional' CRUD
-         operations (namely the CUD), log a WARNING message so we are aware of
-         why the operation failed. This also removes an assert in this case, as
-         the CUD operation may have been triggered by an external system, in
-         which case it is not a programming error but a configuration error.
+         Review: https://reviewboard.asterisk.org/r/4304/
 
-         Change-Id: Ifecd9df946d9deaa86235257b49c6e5e24423b53
 
-2015-07-10 18:17 +0000 [653f2087e0]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_session.c: Fix crash on call disconnect.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430373 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The crash fix for ASTERISK-25183 backported some code from master to try
-         to make sure that a BYE response is processed by the same serializer used
-         by the BYE request.  The identified race condition causing that backport
-         was the BYE request code had not finished processing after sending the BYE
-         before the BYE response came in for processing under a different thread.
-         Unfortunately, there is still a race condition.  Now the race condition is
-         between destroying the call session's serializer in
-         ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a
-         reference to the serializer for a BYE response.  Even worse, the new race
-         condition is a design limitation of the taskprocessor implementation that
-         didn't matter in versions before v12.  Back then, taskprocessors were only
-         destroyed when a module unloaded.  Now res_pjsip can destroy them when a
-         call ends.
+2015-01-07 15:25 +0000 [8f3c60cee7]  Kinsey Moore <kmoore@digium.com>
 
-         However, as noted on the ASTERISK-25183 commit,
-         session_inv_on_state_changed() is disassociating the dialog from the
-         session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED.
-         This is a tad too soon because our BYE request transaction has not
-         completed yet.
+       * ARI: Allow usage of ASYNCGOTO with Stasis()
 
-         * Split session_end() that is called by session_inv_on_state_changed() to
-         hold off session destruction until the BYE transaction timeout occurs or a
-         failed initial INVITE transaction timeout occurs in
-         session_inv_on_tsx_state_changed().
+         When the AMI Redirect action is used with a channel bridged inside
+         Stasis() and not running a pbx, the channel is hung up instead of
+         proceeding to the desired location in dialplan. This change allows
+         such channels to be Redirected properly by detecting the operation
+         used by Redirect (ASYNCGOTO) and using the code already established
+         for functionality of the ARI channel continue operation.
 
-         ASTERISK-25201 #close
-         Reported by: Matt Jordan
+         ASTERISK-24591 #close
+         Review: https://reviewboard.asterisk.org/r/4271/
 
-         Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961
 
-2015-07-14 13:12 +0000 [1aafadf814]  Benjamin Ford <bford@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * ARI: Added new functionality to reload a single module.
+2015-01-07 12:53 +0000 [42b342c6e2]  Mark Michelson <mmichelson@digium.com>
 
-         An http request can be sent to reload an Asterisk module. If the
-         module can not be reloaded or is not already loaded, an error
-         response will be returned.
+       * Add the ability to continue and originate using priority labels.
 
-         The command "curl -v -u user:pass -X PUT 'http://localhost:8088
-         /ari/asterisk/modules/{moduleName}'" (or something similar, based
-         on configuration) can be run in the terminal to access this new
-         functionality.
+         With this patch, the following two ARI commands
 
-         For more information, see:
-         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+         POST /channels
+         POST /channels/{id}/continue
 
-         * Added new ARI functionality
-         * Asterisk modules can be reloaded through http requests
+         Accept a new parameter, label, that can be used to continue to or originate
+         to a priority label in the dialplan.
 
-         ASTERISK-25173
+         Because this is adding a new parameter to ARI commands, the API version of
+         ARI has been bumped from 1.6.0 to 1.7.0.
 
-         Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1
+         This patch comes courtesy of Nir Simionovich from Greenfield Tech. Thanks!
 
-2015-07-14 08:55 +0000 [9dcae23cfc]  Benjamin Ford <bford@digium.com>
+         ASTERISK-24412 #close
+         Reported by Nir Simionovich
 
-       * ARI: Added new functionality to unload a single module.
+         Review: https://reviewboard.asterisk.org/r/4285
 
-         An http request can be sent to unload an Asterisk module. If the
-         module can not be unloaded or is already unloaded, an error response
-         will be returned.
 
-         The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
-         /ari/asterisk/modules/{moduleName}'" (or something similar, depending
-         on configuration) can be run in the terminal to access this new
-         functionality.
 
-         For more information, see:
-         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Added new ARI functionality
-         * Asterisk modules can be unloaded through http requests
+2015-01-07 12:17 +0000 [a10d2966b6]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25173
+       * res_pjsip_exten_state: Change 'does not exist' warning to notice
 
-         Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57
+         The 'new_subscribe: Extension <> does not exist or has no associated hint'
+         is a config issue and doesn't need to clutter up logs with warnings.
+         Changed to notice.
 
-2015-07-13 16:00 +0000 [c219a98d2b]  Benjamin Ford <bford@digium.com>
+         Tested-by: George Joseph
 
-       * ARI: Added new functionality to load a single module.
+         Review: https://reviewboard.asterisk.org/r/4307/
 
-         An http request can be sent to load an Asterisk module. If the
-         module can not be loaded or is loaded already, an error response
-         will be returned.
 
-         The command curl -v -u user:pass -X POST 'http://localhost:8088/ari
-         /asterisk/modules/{moduleName}'" (or something similar, depending on
-         configuration) can be run in the terminal to access this new
-         functionality.
 
-         For more information, see:
-         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430319 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Added new ARI functionality
-         * Asterisk modules can be loaded through http requests
+2015-01-07 12:14 +0000 [13ed8f73ed]  gtjoseph <george.joseph@fairview5.com>
 
-         ASTERISK-25173
+       * res_pjsip_mwi: Change "MWI Subscription failed" message from warning to notice
 
-         Change-Id: I9e05d5b8c5c666ecfef341504f9edc1aa84fda33
+         The "MWI Subscription failed" message means the client is trying to subscribe
+         to a mailbox that doesn't exist.  There's no need to clutter up logs with
+         warnings for a client misconfiguration so I changed it to a notice.
 
-2015-07-13 10:54 +0000 [73e35d20de]  Benjamin Ford <bford@digium.com>
+         Tested-by: George Joseph
 
-       * ARI: Added new functionality to get information on a single module.
+         Review: https://reviewboard.asterisk.org/r/4306/
 
-         An http request can be sent to retrieve information on a single
-         module, including the resource name, description, use count, status,
-         and support level.
 
-         The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari
-         /asterisk/modules/{moduleName}'" (or something similar, depending on
-         configuration) can be run in the terminal to access this new
-         functionality.
 
-         For more information, see:
-         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
 
-         * Added new ARI functionality
-         * Information on a single module can now be retrieved
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430317 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25173
+2015-01-07 11:51 +0000 [42e4cb7174]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Ibce5a94e70ecdf4e90329cf0ba66c33a62d37463
+       * func_config: Add ability to retrieve specific occurrence of a variable
 
-2015-07-08 14:56 +0000 [97ee0ee6c6]  Kevin Harwell <kharwell@digium.com>
+         I guess nobody uses templates with AST_CONFIG because today if you have a
+         context that inherits from a template and you call AST_CONFIG on the context,
+         you'll get the value from the template even if you've overridden it in the
+         context.  This is because AST_CONFIG only gets the first occurrence which is
+         always from the template.
 
-       * bridge.c: Fixed race condition during attended transfer
+         This patch adds an optional 'index' parameter to AST_CONFIG which lets you
+         specify the exact occurrence to retrieve, or '-1' to retrieve the last.
+         The default behavior is the current behavior.
 
-         During an attended transfer a thread is started that handles imparting the
-         bridge channel. From the start of the thread to when the bridge channel is
-         ready exists a gap that can potentially cause problems (for instance, the
-         channel being swapped is hung up before the replacement channel enters the
-         bridge thus stopping the transfer). This patch adds a condition that waits
-         for the impart thread to get to a point of acceptable readiness before
-         allowing the initiating thread to continue.
+         Tested-by: George Joseph
 
-         ASTERISK-24782
-         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4313/
 
-         Change-Id: I08fe33a2560da924e676df55b181e46fca604577
 
-2015-07-08 16:28 +0000 [bb76b88baf]  Matt Jordan <mjordan@digium.com>
 
-       * main/sorcery: Don't fail object set creation from JSON if field fails
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430315 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Some individual fields may fail their conversion due to their default
-         values being invalid for their custom handlers. In particular,
-         configuration values that depend on others being enabled (and thus have
-         an empty default value) are notorious for tripping this routine up. An
-         example of this are any of the DTLS options for endpoints. Any of the
-         DTLS options will fail to be applied (as DTLS is not enabled), causing
-         the entire object set to be aborted.
+2015-01-07 11:35 +0000 [9ea8dd036f]  Mark Michelson <mmichelson@digium.com>
 
-         This patch makes it so that we log a debug message when skipping a
-         field, and rumble on anyway.
+       * Fix ability to perform a remote attended transfer with PJSIP.
 
-         ASTERISK-25238
+         This fix has two parts:
 
-         Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76
+         * Corrected an error message to properly state that external_replaces is an extension. The
+           error message also prints what dialplan context the external_replaces extension was being
+           looked for in.
+         * Corrected the printing of the Replaces: header in an INVITE request. We were duplicating
+           "Replaces: " in the header.
 
-2015-07-08 16:21 +0000 [5f13c2226a]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24376 #close
+         Reported by Matt Jordan
 
-       * main/format_cap: Parse capabilities generated by ast_format_cap_get_names
+         Review: https://reviewboard.asterisk.org/r/4296
 
-         We have a strange relationship between the parsing of format
-         capabilities from a string and their representation as a string. We
-         expect the format capabilities to be expressed as a string in the
-         following format:
 
-         allow = !all,ulaw,alaw
-         disallow = g722
 
-         While we would generate the string representation of those formats as:
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430313 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         allow = (ulaw|alaw)
-         disallow = (ulaw|alaw|g729...)
+2015-01-07 10:55 +0000 [75cd302b0a]  gtjoseph <george.joseph@fairview5.com>
 
-         When the configuration framework needs to store values as a string, it
-         generates the format capabilities using the second representation; this
-         representation however cannot be parsed when the entry is rehydrated.
-         This patch fixes that by updating
-         ast_format_cap_update_by_allow_disallow to parse an entry as if it were
-         in the generated format if it has a leading '(' and a trailing ')'.
+       * config: Add option to NOT preserve effective context when changing a template
 
-         ASTERISK-25238
+         Let's say you have a template T with variable VAR1 = ON and you have a
+         context C(T) that doesn't specify VAR1.  If you read C, the effective value
+         of VAR1 is ON.  Now you change T VAR1 to OFF and call
+         ast_config_text_file_save.  The current behavior is that the file gets
+         re-written with T/VAR1=OFF but C/VAR1=ON is added.  Personally, I think this
+         is a bug. It's preserving the effective state of C even though I didn't
+         specify C/VAR1 in th first place.  I believe the behavior should be that if
+         I didn't specify C/VAR1 originally, then the effective value of C/VAR1 should
+         continue to follow the inherited state.  Now, if I DID explicitly specify
+         C/VAR1, the it should be preserved even if the template changes.
 
-         Change-Id: I904d43caf4cf45af06f6aee0c9e58556eb91d6ca
+         Even though I think the existing behavior is a bug, it's been that way forever
+         so I'm not changing it.  Instead, I've created ast_config_text_file_save2()
+         that takes a bitmask of flags, one of which is to preserve the effective context
+         (the current behavior).  The original ast_config_text_file_save calls *2 with
+         the preserve flag.  If you want the new behavior, call *2 directly without a
+         flag.
 
-2015-06-27 17:53 +0000 [2325b106fd]  Matt Jordan <mjordan@digium.com>
+         I've also updated Manager UpdateConfig with a new parameter
+         'PreserveEffectiveContext' whose default is 'yes'.  If you want the new behavior
+         with UpdateConfig, set 'PreserveEffectiveContext: no'.
 
-       * tests/test_devicestate: Add additional tests for the device state API
+         Tested-by: George Joseph
 
-         This patch adds more tests that exercise the device state API. This includes:
+         Review: https://reviewboard.asterisk.org/r/4297/
 
-         * Tests that cover adding a device state provider, as well as deleting a
-           device state provider. This also verifies that you cannot add an
-           already added device state provider, and cannot delete an already
-           deleted device state provider.
-         * A test that covers changing device state and receiving said updates
-           from a device state subscriber. This also covers hitting both the
-           device state cache as well as a custom device state provider.
-         * A test that covers converting device state to channel state and device
-           state values to a string representation and back.
-         * A test that covers obtaining device state from an active channel and a
-           channel driver that provides its own device state.
 
-         Change-Id: I2adca67ffb405cd8625a5d6df1e3f9b3d945c08d
 
-2015-06-27 17:51 +0000 [328f0be806]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430295 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * main/devicestate: Prevent duplicate registration of device state providers
+2015-01-06 20:52 +0000 [e17a1a8ba1]  Kinsey Moore <kmoore@digium.com>
 
-         Currently, the device state provider API will allow you to register a
-         device state provider with the same case insensitive name more than
-         once. This could cause strange issues, as the duplicate device state
-         providers will not be queried when a device's state has to be polled.
-         This patch updates the API such that a device state provider with the
-         same name as one that has already registered will be rejected.
+       * Fix dev-mode build on recent gcc
 
-         Change-Id: I4a418a12280b7b6e4960bd44f302e27cd036ceb2
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430274 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-10 22:25 +0000 [bee41eec62]  Matt Jordan <mjordan@digium.com>
+2015-01-06 16:46 +0000 [dd42e92e7a]  Matt Jordan <mjordan@digium.com>
 
-       * res/res_sorcery_memory_cache: Fix test registration issues
+       * contrib/ast-db-manage: Correct down_revision path for user_eq_phone
 
-         Again, tests now need to not end with a newline. This patch makes it so
-         the tests can register again, unit tests will actually pass, and we can
-         stop wasting time trying to figure out why builds are failing when they
-         really aren't failing.
+         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.
 
-         Change-Id: Ide519fbeba89f413c733446c5ff7b224fc4ce840
+         This patch corrects this in the 13 branch. Note that trunk, which already
+         contained both of these features, is unaffected by this problem.
 
-2015-07-10 21:42 +0000 [4d738e9026]  Matt Jordan <mjordan@digium.com>
 
-       * tests/test_sorcery_memory_cache_thrash: Fix test loading problems
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430252 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Because unit tests now want descriptions to not end with a newline, the
-         sorcery memory cache thrash tests failed to register. This patch
-         corrects their descriptions.
+2015-01-06 11:52 +0000 [4becfae3b1]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Id004b1becfdeed8ee3c846f49beab76a5c0f68b6
+       * res_pjsip_mwi: Change warning to notice
 
-2015-06-26 10:57 +0000 [47ea312b24]  Benjamin Ford <bford@digium.com>
+         When res_pjsip loads and an endpoint auto-subscribes a mailbox for mwi,
+         if a contact hasn't registered yet, res_pjsip_mwi spits out a warning.
+         This is a perfectly normal situation though and doesn't require something
+         as serious as a warning.  It's also self correcting. The device will start
+         getting mwi as soon as it registers.
 
-       * ARI: Added new functionality to get all module information.
+         This patch changes the warning to a notice.
 
-         An http request can be sent to retrieve a list of all existing modules,
-         including the resource name, description, use count, status, and
-         support level.
+         Tested-by: George Joseph
 
-         The command "curl -v -u user:pass -X GET 'http://localhost:8088/ari/
-         asterisk/modules" (or something similar, depending on configuration)
-         can be run in the terminal to access this new functionality.
+         Review: https://reviewboard.asterisk.org/r/4314/
 
-         For more information, see:
-         https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
 
-         * Added new ARI functionality
-         * Information on modules can now be retrieved
 
-         Change-Id: I63cbbf0ec0c3544cc45ed2a588dceabe91c5e0b0
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430227 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-09 09:18 +0000 [d558b00c85]  Joshua Colp <jcolp@digium.com>
+2015-01-06 11:46 +0000 [9d457fe5c2]  gtjoseph <george.joseph@fairview5.com>
 
-       * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer.
+       * bridge_native_rtp: Change local/remote message from debug/2 to verb/4
 
-         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.
+         Change the "Locally bridged"/"Remotely bridged" messages from dbg/2 to verb/4.
 
-         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.
+         Tested-by: George Joseph
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4300/
 
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430225 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-05-16 17:02 +0000 [b74b071369]  Joshua Colp <jcolp@digium.com>
+2015-01-06 11:35 +0000 [0fa6c34dc6]  gtjoseph <george.joseph@fairview5.com>
 
-       * res_sorcery_memory_cache: Backport to 13
+       * outbound_registration: Add 'pjsip send register' and update 'send unregister'
 
-         Gerrit is complaining of conflicts when trying to create a patch series
-         of all of the cherry-picked master commits, so I have instead squashed
-         it all into one commit.
+         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.
 
-         ASTERISK-25067 #close
-         Reported by: Matt Jordan
+         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.
 
-         Change-Id: I6dda90343fae24a75dc5beec84980024e8d61eb9
+         Both changes also ripple to AMI.  There's a new PJSIPRegister command.
 
-2015-07-08 04:21 +0000 [7ff1ac8797]  Joshua Colp <jcolp@digium.com>
+         There's no harm in calling either command repeatedly.  They don't care
+         about the actual state.
 
-       * res_rtp_asterisk: Ensure DTLS timeout timer is -1 if DTLS is not used.
+         Tested-by: George Joseph
 
-         This change fixes a bug where the DTLS timeout timer would be
-         initialized to 0 if DTLS was not used for an RTP session.
+         Review: https://reviewboard.asterisk.org/r/4301/
 
-         ASTERISK-25103
 
-         Change-Id: If8d26bb054f1d300838850da5b8db9044c2fe2ac
 
-2015-07-01 07:55 +0000 [05e8e14982]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_rtp_asterisk: Prevent simultaneous access to DTLS SSL context.
+2015-01-06 11:28 +0000 [d873b09075]  gtjoseph <george.joseph@fairview5.com>
 
-         This change moves logic for setting up the DTLS SSL contexts to
-         when the SDP is done being processed instead of when ICE negotiation
-         completes. It also stops handshakes from being initiated when we
-         are acting as a server.
+       * pjsip cli: Fix sorting of contacts for 'pjsip list contacts'
 
-         Manipulating the SSL context when ICE negotiation has completed
-         is problematic as the SSL context is not protected and if acting
-         as a client the remote side may have started DTLS negotiation
-         already.
+         For some reason I was using a hash container instead of a list to gather the
+         contacts for 'pjsip list/show contacts' so even though I had a sort function,
+         the output wasn't sorted.  This patch just changes the hash container to a
+         list container and the contacts now appear sorted in the CLI.
 
-         The retransmission timeout timer code has also been split up
-         and simplified some. Both RTP and RTCP now have their own timers
-         and the points at which the timer is stopped and started is now
-         more specific. When a packet is sent the timer is started. When
-         a response is received but before it is processed the timer is
-         stopped. This provides a guarantee that the timeout is not
-         occurring while the response is processed.
+         Tested-by: George Joseph
 
-         ASTERISK-22805 #close
-         ASTERISK-24550 #close
-         ASTERISK-24651 #close
-         ASTERISK-24832 #close
-         ASTERISK-25103 #close
-         ASTERISK-25127 #close
+         Review: https://reviewboard.asterisk.org/r/4305/
 
-         Change-Id: Ib75ea2546f29d6efc3d2d37c58df6986c7bd9b91
 
-2015-06-26 16:10 +0000 [38bace4fbb]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_t38.c: Fix always false if test.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430221 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Calling t38_change_state() sets the t38 state so it makes little sense to
-         then check the state right after the call for something else.
+2015-01-05 16:49 +0000 [566907fabd]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         * Made the code in t38_interpret_parameters() reject or exit T.38 mode as
-         intended but not implemented.
+       * bridge: avoid leaking channel during blond transfer pt2
 
-         Change-Id: Ib281263a6ed44da9448132c4e6df1e183b8a3df2
+         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.
 
-2015-06-30 11:17 +0000 [2f7688c788]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24513 #close
+         Review: https://reviewboard.asterisk.org/r/4302/
+         ........
 
-       * res_pjsip_mwi.c: Use safer loop coding in mwi_subscription_mailboxes_str().
+         Merged revisions 430199 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Change-Id: I6f39d809a6d1b47b35bb32b298f5a12f35d6f907
 
-2015-06-30 11:14 +0000 [74be3a50d7]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_mwi.c: Eliminate a simple RAII_VAR.
+2015-01-05 11:56 +0000 [b9a7875dd6]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Ib1843f81e826a6c760c424c88eb70c350d9d61da
+       * pjsip: Document addition of 'PJSIP_AOR' and 'PJSIP_CONTACT' in CHANGES file.
 
-2015-06-30 11:11 +0000 [589e93617a]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_mwi.c: Fix mid-line log message line breaks.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430181 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Add create_mwi_subscriptions_for_endpoint() doxygen comment.
+2015-01-05 11:51 +0000 [a7c38428af]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I3c3f921f4ec749fb65b62d2f6fa0d4d1888b94e2
+       * pjsip: Add 'PJSIP_AOR' and 'PJSIP_CONTACT' dialplan functions.
 
-2015-06-26 18:48 +0000 [0d67e04359]  Richard Mudgett <rmudgett@digium.com>
+         The PJSIP_AOR dialplan function allows inspection of configured AORs including
+         what contacts are currently bound to them.
 
-       * res_pjsip_mwi.c: Fix MWI subscription memory corruption crash.
+         The PJSIP_CONTACT dialplan function allows inspection of contacts in existence.
+         These can include both externally added (by way of registration) or permanent
+         ones.
 
-         MWI subscriptions can crash or corrupt memory when using the subscription
-         datastore to access the MWI subscription object because the datastore is
-         not holding a reference to the object.
+         ASTERISK-24341
+         Reported by: xrobau
 
-         * Give the subscription datastore a ref to the MWI subscription object.
-         It is unfortunate that the ref causes a circular ref chain that must be
-         explicitly broken to allow the memory to get released.  The loop is broken
-         when the subscription is shutdown and if the subscription setup fails.
+         Review: https://reviewboard.asterisk.org/r/4308/
 
-         ASTERISK-25168 #close
-         Reported by: Carl Fortin
 
-         Change-Id: Ice4fa823f138ff10a6c74d280699c41a82836d4f
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430179 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-07-02 14:51 +0000 [0422433f47]  Richard Mudgett <rmudgett@digium.com>
+2014-12-29 07:10 +0000 [cca262e7d3]  Kinsey Moore <kmoore@digium.com>
 
-       * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error.
+       * PJSIP: Update transport method documentation
 
-         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.
+         This updates the documentation for the 'method' configuration option to
+         be more verbose about the behaviors of values 'unspecified' and
+         'default'. They do exactly the same thing which is to select the
+         default as defined by PJSIP which is currently TLSv1.
 
-         * 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.
+         Review: https://reviewboard.asterisk.org/r/4264/
 
-         * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430145 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25168
-         Reported by: Carl Fortin
+2014-12-24 15:27 +0000 [1a0979d437]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de
+       * app_queue: Update sample conf documenation
 
-2015-06-26 10:36 +0000 [8ea214aed7]  Richard Mudgett <rmudgett@digium.com>
+         Updated the queues.conf.sample file to explicitly state which channel queue
+         variables are propagated to.
 
-       * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences.
+         ASTERISK-24267
+         Reported by: Mitch Claborn
+         ........
 
-         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.
+         Merged revisions 430126 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         * 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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430127 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403
+2014-12-24 09:26 +0000 [b521c612fc]  Matt Jordan <mjordan@digium.com>
 
-2015-06-05 15:37 +0000 [ada7346792]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip: Backport missing commits for user_eq_phone
 
-       * res_pjsip: Need to use the same serializer for a pjproject SIP transaction.
+         This backports the following from trunk, which were missed:
 
-         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.
+         r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04 Nov 2014) | 2 lines
 
-         * Add threadpool API call to get the current serializer associated with
-         the worker thread.
+         res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled.
 
-         * Pick a serializer from a pool of default serializers if the caller of
-         res_pjsip.c:ast_sip_push_task() does not provide one.
+         r427259 | file | 2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines
 
-         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.
+         res_pjsip: Apply the 'user_eq_phone' setting to the To header as well.
 
-         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.
+         It also adds the Alembic script for the option.
 
-         * Made pjsip_distributor.c save the thread's serializer name on the
-         outgoing request tdata struct so the response can be processed under the
-         same serializer.
+         ASTERISK-24643
 
-         This is a cherry-pick from master.
 
-         **** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430092 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         NOTE: session_inv_on_state_changed() is disassociating the dialog from the
-         session when the invite dialog becomes PJSIP_INV_STATE_DISCONNECTED.
-         Unfortunately this is a tad too soon because our BYE request transaction
-         has not completed yet.
+2014-12-24 07:25 +0000 [915bb88d3e]  Matt Jordan <mjordan@digium.com>
 
-         ASTERISK-25183 #close
-         Reported by: Matt Jordan
+       * res_pjsip_keepalive: Add runtime configurable keepalive module for connection-oriented transports.
 
-         Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a
+         Note that this is backport from trunk of r425825.
 
-2015-07-04 18:22 +0000 [55137c3d12]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * res/res_http_websocket: Don't send HTTP response fragmented.
+         Review: https://reviewboard.asterisk.org/r/4084/
 
-         This change makes it so that when accepting a WebSocket
-         connection the HTTP response is sent as one packet instead of
-         fragmented. Browsers don't like it when you send it fragmented.
+         ASTERISK-24644 #close
 
-         ASTERISK-25103
 
-         Change-Id: I9b82c4ec2949b0bce692ad0bf6f7cea9709e7f69
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430084 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-06-27 18:47 +0000 [49f81ddb85]  Matt Jordan <mjordan@digium.com>
+2014-12-24 07:20 +0000 [006ffdcfb2]  Matt Jordan <mjordan@digium.com>
 
-       * Makefile: Remove coverage files on 'make clean'
+       * res_pjsip: Add 'user_eq_phone' option to add a 'user=phone' parameter when applicable.
 
-         This patch updates a variety of Makefiles in Asterisk's build system to
-         remove .gcda and .gcno files when 'make clean' is executed. These files
-         are generated when '--enable-coverage' is passed to the Asterisk
-         configure script.
+         Note that this is a backport of r425804 from trunk.
 
-         Change-Id: Ib70b41eea2ee2908885bff02e80faf9f40c84602
+         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.
 
-2015-07-02 09:08 +0000 [e0f565663b]  Walter Doekes <walter+asterisk@wjd.nu>
+         Review: https://reviewboard.asterisk.org/r/4073/
 
-       * chan_sip: Fix early call pickup channel leak.
+         ASTERISK-24643 #close
 
-         When handle_invite_replaces() was called, and either ast_bridge_impart()
-         failed or there was no bridge (because the channel we're picking up was
-         still ringing), chan_sip would leak a channel.
 
-         Thanks Matt and Corey for checking the bridge path.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430083 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25226 #close
+2014-12-23 17:18 +0000 [d1c532034b]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Ie736bb182170a73eef5bcef0ab0376f645c260c8
+       * pjsip_options: Fix continued qualifies after endpoint/aor deletion
 
-2015-07-02 06:19 +0000 [a5a262be78]  Walter Doekes <walter+asterisk@wjd.nu>
+         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.
 
-       * chan_mgcp: Don't call close on fd -1.
+         This patch unschedules all existing qualify tasks before scheduling
+         new ones on reload.
 
-         ASTERISK-25220 #close
+         Tested-by: George Joseph
 
-         Change-Id: Ic48f3a82f51ada87f2fb0e016c9efe0ad56f1ee3
+         Review: https://reviewboard.asterisk.org/r/4290/
 
-2015-07-02 06:10 +0000 [b835312b4c]  Walter Doekes <walter+asterisk@wjd.nu>
 
-       * rtp_engine: Skip useless self-assignment in ast_rtp_engine_unload_format.
 
-         When running valgrind on Asterisk, it complained about:
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430064 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-             ==32423== Source and destination overlap in memcpy(0x85a920, 0x85a920, 304)
-             ==32423==    at 0x4C2F71C: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/...)
-             ==32423==    by 0x55BA91: ast_rtp_engine_unload_format (rtp_engine.c:2292)
-             ==32423==    by 0x4EEFB7: ast_format_attr_unreg_interface (format.c:1437)
+2014-12-23 17:15 +0000 [0a3dd7589e]  gtjoseph <george.joseph@fairview5.com>
 
-         The code in question is a struct assignment, which may be performed by
-         memcpy as a compiler optimization. It is changed to only copy the struct
-         contents if source and destination are different.
+       * test_astobj2: Fix warning for missing trailing slash in category
 
-         ASTERISK-25219 #close
+         This patch adds a trailing slash to the category for this test.
+         No more warning.
 
-         Change-Id: I6d3546c326b03378ca8e9b8cefd41c16e0088b9a
+         Tested-by: George Joseph
 
-2015-07-02 05:16 +0000 [6551e16e03]  Walter Doekes <walter+asterisk@wjd.nu>
+         Review: https://reviewboard.asterisk.org/r/4295/
 
-       * astfd: Fix buffer overflow in DEBUG_FD_LEAKS.
 
-         If DEBUG_FD_LEAKS was used and more file descriptors than the default of
-         1024 were available, some DEBUG_FD_LEAKS-patched functions would
-         overwrite memory past the fixed-size (1024) fdleaks buffer.
 
-         This change:
-         - adds bounds checks to __ast_fdleak_fopen and __ast_fdleak_pipe
-         - consistently uses ARRAY_LEN() instead of sizeof() or 1023 or 1024
-         - stores pointers to constants instead of copying the contents
-         - reorders the fdleaks struct for possibly tighter packing
-         - adds a tiny bit of documentation
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25212 #close
+2014-12-22 15:18 +0000 [7a356232bd]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Iacb69e7701c0f0a113786bd946cea5b6335a85e5
+       * DTMF atxfer: Setup recall channels as if the transferee initiated the call.
 
-2015-07-02 04:57 +0000 [f4dd9560cf]  Walter Doekes <walter+asterisk@wjd.nu>
+         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.
 
-       * res_timing: Don't close FD 0 when out of open files.
+         * Added missing information to the recall callback channels before
+         initiating the call.  callid, channel variables, datastores, accountcode,
+         peeraccount, COLP, and CLID
 
-         This fixes so a failure to get a timer file descriptor does not cascade
-         to closing FD 0.
+         * Set callid of the transferrer channel on the DTMF atxfer controller
+         thread attended_transfer_monitor_thread().
 
-         On error, both res_timing_kqueue and res_timing_timerfd would call the
-         destructor before setting the file handle. The file handle had been
-         initialized to 0, causing FD 0 to be closed. This in turn, resulted in
-         floods of "CLI>" messages and an unusable terminal.
+         * Added missing channel unlocks and props unref to off nominal paths in
+         attended_transfer_properties_alloc().
 
-         ASTERISK-19277 #close
-         Reported by: Barry Chern
+         ASTERISK-23841 #close
+         Reported by: Richard Mudgett
 
-         For the 13 branch, this was already fixed. This patch only ensures that
-         we do not attempt to close a negative file descriptor.
+         Review: https://reviewboard.asterisk.org/r/4259/
 
-         Change-Id: I147d7e33726c6e5a2751928d56561494f5800350
 
-2015-07-01 17:25 +0000 [78a1f4aa46]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * chan_vpb.cc: Fix compiler warning Jenkins found.
+2014-12-22 13:44 +0000 [fca0be57d9]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0ec7fd10d56d90d5a60b12b5a7d6807f265ac5e0
+       * queue_log: Post QUEUESTART entry when Asterisk fully boots.
 
-2015-07-01 13:34 +0000 [6b16fbfc22]  Scott Griepentrog <scott@griepentrog.com>
+         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.
 
-       * Channel alert pipe: improve diagnostic error return
+         * 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.
 
-         When a frame is queued on a channel, any failure in
-         ast_channel_alert_write is logged along with errno.
+         AST-1444 #close
+         Reported by: Denis Martinez
 
-         This change improves the diagnostic message through
-         aligning the errno value with actual failure cases.
+         Review: https://reviewboard.asterisk.org/r/4282/
+         ........
 
-         ASTERISK-25224
-         Reported by: Andrey Biglari
+         Merged revisions 430009 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I1bf7b3337ad392789a9f02c650589cd065d20b5b
 
-2015-07-01 16:04 +0000 [8e07ab145d]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430010 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * sorcery/realtime: Add a bit of debug and warning messages for bad configs
+2014-12-22 09:40 +0000 [9735a13429]  Karsten Wemheuer (License 5930)
 
-         When a mapping does not exist between a sorcery.conf defined object and
-         a realtime mapping in extconf, currently, the user will receive a slew
-         of ERROR messages that don't really tell what is happening. Some ERROR
-         messages may even be misleading, as they occur after the sorcery API has
-         already given up on the attempt to load and create the sorcery object.
+       * chan_sip: Send CANCEL via original INVITE destination even after UPDATE request
 
-         This patch adds a bit of debug and a useful WARNING message for when a
-         wizard's open callback fails for a particular object type. In the bad
-         configurations that resulted in this patch, this provided a 'root cause'
-         WARNING message that pointed in the right direction of the configuration
-         problem.
+         Given the following scenario:
+         * Three SIP phones (A, B, C), all communicating via a proxy with Asterisk
+         * A call is established between A and B. B performs a SIP attended transfer of
+           A to C. B sets the call on hold (A is hearing MOH) and dials the extension of
+           C. While phone C is ringing, B transfers the call (that is, what we typically
+           call a 'blond transfer').
+         * When the transfer completes, A hears the ringing of phone C, while B is idle.
 
-         Change-Id: I1cc7344f2b015b8b9c85a7e6ebc8cb4753a8f80b
-2015-06-29 12:45 +0000 [156395e743]  Mark Michelson <mmichelson@digium.com>
+         In the SIP messaging for the above scenario, a REFER request is sent to
+         transfer the call. When "sendrpid=yes" is set in sip.conf, Asterisk may send an
+         UPDATE request to phone C to update party information. This update is sent
+         directly to phone C, not through the intervening proxy. This has the unfortunate
+         side effect of providing route information, which is then set on the sip_pvt
+         structure for C. If someone (e.g. B) is trying to get the call back (through a
+         directed pickup), Asterisk will send a CANCEL request to C. However, since we
+         have now updated the route set, the CANCEL request will be sent directly to C
+         and not through the proxy. The phone ignores this CANCEL according to RFC3261
+         (Section 9.1).
 
-       * res_sorcery_realtime: Fix leak of sorcery object type.
+         This patch updates reqprep such that the route is not updated if an UPDATE
+         request is being sent while the INVITE state is INV_PROCEEDING or
+         INV_EARLY_MEDIA. This ensures that a subsequent CANCEL request is still sent
+         to the correct location.
 
-         This prevents a leak of a sorcery object type when realtime sorcery
-         objects are retrieved by fields or when multiple objects are retrieved.
+         Review: https://reviewboard.asterisk.org/r/4279
 
-         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-24628 #close
+         Reported by: Karsten Wemheuer
+         patches:
+           issue.patch uploaded by Karsten Wemheuer (License 5930)
+         ........
 
-         ASTERISK-25165 #close
-         Reported by Corey Farrell
+         Merged revisions 429982 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8
 
-2015-06-26 22:02 +0000 [a5e9c4e9b2]  Matt Jordan <mjordan@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429983 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_corosync: Always decline module load, instead of failing
+2014-12-21 18:17 +0000 [fc79cf6428]  gtjoseph <george.joseph@fairview5.com>
 
-         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_pjsip_phoneprovi_provider: Fix reload
 
-         res_corosync is really not that important.
+         Reloading wasn't working correctly because on a reload, the sorcery apply
+         handler was never being called for unchanged users.  So, instead of using
+         an apply handler, I'm now iterating over all users.  Works much more reliably.
 
-         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.
+         Tested-by: George Joseph
 
-         Note that this issue was keeping Asterisk unit tests from running on
-         certain build agents.
+         Review: https://reviewboard.asterisk.org/r/4288/
 
-         Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f
 
-2015-06-26 20:38 +0000 [399cd8bcd9]  Matt Jordan <mjordan@digium.com>
 
-       * main/pbx: Resolve case sensitivity regression in PBX hints
 
-         When 8297136f was merged for ASTERISK-25040, a regression was introduced
-         surrounding the case sensitivity of device names within hints.
-         Previously, device names - such as 'sip/foo' - were compared in a case
-         insensitive fashion. Thus, 'sip/foo' was equivalent to 'SIP/foo'. After
-         that patch, only the case sensitive name would match, i.e., 'SIP/foo'.
-         As a result, some dialplan hints stopped working.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429914 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This patch re-introduces case insensitive matching for device names in
-         hints.
+2014-12-20 14:57 +0000 [f88460115f]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25040
+       * acl: Fix reloading of configuration if configuration file does not exist at startup.
 
-         ASTERISK-25202 #close
+         The named ACL code incorrectly destroyed the config options information if loading
+         of the configuration file failed at startup. This would result in reloading
+         also failing even if a valid configuration file was put in place.
 
-         Change-Id: If5046a7d14097e1e3c12b63092b9584bb1e9cb4c
-         (cherry picked from commit 96bbcf495a1da9e607d9b04a44b5c4f49e83cc03)
+         ASTERISK-23733 #close
+         Reported by: Richard Kenner
+         ........
 
-2015-06-26 16:12 +0000 [24eec5a10b]  Mark Michelson <mmichelson@digium.com>
+         Merged revisions 429893 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_pjsip_nat: Adjust when contact should be rewritten.
 
-         A previous change made the contact only get rewritten if the dialog's
-         route set was not marked frozen. Unfortunately, while the intent of this
-         is correct, the dialog's route set actually gets marked as frozen
-         earlier than expected, especially for UAS dialogs.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429894 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Instead, the idea is that the contact needs to not be rewritten if there
-         is a pre-existing route set on the dialog. This is now accomplished by
-         checking the dialog's route set list instead of checking if the route
-         set is frozen.
+2014-12-19 14:54 +0000 [4b054bdc6d]  Richard Mudgett <rmudgett@digium.com>
 
-         Doing this causes some broken tests to begin passing again.
+       * res_http_websocket.c: Fix incorrect use of sizeof in ast_websocket_write().
 
-         ASTERISK-25196
-         Reported by Mark Michelson
+         This won't fix the reported issue but it is an incorrect use of sizeof.
 
-         Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e
+         ASTERISK-24566
+         Reported by:  Badalian Vyacheslav
+         ........
 
-2015-06-19 18:27 +0000 [0ec461a637]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 429867 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res_pjsip_outbound_registration.c: Add a serializer shutdown group.
 
-         The client_state objects contain a serializer used to send the outbound
-         REGISTER messages.  Once all those message transactions are complete then
-         the module can shutdown.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429868 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-24907 #close
-         Reported by: Kevin Harwell
+2014-12-19 11:31 +0000 [7074bf956b]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ibb2fe558f98190f2a06da830e0fadfa25516f547
+       * chan_dahdi: Don't ignore setvar when using configuration section scheme.
 
-2015-06-26 10:41 +0000 [05a2cc1293]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * res_pjsip_refer: Prevent sending duplicate headers.
+         * Move the clearing of setvar values to after the deferred processing of
+         dahdichan.
 
-         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.
+         AST-1378 #close
+         Reported by: Guenther Kelleter
+         Patch by: Guenther Kelleter
+         ........
 
-         ASTERISK-25204 #close
-         Reported by Mark Michelson
+         Merged revisions 429825 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d
 
-2015-06-23 17:43 +0000 [028fa54620]  Mark Michelson <mmichelson@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429829 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_nat: Rewrite route set when required.
+2014-12-19 11:26 +0000 [6a99df47c0]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         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.
+       * bridge: avoid leaking channel during blond transfer
 
-         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:
+         After a blond transfer (start attended and hang up)
+         to a destination that also hangs up without answer,
+         the Local;1 channel was leaked and would show up on
+         core show channels.  This was happening because the
+         attended state blond_nonfinal_enter() resetting the
+         props->transfer_target to null while releasing it's
+         own reference, which would later prevent props from
+         releasing another reference during destruction. The
+         change made here is simply to not assign the target
+         to NULL.
 
-         * Set R-URI of the ACK to sip:bar.
-         * Add Route headers for sip:foo and sip:baz, in that order.
+         ASTERISK-24513 #close
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4262/
+         ........
 
-         However, the rewrite_contact option resulted in our rewriting the
-         Contact header on the 200 OK to sip:foo. The result was:
+         Merged revisions 429826 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429827 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2014-12-18 16:38 +0000 [b22c833c12]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25196 #close
-         Reported by Mark Michelson
+       * chan_dahdi.c, res_rtp_asterisk.c: Change some spammy debug messages to level 5.
 
-         Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f
-2015-06-19 16:16 +0000 [84c12f9e0c]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24337 #close
+         Reported by: Rusty Newton
+         ........
 
-       * threadpool, res_pjsip: Add serializer group shutdown API calls.
+         Merged revisions 429804 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         A module trying to unload needs to wait for all serializers it creates and
-         uses to complete processing before unloading.
 
-         ASTERISK-24907
-         Reported by: Kevin Harwell
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429805 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I8c80b90f2f82754e8dbb02ddf3c9121e5e966059
+2014-12-18 14:03 +0000 [e603fbe04a]  Richard Mudgett
 
-2015-06-16 15:06 +0000 [602c4b74b5]  Richard Mudgett <rmudgett@digium.com>
+       * chan_dahdi: Populate CALLERID(ani2) for incoming calls in featdmf signaling mode.
 
-       * res_pjsip_outbound_registration.c: Fix handle_client_state_destruction() refs
+         For the featdmf signaling mode the incoming MF Caller-ID information is
+         formatted as follows: *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}#
 
-         * handle_client_state_destruction() must always be passed a ref to
-         client_state because it will always unref client_state.
-         handle_registration_response() was not passing a client_state ref.
+         Rather than discarding the ani2 digits, populate the CALLERID(ani2) value
+         with what is received instead.
 
-         * Made the final un-REGISTER message get sent normally using the pjproject
-         register control structure in handle_client_state_destruction().  The
-         previous code attempted to short circuit the response handling for the
-         module to unload.  That doesn't work for a couple reasons.  One,
-         pjsip_regc_send() may call the registered callback before it returns and
-         unbalance the client_state ref count.  Two, the registered callback
-         handles any authentication for the un-REGISTER message.
+         AST-1368 #close
+         Reported by: Denis Martinez
+         Patches:
+               extract_ani2_for_featdmf_v11.patch (license #5621) patch uploaded by Richard Mudgett
+         ........
 
-         * Made the distinction between internal registration state and external
-         registration status with sip_outbound_registration_status_str().  This is
-         necessary to avoid altering documented AMI messages with internal
-         changes.
+         Merged revisions 429783 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-         * Removed references to client_state->client outside of the serializer
-         thread.  When handle_client_state_destruction() destroys the pjproject
-         register control structure that memory is freed and cannot be referenced
-         anymore.  These accesses were to provide information for debug and
-         off-nominal warning messages.
 
-         * In sip_outbound_registration_timer_cb() you should not access entry->id
-         after unrefing client_state because the passed in entry is normally
-         pointing to the timer entry in the client_state object.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429784 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-24907
-         Reported by: Kevin Harwell
+2014-12-18 09:50 +0000 [4fad85f9bf]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: Ia7b446d8644b6b4550ef5bea49527671de65183f
+       * res_pjsip_sdp_rtp: wrong bridge chosen when the DTMF mode is not compatible
 
-2015-06-15 15:28 +0000 [8c6a95a9ac]  Richard Mudgett <rmudgett@digium.com>
+         A native rtp bridge was being chosen (it shouldn't have been) when using two
+         pjsip channels with incompatible DTMF modes.  This patch sets the rtp instance
+         property, AST_RTP_PROPERTY_DTMF, for the appropriate DTMF mode(s) for pjsip.
+         It was not being set before, meaning all DTMF modes for pjsip were being treated
+         as compatible, thus native bridging would be chosen as the bridge type when it
+         shouldn't have been.
 
-       * res_pjsip_outbound_registration.c: Use ast_sorcery_object_unregister() API
+         ASTERISK-24459 #close
+         Reported by: Yaniv Simhi
+         Review: https://reviewboard.asterisk.org/r/4265/
 
-         The sorcery pjsip 'registration' config object needs to be destroyed on
-         module unload.  Otherwise, a reload of res_pjsip could try to use
-         callbacks for a previously unloaded instance of the module provided by
-         ast_sorcery_object_register() or one of the variants.  Also, if
-         res_pjsip_outbound_registration were subsequently reloaded, the sorcery
-         config field objects would be registered in sorcery twice.
 
-         ASTERISK-24907
-         Reported by: Kevin Harwell
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429763 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I304fad13dece2604af48353f6c6d9d5c7b064697
+2014-12-18 09:34 +0000 [14d2f8f20f]  Mark Michelson <mmichelson@digium.com>
 
-2015-06-25 06:42 +0000 [e4a2ef9e4e]  Joshua Colp <jcolp@digium.com>
+       * Prevent potential infinite outbound authentication loops in registration.
 
-       * channel: Remove ignore of answer on non-outgoing channels.
+         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.
 
-         Due to the way that channels can now be moved around inside of
-         Asterisk it is possible for the outgoing flag of a channel to get
-         cleared before it has been answered. This results in the bridge
-         not receiving notification that the outgoing leg has been answered.
+         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.
 
-         This most easily exhibits itself with DTMF based blond transfers.
-         Since the answer of the outgoing leg is ignored the other party
-         continues to receive both a locally generated ringing and the
-         media stream of the outgoing leg upon its answer. This results
-         in no media being heard.
+         Review: https://reviewboard.asterisk.org/r/4273
 
-         This change removes the ignore of the answer and allows it
-         to pass through.
 
-         ASTERISK-25171 #close
 
-         Change-Id: I82aedcec4f89f34a2e5472086dfc9a6c775bca8e
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429761 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-06-15 15:28 +0000 [20f3d77ab9]  Richard Mudgett <rmudgett@digium.com>
+2014-12-18 09:05 +0000 [c1582929f9]  Mark Michelson <mmichelson@digium.com>
 
-       * sorcery: Add ast_sorcery_object_unregister() API call.
+       * Prevent possible race condition on dual redirect of channels in the same bridge.
 
-         Find and unlink the specified sorcery object type to complement
-         ast_sorcery_object_register().  Without this function you cannot
-         completely unload individual modules that use sorcery for configuration.
+         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-24907
-         Reported by: Kevin Harwell
+         ASTERISK-24536 #close
+         Reported by Niklas Larsson
 
-         Change-Id: I1c04634fe9a90921bf676725c7d6bb2aeaab1c88
+         Review: https://reviewboard.asterisk.org/r/4268
 
-2015-06-15 13:38 +0000 [4313f32969]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_outbound_registration.c: Reorder load_module() and unload_module().
 
-         It is best if the loading code creates and initializes the module's
-         infrastructure before letting the system know of its existence.  The
-         unloading code needs to reverse the actions of the loading code and in the
-         reverse order.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429741 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-24907
-         Reported by: Kevin Harwell
+2014-12-18 08:43 +0000 [5bd5f580c1]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I5d151383e9787b5b60aa5e1627b10f040acdded4
+       * Ensure the correct value is returned for CHANNEL(pjsip, secure)
 
-2015-06-23 14:34 +0000 [890c923786]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * AMI: Add Linkedid to the standard channel snapshot AMI event headers.
+         AST-1450 #close
+         Reported by John Bigelow
 
-         * The AMI version is bumped to 2.8.0.
+         Review: https://reviewboard.asterisk.org/r/4277
 
-         ASTERISK-25189 #close
-         Reported by: John Hardin
 
-         Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac
 
-2015-06-24 14:30 +0000 [2602a7484b]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429739 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * test.c: Add unit test registration checks for summary and description.
+2014-12-17 18:10 +0000 [b4621cd0f5]  gtjoseph <george.joseph@fairview5.com>
 
-         Added checks when a unit test is registered to see that the summary and
-         description strings do not end with a new-line '\n' for consistency.
+       * res_pjsip_config_wizard: fix unload SEGV
 
-         The check generates a warning message and will cause the
-         /main/test/registrations unit test to fail.
+         If certain pjsip modules aren't loaded, the wizard causes a SEGV
+         when it unloads.  Added a check for the presense of the object
+         type wizard before trying to clean it up.
 
-         * Updated struct ast_test_info member doxygen comments.
+         Tested-by: George Joseph
 
-         Change-Id: I295909b6bc013ed9b6882e85c05287082497534d
 
-2015-06-24 14:39 +0000 [2b0482d699]  Richard Mudgett <rmudgett@digium.com>
 
-       * Unit tests: Fix unit test description strings.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429719 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Analyzing the code shows that the unit test summary and description
-         strings should not end with a new-line character.  Where these strings are
-         used in the code a new-line is provided for output.
+2014-12-17 17:05 +0000 [105f224cfd]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: I129284f5e7ca93d82532334076da4c462d3d9fba
+       * res_pjsip_config_wizard: Change FILEUNCHANGED config_load2 flag determination
 
-2015-06-23 11:21 +0000 [e99e654d75]  Joshua Colp <jcolp@digium.com>
+         The module now applies the FILEUNCHANGED flag when both reloaded is
+         specified AND there's no last_config for the object type.
 
-       * app_dial: Hold reference to calling channel formats when dialing outbound.
+         Tested-by: George Joseph
 
-         Currently when requesting a channel the native formats of the
-         calling channel are provided to the core for usage when dialing
-         the outbound channel. This occurs without holding the channel lock
-         or keeping a reference to the formats. This is problematic as
-         the channel driver may end up changing the formats during this time.
-         In the case of chan_sip this happens when an SDP negotiation
-         completes.
+         Review: https://reviewboard.asterisk.org/r/4276/
 
-         This change makes it so app_dial keeps a reference to the native
-         formats of the calling channel which guarantees that they will
-         remain valid for the period of time needed.
 
-         ASTERISK-25172 #close
 
-         Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db
-2015-06-17 05:04 +0000 [80e82dc97f]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429699 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_mwi: Set up unsolicited MWI upon registration.
+2014-12-17 03:54 +0000 [9ae57e0dd6]  Walter Doekes <walter+asterisk@wjd.nu>
 
-         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.
+       * Fix printf problems with high ascii characters after r413586 (1.8).
 
-         ASTERISK-25180 #close
+         In r413586 (1.8) various casts were added to silence gcc 4.10 warnings.
+         Those fixes included things like:
 
-         Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252
+             -out += sprintf(out, "%%%02X", (unsigned char) *ptr);
+             +out += sprintf(out, "%%%02X", (unsigned) *ptr);
 
-2015-06-22 15:11 +0000 [35a99b6394]  Kevin Harwell <kharwell@digium.com>
+         That works for low ascii characters, but for the high range that yields
+         e.g. FFFFFFC3 when C3 is expected.
 
-       * bridge.c: Hangup attended transfer target if bridged
+         This changeset:
+         - fixes those casts to use the 'hh' unsigned char modifier instead
+         - consistently uses %02x instead of %2.2x (or other non-standard usage)
+         - adds a few 'h' modifiers in various places
+         - fixes a 'replcaes' typo
+         - dev/urandon typo (in 13+ patch)
 
-         After completing an attended transfer the transfer target channel was not being
-         hung up after leaving the bridge. Added an explicit softhangup to hangup said
-         channel, but only if it was previously bridged.
+         Review: https://reviewboard.asterisk.org/r/4263/
 
-         ASTERISK-24782 #close
-         Reported by: John Bigelow
+         ASTERISK-24619 #close
+         Reported by: Stefan27 (on IRC)
+         ........
 
-         Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
+         Merged revisions 429673 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ........
 
-2015-06-17 16:23 +0000 [036bc0012f]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 429674 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-       * res_pjsip_outbound_registration.c: Add missing line endings to CLI commands
 
-         Change-Id: I39ae612746d892d2dbe86f3ff2d7027fa1da57f7
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429675 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-06-12 14:29 +0000 [bec7435945]  Richard Mudgett <rmudgett@digium.com>
+2014-12-16 11:53 +0000 [a3534b7c05]  gtjoseph <george.joseph@fairview5.com>
 
-       * res_pjsip_outbound_registration.c: Eliminate simple RAII_VAR() usage.
+       * res_pjsip_config_wizard: fix test breakage
 
-         Change-Id: I399cb9d61bbba706b48c98e0bf75e98984cd9a9e
+         Fix test breakage caused by not checking for res_pjsip before
+         calling ast_sip_get_sorcery.
 
-2015-06-12 13:33 +0000 [c2519fdf1c]  Richard Mudgett <rmudgett@digium.com>
+         Tested-by: George Joseph
 
-       * res_pjsip_outbound_registration.c: Misc code cleanups.
+         Review: https://reviewboard.asterisk.org/r/4269/
 
-         * Break some long lines.
 
-         * Fix doxygen comment.
 
-         Change-Id: I8f12ba6822f84d5e7bb575280270cd7e2fefb305
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429653 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-06-22 09:26 +0000 [a419c69def]  Alexander Traud (License 6520)
+2014-12-16 10:38 +0000 [f26d4618eb]  Andreas Steinmetz (license 6523)
 
-       * chan_sip: Reload peer without its old capabilities.
+       * chan_sip: Allow T.38 switch-over when SRTP is in use.
 
-         On reload, previously allowed codecs were not removed. Therefore, it was not
-         possible to remove codecs while Asterisk was running. Furthermore, newly added
-         codecs got appended behind the previous codecs. Therefore, it was not possible
-         to add a codec with a priority of #1. This change removes the old capabilities
-         before the current ones are added.
+         Previously when SRTP was enabled on a channel it was not possible
+         to switch to T.38 as no crypto attributes would be present.
 
-         ASTERISK-25182 #close
-         Reported by: Alexander Traud
+         This change makes it so it is now possible. If a T.38 re-invite
+         comes in SRTP is terminated since in practice you can't encrypt
+         a UDPTL stream. Now... if we were doing T.38 over RTP (which
+         does exist) then we'd have a chance but almost nobody does that so
+         here we are.
+
+         ASTERISK-24449 #close
+         Reported by: Andreas Steinmetz
          patches:
-          asterisk_13_allow_codec_reload.patch uploaded by Alexander Traud (License 6520)
+          udptl-ignore-srtp-v2.patch submitted by Andreas Steinmetz (license 6523)
+         ........
 
-         Change-Id: I62a06bcf15e08e8c54a35612195f97179ebe5802
+         Merged revisions 429632 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-06-20 19:38 +0000 [74616ae43d]  Joshua Colp <jcolp@digium.com>
 
-       * chan_sip: Destroy peers without holding peers container lock.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Due to the use of stasis_unsubscribe_and_join in the peer destructor
-         it is possible for a deadlock to occur when an event callback is
-         occurring at the same time.
+2014-12-16 09:43 +0000 [ad85e54fd9]  Joshua Colp <jcolp@digium.com>
 
-         This happens because the peer may be destroyed while holding the
-         peers container lock. If this occurs the event callback will never
-         be able to acquire the container lock and the unsubscribe will
-         never complete.
+       * res_pjsip_t38: Fix T.38 failure when peer reinvites immediately.
 
-         This change makes it so the peers that have been removed from the
-         peers container are not destroyed with the container lock held.
+         If a remote endpoint reinvites to T.38 immediately the state machine
+         will go into a peer reinvite state. If a T.38 capable application
+         (such as ReceiveFax) queries it will receive this state. Normally
+         the application will then indicate so that the channel driver will
+         queue up the T.38 offer previously received. Once it receives this
+         offer the application will act normally and negotiate.
 
-         ASTERISK-25163 #close
+         The res_pjsip_t38 module incorrectly partially squashed this indication.
+         This would cause the application to think the request had failed when
+         in reality it had actually worked.
 
-         Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33
+         This change makes it so that no T.38 control frames (or indications)
+         are squashed.
 
-2015-06-18 13:16 +0000 [9015bb4c8c]  Mark Michelson <mmichelson@digium.com>
 
-       * Resolve race conditions involving Stasis bridges.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429612 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         This resolves two observed race conditions.
+2014-12-15 11:07 +0000 [89617370ec]  gtjoseph <george.joseph@fairview5.com>
 
-         First, a bit of background on what the Stasis application does:
+       * res_pjsip_config_wizard: Allow streamlined config of common pjsip scenarios
 
-         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.
+         res_pjsip_config_wizard
+         ------------------
+          * This is a new module that adds streamlined configuration capability for
+            chan_pjsip.  It's targetted at users who have lots of basic configuration
+            scenarios like 'phone' or 'agent' or 'trunk'.  Additional information
+            can be found in the sample configuration file at
+            config/samples/pjsip_wizard.conf.sample.
 
-         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.
+         Tested-by: George Joseph
 
-         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.
+         Review: https://reviewboard.asterisk.org/r/4190/
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429592 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25091 #close
-         Reported by Ilya Trikoz
+2014-12-15 09:36 +0000 [b85f79c0c1]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: If66265b73b4c9f8f58599124d777fedc54576628
-2015-06-16 11:13 +0000 [723a9d4225]  Mark Michelson <mmichelson@digium.com>
+       * Activate persistent subscriptions when they are recreated.
 
-       * Parking: Add documentation for AMI ParkedCallSwap event.
+         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.
 
-         This event was added some time ago in order to clarify when a channel
-         took the place of another channel in a parking lot. However, there was
-         no XML documentation added for the event. This patch adds the XML
-         documentation.
+         Review: https://reviewboard.asterisk.org/r/4261
 
-         ASTERISK-24900 #close
-         Reported by Rusty Newton
 
-         Change-Id: I4cfe7777c4b94bbff91c9221c6096a7a02a92eac
-2015-06-15 16:40 +0000 [79bf56c78a]  Corey Farrell <git@cfware.com>
 
-       * func_pjsip_aor: Fix leaked contact from iterator.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429571 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25162 #close
+2014-12-12 17:54 +0000 [2b8c441096]  gtjoseph <george.joseph@fairview5.com>
 
-         Change-Id: Id79aa3c6fe490016ee98efc97ac4c1d3f461f97e
+       * loader: Move definition of ast_module_reload from _private.h to module.h
 
-2015-06-12 16:58 +0000 [31c77b157b]  Kevin Harwell <kharwell@digium.com>
+         No functionality change.  Just move the definition of ast_module_reload
+         from _private.h to module.h so it can be public.
 
-       * res_pjsip: Add option to force G.726 to be treated as AAL2 packed.
+         Also removed the include of _private.h from manager.c since ast_module_load
+         was the only reason for including it.
 
-         Some phones send g.726 audio packed for AAL2, which differs from what is
-         recommended by RFC 3351. If Asterisk receives audio formatted as such when
-         negotiating g.726 then it sounds a bit distorted. Added an option to
-         res_pjsip_endpoint that allows g.726 negotiated audio to be treated as g.726
-         AAL2 packed.
+         Tested-by: George Joseph
 
-         ASTERISK-25158 #close
-         Reported by: Steve Pitts
+         Review: https://reviewboard.asterisk.org/r/4251/
 
-         Change-Id: Ie7e21f75493d7fe53e75e12c971e72f5afa33615
 
-2015-06-14 19:48 +0000 [de8c7f46ed]  Matt Jordan <mjordan@digium.com>
 
-       * main/cdr: Carry over the disable flag when 'disable all' is specified
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429542 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         The CDR_PROP function (as well as the NoCDR application) set the
-         'disable all' flag (AST_CDR_FLAG_DISABLE_ALL) on the current CDR. This
-         flag is supposed to be applied to all CDRs that are currently in the
-         chain, as well as all CDRs that may be created in the future. Currently,
-         however, the flag is only applied to the existing CDRs in the chain; new
-         CDRs do not receive the 'disable all' flag. In particular, this affects
-         parallel dials, which generate new CDRs for each pair of channels in
-         the dial attempt.
+2014-12-12 17:40 +0000 [8f12ded887]  Richard Mudgett <rmudgett@digium.com>
+
+       * 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.
 
-         This patch carries over the 'disable all' flag when it is specified on a
-         CDR and a new CDR is generated for the chain.
+         * Added a global mutex to properly serialize initialization of the lock
+         tracking structure.  The painful global lock can be mitigated by adding a
+         double checked lock flag as discussed on the original review request.
 
-         ASTERISK-24344 #close
+         * Defer lock tracking initialization until first use.
 
-         Change-Id: I91a0f0031e4d147bdf8a68ecd08304d506fb6a0e
-2015-06-12 14:28 +0000 [78ea356e78]  Matt Jordan <mjordan@digium.com>
+         * 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.
 
-       * main/cdr: Copy context/exten on chained CDRs for parallel dials in subroutines
+         * Properly handle allocation failures of the lock tracking structure.
 
-         When a parallel dial occurs, a new CDR will be created for each dial
-         attempt that is made. In most circumstances, the act of creating each
-         CDR in the chain will include a step that updates the Party A snapshot,
-         which causes the context/extension of the Party A to be copied onto the
-         CDR object.
+         * No need to initialize tracking data in __ast_pthread_mutex_destroy()
+         just to turn around and destroy it.
 
-         However, when the Party A is in a subroutine, we explicitly do *not*
-         copy the context/extension onto the CDR. This prevents the Macro or
-         GoSub routine name from blowing away the context/extension that the
-         channel was originally executing in. For the original CDR, this is not a
-         problem: the original CDR already recorded the last known 'good' state
-         of the channel just prior to it going into the subroutine. However, for
-         newly generated CDRs in a chain, there is no context/extension set on
-         them. Since we are in a subroutine, we will never set the Party A's
-         context/extension on the CDR, and we end up with a CDR with no
-         destination recorded on it.
 
-         This patch updates the creation of a chained CDR such that it copies
-         over the original CDR's context/extension. This is the last known "good"
-         state of the CDR, and is a reasonable starting point for the newly
-         generated CDR. In the case where we are not in a subroutine, subsequent
-         code will update the location of the CDR from the Party A information;
-         in the case where we are in a subroutine, the context/extension on the
-         original CDR is the correct information.
+         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.
 
-         ASTERISK-24443 #close
+         Thanks to Thomas Airmont for finding this obscure regression.
 
-         Change-Id: I6a3ef0d6e458d3b9b30572feaec70f2964f3bc2a
+         * 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.
 
-2015-06-11 08:18 +0000 [3f57f3f8ec]  Damian Ivereigh <damo@launtel.net.au>
 
-       * chan_sip.c: Update dialog fromtag after request with auth
+         Miscellaneous other items fixed by this patch:
 
-         If a client sends and INVITE which is 401 rejected, then subsequently
-         sends a new INVITE with the auth info and uses a different fromtag
-         from the first INVITE, Asterisk will accept the new INVITE as part of
-         the original dialog - match_req_to_dialog() specifically ignores the
-         fromtag. However it does not update the stored dialog with the new
-         fromtag.
+         * Match ast_suspend_lock_info() with ast_restore_lock_info() in
+         __ast_cond_timedwait().
 
-         This results in Asterisk being unable to match future packets that are
-         part of this dialog (such as the ACK to the OK or the OK to the BYE),
-         and the call is dropped.
+         * Made some uninitialized lock sanity checks return EINVAL and try a
+         DO_THREAD_CRASH.
 
-         This problem was originally found when using an NEC-i SV8100-GE (NEC SIP
-         Card).
+         * Fix bad canlog initialization expressions.
 
-         * After a successful match of a packet to the dialog, if the packet is
-           not a SIP_RESPONSE, authentication is present and the fromtags are
-           different, the stored fromtag is updated with the one from the recent
-           INVITE.
+         ASTERISK-24614 #close
+         Reported by: Thomas Airmont
 
-         ASTERISK-25154 #close
-         Reported by: Damian Ivereigh
-         Tested by: Damian Ivereigh
+         Review: https://reviewboard.asterisk.org/r/4247/
+         Review: https://reviewboard.asterisk.org/r/2826/
+         ........
 
-         Change-Id: I5c16cf3b409e5ef9f2b2fe974b6bd2a45a6aa17e
+         Merged revisions 429539 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-06-11 18:52 +0000 [30a0f2d9ac]  Matt Jordan <mjordan@digium.com>
 
-       * chan_pjsip: Set the context and extension on the channel when created
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429540 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Prior to this patch, chan_pjsip was failing to pass the endpoint's
-         context and the desired extension to the ast_channel_alloc_* routine.
-         This caused a new channel snapshot to be issued without a context and
-         extension, which can cause some reporting issues for users of AMI, CEL,
-         and other APIs. The channel driver would later set the context and
-         extension on the channel such that the channel would start in the
-         correct location in the dialplan, but the information reported in the
-         initial event would be incorrect.
+2014-12-12 16:53 +0000 [8c019b1a6b]  Matt Jordan <mjordan@digium.com>
 
-         This patch modifies the channel driver such that it now passes the
-         context and extension directly into the allocation routine. This
-         provides the information in the new channel snapshot published over
-         Stasis.
+       * res/res_agi: Make Verbose message for 'stream file' match other playbacks
 
-         ASTERISK-25156 #close
-         Reported by: cloos
+         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.
 
-         Change-Id: Ic6f8542836e596db8f662071d118e8f934fdf25e
 
-2015-06-10 18:28 +0000 [dbb067279e]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429519 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * bridge: When performing a blonde transfer update connected line information.
+2014-12-12 16:49 +0000 [7ff0d266a6]  Matt Jordan <mjordan@digium.com>
 
-         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.
+       * Add 11 merge properties
 
-         This change does the following to resolve this:
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429518 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         1. The indicated connected line information is cleared upon
-         completion of the masquerade operation when doing a blonde transfer.
-         This prevents the connected line update from being considered
-         redundant.
+2014-12-12 10:57 +0000 [439e6e1c5d]  Joshua Colp <jcolp@digium.com>
 
-         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.
+       * media: Fix crash when determining sample count of a frame during shutdown.
 
-         ASTERISK-25157 #close
-         Reported by: Joshua Colp
+         When shutting down Asterisk the codecs are cleaned up. As a result anything
+         attempting to get a codec based on ID or details will find that no codec
+         exists. This currently occurs when determining the sample count of a frame.
+         This code did not take this situation into account.
 
-         Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20
+         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.
 
-2015-06-11 14:39 +0000 [a2f4d03c87]  Richard Mudgett <rmudgett@digium.com>
+         ASTERISK-24604 #close
+         Reported by: Matt Jordan
 
-       * app_directory: Fix crash when using the alias option 'a'.
+         Review: https://reviewboard.asterisk.org/r/4260/
 
-         The voicemail.conf mailbox key/value pair is defined as:
-         <mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options'
-         respectively in search_directory_sub().  Those names make more sense.
+2014-12-12 09:30 +0000 [01c4e76c4e]  Kevin Harwell <kharwell@digium.com>
 
-         * 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.
+       * chan_pjsip: Race between channel answer and bridge setup when using direct media
 
-         * Fix crash if a voicemail.conf mailbox is just
-         <mailbox>=<password>,<name> when the 'a' option is used.  If there were no
-         fields after the name then the 'options' pointer was not checked for NULL.
+         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).
 
-         * Fix users.conf alias processing if the 'a' option is used.  The wrong
-         variable was used.
+         ASTERISK-24563 #close
+         Reported by: Steve Pitts
+         Review: https://reviewboard.asterisk.org/r/4257/
 
-         ASTERISK-25087 #close
-         Reported by: Chet Stevens
 
-         Change-Id: I86052ea77307beddddba5279824d39dc0d593374
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429477 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-06-09 15:31 +0000 [a2b718f4f6]  Richard Mudgett <rmudgett@digium.com>
+2014-12-12 09:00 +0000 [49386cf568]  David M. Lee <dlee@digium.com>
 
-       * res_pjsip.h: Fix some doxygen comments.
+       * Fix crash for sorcery misconfigs
 
-         Change-Id: I4615771077c3c6a0a7273da6d7b5f77af7e8d976
+         res_pjsip_outbound_publish was missing the CHECK_PJSIP_MODULE_LOADED()
+         call in load_module, and would crash with a segfault if res_pjsip
+         declined to load.
 
-2015-06-05 13:46 +0000 [32ddf6d86b]  Richard Mudgett <rmudgett@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4258/
 
-       * taskprocessor.c: Remove extra unref from off-nominal path.
 
-         Change-Id: Iee3bd8c8a528776056972066698fe735f0f6cf60
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429457 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-04-20 16:00 +0000 [cf98c744d5]  Yousf Ateya <y.ateya@starkbits.com>
+2014-12-12 08:12 +0000 [3b0c40f337]  Kinsey Moore <kmoore@digium.com>
 
-       * chan_iax2: Prevent deadlock between hangup and sending lagrq/ping
+       * PJSIP: Allow use of 'inactive' streams for hold
 
-         channels/chan_iax.c: Prevent the deadlock between iax2_hangup and send_lagrq/
-         send_ping. This deadlock happens because the scheduled task send_lagrq(or
-         send_ping) starts execution after the call hangup procedure starts but before
-         it deletes the tasks in the scheduler.
+         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.
 
-         The solution is to delete scheduled lagrq (and ping) task asynchronously
-         (i.e. schedule AST_SCHED_DEL for these tasks); By this, AST_SCHED_DEL will
-         be called in a new context (doesn't have callno locked).
+         Review: https://reviewboard.asterisk.org/r/4252/
+         Reported by: Steve Pitts
+         ........
 
-         This commit also cleans up the procedure of sending LAGRQ and PING.
+         Merged revisions 429432 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         main/sched.c: Do not assert when deleting non existant entry from scheduler.
-         This assert seems to be the reason for a lot of awkward code to avoid it.
 
-         ASTERISK-24983 #close
-         Reported by: Y Ateya
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429433 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I03bec1fc8faacb89630269e935fa667c6d6c080c
+2014-12-12 08:03 +0000 [15af40180a]  Kinsey Moore <kmoore@digium.com>
 
-2015-05-31 12:37 +0000 [8af6c9cf6b]  Ivan Poddubny <ivan.poddubny@gmail.com>
+       * Sorcery: Log when old config remains in use
 
-       * res_pjsip_transport_websocket: Fix use-after-free bugs.
+         This adds a log message notifying the user that a stale configuration
+         is in place upon reload when a config object fails to load. This
+         situation can end up causing confusion when the object failed to load
+         but exists from a previous config load especially when the old config
+         is significantly different from the new config.
 
-         This patch fixes use-after-free bugs caught by AddressSanitizer.
+         Review: https://reviewboard.asterisk.org/r/4250/
+         Reported by: Thomas Thompson
+         ........
 
-         1. PJSIP transport manager may decide to destroy transport on its own.
-         For example, when the contact registered via websocket has not renewed
-         its registration in time. The transport was destoyed, but the websocket
-         listener thread was still active until the socket closes, and then tried
-         to call transport_shutdown on transport that has been freed.
+         Merged revisions 429429 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Also, the transport destructor accessed wstransport->rdata.tp_info.pool
-         right after freeing memory that contained wstransport itself.
 
-         This patch converts transport to an ao2 object, allowing it to be
-         refcounted, so that it is available until both websocket listener and
-         pjsip transport manager are finished with it.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429430 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         2. The websocket listener deletes the last reference on websocket session
-         when the tcp connection is closed, and it gets destroyed, but
-         the transport manager may still use it, for example when disconnect
-         happens in the middle of a SIP transaction.
+2014-12-12 07:05 +0000 [0c9fbb449f]  Joshua Colp <jcolp@digium.com>
 
-         A new reference to websocket session has been added that is released
-         with the transport to prevent this.
+       * res_pjsip_session: Delay sending BYE if a re-INVITE transaction is in progress.
 
-         ASTERISK-25096 #close
-         Reported by: Josh Kitchens
+         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.
 
-         ASTERISK-24963 #close
-         Reported by: Badalian Vyacheslav
+         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).
 
-         Change-Id: Idc0b63eb6e459c1ddfb2430127d34b3c4d8d373b
+         Review: https://reviewboard.asterisk.org/r/4248/
 
-2015-06-09 13:41 +0000 [3046bc17ed]  ibercom <ibercom123@gmail.com>
 
-       * weakref attribute detection broken with gcc 4.6 and higher
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429409 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         GCC 4.7 Manual:
-         http://gcc.gnu.org/onlinedocs/gcc-4.7.4/gcc/Function-Attributes.html
+2014-12-12 06:31 +0000 [61fe4f10d2]  Joshua Colp <jcolp@digium.com>
 
-         weakref ("target")
+       * res_pjsip_session: Fix issue where a declined media stream in a re-INVITE would fail SDP negotiation.
 
-         A weak reference is an alias that does not by itself require a definition
-         to be given for the target symbol.
+         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.
 
-         ASTERISK-22559 #close
-         Reported by: Ibercom
+         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.
 
-         Change-Id: I36a136cae947b65187a697533416f9ff9a0b8cdf
+         This change makes the logic between both situations match so only under major
+         errors will the SDP negotiation fail.
 
-2015-06-08 10:09 +0000 [55c8daf88b]  Corey Farrell <git@cfware.com>
+         ASTERISK-24607 #close
+         Reported by: Matt Jordan
 
-       * Fix unsafe uses of ast_context pointers.
+         Review: https://reviewboard.asterisk.org/r/4254/
 
-         Although ast_context_find, ast_context_find_or_create and
-         ast_context_destroy perform locking of the contexts table,
-         any context pointer can become invalid at any time that the
-         contexts table is unlocked. This change adds locking around
-         all complete operations involving these functions.
 
-         Places where ast_context_find was followed by ast_context_destroy
-         have been replaced with calls ast_context_destroy_by_name.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429407 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         ASTERISK-25094 #close
-         Reported by: Corey Farrell
+2014-12-11 14:31 +0000 [8237bd357d]  Kevin Harwell <kharwell@digium.com>
 
-         Change-Id: I1866b6787730c9c4f3f836b6133ffe9c820734fa
+       * ARI/AMI: Include language in standard channel snapshot output
 
-2015-06-04 07:14 +0000 [e0090216db]  ibercom <ibercom123@gmail.com>
+         The CHANGES verbiage for the "language" addition had been put under the wrong
+         release. This moves it to be under 13.1 to 13.2 changes.
 
-       * CLI: Cosmetic issue - core show uptime
+         ASTERISK-24553
+         Reported by: Matt Jordan
 
-         Show uptime information ends with an unnecessary space.
 
-         Now NEEDCOMMA is better defined.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429387 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I11b360504a0703309ff51772ff8f672287f3c5a1
+2014-12-11 11:21 +0000 [2288f910ea]  Kinsey Moore <kmoore@digium.com>
 
-2015-06-03 17:41 +0000 [88212ccb7f]  Mark Michelson <mmichelson@digium.com>
+       * Recorded merge of revisions 429378 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-       * res_pjsip: Prevent access of NULL channels.
+         ........
+         Fix incorrect patch applied in r429354
 
-         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.
+         The patch that was applied was another pending patch. This swaps them out.
 
-         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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429379 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         res_pjsip_session.c: When handling a 302 response, we need to stop the
-         redirecting attempt if there is no channel on the session.
+2014-12-11 07:56 +0000 [b7f7d045ac]  Kinsey Moore <kmoore@digium.com>
 
-         ASTERISK-25148 #close
-         reported by Mark Michelson
+       * Recorded merge of revisions 429354 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9
+         ........
+         Stasis: Update unittest for channel snapshots
 
-2015-06-01 11:45 +0000 [f5d5aa67dc]  Kevin Harwell <kharwell@digium.com>
+         This adjusts the unit test for channel snapshots to take the new
+         language key into account.
 
-       * 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.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429355 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2014-12-11 07:49 +0000 [50f6517296]  Kinsey Moore <kmoore@digium.com>
 
-         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.
+       * Stasis: Update unittest for channel snapshots
 
-         ASTERISK-24934 #close
-         Reported by: warren smith
+         This adjusts the unit test for channel snapshots to take the new
+         language key into account.
 
-         Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0
 
-2015-06-03 13:17 +0000 [5dc9fb4198]  gtjoseph <george.joseph@fairview5.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429352 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip/location: Fix ref leak in contact_apply_handler
+2014-12-10 09:42 +0000 [d4a05879d6]  Kevin Harwell <kharwell@digium.com>
 
-         contact_apply_handler calls ast_res_pjsip_find_or_create_contact_status
-         to force the creation of a contact_status object whenever a new
-         contact is added but it didn't unref the returned object.
+       * ARI/AMI: Include language in standard channel snapshot output
 
-         Added an ao2_cleanup(status) to plug the leak.
+         Adding information about including "language" in the standard channel snapshot
+         output to the CHANGES file. Note the actual source changes have already been
+         previously committed.
 
-         ASTERISK-25141
+         ASTERISK-24553
+         Reported by: Matt Jordan
+         ........
 
-         Change-Id: Icc1401cae142855a1abc86ab5179dfb3ee861c40
-         Reported-by: Corey Farrell
+         Merged revisions 429325 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-2015-06-02 15:07 +0000 [d908272b7e]  David M. Lee <dlee@respoke.io>
 
-       * Fixes for OS X
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429326 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-          * Add some type casting so tv_usec can really be a long, instead of
-            some strange platform specific type.
+2014-12-10 07:34 +0000 [fb768ec33a]  Joshua Colp <jcolp@digium.com>
 
-          * Add some .dylib style files to .gitignore.
+       * res_http_websocket: Fix crash due to double freeing memory when receiving a payload length of zero.
 
-          * Switch from using -Xlinker to -Wl,. For [reasons unknown][], newer
-            versions of GCC, when compiling the Homebrew formula for Asterisk,
-            are not properly passing the -Xlinker options to the linker. Given
-            that -Wl, does exactly the [same thing][], and does it properly, this
-            patch changes the -Xlinker options to use -Wl, instead.
+         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.
 
-          [reasons unknown]: http://bit.ly/1SUbEYx
-          [same thing]: https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
+         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.
 
-         Change-Id: Id5e6b3c6cc86282ea5fca630dc3991137c5bf4dd
+         ASTERISK-24472 #close
+         Reported by: Badalian Vyacheslav
 
-2015-05-30 20:22 +0000 [9e7827e3ac]  Corey Farrell <git@cfware.com>
+         Review: https://reviewboard.asterisk.org/r/4220/
+         Review: https://reviewboard.asterisk.org/r/4219/
+         ........
 
-       * pjsip_configuration: Fix leak in persistent_endpoint_update_state.
+         Merged revisions 429270 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ........
 
-         The loop to find the first available contact of an endpoint grabbed
-         contact from the iterator, then checked for offline state.  This
-         caused the first contact after the state was found to leak a reference.
+         Merged revisions 429272 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         ASTERISK-25141
 
-         Change-Id: Id0f1d87410fc63742db0594eb4b18b36e99aec08
-2015-05-31 11:33 +0000 [888bb49618]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * Fix buffer overflow in slin sample frames generation.
+2014-12-10 07:14 +0000 [a220a08777]  Kinsey Moore <kmoore@digium.com>
 
-         The length of frames retured by sample functions was twice as large as
-         real, what caused global buffer overflow caught by AddressSanitizer.
+       * PJSIP: Fix assert on initial mass qualify
 
-         ASTERISK-24717 #close
-         Reported by: Badalian Vyacheslav
+         This fixes the MWI test regressions caused by r429127 and ensures that
+         contacts have non-zero qualify_frequency before attempting scheduling.
+         ........
 
-         Change-Id: Iec2fe682aef13e556684912f906bedf7c18229c6
+         Merged revisions 429245 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-2015-05-29 16:19 +0000 [857166b5e5]  gtjoseph <george.joseph@fairview5.com>
 
-       * res_pjsip/location:  Fix memory leak in permanent_uri_handler
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429246 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         When permanent_uri_handler was creating the contact status
-         object for each contact, it wasn't unreffing it at the
-         end of the loop.
+2014-12-09 14:46 +0000 [22a91bf698]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         ASTERISK-25141 #close
-         Reported-by: Corey Farrell
+       * core: avoid possible asterisk -r crash from long id
 
-         Change-Id: I7bb127994677bb3d459f87952f8425c9b9967b12
+         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.
 
-2015-05-29 14:52 +0000 [1558a89129]  gtjoseph <george.joseph@fairview5.com>
+         Review: https://reviewboard.asterisk.org/r/4182/
 
-       * Revert "endpoint/stasis: Eliminate duplicate events on endpoint status change"
 
-         This reverts commit 35c699086ae2fd81b2473307ccb2ae79ad32375a.
 
-         Change-Id: Ia98c2b4820cf579a5b9bb75e9e05d7a233205fb7
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-05-27 13:22 +0000 [35c699086a]  gtjoseph <george.joseph@fairview5.com>
+2014-12-09 14:19 +0000 [2f21f85c37]  Kevin Harwell <kharwell@digium.com>
 
-       * endpoint/stasis: Eliminate duplicate events on endpoint status change
+       * ARI/AMI: Include language in standard channel snapshot output
 
-         When an endpoint was created, it's messages were being forwarded to
-         both the tech endpoint topic and the all endpoints topic.  Since
-         the tech topic was also forwarded to all, this was resulting in
-         duplicate messages whenever an endpoint published.  This patch
-         causes the endpoint to only forward to the tech topic and lets
-         the tech topic forward to all.
+         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.
 
-         To accomplish this, the existing stasis_cp_single_create function
-         (which both creates and forwards) was cloned and split into 2
-         functions, one that creates the topic and one that sets up the
-         forwarding.  This allows endpoint_internal_create to create
-         the topic from the endpoint_all cache without forwarding it there,
-         then allows it to do the forward to the tech's topic.
+         ASTERISK-24553 #close
+         Reported by: Matt Jordan
+         Review: https://reviewboard.asterisk.org/r/4245/
+         ........
 
-         ASTERISK-25137 #close
-         Reported-by: Vitezslav Novy
-         ASTERISK-25116 #close
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+         Merged revisions 429204 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Change-Id: I26d7d4926a0861748fd3bdffe316b75b549a801c
 
-2015-05-26 13:56 +0000 [fe21f2e52f]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429206 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_pjsip_session: Fix in-dialog authentication.
+2014-12-09 14:02 +0000 [525c823b4b]  Kevin Harwell <kharwell@digium.com>
 
-         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.
+       * Direct Media calls within private network sometimes get one way audio
 
-         * 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.
+         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.
 
-         * 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.
+         ASTERISK-24563
+         Reported by: Steve Pitts
+         Review: https://reviewboard.asterisk.org/r/4216/
+         ........
 
-         * Created outbound_invite_auth() to only handle initial outbound INVITEs.
-         Re-INVITEs cannot be handled here.  The re-INVITE transaction is still in
-         progress and the PJSIP library cannot handle the overlapping INVITE
-         transactions.  Other method types should not be handled here as this code
-         only works on outgoing calls and we need to handle incoming and outgoing
-         calls.
+         Merged revisions 429195 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         ASTERISK-25131 #close
-         Reported by: Richard Mudgett
 
-         Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429196 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-05-21 17:21 +0000 [262d590819]  gtjoseph <george.joseph@fairview5.com>
+2014-12-09 12:35 +0000 [664067e318]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip: Add AMI events for chan_pjsip contact lifecycle changes
+       * res_pjsip_outbound_publish: stack overflow when using non-default sorcery wizard
 
-         Add a new ContactStatus AMI event.
-         Publish the following status/state changes:
-         Created
-         Removed
-         Reachable
-         Unreachable
-         Unknown
+         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.
 
-         Contact URI, new status/state, aor and endpoint names, and the
-         last qualify rtt result are included in the event.
+         ASTERISK-24514 #close
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4178/
 
-         ASTERISK-25114 #close
 
-         Change-Id: Id25aae5f7122facba183273efb3e8f36c20fb61e
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429175 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-05-26 07:44 +0000 [5a42397018]  Joshua Colp <jcolp@digium.com>
+2014-12-09 09:44 +0000 [74b032bb03]  Joshua Colp <jcolp@digium.com>
 
-       * sorcery: Fix cache creation callback.
+       * ari: Add support for specifying an originator channel when originating.
 
-         The cache creation callback function expects to receive a sorcery_details
-         structure and not just a standalone object.
+         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.
 
-         Change-Id: I3e4a5a137cb25292eb52d7a14cbb6daa09213450
+         ASTERISK-24552 #close
+         Reported by: Matt Jordan
 
-2015-05-24 13:47 +0000 [97a6ce1717]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         Review: https://reviewboard.asterisk.org/r/4243/
 
-       * Astobj2: Correctly treat hash_fn returning INT_MIN
 
-         The code in astobj2_hash.c wrongly assumed that abs(int) is always > 0.
-         However, abs(INT_MIN) = INT_MIN and is still negative, as well as
-         abs(INT_MIN) % num_buckets, and as a result this led to a crash.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         One way to trigger the bug is using host=::80 or 0.0.0.128 in peer
-         configuration section in chan_sip or chan_iax.
+2014-12-09 08:00 +0000 [64581d894d]  Kinsey Moore <kmoore@digium.com>
 
-         This patch takes the remainder before applying abs, so that bucket
-         number is always in range.
+       * PJSIP: Stagger outbound qualifies
 
-         ASTERISK-25100 #close
-         Reported by: Mark Petersen
+         This change staggers initiation of outbound qualify (OPTIONS) attempts
+         to reduce instantaneous server load and prevent network congestion.
 
-         Change-Id: Id6981400ad526f47e10bcf7b847b62bd2785e899
-2015-05-23 04:36 +0000 [554bd1e39c]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         Review: https://reviewboard.asterisk.org/r/4246/
+         ASTERISK-24342 #close
+         Reported by: Richard Mudgett
+         ........
 
-       * res_pjsip_transport_websocket: Fix crash on receiving large SIP packets
+         Merged revisions 429127 from http://svn.asterisk.org/svn/asterisk/branches/12
 
-         Incoming SIP packets larger than PJSIP_MAX_PKT_LEN were themselves
-         truncated before passing to pjsip_tpmgr_receive_packet, but the length
-         was passed unaltered, thus causing memory corruption and segfault.
 
-         ASTERISK-25122 #close
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@429128 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Change-Id: I608a6b6b7f229eacc33a0a7d771d18e27e5b08ab
+2016-04-27 16:18 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2015-05-22 21:50 +0000 [0d266cbe02]  Corey Farrell <git@cfware.com>
+       * asterisk certified/13.1-cert7 Released.
 
-       * Stasis: Fix unsafe use of stasis_unsubscribe in modules.
+2016-04-27 11:17 +0000 [ac50d4de09]  Kevin Harwell <kharwell@digium.com>
 
-         Many uses of stasis_unsubscribe in modules can be reached through unload.
-         These have been switched to stasis_unsubscribe_and_join.
+       * Release summaries: Remove previous versions
 
-         Some subscription callbacks do nothing, for these I've created a noop
-         callback function in stasis.c.  This is used by some modules that monitor
-         MWI topics in order to enable cache, since the callback does not become
-         invalid after dlclose it is safe to use stasis_unsubscribe on these, even
-         during module unload.
+2016-04-27 11:17 +0000 [ae138f07b9]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-25121 #close
+       * .version: Update for certified/13.1-cert7
 
-         Change-Id: Ifc2549fbd8eef7d703c222978e8f452e2972189c
+2016-04-27 11:17 +0000 [6887653e56]  Kevin Harwell <kharwell@digium.com>
 
-2015-05-22 12:22 +0000 [51ffed5e61]  Matt Jordan <mjordan@digium.com>
+       * .lastclean: Update for certified/13.1-cert7
 
-       * res/res_pjsip_pubsub: Note that 'dialog' is also a valid event type for RLS
+2016-04-27 11:17 +0000 [f1dd08373d]  Kevin Harwell <kharwell@digium.com>
 
-         In addition to specifying lists of 'presence' and 'message-summary',
-         users can also create lists of type 'dialog'. These should be treated in
-         the same fashion as 'presence'.
+       * realtime: Add database scripts for certified/13.1-cert7
 
-         Change-Id: I583bb69cd9f88b0b29bf09ddaddeac4e84189f6e
+2016-04-26 05:48 +0000 [5baf815293]  Joshua Colp <jcolp@digium.com>
 
-2015-05-22 12:18 +0000 [7950b65e4f]  Matt Jordan <mjordan@digium.com>
+       * app_queue: Fix crash when unloading module.
 
-       * res/res_pjsip_exten_state: Fix confusing NOTICE message
+         When unloading the app_queue module the members in each queue are
+         destroyed and as part of this they are removed from the pending
+         members container. Unfortunately a crash would occur as the container
+         was destroyed before the members were removed.
 
-         When a SUBSCRIBE request is made to a dialplan hint that doesn't exist,
-         the current NOTICE message informing users of this swaps the context and
-         extension parameters. This can cause a bit of confusion.
+         This change tweaks ordering so the container destruction occurs
+         after the members are destroyed.
 
-         Thanks to CptBurger in #asterisk for helping to point this out.
+         ASTERISK-16115
 
-         Change-Id: Ie584d1a58ae217385c87a450ca25b55ca0e36e43
+         Change-Id: I48c728668c55aee3d05b751a5d450fb57e87f44b
 
-2015-05-17 20:36 +0000 [5ac65ddfb4]  Matt Jordan <mjordan@digium.com>
+2016-04-21 14:23 +0000 [1f24863e0c]  Kevin Harwell <kharwell@digium.com>
 
-       * res/ari: Register Stasis application on WebSocket attempt
+       * app_queue: queue members can receive multiple calls
 
-         Prior to this patch, when a WebSocket connection is made, ARI would not
-         be informed of the connection until after the WebSocket layer had
-         accepted the connection. This created a brief race condition where the
-         ARI client would be notified that it was connected, a channel would be
-         sent into the Stasis dialplan application, but ARI would not yet have
-         registered the Stasis application presented in the HTTP request that
-         established the WebSocket.
+         It was possible for a queue member that is a member of at least 2 or more
+         queues to receive mulitiple calls at the same time. This happened because
+         of a race between when a member was being rung and when the device state
+         notified the other queue(s) member object of the state change.
 
-         This patch resolves this issue by doing the following:
-          * When a WebSocket attempt is made, a callback is made into the ARI
-            application layer, which verifies and registers the apps presented in
-            the HTTP request. Because we do not yet have a WebSocket, we cannot
-            have an event session for the corresponding applications. Some
-            defensive checks were thus added to make the application objects
-            tolerant to a NULL event session.
-          * When a WebSocket connection is made, the registered application is
-            updated with the newly created event session that wraps the WebSocket
-            connection.
+         This patch makes it so when a queue member is being rung it gets added to
+         a global pool of queue members. If that same member is tried again, e.g.
+         from another queue, and it is found to already exist in the pending member
+         container then it will not ring that member.
 
-         ASTERISK-24988 #close
-         Reported by: Joshua Colp
+         ASTERISK-16115 #close
 
-         Change-Id: Ia5dc60dc2b6bee76cd5aff0f69dd53b36e83f636
+         Change-Id: I546dd474776d158c2b6be44205353dee5bac7e48
 
-2015-05-20 11:11 +0000 [60e2fbfe62]  gtjoseph <george.joseph@fairview5.com>
+2016-04-22 17:53 +0000 [a2249031ef]  gtjoseph <gjoseph@digium.com>
 
-       * res_pjsip: Refactor endpt_send_transaction (qualify_timeout)
+       * res_agi:  Prevent run_agi from eating frames it shouldn't
 
-         This patch refactors the transaction timeout processing to eliminate
-         calling the lower level public pjsip functions and reverts to calling
-         pjsip_endpt_send_request again.  This is the result of me noticing
-         a possible incompatibility with pjproject-2.4 which was causing
-         contact status flapping.
+         The run_agi function is eating control frames when it shouldn't be. This is
+         causing issues when an AGI is run from CONNECTED_LINE_SEND_SUB in a blond
+         transfer.
 
-         The original version of this feature used the lower level calls to
-         get access to the tsx structure in order to cancel the transaction
-         when our own timer expires. Since we no longer have that access,
-         if our own timer expires before the pjsip timer, we call the callbacks
-         and just let the pjsip transaction take it's own course.  When the
-         transaction ends, it discovers the callbacks have already been run
-         and just cleans itself up.
+         Alice calls Bob. Bob attended transfers to Charlie but hangs up before Charlie
+         answers.
 
-         A few messages in pjsip_configuration were also added/cleaned up.
+         Alice gets the COLP UPDATE indicating Charlie but Charlie never gets an UPDATE
+         and is left thinking he's connected to Bob.
 
-         ASTERISK-25105 #close
+         In this case, when CONNECTED_LINE_SEND_SUB runs on Alice's channel and it calls
+         an AGI, the extra eaten frames prevent CONNECTED_LINE_SEND_SUB from running on
+         Charlie's channel.
 
-         Change-Id: I0810f3999cf63f3a72607bbecac36af0a957f33e
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
-2015-05-20 00:45 +0000 [42476e6633]  demon-ru <serov.d.p@gmail.com>
+         The fix was to accumulate deferrable frames in the "forever" loop instead of
+         dropping them, and re-queue them just before running the actual agi command
+         or exiting.
 
-       * res_pjsip_outbound_registration: Check request URI for line.
+         ASTERISK-25951 #close
 
-         When an inbound call is received the To header is checked
-         for the "line" option. Some remote servers will place this
-         in the request URI instead. This adds an additional check for
-         the option in the request URI.
+         Change-Id: I0f4bbfd72fc1126c2aaba41da3233a33d0433645
 
-         ASTERISK-25072 #close
-         Reported by: Dmitriy Serov
+2016-04-15 14:36 +0000 [c2158c01c2]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Id4e44debbb80baad623b914a88574371575353c8
+       * res_stasis: Handle re-enter stasis bridge with swap channel.
 
-2015-05-21 17:51 +0000 [e7edb59db6]  Corey Farrell <git@cfware.com>
+         We lose the fact that there is a swap channel if there is one.  We
+         currently wind up rejoining the stasis bridge as a normal join after the
+         swap channel has already been kicked from the bridge.
 
-       * res_mwi_external_ami: Use module version of AMI registration.
+         This patch preserves the swap channel so the AMI/ARI events can note that
+         the channel joining the bridge is swapping with another channel.  Another
+         benefit to swaqpping in one operation is if there are any channels that
+         get lonely (MOH, bridge playback, and bridge record channels).  The lonely
+         channels won't leave before the joining channel has a chance to come back
+         in under stasis if the swap channel is the only reason the lonely channels
+         are staying in the bridge.
 
-         Use ast_manager_register_xml for res_mwi_external_ami manager
-         actions.  This ensures the module is held open while any of
-         the actions are being run.
+         ASTERISK-25947 #close
+         Reported by: Richard Mudgett
 
-         ASTERISK-25117 #close
-         Reported by: Corey Farrell
+         ASTERISK-24649
+         Reported by: John Bigelow
+
+         ASTERISK-24782
+         Reported by: John Bigelow
+
+         Change-Id: If37ea508831d1fed6dbfac2f191c638fc0a850ee
 
-         Change-Id: Iececfdc2da498b2c32b9e09042f5f12292007ac7
-2015-05-21 19:59 +0000  Asterisk Development Team <asteriskteam@digium.com>
+2016-04-19 16:58 +0000 [4bdc54f66c]  Richard Mudgett <rmudgett@digium.com>
 
-       * asterisk 13.4.0-rc1 Released.
+       * bridge: Hold off more than one imparting channel at a time.
 
-2015-05-21 14:56 +0000 [3fb2b375fe]  Matt Jordan <mjordan@digium.com>
+         An earlier patch blocked the ast_bridge_impart() call until the channel
+         either entered the target bridge or it failed.  Unfortuantely, if the
+         target bridge is stasis and the imprted channel is not a stasis channel,
+         stasis bounces the channel out of the bridge to come back into the bridge
+         as a proper stasis channel.  When the channel is bounced out, that
+         released the block on ast_bridge_impart() to continue.  If the impart was
+         a result of a transfer, then it became a race to see if the swap channel
+         would get hung up before the imparted channel could come back into the
+         stasis bridge.  If the imparted channel won then everything is fine.  If
+         the swap channel gets hung up first then the transfer will fail because
+         the swap channel is leaving the bridge.
 
-       * Release summaries: Remove previous versions
+         * Allow a chain of ast_bridge_impart()'s to happen before any are
+         unblocked to prevent the race condition described above.  When the channel
+         finally joins the bridge or completely fails to join the bridge then the
+         ast_bridge_impart() instances are unblocked.
 
-2015-05-21 14:56 +0000 [9d9ae03842]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-25947
+         Reported by: Richard Mudgett
 
-       * .version: Update for 13.4.0-rc1
+         ASTERISK-24649
+         Reported by: John Bigelow
 
-2015-05-21 14:56 +0000 [53a39083e5]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-24782
+         Reported by: John Bigelow
 
-       * .lastclean: Update for 13.4.0-rc1
+         Change-Id: I8fef369171f295f580024ab4971e95c799d0dde1
 
-2015-05-21 14:56 +0000 [7af8ef9346]  Matt Jordan <mjordan@digium.com>
+2015-07-08 14:56 +0000 [1fa5565fc4]  Kevin Harwell <kharwell@digium.com>
 
-       * realtime: Add database scripts for 13.4.0-rc1
+       * bridge.c: Fixed race condition during attended transfer
 
-2015-05-21 14:52 +0000 [20982c68d4]  Matt Jordan <mjordan@digium.com>
+         During an attended transfer a thread is started that handles imparting the
+         bridge channel. From the start of the thread to when the bridge channel is
+         ready exists a gap that can potentially cause problems (for instance, the
+         channel being swapped is hung up before the replacement channel enters the
+         bridge thus stopping the transfer). This patch adds a condition that waits
+         for the impart thread to get to a point of acceptable readiness before
+         allowing the initiating thread to continue.
 
-       * Release summaries: Correct summaries for 13.4.0-rc1
+         ASTERISK-24782
+         Reported by: John Bigelow
 
-2015-05-21 13:17 +0000 [1bb62b037f]  mjordan <mjordan@lunkwill>
+         This patch is a remedial cherry-pick from v13.
 
-       * ChangeLog: Updated for 13.4.0-rc1
+         Change-Id: I08fe33a2560da924e676df55b181e46fca604577
 
-2015-05-21 13:17 +0000 [1e98a36699]  mjordan <mjordan@lunkwill>
+2015-06-22 15:11 +0000 [ac53e65cb5]  Kevin Harwell <kharwell@digium.com>
 
-       * Release summaries: Add summaries for 13.4.0-rc1
+       * bridge.c: Hangup attended transfer target if bridged
 
-2015-05-21 13:15 +0000 [5c12e5ba72]  mjordan <mjordan@lunkwill>
+         After completing an attended transfer the transfer target channel was not being
+         hung up after leaving the bridge. Added an explicit softhangup to hangup said
+         channel, but only if it was previously bridged.
 
-       * .version: Update for 13.4.0-rc1
+         ASTERISK-24782 #close
+         Reported by: John Bigelow
 
-2015-05-21 13:15 +0000 [69292a9f11]  mjordan <mjordan@lunkwill>
+         This patch is a remedial cherry-pick from v13.
 
-       * .lastclean: Update for 13.4.0-rc1
+         Change-Id: Idde9543d56842369384a5e8c00d72a22bbc39ada
 
-2015-05-21 13:15 +0000 [628680803a]  mjordan <mjordan@lunkwill>
+2015-04-07 11:40 +0000 [c8e21c4eb9]  Kevin Harwell <kharwell@digium.com>
 
-       * realtime: Add database scripts for 13.4.0-rc1
+       * bridge.c: Hangup attended transfer target after it has been swapped out
 
-2015-05-21 13:05 +0000 [9d8a462356]  Matt Jordan <mjordan@digium.com>
+         After completing an attended transfer the transfer target channel (the one that
+         gets swapped out) was not being hung up after leaving the bridge. This resulted
+         in a channel possibly being left around. Added an explicit softhangup for the
+         channel in question after the transfer is successfully completed in order to
+         make sure the channel is hung up.
 
-       * ARI: Update version to 1.7.0
+         ASTERISK-24782 #close
+         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4575/
 
-         This patch updates the version of ARI to 1.7.0 to reflect the backwards
-         compatible changes that will be introduced in 13.4.0.
+         This patch is a remedial cherry-pick from v13.
 
-         Change-Id: I6c36e6144da426412f25828a868e4df916bff60a
+         Change-Id: I26cc0c207acf74ade93e6567febf7b9776452058
 
-2015-05-21 07:22 +0000 [620054c527]  Matt Jordan <mjordan@digium.com>
+2015-01-29 17:02 +0000 [b81052d194]  Scott Griepentrog <sgriepentrog@digium.com>
 
-       * Merge "audiohook.c: Difference in read/write rates caused continuous buffer resets" into 13
-2015-05-21 07:21 +0000 [f5e195b44e]  Matt Jordan <mjordan@digium.com>
+       * stasis transfer: fix stasis bridge push race part two
 
-       * Merge "Logger: Reset defaults before processing config." into 13
-2015-05-21 07:20 +0000 [e8a4e01c32]  Matt Jordan <mjordan@digium.com>
+         When swapping a Local channel in place of one already
+         in a bridge (to complete a bridge attended transfer),
+         the channel that was swapped out can actually be hung
+         up before the stasis bridge push callback executes on
+         the independant transfer thread.  This results in the
+         stasis app loop dropping out and removing the control
+         that has the the app name which the local replacement
+         channel needs so it can re-enter stasis.
 
-       * Merge "res/res_http_websocket: Add a pre-session established callback" into 13
-2015-05-21 05:15 +0000 [3c98544543]  Joshua Colp <jcolp@digium.com>
+         To avoid this race condition a new push_peek callback
+         has been added, and called from the ast_bridge_impart
+         thread before it launches the independant thread that
+         will complete the transfer.  Now the stasis push_peek
+         callback can copy the stasis app name before the swap
+         channel can hang up.
 
-       * Merge "main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits" into 13
-2015-05-20 20:53 +0000 [9b6e228419]  Corey Farrell <git@cfware.com>
+         ASTERISK-24649
+         Review: https://reviewboard.asterisk.org/r/4382/
 
-       * Logger: Reset defaults before processing config.
+         This patch is a remedial cherry-pick from v13.
 
-         Reset options to default values before reloading config.  This ensures
-         that if a setting is removed or commented out of the configuration file
-         it is unset on reload.
+         Change-Id: I307c3b506af5af80ec506f73e8b78a91d79999e0
 
-         ASTERISK-25112 #close
-         Reported by: Corey Farrell
+2015-01-22 12:09 +0000 [a38d044e0a]  Scott Griepentrog <sgriepentrog@digium.com>
 
-         Change-Id: Id24bb1fb0885c2c14cf8bd6f69a0c2ee7cd6c5bd
+       * stasis transfer: fix a race condition on stasis bridge push
 
-2015-05-20 19:05 +0000 [7fcf0a97b8]  George Joseph <george.joseph@fairview5.com>
+         After a bridge transfer completes where a local replacement
+         channel is used, a stasis transfer message with the details
+         of the transfer is sent.  This is processed by stasis which
+         then sets the stasis app name and replaced channel snapshot
+         on the replacement channel.
 
-       * app_playback: Suppress warnings on playback if channel hung up
+         However, since a separate thread was already started to run
+         stasis on the new replacement channel, a race was on to see
+         if the message processing would be completed before the app
+         name was needed, otherwise the channel would be hung up.
 
-         If a channel hangs up while an audio file is playing, there's
-         no need to clutter up the logs with a warning so suppress it
-         if ast_check_hangup returns true.
+         This change moves the calls used to set the stasis app name
+         and the replace snapshot to the bridge_stasis_push function
+         callback from the bridge transfer logic, allowing the steps
+         to be completed earlier and more deterministically, and the
+         race elimianted.
 
-         Also, change warning to debug/2 in file.c if writing a frame
-         fails.  Same reasoning.
+         NOTE: the swap channel parameter to bridge_stasis_push (and
+         thus all bridge push callbacks) must always be present when
+         performing a swap with another channel.
 
-         Change-Id: I2e66191af3c5b6e951c98e8f1c3fe3cf2cf7ed89
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+         ASTERISK-24649 #close
+         Reported by: John Bigelow
+         Review: https://reviewboard.asterisk.org/r/4341/
 
-2015-05-14 15:21 +0000 [b1e8c0b9eb]  Kevin Harwell <kharwell@digium.com>
+         This patch is a remedial cherry-pick from v13.
 
-       * audiohook.c: Difference in read/write rates caused continuous buffer resets
+         Change-Id: I35c98989786f74cdd7940677002a1a88d34bd2dd
 
-         Currently, everytime a sample rate change occurs (on read or write) the
-         associated factory buffers are reset. If the requested sample rate on a
-         read differed from that of a write then the buffers are continually reset
-         on every read and write. This has the side effect of emptying the buffer,
-         thus there being no data to read and then write to a file in the case of
-         call recording.
+2015-01-22 13:24 +0000 [bc0a8c7bac]  Richard Mudgett <rmudgett@digium.com>
 
-         This patch fixes it so that an audiohook_list's rate always maintains the
-         maximum sample rate among hooks and formats. Audiohook sample rates are
-         only overwritten by this value when slin native compatibility is turned on.
-         Also, the audiohook sample rate can only overwrite the list's sample rate
-         when its rate is greater than that of the list or if compatibility is
-         turned off. This keeps the rate from constantly switching/resetting.
+       * Bridge core: Pass a ref with the swap channel when joining a bridge.
 
-         ASTERISK-24944 #close
-         Reported by: Ronald Raikes
+         When code imparts a channel into a bridge to swap with another channel, a
+         ref needs to be held on the swap channel to ensure that it cannot
+         dissapear before finding it in the bridge.
 
-         Change-Id: Idab4dfef068a7922c09cc631dda27bc920a6c76f
+         * The ast_bridge_join() swap channel parameter now always steals a ref for
+         the swap channel.  This is the only change to the bridge framework's
+         public API semantics.
 
-2015-05-20 15:22 +0000 [4a450f863b]  Matt Jordan <mjordan@digium.com>
+         * bridge_channel_internal_join() now requires the bridge_channel->swap
+         channel to pass in a ref.
 
-       * Merge "Fix potential crash after unload of func_periodic_hook or test_message." into 13
-2015-05-19 13:01 +0000 [17d6ede337]  Corey Edwards <tensai@zmonkey.org>
+         ASTERISK-24649
+         Reported by: John Bigelow
 
-       * main/sdp_srtp.c: allow SDP crypto tag to be up to 9 digits
+         Review: https://reviewboard.asterisk.org/r/4354/
 
-         ASTERISK-24887 #close
-         Reported by: Makoto Dei
-         Tested by: tensai
+         This patch is a remedial cherry-pick from v13.
 
-         Change-Id: I6a96f572adb17f76b3acafe503a01c48eb5dd9bf
+         Change-Id: I73fdf13a3a1042566281c7d06d6e83e2ef87c120
 
-2015-05-13 09:55 +0000 [31cc24aad6]  Matt Jordan <mjordan@digium.com>
+2016-04-19 17:52 +0000 [1feead5760]  gtjoseph <george.joseph@fairview5.com>
 
-       * res/res_http_websocket: Add a pre-session established callback
+       * res_pjsip_callerid:  Clear out display name if id->name is not valid
 
-         This patch updates http_websocket and its corresponding implementation
-         with a pre-session established callback. This callback allows for
-         WebSocket server consumers to be notified when a WebSocket connection is
-         attempted, but before we accept it. Consumers can choose to reject the
-         connection, if their application specific logic allows for it.
+         When create_new_id_hdr creates a new RPID or PAI header, it starts by cloning
+         the From header, then it overwrites the display name and uri from the channel's
+         connected.id.  If the connected.id.name wasn't valid, create_new_id_hdr was
+         leaving the display name from the From header in the new RPID or PAI header.
+         On an attended transfer where the originator had a caller id number set but not
+         a display name, the re-INVITE to the final transferee had the number of the
+         originator but the display name of the transferer.
 
-         As a result, this patch pulls out the previously private
-         websocket_protocol struct and makes it public, as
-         ast_websocket_protocol. In order to preserve backwards compatibility
-         with existing modules, the existing APIs were left as-is, and new APIs
-         were added for the creation of the ast_websocket_protocol as well as for
-         adding a sub-protocol to a WebSocket server.
+         Added a check to clear out the display name in the new header if
+         connected.id.name was invalid.
 
-         In particular, the following new API calls were added:
-         * ast_websocket_add_protocol2 - add a protocol to the core WebSocket
-           server
-         * ast_websocket_server_add_protocol2 - add a protocol to a specific
-           WebSocket server
-         * ast_websocket_sub_protocol_alloc - allocate a sub-protocol object.
-           Consumers can populate this with whatever callbacks they wish to
-           support, then add it to the core server or a specified server.
+         ASTERISK-25942 #close
 
-         ASTERISK-24988
-         Reported by: Joshua Colp
+         Change-Id: I60b4bf7a7ece9b7425eba74151c0b4969cd2738b
 
-         Change-Id: Ibe0bbb30c17eec6b578071bdbd197c911b620ab2
+2016-04-20 10:48 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-2015-05-14 22:05 +0000 [f9114179e6]  snuffy <snuffy22@gmail.com>
+       * asterisk certified/13.1-cert6 Released.
 
-       * chan_pjsip: Fix crash during off-nominal when no endpoint specified.
+2016-04-20 05:48 +0000 [5700190dba]  Joshua Colp <jcolp@digium.com>
 
-         Add missing return -1 when no endpoint name is specified.
+       * Release summaries: Remove previous versions
 
-         ASTERISK-25086 #close
-         Reported by: snuffy
+2016-04-20 05:48 +0000 [21dfb6be03]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I9de76c2935a1f4e3f0cffe97a670106f5605e89e
-2015-05-14 18:01 +0000 [dd78ab42e4]  George Joseph <george.joseph@fairview5.com>
+       * .version: Update for certified/13.1-cert6
 
-       * res_pjsip_config_wizard/config: Fix template processing
+2016-04-20 05:48 +0000 [58cff8e219]  Joshua Colp <jcolp@digium.com>
 
-         The config wizard was always pulling the first occurrence of
-         a variable from an ast_variable list but this gets the template
-         value from the list instead of any overridden value.  This patch
-         creates ast_variable_find_last_in_list() in config.c and updates
-         res_pjsip_config_wizard to use it instead of
-         ast_variable_find_in_list.  Now the overridden values, where they
-         exist, are used instead of template variables.
+       * .lastclean: Update for certified/13.1-cert6
 
-         Updated test_config to test the new API.
+2016-04-20 05:48 +0000 [a98618d0ed]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-25089 #close
+       * realtime: Add database scripts for certified/13.1-cert6
 
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
-         Change-Id: Ifa7ddefc956a463923ee6839dd1ebe021c299de4
+2016-04-18 12:12 +0000 [5d390bc4c6]  Mark Michelson <mmichelson@digium.com>
 
-2015-05-15 01:54 +0000 [091b436007]  snuffy <snuffy22@gmail.com>
+       * PJSIP: Remove PJSIP parsing functions from uri length validation.
 
-       * cdr: Fix 'core show channel' CDR variable truncation.
+         The PJSIP parsing functions provide a nice concise way to check the
+         length of a hostname in a SIP URI. The problem is that in order to use
+         those parsing functions, it's required to use them from a thread that
+         has registered with PJLib.
 
-         When the new Bridging API was implemented, the workspace variable
-         changed to a malloc'd string, causing sizeof() to always be 8 (char).
+         On startup, when parsing AOR configuration, the permanent URI handler
+         may not be run from a PJLib-registered thread. Specifically, this could
+         happen when Asterisk was started in daemon mode rather than
+         console-mode. If PJProject were compiled with assertions enabled, then
+         this would cause Asterisk to crash on startup.
 
-         Revert back to stored on stack string for workspace.
+         The solution presented here is to do our own parsing of the contact URI
+         in order to ensure that the hostname in the URI is not too long. The
+         parsing does not attempt to perform a full SIP URI parse/validation,
+         since the hostname in the URI is what is important.
 
-         ASTERISK-25090 #close
+         ASTERISK-25928 #close
+         Reported by Joshua Colp
 
-         Change-Id: I51e610ae87371df771ce7693a955510efb90f8f7
-2015-05-14 15:20 +0000 [8697a49ef9]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ic3d6c20ff3502507c17244a8b7e2ca761dc7fb60
 
-       * Merge "sorcery: Add API to insert/remove a wizard to/from an object type's list" into 13
-2015-05-14 15:19 +0000 [aea349a87e]  Joshua Colp <jcolp@digium.com>
+2016-04-18 17:00 +0000 [204861b305]  Mark Michelson <mmichelson@digium.com>
 
-       * Merge "Message.c: Clear message channel frames on cleanup" into 13
-2015-05-14 00:06 +0000 [6b7282ca40]  Corey Farrell <git@cfware.com>
+       * res_pjsip_registrar: Fix bad memory-ness with user_agent.
 
-       * Fix potential crash after unload of func_periodic_hook or test_message.
+         Recent changes to the PJSIP registrar resulted in tests failing due to
+         missing AOR_CONTACT_ADDED test events. The reason for this was that the
+         user_agent string had junk values in it, resulting in being unable to
+         generate the event.
 
-         These modules save a pointer to the context they create on load, and
-         use that pointer to destroy the context at unload.  It is not safe
-         to save this pointer, it is replaced during load of pbx_config,
-         pbx_lua or pbx_ael.
+         I'm going to be honest here, I have no idea why this was happening. Here
+         are the steps needed for the user_agent variable to get messed up:
+         * REGISTER is received
+         * First contact in the REGISTER results in a contact being removed
+         * Second contact in the REGISTER results in a contact being added
+         * The contact, AOR, expiration, and user agent all have to be passed as
+           format parameters to the creation of a string. Any subset of those
+           parameters would not be enough to cause the problem.
 
-         This change causes the modules to pass NULL to ast_context_destroy,
-         a safer way to perform the unregistration since it does not use
-         a pointer that could become invalid.
+         Looking into what was happening, the thing that struck me as odd was
+         that the user_agent variable was meant to be set to the value of the
+         User-Agent SIP header in the incoming REGISTER. However, when removing a
+         contact, the user_agent variable would be set (via ast_strdupa inside a
+         loop) to the stored contact's user_agent. This means that the
+         user_agent's value would be incorrect when attempting to process further
+         contacts in the incoming REGISTER.
 
-         ASTERISK-25085 #close
-         Reported by: Corey Farrell
+         The fix here is to use a different variable for the stored user agent
+         when removing a contact. Correcting the behavior to be correct also
+         means the memory usage is less weird, and the issue no longer occurs.
 
-         Change-Id: I6a00ec8e38046058f97dc703e1adcde9bf517835
-2015-05-14 05:02 +0000 [8f8d54a18e]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25929 #close
+         Reported by Joshua Colp
 
-       * Merge "main/manager.c: Bugfix sort action_manager by alphabetically" into 13
-2015-05-13 15:41 +0000 [02c5130589]  Jonathan Rose <jrose@digium.com>
+         Change-Id: I7cd24c86a38dec69ebcc94150614bc25f46b8c08
 
-       * Message.c: Clear message channel frames on cleanup
+2016-04-18 13:41 +0000 [08b8a5eea9]  Joshua Colp <jcolp@digium.com>
 
-         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.
+       * res_pjsip_transport_management: Allow unload to occur.
 
-         ASTERISK-25083 #close
-         Reported by: Jonathan Rose
+         At shutdown it is possible for modules to be unloaded that wouldn't
+         normally be unloaded. This allows the environment to be cleaned up.
 
-         Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f
+         The res_pjsip_transport_management module did not have the unload
+         logic in it to clean itself up causing the res_pjsip module to not
+         get unloaded. As a result the res_pjsip monitor thread kept going
+         processing traffic and timers when it shouldn't.
 
-2015-05-13 15:44 +0000 [586da882bc]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ic8cadee131e3b2c436a81d3ae8bb5775999ae00a
 
-       * Merge "app_voicemail: fix moving when old messages full" into 13
-2015-05-12 17:45 +0000 [d49d64b79c]  Jonathan Rose <jrose@digium.com>
+2016-04-14 20:22 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-       * app_voicemail: fix moving when old messages full
+       * asterisk certified/13.1-cert5 Released.
 
-         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.
+2016-04-14 15:22 +0000 [9edfb2c1b8]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-25082 #close
-         Reported by: Jonathan Rose
-         Review: https://gerrit.asterisk.org/#/c/448/
+       * Release summaries: Remove previous versions
 
-         Change-Id: I2be440a09f42e2d06d50975c40d1ad7f836ecb3f
-2015-05-13 14:20 +0000 [51478575e4]  Joshua Colp <jcolp@digium.com>
+2016-04-14 15:22 +0000 [ec42f1d5e6]  Kevin Harwell <kharwell@digium.com>
 
-       * Merge "General: Fix recent menuselect-related cross compile regression" into 13
-2015-05-13 12:26 +0000 [5fcaf727cc]  Joshua Colp <jcolp@digium.com>
+       * .version: Update for certified/13.1-cert5
 
-       * Merge "res_config_mysql: Fix broken column type checking" into 13
-2015-05-13 12:24 +0000 [6a12b0634b]  Joshua Colp <jcolp@digium.com>
+2016-04-14 15:22 +0000 [5fca21d105]  Kevin Harwell <kharwell@digium.com>
 
-       * Merge "chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision." into 13
-2015-05-04 20:11 +0000 [9b13536fed]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+       * .lastclean: Update for certified/13.1-cert5
 
-       * main/manager.c: Bugfix sort action_manager by alphabetically
+2016-04-14 15:22 +0000 [445e8b9dfc]  Kevin Harwell <kharwell@digium.com>
 
-         Fix the alphabetic order added on ast_manager_register_struct. The order
-         for struct manager_action added is not working, this change fixes the
-         problem.
+       * realtime: Add database scripts for certified/13.1-cert5
 
-         Change-Id: I149da0cd06c3c4445d7516cc303358e9f26f8b4b
+2016-04-14 13:49 +0000 [b66c7367ec]  Mark Michelson <mmichelson@digium.com>
 
-2015-05-08 18:01 +0000 [e67e8d5c7f]  Alexandre Fournier <alexandre.fournier@kiplink.fr>
+       * transport management: Register thread with PJProject.
 
-       * res_config_mysql: Fix broken column type checking
+         The scheduler thread that kills idle TCP connections was not registering
+         with PJProject properly and causing assertions if PJProject was built in
+         debug mode.
 
-         MySQL configuration engine contains a bug in require_mysql(). This
-         function is used for column type checking in tables. This bug only
-         affects DATETIME, DATE and FLOAT types.
+         This change registers the thread with PJProject the first time that the
+         scheduler callback executes.
 
-         It came from mixing the first condition (switch-case-like
-         if/then/else), to check the expected column type, with the second
-         condition, to check the actual column type against the expected column
-         type. Both conditions must be checked separately in order to avoid the
-         execution of the wrong block.
+         AST-2016-005
 
-         ASTERISK-18252 #comment This patch might fix the issue
-         Reported by: Gareth Blades
+         Change-Id: I5f7a37e2c80726a99afe9dc2a4a69bdedf661283
 
-         ASTERISK-25041 #close
-         Reported by: Alexandre Fournier
-         Tested by: Alexandre Fournier
+2016-03-08 12:12 +0000 [023d2936ba]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I0b8bf7e68ab938be8e6525a249260cb648cb0bfa
+       * res_pjsip_transport_management: Kill idle TCP connections.
 
-2015-05-10 07:37 +0000 [16f602f5c2]  Yousf Ateya <y.ateya@starkbits.com>
+         "Idle" here means that someone connects to us and does not send a SIP
+         request. PJProject will not automatically time out such connections, so
+         it's up to Asterisk to do it instead.
 
-       * res_rtp_asterisk: Correction for the limit which detects that a packet is DTLS.
+         When we receive an incoming TCP connection, we will start a timer
+         (equivalent to transaction timer D) waiting to receive an incoming
+         request. If we do not receive a request in that timeframe, then we will
+         shut down the TCP connection.
 
-         First byte of DTLS packet shall be in range 20-63, not 20-64. Refer to RFC
-         https://tools.ietf.org/html/rfc5764#section-5.1.2 for correct values.
+         ASTERISK-25796 #close
+         Reported by George Joseph
 
-         Change-Id: Iae6fa0d72b37c36a27fe40686e0ae6fba3afec31
+         AST-2016-005
 
-2015-05-13 04:35 +0000 [62422712f7]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I7b0d303e5d140d0ccaf2f7af562071e3d1130ac6
 
-       * Merge "cdr_pgsql: Use PQescapeStringConn for escaping names." into 13
-2015-05-12 17:34 +0000 [c780b6e431]  Richard Mudgett <rmudgett@digium.com>
+2016-03-08 10:52 +0000 [0b1fe6b0ee]  Mark Michelson <mmichelson@digium.com>
 
-       * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.
+       * Rename res_pjsip_keepalive res_pjsip_transport_management
 
-         If an ISDN call is hungup by both sides at the same time a crash could
-         happen.
+         ASTERISK-25796
+         Reported by George Joseph
 
-         * 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.
+         AST-2016-005
 
-         ASTERISK-21893 #close
-         Reported by:  Alexandr Gordeev
+         Change-Id: Id322a05f927392293570599730050bc677d99433
 
-         Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a
+2016-04-14 07:20 +0000 [e2e8699d00]  Mark Michelson <mmichelson@digium.com>
 
-2015-05-10 02:26 +0000 [6627de830b]  Sebastian Kemper <sebastian_ml@gmx.net>
+       * AST-2016-004: Fix crash on REGISTER with long URI.
 
-       * General: Fix recent menuselect-related cross compile regression
+         Due to some ignored return values, Asterisk could crash if processing an
+         incoming REGISTER whose contact URI was above a certain length.
 
-         MAKE_MENUSELECT currently sets CC to CC, which is the compiler for the
-         target platform. But menuselect is to be run on the build system, so
-         BUILD_CC needs to be used instead - like it was in the past, before the
-         recent changes (https://reviewboard.asterisk.org/r/4370/). This is the
-         patch for ASTERISK-25074.
+         ASTERISK-25707 #close
+         Reported by George Joseph
 
-         ASTERISK-25074 #close
-         Reported by: Sebastian Kemper
-         Tested by: Sebastian Kemper
+         Patches:
+             0001-res_pjsip-Validate-that-URIs-don-t-exceed-pjproject-.patch
 
-         Change-Id: I8a2b1fc5deb6ad2b80f49baca35b1b13d468ebf8
+         AST-2016-004
 
-2015-05-05 15:32 +0000 [637c8f065e]  George Joseph <george.joseph@fairview5.com>
+         Change-Id: Ic4f5e49f1a83fef4951ffeeef8f443a7f6ac15eb
 
-       * sorcery: Add API to insert/remove a wizard to/from an object type's list
+2016-04-05 14:23 +0000 [967bb9eaf7]  Mark Michelson <mmichelson@digium.com>
 
-         Currently you can 'apply' a wizard to an object type but the wizard
-         always goes at the end of the object type's wizard list.  This patch
-         adds a new ast_sorcery_insert_wizard_mapping function that allows
-         you to insert a wizard anyplace in the list.  I.E.  You could
-         add a caching wizard to an object type and place it before all
-         wizards.
+       * res_pjsip: Handle deferred SDP hold/unhold properly.
 
-         ast_sorcery_get_wizard_mapping_count and
-         ast_sorcery_get_wizard_mapping were added to allow examination
-         of the mapping list.
+         Some SIP devices indicate hold/unhold using deferred SDP reinvites. In
+         other words, they provide no SDP in the reinvite.
 
-         ast_sorcery_remove_mapping was added to remove a mapping by name.
+         A typical transaction that starts hold might look something like this:
 
-         As part of this patch, the object type's wizard list was converted
-         from an ao2_container to an AST_VECTOR_RW.
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating sendrecv on streams.
+         * Device sends ACK with SDP indicating sendonly on streams.
 
-         A new test was added to test_sorcery for this capability.
+         At this point, PJMedia's SDP negotiator saves Asterisk's local state as
+         being recvonly.
 
-         ASTERISK-25044 #close
+         Now, when the device attempts to unhold, it again uses a deferred SDP
+         reinvite, so we end up doing the following:
 
-         Change-Id: I9d2469a9296b2698082c0989e25e6848dc403b57
+         * Device sends reinvite with no SDP
+         * Asterisk sends 200 OK with SDP indicating recvonly on streams
+         * Device sends ACK with SDP indicating sendonly on streams
 
-2015-05-12 01:31 +0000 [3cdb7950f0]  Corey Farrell <git@cfware.com>
+         The problem here is that Asterisk offered recvonly, and by RFC 3264's
+         rules, if an offer is recvonly, the answer has to be sendonly. The
+         result is that the device is not taken off hold.
 
-       * Fix processing of asterisk.conf debug=yes.
+         What is supposed to happen is that Asterisk should indicate sendrecv in
+         the 200 OK that it sends. This way, the device has the freedom to
+         indicate sendrecv if it wants the stream taken off hold, or it can
+         continue to respond with sendonly if the purpose of the reinvite was
+         something else (like a session timer refresher).
 
-         The code which reads asterisk.conf supports processing the debug
-         option with ast_true, but ast_true returns -1.  This causes debug
-         to still be off, convert to 1 so debug will be on as requested.
+         The fix here is to alter the SDP negotiator's state when we receive a
+         reinvite with no SDP. If the negotiator's state is currently in the
+         recvonly or inactive state, then we alter our local state to be
+         sendrecv. This way, we allow the device to indicate the stream state as
+         desired.
 
-         ASTERISK-25042
-         Reported by: Corey Farrell
+         ASTERISK-25854 #close
+         Reported by Robert McGilvray
 
-         Change-Id: I3c898b7d082d914b057e111b9357fde46bad9ed6
+         Change-Id: I7615737276165eef3a593038413d936247dcc6ed
 
-2015-05-01 23:43 +0000 [6553a00770]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+2016-03-28 18:10 +0000 [6739081385]  Richard Mudgett <rmudgett@digium.com>
 
-       * cdr_pgsql: Use PQescapeStringConn for escaping names.
+       * res_stasis: Fix crash on a hanging up channel.
 
-         Use function PQescapeStringConn for escaping the name
-         of the table and schema instead of doing it manually.
+         * Give the struct stasis_app_control ao2 object a ref to the channel held
+         in the object.  Now the channel will still be around if a thread needs to
+         post a stasis message instead of crash because the topic was destroyed.
 
-         Change-Id: I6709165e2d00463e9c813d24f17830ad4910b599
+         * Moved stopping any lingering silence generator out of the struct
+         stasis_app_control destructor and made it a part of exiting the Stasis
+         application.  Who knows which thread the destructor will be called under
+         so it cannot affect the channel's silence generator.  Not only was the
+         channel unprotected when the silence generator was stopped, stasis may no
+         longer even control the channel.
 
-2015-05-12 05:38 +0000 [8523a5ed09]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25882
 
-       * Merge "vector:  Add REMOVE, ADD_SORTED and RESET macros" into 13
-2015-05-09 16:58 +0000 [ea917fefaf]  George Joseph <george.joseph@fairview5.com>
+         Change-Id: I21728161b5fe638cef7976fa36a605043a7497e4
 
-       * vector:  Add REMOVE, ADD_SORTED and RESET macros
+2016-02-26 18:54 +0000 [a06d6811b6]  Richard Mudgett <rmudgett@digium.com>
 
-         Based on feedback from Corey Farrell and Y Ateya, a few new
-         macros have been added...
+       * res_pjsip_send_to_voicemail.c: Allow either quoted or not send_to_vm reason.
 
-         AST_VECTOR_REMOVE which takes a parameter to indicate if
-         order should be preserved.
+         Change-Id: Id6350b3c7d4ec8df7ec89863566645e2b0f441fd
 
-         AST_VECTOR_ADD_SORTED which adds an element to
-         a sorted vector.
+2016-02-15 12:52 +0000 [b7b193a430]  Joshua Colp <jcolp@digium.com>
 
-         AST_VECTOR_RESET which cleans all elements from the vector
-         leaving the storage intact.
+       * res_pjsip_pubsub: Move where the subscription is stored to after initialized.
 
-         Change-Id: I41d32dbdf7137e0557134efeff9f9f1064b58d14
+         A problem arose when testing the AMI subscription listing actions where it
+         was possible for a subscription that had not been fully initialized to be
+         listed. This was problematic as the underlying listing code would crash.
 
-2015-05-11 07:07 +0000 [d5864a358c]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         This change makes it so the subscription tree is fully set up before it is
+         added to the list of subscriptions. This ensures that when the listing actions
+         get the subscription it is valid.
 
-       * pbx/pbx_spool: Fix issue when call files were executed too early
+         ASTERISK-25738 #close
 
-         pbx_spool used to delete/move the call file upon successful outgoing
-         call completion, but did not delete it from in-memory list of files
-         (dirlist, used only when compiled with inotify/kqueue support).
-         That resulted in an extra attempt to process that filename after
-         retrytime seconds.
-         Then, if a new file with the same name appears that is scheduled
-         in future further than the completed one plus its retrytime,
-         then it gets executed earlier than expected.
+         Change-Id: Iace2b13641c31bbcc0d43a39f99aba1f340c0f48
+         (cherry picked from commit 1c4f2a920db173412b38aab785ba22c2cc489f89)
 
-         This patch fixes remove_from_queue function to also remove the entry
-         from the dirlist.
+2016-02-11 18:31 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-         ASTERISK-17069 #close
-         Reported by: Jeremy Kister
+       * asterisk certified/13.1-cert4 Released.
 
-         ASTERISK-24442 #close
-         Reported by: tootai
+2016-02-11 12:31 +0000 [7df413fbb3]  Kevin Harwell <kharwell@lunkwill.digium.internal>
 
-         Change-Id: If9ec9b88073661ce485d6b008fd0b2612e49a28b
+       * Release summaries: Remove previous versions
 
-2015-05-08 14:47 +0000 [4dbd4021c9]  Rusty Newton <rnewton@digium.com>
+2016-02-11 12:31 +0000 [1423445b23]  Kevin Harwell <kharwell@lunkwill>
 
-       * configs/basic-pbx: Modified main IVR to play new Allison prompt.
+       * .version: Update for certified/13.1-cert4
 
-         The main IVR was playing demo-congrats. I've switched it over to the
-         basic-pbx-ivr-main file that we added in core sounds 1.4.27. This prompt
-         has Allison prompting the user with the actual IVR menu.
+2016-02-11 12:31 +0000 [9a8b627f26]  Kevin Harwell <kharwell@lunkwill>
 
-         ASTERISK-24892 #close
+       * .lastclean: Update for certified/13.1-cert4
 
-         Change-Id: Ifb749616ff8e156a1031ddaddfcc9244767a095d
+2016-02-11 12:31 +0000 [d424452711]  Kevin Harwell <kharwell@lunkwill>
 
-2015-05-08 15:55 +0000 [7111ba6df4]  Matt Jordan <mjordan@digium.com>
+       * realtime: Add database scripts for certified/13.1-cert4
 
-       * Merge "tcptls: Avoiding ERR_remove_state in OpenSSL." into 13
-2015-05-08 10:39 +0000 [613a461c3d]  Sean Bright <sean@malleable.com>
+2016-02-04 16:17 +0000 [59ccc89054]  Mark Michelson <mmichelson@digium.com>
 
-       * res_rtp_asterisk: Issue ERROR if res_srtp is not found.
+       * Check for OpenSSL defines before trying to use them.
 
-         While trying to get WebRTC working with chan_pjsip, I was running
-         into the following error:
+         The SSL_OP_NO_TLSv1_1 and SSL_OP_NO_TLSv1_2 defines did not exist prior
+         to OpenSSL version 1.0.1. A recent commit attempts to, by default, set
+         these options, which can cause problems on systems with older OpenSSL
+         installations.
 
-             Attempted to set an invalid DTLS-SRTP configuration on RTP
-             instance...
+         This commit adds a configure script check for those defines and will not
+         attempt to make use of those if they do not exist. We will print a
+         warning urging the user to upgrade their OpenSSL installation if those
+         defines are not present.
 
-         Josh helpfully pointed out that res_srtp.so might not be loaded, and
-         sure enough, it wasn't. This patch adds a ERROR indiciating as much
-         to hopefully help others having a similar problem.
+         Change-Id: I6a2eb9a43fd0738b404d8f6f2cf4b5c22d9d752d
 
-         Change-Id: I13aa477b47b299876728a21b130998a0ea6cd19f
+2016-02-04 11:39 +0000 [bffd954a63]  Mark Michelson <mmichelson@digium.com>
 
-2015-05-07 17:49 +0000 [394fcb5eab]  Rusty Newton <rnewton@digium.com>
+       * res_stasis_device_state: Fix refcounting error.
 
-       * sounds: Add Swedish sounds to Makefile and XML
+         Device state subscription lifetimes were governed by when the
+         subscription was established and unsubscribed from. However, it is
+         possible that at the time of unsubscription, there could be device state
+         events still in flight. When those device state events occur, the device
+         state callback could attempt to dereference a freed pointer. Crash.
 
-         Added the necessary lines to the Makefile and sounds.xml so we'll have the
-         Swedish sounds in all available formats in menuselect.
+         This change ensures that the lifetime of the device state subscription
+         does not end until the underlying stasis subscription has confirmed that
+         its final message has been sent.
 
-         See also: Swedish sounds were added into the core sounds release 1.4.27.
+         Change-Id: I25a0f1472894c1a562252fb7129671478e25e9b2
 
-         ASTERISK-24744 #close
+2016-01-25 15:48 +0000 [0eb43ea9ee]  Richard Mudgett <rmudgett@digium.com>
 
-         Reported by: Tove Hjelm
-         Tested by: Rusty Newton
+       * app_confbridge: Make non-admin users join a muted conference muted.
 
-         Change-Id: Ib6f4fd177afd1667b2402735034001d4d055a908
+         ASTERISK-20987 #close
+         Reported by: hristo
 
-2015-05-08 09:54 +0000 [30c3b254c5]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ic61a2b524ab3a4cfadf227fc6b3506527bc03f38
 
-       * Merge "doc: Make progdocs play nice with git" into 13
-2015-05-05 11:35 +0000 [2115f11b54]  Alexander Traud (License 6520)
+2016-02-03 22:14 +0000  Asterisk Development Team <asteriskteam@digium.com>
 
-       * tcptls: Avoiding ERR_remove_state in OpenSSL.
+       * asterisk certified/13.1-cert3 Released.
 
-         ERR_remove_state was deprecated with OpenSSL 1.0.0 and was replaced by 
-         ERR_remove_thread_state. ERR_load_SSL_strings and ERR_load_BIO_strings were 
-         called by SSL_load_error_strings already and got removed. These changes allow 
-         OpenSSL forks like BoringSSL to be used with Asterisk.
+2016-02-03 16:05 +0000 [2142c74a02]  Kevin Harwell <kharwell@lunkwill>
 
-         ASTERISK-25043 #close
-         Reported by: Alexander Traud
-         patches:
-           asterisk_with_BoringSSL.patch uploaded by Alexander Traud (License 6520)
+       * .version: Update for certified/13.1-cert3
 
-         Change-Id: If1c0871ece21a7e0763fafbd2fa023ae49d4d629
-         (cherry picked from commit 247fef66537b59649e7571d64e2c574a106dbd65)
+2016-02-03 16:04 +0000 [07c95d33bd]  Kevin Harwell <kharwell@lunkwill>
 
-2015-05-07 14:54 +0000 [5392e970d0]  George Joseph <george.joseph@fairview5.com>
+       * .lastclean: Update for certified/13.1-cert3
 
-       * doc: Make progdocs play nice with git
+2016-02-03 16:04 +0000 [ce314be09d]  Kevin Harwell <kharwell@lunkwill>
 
-         Moved contrib/asterisk-ng-doxygen to doc/asterisk-ng-doxygen.in
+       * realtime: Add database scripts for certified/13.1-cert3
 
-         Changed /Makefile to copy asterisk-ng-doxygen.in to
-         asterisk-ng-doxygen then modify it with version instead of
-         modifying asterisk-ng-doxygen directly.  Updated clean
-         targets as well.
+2016-02-03 12:05 +0000 [b50d584022]  Joshua Colp <jcolp@digium.com>
 
-         Updated /.gitignore and doc/.gitignore.
+       * AST-2016-001 http: Provide greater control of TLS and set modern defaults.
 
-         Change-Id: I38712d3e334fa4baec19d30d05de8c6f28137622
+         This change exposes the configuration of various aspects of the TLS
+         support and sets the default to the modern standards.
 
-2015-05-07 15:10 +0000 [1e44d1bef9]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * Merge "res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination" into 13
-2015-05-04 14:43 +0000 [608f0a94ee]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         ASTERISK-24972 #close
 
-       * contrib/editors: Fix vim syntax highlighting of comments in config files
+         Change-Id: I8635470e722ce6d47951a5045ae9ef348271d395
+2015-12-07 12:46 +0000 [4fe2aa9a20]  Richard Mudgett <rmudgett@digium.com>
 
-          * Added a lookbehind to one-line comment matcher to skip escaped
-            semicolons.
-          * Added support for block comments.
+       * AST-2016-003 udptl.c: Fix uninitialized values.
 
-         Change-Id: Id17dfaeda8ed4be572e8107a0c010066584aaee7
+         Sending UDPTL packets to Asterisk with the right amount of missing
+         sequence numbers and enough redundant 0-length IFP packets, can make
+         Asterisk crash.
 
-2015-05-07 13:30 +0000 [22c6c12af2]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-25603 #close
+         Reported by: Walter Doekes
 
-       * Merge "vector:  Additional enhancements and fixes" into 13
-2015-05-06 13:24 +0000 [d649d682c4]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25742 #close
+         Reported by: Torrey Searle
 
-       * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination
+         Change-Id: I97df8375041be986f3f266ac1946a538023a5255
+2015-09-28 17:07 +0000 [c7ab026196]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * AST-2016-002 chan_sip.c: Fix retransmission timeout integer overflow.
 
-         This change does the following to fix this problem:
+         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.
 
-         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.
+         NOTE: The default sip.conf timert1 value is 500 which does not expose the
+         vulnerability.
 
-         2. A reference to the subscription serializer is kept to ensure it
-         remains valid for the lifetime of the extension state subscription.
+         * The overflow is now detected and the previous timeout time is
+         calculated.
 
-         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-25397 #close
+         Reported by: Alexander Traud
 
-         ASTERISK-25057 #close
-         Reported by: Matt Jordan
+         Change-Id: Ia7231f2f415af1cbf90b923e001b9219cff46290
+2016-01-25 09:35 +0000 [7d581b32e9]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643
+       * config: Allow options to register when documentation is unavailable.
 
-2015-05-07 07:02 +0000 [9322bc6ff6]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "chan_dahdi: Improve force_restart_unavailable_chans option description." into 13
-2015-05-07 06:39 +0000 [b1514362ef]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "res_stasis_snoop: Spying on a single direction continually increases CPU" into 13
-2015-05-07 06:28 +0000 [652ee2ff83]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * Merge "features: Fix crash when transferee hangs up during DTMF attended transfer." into 13
-2015-05-05 20:22 +0000 [5f9aea8e3c]  George Joseph <george.joseph@fairview5.com>
+         This also does not remove the initial documentation error message that
+         is output on load when registering the configuration option.
 
-       * vector:  Additional enhancements and fixes
+         ASTERISK-25725 #close
 
-         After using the new vector stuff for real I found...
+         Change-Id: Iec42fca6b35f31326c33fcdc25473f6fd7bc8af8
+         (cherry picked from commit f22074e5d9ed1882be976299311b8e093d25e1da)
 
-         A bug in AST_VECTOR_INSERT_AT that could cause a seg fault.
+2016-01-25 16:51 +0000 [22eb1b48c0]  Mark Michelson <mmichelson@digium.com>
 
-         The callbacks needed to be closer to ao2_callback in behavior
-         WRT to CMP_MATCH and CMP_STOP behavior and the ability to return
-         a vector of matched entries.
+       * res_pjsip_pubsub: Prevent crash from AMI command on freed subscription.
 
-         A pre-existing issue with APPEND and REPLACE was also fixed.
+         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.
 
-         I also added a new macro to test.h that acts like ast_test_validate
-         but also accepts a return code variable and a cleanup label.  As well
-         as printing the error, it sets the rc variable to AST_TEST_FAIL and
-         does a goto to the specified label on error.  I had a local version
-         of this in test_vector so I just moved it.
+         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.
 
-         ASTERISK-25045
+         Change-Id: Ic0239003d8d73e04c47c12dd2a7e23867e5b5b23
+         (cherry picked from commit b073244c511f9634de57ea401ab9dbebcf2390e8)
 
-         Change-Id: I05e5e47fd02f61964be13b7e8942bab5d61b29cc
+2016-01-19 18:20 +0000 [826ff1d7a3]  Richard Mudgett <rmudgett@digium.com>
 
-2015-05-04 17:28 +0000 [68513e00f7]  Kevin Harwell <kharwell@digium.com>
+       * res/res_pjsip/presence_xml.c: Add missing 2nd call presence state case.
 
-       * res_stasis_snoop: Spying on a single direction continually increases CPU
+         ASTERISK-25712 #close
+         Reported by: Richard Mudgett
 
-         Creating a snoop channel in ARI and spying only on a single direction (in or
-         out) results in CPU utilization continually increasing until the CPU is fully
-         consumed. This occurs because frames are being put in the opposing direction's
-         slin factory queue, but not being removed.
+         Change-Id: I70634df24f8c6c3a2c66c45af61d021e4999253f
 
-         Fixed the problem by always reading and disposing of frames from the opposite
-         queue of the direction selected.
+2016-01-14 14:42 +0000 [6e18a60a47]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-24938 #closes
+       * bridge_basic: don't cache xferfailsound during an attended transfer
 
-         Change-Id: I935bfd15f1db958f364d9d6b3b45582c0113dd60
-2015-05-06 16:00 +0000 [904f5d98f6]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * chan_dahdi: Improve force_restart_unavailable_chans option description.
+         This makes it so the transfer code instead gets the xferfailsound configuration
+         options from the channel when it is actually going to be used.
 
-         ASTERISK-25034
-         Reported by: Richard Mudgett
+         This patch also fixes a potential memory leak of the props object as well as
+         making sure the condition variable gets initialized before being destroyed.
 
-         Change-Id: I1ff8f02124d2f4abd632a050da52c64285bb7f30
+         ASTERISK-25696 #close
 
-2015-05-06 07:42 +0000 [d6ffbe39b0]  Joshua Colp <jcolp@digium.com>
+         Change-Id: Ic726b0f54ef588bd9c9c67f4b0e4d787934f85e4
 
-       * Merge "app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter" into 13
-2015-05-06 06:13 +0000 [dfb292ce3e]  Matt Jordan <mjordan@digium.com>
+2015-12-28 14:02 +0000 [f63fb0e337]  Joshua Colp <jcolp@digium.com>
 
-       * Merge "res_ari_bridges: Add missing dependencies." into 13
-2015-05-05 21:05 +0000 [50e90f9121]  Matt Jordan <mjordan@digium.com>
+       * test_time: Provide a timeout when waiting.
 
-       * Merge "pbx_config: Register manager actions with module version of macro." into 13
-2015-05-05 18:17 +0000 [be1260a35f]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * features: Fix crash when transferee hangs up during DTMF attended transfer.
+         This change adds a timeout to the condition so it will return
+         regardless after a period of time.
 
-         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.
+         Change-Id: Ifed981879df6de3d93acd3ee0a70f92546517390
+         (cherry picked from commit c8499b8d5adc805efadb91b483d9d987f62891ff)
 
-         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.
+2016-01-12 11:14 +0000 [def98bb996]  Joshua Colp <jcolp@digium.com>
 
-         * 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.
+       * app: Queue hangup if channel is hung up during sub or macro execution.
 
-         * 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.
+         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.
 
-         * Eliminated most uses of RAII_VAR in bridge_basic.c.
+         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-25003 #close
-         Reported by: Artem Volodin
+         ASTERISK-25690 #close
 
-         Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada
+         Change-Id: I1f9a8ceb1487df0389f0d346ce0f6dcbcaf476ea
 
-2015-05-05 15:40 +0000 [8b0f85ac06]  George Joseph <george.joseph@fairview5.com>
+2016-01-08 15:22 +0000 [bb29802615]  Kevin Harwell <kharwell@digium.com>
 
-       * test_vector: Fix build breakage caused by ASTERISK_REGISTER_FILE
+       * pbx: Deadlock between contexts container and context_merge locks
 
-         My 13 version of test_vector had an ASTERISK_REGISTER_FILE() macro
-         call at the top which is only supported in master.  Once removed
-         builds are successful.
+         Recent changes (ASTERISK-25394 commit 2bd27d12223fe33b58c453965ed5c6ed3af7c4f5)
+         introduced the possibility of a deadlock. Due to the mentioned modifications
+         ast_change_hints now needs to keep both merge/delete and state callbacks from
+         occurring while it executes. Unfortunately, sometimes ast_change_hints can be
+         called with the contexts container locked. When this happens it's possible for
+         another thread to grab the context_merge_lock before the thread calling into
+         ast_change_hints does and then try to obtain the contexts container lock. This
+         of course causes a deadlock between the two threads. The thread calling into
+         ast_change_hints waits for the other thread to release context_merge_lock and
+         the other thread is waiting on that one to release the contexts container lock.
 
-         Change-Id: I7cac8b669bed6de543bbf4e2eec3cffc9741acdd
+         Unfortunately, there is not a great way to fix this problem. When hints change,
+         the subsequent state callbacks cannot run at the same time as a merge/delete,
+         nor when the usual state callbacks do. This patch alleviates the problem by
+         having those particular callbacks (the ones run after a hint change) occur in a
+         serialized task. By moving the context_merge_lock to a task it can now safely be
+         attempted or held without a deadlock occurring.
 
-2015-05-05 14:48 +0000 [87263b47b5]  Ivan Poddubny <ivan.poddubny@gmail.com>
+         ASTERISK-25640 #close
+         Reported by: Krzysztof Trempala
 
-       * app_queue: Fix queue_log EXITWITHTIMEOUT containing only 1 parameter
+         Change-Id: If2210ea241afd1585dc2594c16faff84579bf302
 
-         This patch fixes EXITWITHTIMEOUT queue_log entry to always come with 3
-         parameters: position, original position and waiting time.
+2016-01-07 15:37 +0000 [ca869878b4]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-25038 #close
-         Reported by: Etienne Lessard
+       * PJSIP: Prevent deadlock due to dialog/transaction lock inversion.
 
-         Change-Id: I0c62045922e26bee2125e93aee1dee17eee79618
+         A deadlock was observed where the monitor thread was stuck, therefore
+         resulting in no incoming SIP traffic being processed.
 
-2015-05-05 13:13 +0000 [2d9081b5ec]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "stasis: Fix dial masquerade datastore lifetime" into 13
-2015-05-05 12:45 +0000 [8ca25dfd7e]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "vector:  Traversal, retrieval, insert and locking enhancements" into 13
-2015-05-05 09:47 +0000 [366ea63438]  Corey Farrell <git@cfware.com>
+         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.
 
-       * res_ari_bridges: Add missing dependencies.
+         ASTERISK-25668 #close
+         Reported by Mark Michelson
 
-         Missed this module in the previous commit.  res_ari_bridges uses symbols
-         from res_stasis_playback and res_stasis_recording.
+         Change-Id: I4db0705f1403737b4360e33a8e6276805d086d4a
 
-         ASTERISK-25027 #close
-         Reported by: Corey Farrell
+2015-12-10 11:44 +0000 [4e5aec3f0a]  Jonathan Rose <jrose@digium.com>
 
-         Change-Id: I90bf756abd25adfc4920d2869ebe7feb636b8c5f
+       * chan_sip: Add TCP/TLS keepalive to TCP/TLS server
 
-2015-05-05 09:27 +0000 [69ae8cf0a4]  Corey Farrell <git@cfware.com>
+         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.
 
-       * pbx_config: Register manager actions with module version of macro.
+         ASTERISK-25364 #close
+         Reported by: Hiroaki Komatsu
 
-         Switch manager actions in pbx_config to use the registration macro that
-         passes the module pointer, allowing pbx_config reference to be bumped
-         while the manager actions run.
+         Change-Id: I7ed7bcfa982b367dc64b4b73fbd962da49b9af36
+2015-06-26 10:36 +0000 [4d10ed67d0]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-25061 #close
-         Reported by: Corey Farrell
+       * PJSIP FAX: Fix T.38 automatic reject timer NULL channel pointer dereferences.
 
-         Change-Id: I422c50dd74814616ac10c5e9c6598a0b1bc2c44e
+         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.
 
-2015-05-04 12:16 +0000 [181ae3b8d9]  Joshua Colp <jcolp@digium.com>
+         * 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.
 
-       * stasis: Fix dial masquerade datastore lifetime
+         ASTERISK-25168
+         Reported by: Carl Fortin
 
-         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.
+         Change-Id: I07b6cd23815aedce5044f8f32543779e2f7a2403
+         (cherry picked from commit 8ea214aed782424a884b9a2f67d6dca270854e83)
 
-         This change does the following to fix this issue:
+2015-12-01 16:11 +0000 [1ec791a3ba]  Jonathan Rose <jrose@digium.com>
 
-         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.
+       * Unset BRIDGEPEER when leaving a bridge
 
-         ASTERISK-25025 #close
+         Currently if a channel is transferred out of a bridge, the BRIDGEPEER
+         variable (also BRIDGEPVTCALLID) remain set even once the channel is
+         out of the bridge. This patch removes these variables when leaving
+         the bridge.
 
-         Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f
+         ASTERISK-25600 #close
+         Reported by: Mark Michelson
 
-2015-05-01 19:25 +0000 [7a7e9733c2]  George Joseph <george.joseph@fairview5.com>
+         Change-Id: I753ead2fffbfc65427ed4e9244c7066610e546da
 
-       * vector:  Traversal, retrieval, insert and locking enhancements
+2015-11-30 16:42 +0000 [a164f2ce7f]  Richard Mudgett <rmudgett@digium.com>
 
-         Renamed AST_VECTOR_INSERT to AST_VECTOR_REPLACE because it really
-         does replace not insert.  The few users of AST_VECTOR_INSERT were
-         refactored.  Because these are macros, there should be no ABI
-         compatibility issues.
+       * sched.c: Make not return a sched id of 0.
 
-         Added AST_VECTOR_INSERT_AT that actually inserts an element into the
-         vector at a specific index pushing existing elements to the right.
+         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.
 
-         Added AST_VECTOR_GET_CMP that can retrieve from the vector based
-         on a user-provided compare function.
+         ASTERISK-25476
 
-         Added AST_VECTOR_CALLBACK function that will execute a function
-         for each element in the vector.  Similar to ao2_callback and
-         ao2_callback_data functions although the vector callback can take
-         a variable number of arguments.  This should allow easy migration
-         to a vector where a container might be too heavy.
+         Change-Id: Ib19c7ebb44ec9fd393ef6646dea806d4f34e3a20
 
-         Added read/write locked vector and lock manipulation macros.
+2015-11-25 12:23 +0000 [a24db35ae3]  Richard Mudgett <rmudgett@digium.com>
 
-         Added unit tests.
+       * Audit improper usage of scheduler exposed by 5c713fdf18f. (v13 additions)
 
-         ASTERISK-25045 #close
+         chan_sip.c:
+         * Initialize mwi subscription scheduler ids earlier because of ASTOBJ to
+         ao2 conversion.
 
-         Change-Id: I2e07ecc709d2f5f91bcab8904e5e9340609b00e0
+         * Initialize register scheduler ids earlier because of ASTOBJ to ao2
+         conversion.
 
-2015-05-03 13:55 +0000 [040d2f8558]  Corey Farrell <git@cfware.com>
+         chan_skinny.c:
+         * Fix more scheduler usage for the valid 0 id value.
 
-       * main/test.c: Add test to verify there were no registration errors.
+         ASTERISK-25476
 
-         This adds a test that will fail if any test failed to register. Also fail
-         if any test registration produced a warning about missing a leading or
-         trailing slash.
+         Change-Id: If9f0e5d99638b2f9d102d1ebc9c5a14b2d706e95
 
-         ASTERISK-25053 #close
-         Reported by: Corey Farrell
+2015-11-24 12:44 +0000 [bea904e001]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I93e50b8fcbcfa7f1f5b41b2c44a51685c09529c3
+       * Audit improper usage of scheduler exposed by 5c713fdf18f.
 
-2015-05-04 09:26 +0000 [626bffc4c2]  Matt Jordan <mjordan@digium.com>
+         channels/chan_iax2.c:
+         * Initialize struct chan_iax2_pvt scheduler ids earlier because of
+         iax2_destroy_helper().
 
-       * Merge "contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update" into 13
-2015-05-04 09:26 +0000 [87fb7fc165]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8" into 13
-2015-05-04 09:25 +0000 [81c27127aa]  Matt Jordan <mjordan@digium.com>
+         chan_skinny.c:
+         * Fix some scheduler id comparisons that excluded the valid 0 id.
 
-       * Merge "Format Interfaces: Prevent unload except by shutdown." into 13
-2015-05-04 07:46 +0000 [743fed71fc]  Matt Jordan <mjordan@digium.com>
+         channel.c:
+         * Fix channel initialization of the video stream scheduler id.
 
-       * Merge "res_odbc: Use negative connection cache for all connections" into 13
-2015-04-21 11:52 +0000 [3dcec04ab5]  Martin Tomec <tomec.martin@gmail.com>
+         pbx_dundi.c:
+         * Fix channel initialization of the packet retransmission scheduler id.
 
-       * res_odbc: Use negative connection cache for all connections
+         ASTERISK-25476
 
-         Apply the negative connection cache setting to all connections,
-         even those that are not pooled. This ensures that the connection
-         will not be re-established before the negative connection cache
-         time is met.
+         Change-Id: I07a3449f728f671d326a22fcbd071f150ba2e8c8
 
-         ASTERISK-22708 #close
+2015-11-23 14:27 +0000 [f5a6060707]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I431cc2e8584ab0b6908b3523d0a0e18c9a527271
-2015-05-04 04:03 +0000 [74799b3fe2]  Matt Jordan <mjordan@digium.com>
+       * res_sorcery_realtime.c: Fix crash from NULL sorcery object type.
 
-       * Merge "Remove unneeded uses of optional_api providers." into 13
-2015-05-04 04:03 +0000 [78c02f8e88]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "Update configure.ac/Makefile for clang" into 13
-2015-05-03 21:03 +0000 [f38066fcad]  Corey Farrell <git@cfware.com>
+         * Use ao2_cleanup() instead of ao2_ref() to prevent the crash.
 
-       * Format Interfaces: Prevent unload except by shutdown.
+         ASTERISK-25165
+         Reported by Corey Farrell
 
-         Format interfaces cannot be unregistered, so the modules that provide them
-         need to be held open except by shutdown.
+         Change-Id: Ic3b64453ea3058cb68d5c26d97d4fe7b8eea2e97
 
-         ASTERISK-25054 #close
-         Reported by: Corey Farrell
+2015-05-05 18:17 +0000 [de43ae38b4]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Iadbd9675bf0d30b8fded5a739b163db3ea2db8f3
+       * features: Fix crash when transferee hangs up during DTMF attended transfer.
 
-2015-05-03 20:28 +0000 [e76a6a97bf]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * contrib/ast-db-manage: Add Postgres ENUM type support in auto DTMF mode update
+         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.
 
-         The upgrade script for auto DTMF mode (31cd4f4891ec) added in 88b0fa7755
-         failed to add ENUM support for Postgres databases. This requires a
-         specific import from the sqlalchemy.dialects.postgresql package. This
-         patch corrects this error, which allows for Postgres update scripts to
-         be generated.
+         * 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.
 
-         ASTERISK-24706
+         * 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.
 
-         Change-Id: I4742ac8efa533cd6f18e0bdd907b339a9aedf015
+         * Eliminated most uses of RAII_VAR in bridge_basic.c.
 
-2015-05-01 19:50 +0000 [92120247e9]  D Tucny <d@tucny.com>
+         ASTERISK-25003 #close
+         Reported by: Artem Volodin
 
-       * term: send proper reset sequence when black background is forced
+         Change-Id: Ie2c1b14e5e647d4ea6de300bf56d69805d7bcada
+         (cherry picked from commit be1260a35f88faea4fa029d59343b124d250a8a6)
 
-         When using the force black background command-line option or configuration
-         option an invalid reset sequence is sent following a coloured output item 
-         in the CLI, the result is that the colour is not 'turned off' and continues
-         until the next non-default coloured text output.
+2015-11-16 04:29 +0000 [457d8dc124]  Alec Davis <sivad.a@paradise.net.nz>
 
-         A reset sequence is already defined in term.c, but the ast_term_reset
-         function doesn't use it, instead building it's own invalid sequence and 
-         returning that.
+       * app_queue: (try_calling): mutex 'qe->chan' freed more times than we've locked!
 
-         This patch changes that behaviour, removing the building of a reset sequence
-         and instead using the pre-built constant 'enddata' which is a suitable reset
-         sequence for this purpose.
+         commit aae45acbd (Mark Michelson 2015-04-15 10:38:02 -0500 6525)
+         refer ASTERISK-24958
 
-         ASTERISK-24896 #close
-         Reported by: Dan Tucny
+         above commit removed ast_channel_lock(qe->chan);
+         but failed to remove corresponding ast_channel_unlock(qe->chan);
 
-         Change-Id: I56323899123ae3264900389cae1f5b252aa3bf43
+         ASTERISK-25561 #close
+         Reported Alec Davis
 
-2015-05-03 09:20 +0000 [13819a34c4]  Matt Jordan <mjordan@digium.com>
+         Change-Id: Ie05f4e2d08912606178bf1fded57cc022c7a2e1a
 
-       * Merge "Build System: Prevent unneeded changes to asterisk/buildopts.h." into 13
-2015-05-03 09:19 +0000 [b518ba1c6c]  Matt Jordan <mjordan@digium.com>
+2015-11-13 14:03 +0000 [c4751171a0]  Mark Michelson <mmichelson@digium.com>
 
-       * Merge "res_pjsip_dlg_options: Fix MODULEINFO section." into 13
-2015-05-02 18:58 +0000 [ad6ea29697]  Corey Farrell <git@cfware.com>
+       * Confbridge: Add a user timeout option
 
-       * Remove unneeded uses of optional_api providers.
+         This option adds the ability to specify a timeout, in seconds, for a
+         participant in a ConfBridge. When the user's timeout has been reached,
+         the user is ejected from the conference with the CONFBRIDGE_RESULT
+         channel variable set to "TIMEOUT".
 
-         A few cases exist where headers of optional_api provders are included but
-         not needed.  This causes unneeded calls to ast_optional_api_use.
+         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.
 
-         * Don't include optional_api.h from sip_api.h.
-         * Move 'struct ast_channel_monitor' to channel.h.
-         * Don't include monitor.h from chan_sip.c, channel.c or features.c.
+         ASTERISK-25549 #close
+         Reported by Mark Michelson
 
-         The move of struct ast_channel_monitor is needed since channel.c depends on
-         it.  This has no effect on users of monitor.h since channel.h is included
-         from monitor.h.
+         Change-Id: I2996b6c5e16a3dda27595f8352abad0bda9c2d98
 
-         ASTERISK-25051 #close
-         Reported by: Corey Farrell
+2015-11-13 14:19 +0000 [c0a7df1021]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I53ea65a9fc9693c89f8bcfd6120649bfcfbc3478
+       * Taskprocessors: Increase high-water mark
 
-2015-05-02 10:19 +0000 [9888562c8c]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "include/asterisk/channel.h: Fix typo" into 13
-2015-05-02 10:17 +0000 [b4000f2d44]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "Astobj2: Fix initialization order of refdebug and AO2_DEBUG." into 13
-2015-04-30 02:07 +0000 [525c8c8689]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+         Change-Id: Ic8d3e9497452fecd768ac427bb6f58aa616eebce
 
-       * include/asterisk/channel.h: Fix typo
+2015-11-12 11:17 +0000 [2fc3267677]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: Ie584b85e16a94c255e60d0b1732ef9686464fef3
+       * res_pjsip distributor: Don't send 503 response to responses.
 
-2015-05-02 02:15 +0000 [63196a8256]  Corey Farrell <git@cfware.com>
+         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.
 
-       * res_pjsip_dlg_options: Fix MODULEINFO section.
+         This change makes it so that we only send the 503 on incoming requests.
 
-         Removed the extra space before "MODULEINFO" in res_pjsip_dlg_options.
-         This extra space prevented any of the dependencies from being seen by
-         menuselect, so building with default options would fail if PJSIP was
-         not installed.
+         Change-Id: Ie2b418d89c0e453cc6c2b5c7d543651c981e1404
 
-         This also makes the tool that extracts information for menuselect
-         tolerant of multiple spaces in the future.
+2015-11-11 04:16 +0000 [d760c21038]  Steve Davies <steve@one47.co.uk>
 
-         ASTERISK-25033 #close
-         Reported by: Peter Whisker
+       * Further fixes to improper usage of scheduler
 
-         Change-Id: Iccd54846f70c4a7a50cb5bf70b7bb5cb4bab3698
+         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.
 
-2015-04-29 03:03 +0000 [ac1f0090eb]  Corey Farrell <git@cfware.com>
+         This patch attempts to collect all of the scheduler issues discovered so
+         far and address them sensibly.
 
-       * Build System: Prevent unneeded changes to asterisk/buildopts.h.
+         ASTERISK-25476 #close
 
-         * Add AST_DEVMODE to BUILDOPTS
-         * Remove CFLAGS that do not effect ABI from BUILDOPTS.
-         * Use BUILDOPTS to generate AST_BUILDOPT_SUM.
-         * Remove loop that defined AST_MODULE_*
+         Change-Id: I87a77d581e2e0d91d33b4b2fbff80f64a566d05b
+         (cherry picked from commit 07583c288828a496cd7730b55112128fea31eaef)
 
-         These changes ensure that only ABI effecting options are considered for
-         AST_BUILDOPT_SUM.  This also reduces unneeded full system rebuilds caused
-         by enabling or disabling one module that another is dependent on.
+2015-11-11 17:11 +0000 [287cab1a53]  Mark Michelson <mmichelson@digium.com>
+
+       * 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.
 
-         ASTERISK-25028
-         Reported by: Corey Farrell
+         This change makes it so that incoming traffic gets rejected with a 503
+         response if the queue is backed up too much.
 
-         Change-Id: I2c516d93df9f6aaa09ae079a8168c887a6ff93a2
+         Change-Id: I4e736d48a2ba79fd1f8056c0dcd330e38e6a3816
 
-2015-05-01 13:22 +0000 [5875bf183c]  Corey Farrell <git@cfware.com>
+2015-11-11 11:04 +0000 [d073cb4b6d]  Joshua Colp <jcolp@digium.com>
 
-       * Astobj2: Fix initialization order of refdebug and AO2_DEBUG.
+       * threadpool: Handle worker thread transitioning to dead when going active.
 
-         This ensures that refdebug is initialized before AO2_DEBUG if
-         both are enabled, since AO2_DEBUG allocates a container.
+         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.
 
-         This change also makes AO2_DEBUG initialization critical, a
-         failure will abort Asterisk startup.  This is needed since
-         the failure would be caused by reg_containers allocation
-         failure, and that would result in a segmentation fault by
-         ao2_container_register later in startup.
+         A unit test has also been added which thrashes the idle timeout
+         and thread activation to exploit any race conditions between the
+         two.
 
-         ASTERISK-25048 #close
-         Reported by: Corey Farrell
+         ASTERISK-25546 #close
 
-         Change-Id: I9a243ea3fc5653b48b931ba6d61971cb2e530244
+         Change-Id: I6c455f9a40de60d9e86458d447b548fb52ba1143
 
-2015-04-29 14:49 +0000 [1b19c15f17]  Matt Jordan <mjordan@digium.com>
+2015-11-03 16:19 +0000 [b9713354dc]  Jonathan Rose <jrose@digium.com>
 
-       * main/pbx: Improve performance of dialplan reloads with a large number of hints
+       * taskprocessor: Add high water mark warnings
 
-         The PBX core maintains two hash tables for hints: a container of the
-         actual hints (hints), along with a container of devices that are watching that
-         hint (hintdevices). When a dialplan reload occurs, each hint in the hints
-         container is destroyed; this requires a lookup in the container of devices to
-         find the device => hint mapping object. In the current code, this performs an
-         ao2_callback, iterating over each of the device to hint objects in the
-         hintdevices container. For a large number of hints, this is extremely
-         expensive: dialplan reloads with 20000 hints could take several minutes
-         in just this phase.
+         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.
 
-         This patch improves the performance of this step in the dialplan reloads
-         by caching which devices are watching a hint on the hint object itself.
-         Since we don't want to create a circular reference, we just cache the
-         name of the device. This allows us to perform a smarter ao2_callback on
-         the hintdevices container during hint removal, hashing on the name of the
-         device and returning an iterator to the matching names. The overall
-         performance improvement is rather large, taking this step down to a number of
-         seconds as opposed to minutes.
+         ASTERISK-25518 #close
+         Reported by: Jonathan Rose
 
-         In addition, this patch also registers the hint containers in the PBX
-         core with the astobj2 library. This allows for reasonable debugging to
-         hash collisions in those containers.
+         Change-Id: Ib1607c35d18c1d6a0575b3f0e3ff5d932fd6600c
 
-         ASTERISK-25040 #close
-         Reported by: Matt Jordan
+2015-06-23 11:21 +0000 [ac9432fdb6]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Iedfc97a69d21070c50fca42275d7b3e714e59360
+       * app_dial: Hold reference to calling channel formats when dialing outbound.
 
-2015-05-01 06:55 +0000 [ec0f80b6e8]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback." into 13
-2015-05-01 06:55 +0000 [ed51fbbe9c]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * Merge "Prevent potential crash on blond transfer." into 13
-2015-04-30 15:54 +0000 [3efe0df044]  Corey Farrell <git@cfware.com>
+         ASTERISK-25172 #close
 
-       * Sample Configs: Fix syntax error in pjsip.conf
+         Change-Id: I2f0a67bd0d5d14c3bdbaae552b4b1613a283f0db
+         (cherry picked from commit 3b2b004d699b8cc7b808f62536bb2bc4db8b4e0e)
 
-         The sample pjsip.conf has a few comment lines that are missing the
-         semicolons at the start of the comment, causing the config to fail
-         load.
+2015-11-04 14:31 +0000 [385e26efe2]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I776a38c916a7df7ee3e072fd0b21dbf4cc457352
+       * main/dial: Protect access to the format_cap structure of the requesting channel
 
-2015-04-30 15:20 +0000 [077979618b]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * Prevent potential crash on blond transfer.
+         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.
 
-         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)
+         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.
 
-         What occurs in this case is that when the bridge between Alice and Bob
-         breaks, Alice is told to masquerade into Bob's channel that had placed
-         the call to Carol. The actual masquerade goes down without a hitch.
-         However, a channel fixup callback that attempts to publish dial events
-         over Stasis has a crash. The reason for this crash is that the datastore
-         on Bob's channel that placed the outbound call to Carol only had a bare
-         pointer to Carol's channel. Since Carol rejected the incoming call,
-         Carol's channel has been hung up and freed, meaning accessing her
-         channel results in a crash.
+         ASTERISK-25522 #close
 
-         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.
+         Change-Id: I0bfb7ba8b9711f4158cbeaae96edf9626e88a54f
 
-         ASTERISK-25025 #close
-         Reported by Chet Stevens
+2015-11-02 17:19 +0000 [62799fe778]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197
+       * res_pjsip: Set threadpool max size default to 50.
 
-2015-04-30 14:09 +0000 [4b8cddfb36]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback.
+         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.
 
-         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.
+         ASTERISK-25513 #close
+         Reported by John Bigelow
 
-         Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3
-2015-04-30 13:42 +0000 [415a0d0745]  Joshua Colp <jcolp@digium.com>
+         Change-Id: If0b9514f1d9b172540ce1a6e2f2ffa1f2b6119be
 
-       * res_ari_device_states: Fix dependency on res_stasis_device_state.
+2015-10-23 16:53 +0000 [6eda60936a]  Kevin Harwell <kharwell@digium.com>
 
-         The res_ari_device_states module depends on res_stasis_device_state,
-         not res_stasis_device_states.
+       * alembic: Bad down revision in add_default_from_user script
 
-         Change-Id: I26e02ad37f9e36bcc859867e2fad1b90452ec3de
+         The down revision wasn't set correct in the add_default_from_user script.
+         This patch points it to the correct revision.
 
-2015-04-30 11:11 +0000 [e0c6f88010]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Ied45786db265a1d4fb350ef0dd33b4d043c9a74d
 
-       * Merge "chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option." into 13
-2015-04-30 10:53 +0000 [d1bc86fc99]  Matt Jordan <mjordan@digium.com>
+2015-10-21 12:35 +0000 [c425e26595]  Kevin Harwell <kharwell@digium.com>
 
-       * Merge "res_pjsip_outbound_registration: Add virtual line support." into 13
-2015-04-29 14:29 +0000 [d3c310a28c]  Richard Mudgett <rmudgett@digium.com>
+       * res_pjsip_outbound_registration: registration stops due to fatal 4xx response
 
-       * chan_dahdi: Add the chan_dahdi.conf force_restart_unavailable_chans option.
+         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.
 
-         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.
+         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.
 
-         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.
+         ASTERISK-25485 #close
 
-         * 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.
+         Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2
 
-         ASTERISK-25034 #close
-         Reported by: Richard Mudgett
+2015-10-22 17:07 +0000 [b95101aab0]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65
-2015-04-30 06:38 +0000 [7f611fa0e8]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+       * format_cap: Detect vector allocation failures.
 
-       * cdr/cdr_csv.c: Add a new option to enable columns added in Asterisk 1.8
+         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.
 
-         This patch adds a new option to cdr.conf, 'newcdrcolumns', that will handle CDR
-         columns added in Asterisk 1.8. The columns are:
-          * peeraccount
-          * linkedid
-          * sequence
-         When enabled, the columns in the database entry will be populated with the data
-         from the CDR.
+         Change-Id: Ieb9c59f39dfde6d11797a92b45e0cf8ac5722bc8
 
-         ASTERISK-24976 #close
+2015-10-02 15:32 +0000 [dd4d4e40e5]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I51a57063f4ae5e194a9d933a8df45dc8a4534f0b
+       * res_pjsip_pubsub: Prevent sending NOTIFY on destroyed dialog.
 
-2015-04-30 06:04 +0000 [e332c7ed5e]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * res_pjsip_outbound_registration: Fix double unref on error return.
+         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.
 
-         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.
+         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.
 
-         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.
+         In doing this, some NULL checks for subscription tree dialogs have been
+         removed since NULL dialogs are no longer actually possible.
 
-         ASTERISK-25037 #close
-         Reported by: Joshua Colp
+         Change-Id: I013f43cddd9408bb2a31b77f5db87a7972bfe1e5
 
-         Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de
+2015-09-29 14:53 +0000 [bda0a24206]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-20 13:03 +0000 [9c3ed42875]  Diederik de Groot <ddegroot@talon.nl>
+       * res_pjsip_pubsub: Ensure dialog lock balance.
 
-       * Update configure.ac/Makefile for clang
+         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.
 
-         Created autoconf/ast_check_raii.m4: contains AST_CHECK_RAII which
-         checks compiler requirements for RAII:
-         gcc: -fnested-functions support
-         clang: -fblocks (and if required -lBlocksRuntime)
-         The original check was implemented in configure.ac and now has it's
-         own file. This function also sets C_COMPILER_FAMILY to either gcc or
-         clang for use by makefile
+         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.
 
-         Created autoconf/ast_check_strsep_array_bounds.m4 (contains
-         AST_CHECK_STRSEP_ARRAY_BOUNDS):
-         which checks if clang is able to handle the optimized strsep & strcmp
-         functions (linux). If not, the standard libc implementation should be
-         used instead. Clang + the optimized macro's work with:
-         strsep(char *, char []), but not with strsepo(char *, char *).
-         Instead of replacing all the occurences throughout the source code,
-         not using the optimized macro version seemed easier
+         Change-Id: I7ddb3eaed7276cceb9a65daca701c3d5e728e63a
 
-         See 'define __strcmp_gc(s1, s2, l2) in bits/string2.h':
-         llvm-comment: Normally, this array-bounds warning are suppressed for
-         macros, so that unused paths like the one that accesses __s1[3] are
-         not warned about.  But if you preprocess manually, and feed the
-         result to another instance of clang, it will warn about all the
-         possible forks of this particular if statement. Instead of switching
-         of this optimization, another solution would be to run the preproces-
-         sing step with -frewrite-includes, which should preserve enough
-         information so that clang should still be able to suppress the diag-
-         nostic at the compile step later on.
+2015-09-28 16:36 +0000 [7a22fc27fb]  Mark Michelson <mmichelson@digium.com>
 
-         See also "https://llvm.org/bugs/show_bug.cgi?id=20144"
-         See also "https://llvm.org/bugs/show_bug.cgi?id=11536"
+       * res_pjsip_pubsub: Prevent crashes on final NOTIFY.
 
-         Makefile.rules: If C_COMPILER_FAMILY=clang then add two warning
-         suppressions:
-         -Wno-unused-value
-         -Wno-parentheses-equality
-         In an earlier review (reviewboard: 4550 and 4554), they were deemed a
-         nuisace and less than benefitial.
+         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.
 
-         configure.ac:
-         Added AST_CHECK_RAII() see earlier
-         Added AST_CHECK_STRSEP_ARRAY_BOUNDS() see earlier
-         Removed moved content
+         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.
 
-         ASTERISK-24917
-         Change-Id: I12ea29d3bda2254ad3908e279b7effbbac6a97cb
+         Change-Id: Ibb46977a6cef9c51dc95f40f43446e3d11eed5bb
 
-2015-04-29 16:43 +0000 [37a193da18]  Matt Jordan <mjordan@digium.com>
+2015-09-17 17:28 +0000 [7fc9a998b1]  Mark Michelson <mmichelson@digium.com>
 
-       * Merge "ARI: Fix missing dependencies." into 13
-2015-04-29 16:42 +0000 [6a86b3555b]  Matt Jordan <mjordan@digium.com>
+       * res_pjsip_pubsub: Remove serializer when sending final NOTIFY.
 
-       * Merge "res_fax: allow 2400 transmission rate according to v.27ter standard" into 13
-2015-04-29 16:15 +0000 [d4e207e27e]  Matt Jordan <mjordan@digium.com>
+         There have been crashes seen where a taskprocessor's listener is NULL
+         unexpectedly.
 
-       * main/rtp_engine: Fix DTLS double-free introduced by 0b6410c4f8
+         Looking at backtraces, the problem was specifically seen in PJSIP
+         serializers.
 
-         The patch in 0b6410c4f8 did correctly fix a memory leak of the DTLS
-         structures in the RTP engine. However, when a 'core reload' is issued, a
-         double free of the memory pointed to by the char *'s in the DTLS
-         configuration struct can occur, as ast_rtp_dtls_cfg_free does not set
-         the pointers to NULL when they are freed.
+         Subscriptions make the mistake of removing a serializer from a dialog
+         during subscription tree destruction. Since subscription trees are
+         reference-counted, guaranteeing the circumstances behind the destruction
+         are not possible. This makes it so that the dialog serializer can be
+         removed while not holding the dialog lock. This makes it possible for
+         the distributor to get a pointer to the dialog serializer and have that
+         serializer get freed out from under it.
 
-         This patch sets those pointers to NULL, preventing a second call to
-         ast_rtp_dtls_cfg_free from corrupting memory.
+         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.
 
-         ASTERISK-25022
+         Change-Id: I21f5dac33529f65cec45679bdace60670800ff66
 
-         Change-Id: I820471e6070a37e3c26f760118c86770e12f6115
+2015-09-02 09:14 +0000 [7a47ab77c1]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-29 13:05 +0000 [3fb6daeb55]  Kevin Harwell <kharwell@digium.com>
+       * res_pjsip_pubsub: Fix crash on destruction of empty subscription tree.
 
-       * res_fax: allow 2400 transmission rate according to v.27ter standard
+         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 previous set of patches (see: ASTERISK-22790 & ASTERISK-23231) made it so
-         a v.27 modem was not allowed to have a minimum transmission rate of 2400 bits
-         per second. This reverts all or some of those patches since according to the
-         v.27ter standard a rate of 2400 bits per second is also supported.
+         A simple NULL check fixes this problem.
 
-         One of the original patches also added 9600 bits per second support for v.27.
-         This patch also removes that since v.27ter only supports 2400/4800 bits per
-         second.
+         Change-Id: I85570b9e2bcc7260a3fe0ad85904b2a9bf36d2ac
 
-         Also, since Asterisk specifically supports v.27ter the enum was renamed to
-         better reflect this.
+2015-09-01 15:47 +0000 [8def38f6a2]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-24955 #close
-         Reported by: Matt Jordan
+       * res_pjsip_pubsub: Solidify lifetime and ownership of objects.
 
-         Change-Id: I4b9dfb6bf7eff08463ab47ee1a74224f27cae733
+         There have been crashes and general instability seen in the pubsub code,
+         so this patch introduces three changes to increase the stability.
 
-2015-04-29 10:46 +0000 [49ef81c15c]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * res_sorcery_config: Fix build issue due to syntax error.
+         Second, the lifetime of a PJSIP subscription's reference to our
+         subscription tree has been altered. As I learned from doing a deep dive,
+         the PJSIP evsub code can tell Asterisk multiple times that the
+         subscription has been terminated, and not all of these times
+         are especially helpful. I have altered the message flow that we use for
+         SIP subscriptions such that we will always drop the PJSIP subscription's
+         reference to the subscription tree when we send the NOTIFY that
+         terminates a SIP subscription. This also means that we will now queue
+         NOTIFY requests to be sent after responding to incoming SUBSCRIBEs so
+         that we can have predictable state changes from the PJSIP evsub code.
 
-         Change-Id: Ic8322f04e37842848ad72cf2871bd0378f67c4ac
+         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.
 
-2015-04-28 00:29 +0000 [3278fe5327]  Ashley Sanders <asanders@digium.com>
+         Change-Id: Iff2990c40178dad9cc5f6a5c7f76932ec644b2e5
 
-       * chan_pjsip: Creating Channel Causes Asterisk to Crash When Duplicate AOR
-                     Sections Exist in pjsip.conf
+2015-04-20 14:30 +0000 [16afb39aec]  Mark Michelson <mmichelson@digium.com>
 
-         This patch modifies the current loading strategy of the pjsip configuration. If
-         duplicate sections (e.g. sections containing the same [id/type]) are defined in
-         [pjsip.conf], the loader will consider the configuration for the given type as
-         invalid when the duplicate section is encountered. The entire configuration
-         (including what was previously loaded) for the duplicate [id/type] sections
-         will be rejected and destroyed, an error message is logged and the load
-         processing for the given stops.
+       * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs.
 
-         ASTERISK-24996
-         Reported By: Ashley Sanders
+         When SUBSCRIBE dialogs were established, we never associated
+         the endpoint that created the subscription with the dialog
+         we end up creating. In most cases, this ended up not causing
+         any problems.
 
-         Change-Id: I35090ca4cd40f1f34881dfe701a329145c347aef
+         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.
 
-2014-11-04 06:03 +0000 [89f6719f7a]  Joshua Colp <jcolp@digium.com>
+         When Asterisk receives the initial SUBSCRIBE from the device,
+         res_pjsip_nat rewrites the contact to the public address on which the
+         SUBSCRIBE was received. This allows for the dialog to have its target
+         address set to the proper public address. Asterisk then would send a 200
+         OK response to the SUBSCRIBE, then a NOTIFY with the initial
+         subscription state. The device would then send a 200 OK response to
+         Asterisk's NOTIFY.
 
-       * res_pjsip_outbound_registration: Add virtual line support.
+         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.
 
-         Virtual line support establishes a relationship between messages
-         related to an outbound registration and a local endpoint. This is
-         accomplished by attaching a parameter to the Contact of the outbound
-         registration and looking for it on any received requests. If the
-         parameter exists and can be matched to an outbound registration
-         the configured endpoint is associated with the request.
+         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.
 
-         ASTERISK-24949 #close
-         Reported by: Joshua Colp
+         This commit message is like 50x longer than the actual fix.
 
-         Change-Id: I7df909d2625479110a83fdd354c21ac539e8615d
+         ASTERISK 24981 #close
+         Reported by Mark Michelson
 
-2015-04-29 06:39 +0000 [d61f03c4f9]  Corey Farrell <git@cfware.com>
+         Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd
 
-       * ARI: Fix missing dependencies.
+2015-10-19 15:27 +0000 [78e4783572]  Richard Mudgett <rmudgett@digium.com>
 
-         ARI modules that are generated by 'make ari-stubs' are all dependent on
-         res_ari_model.  Additionally some of the same modules depend on one or more
-         res_stasis_* modules.
+       * Add missing failure checks to ast_str_set_va() callers.
 
-         ASTERISK-25027 #close
-         Reported by: Corey Farrell
+         Change-Id: I0c2cdcd53727bdc6634095c61294807255bd278f
 
-         Change-Id: I8e07fe7e81fedacb87232f2b6f8b5f47927b4153
+2015-10-21 11:44 +0000 [43323995ba]  Joshua Colp <jcolp@digium.com>
 
-2015-04-29 06:26 +0000 [3e4624ad21]  Corey Farrell <git@cfware.com>
+       * res_pjsip: Move URI validation to use time.
 
-       * res_pjsip: Remove incorrect MODULEINFO from presence_xml.c.
+         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.
 
-         Remove incorrect MODULEINFO block and unneeded header includes
-         from presence_xml.c.
+         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-25027
-         Reported by: Corey Farrell
+         ASTERISK-25486 #close
 
-         Change-Id: I977c609ab9d1fe05373027c4138900f6985990eb
+         Change-Id: I2d7d167af987d23b3e8199e4a68f3359eba4c76a
 
-2015-04-29 06:17 +0000 [fed9faab8d]  Corey Farrell <git@cfware.com>
+2015-03-26 17:19 +0000 [cdd2d5b484]  Corey Farrell <git@cfware.com>
 
-       * Git Migration: Create doc/rest-api when needed.
+       * Replace most uses of ast_register_atexit with ast_register_cleanup.
 
-         Create the directory './doc/rest-api' at the start of 'make ari-stubs'
-         to prevent an error when documentation is generated.  The directory is
-         also added to git ignores.
+         Since 'core stop now' and 'core restart now' do not stop modules,
+         it is unsafe for most of the core to run cleanups.  Originally all
+         cleanups used ast_register_atexit, and were only changed when it
+         was shown to be unsafe.  ast_register_atexit is now used only when
+         absolutely required to prevent corruption and close child processes.
 
-         ASTERISK-25027
-         Reported by: Corey Farrell
+         Exceptions that need to use ast_register_atexit:
+         * CDR: Flush records.
+         * res_musiconhold: Kill external applications.
+         * AstDB: Close the DB.
+         * canary_exit: Kill canary process.
 
-         Change-Id: Iaccc7f0138501c23aa78feaca2f3cce9e68cbc1b
+         ASTERISK-24142 #close
+         Reported by: David Brillert
 
-2015-04-29 05:17 +0000 [df23c8a86b]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-24683 #close
+         Reported by: Peter Katzmann
 
-       * res_pjsip_outbound_registration: Fix build due to removal of transaction.
+         ASTERISK-24805 #close
+         Reported by: Badalian Vyacheslav
 
-         Change-Id: I7a8a7beec3334cec304943f2dd7597eabe2e3150
+         ASTERISK-24881 #close
+         Reported by: Corey Farrell
 
-2015-04-28 19:18 +0000 [95ab9fdb1a]  Joshua Colp <jcolp@digium.com>
+         Review: https://reviewboard.asterisk.org/r/4500/
+         Review: https://reviewboard.asterisk.org/r/4501/
+         ........
 
-       * Merge "res_pjsip_outbound_registration: Add debugging messages." into 13
-2015-04-28 19:18 +0000 [0e70dc0dc8]  Joshua Colp <jcolp@digium.com>
+         Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * Merge "res_pjsip_outbound_registration: Don't fail on delayed processing: 13." into 13
-2015-04-27 16:56 +0000 [e39bd6ba46]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: I6a67336050dea74327d79cdd6f7c7ea34d0b473e
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497
 
-       * res_pjsip_outbound_registration: Don't fail on delayed processing: 13.
+2015-10-19 19:59 +0000 [b5cfcfc427]  Matt Jordan <mjordan@digium.com>
 
-         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.
+       * contrib/scripts/autosupport: Update for Asterisk 13
 
-         The following is the text from the master version of this commit:
+         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
 
-         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.
+         Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1
+         (cherry picked from commit 9fc9777fa34753fb38991d42d8dbed516e907ca2)
 
-         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.
+2015-06-05 15:37 +0000 [813b743baa]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * res_pjsip: Need to use the same serializer for a pjproject SIP transaction.
 
-         ASTERISK-25020
-         Reported by Mark Michelson
+         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.
 
-         Change-Id: If1ee5f601be839479a219424f0358a229f358f7c
-2015-04-27 14:44 +0000 [1bf008fc76]  Mark Michelson <mmichelson@digium.com>
+         * Add threadpool API call to get the current serializer associated with
+         the worker thread.
 
-       * res_pjsip_outbound_registration: Add debugging messages.
+         * Pick a serializer from a pool of default serializers if the caller of
+         res_pjsip.c:ast_sip_push_task() does not provide one.
 
-         When problems occur regarding outbound registrations, it currently
-         is difficult to debug. Most off-nominal paths had warning messages,
-         but sometimes we want to know what's going on before hitting the
-         off-nominal path. This patch adds lots of debugging output that
-         should give a clearer picture of what is happening with regards
-         to outbound registrations.
+         This is a simple way to ensure that all outgoing SIP request messages are
+         processed under a serializer.  Otherwise, any place where a pushed task is
+         done that would result in an outgoing out-of-dialog request would need to
+         be modified to supply a serializer.  Serializers from the default
+         serializer pool are picked in a round robin sequence for simplicity.
 
-         ASTERISK-25020
-         Reported by Mark Michelson
+         A side effect is that the default serializer pool will limit the growth of
+         the thread pool from random tasks.  This is not necessarily a bad thing.
 
-         Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45
+         * 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.
 
-2015-04-28 07:13 +0000 [7ee05892d6]  Joshua Colp <jcolp@digium.com>
+         This is a cherry-pick from master.
 
-       * Merge "Example script for scan-build (the llvm static analyzer)" into 13
-2015-04-28 05:38 +0000 [0b6410c4f8]  Steve Davies <steve@one47.co.uk>
+         **** ASTERISK-25115 Change-Id: Iea71c16ce1132017b5791635e198b8c27973f40a
 
-       * res_rtp_asterisk: Resolve 2 discrete memory leaks in DTLS
+         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.
 
-         ao2 ref leak in res_rtp_asterisk.c when a DTLS policy is created.
-         The resources are linked into a table, but the original alloc refs
-         are never released. ast_strdup leak in rtp_engine.c. If
-         ast_rtp_dtls_cfg_copy() is called twice on the same destination struct,
-         a pointer to an alloc'd string is overwritten before the string is free'd.
+         This is a cherry-pick from v13.
 
-         ASTERISK-25022
-         Reported by: one47
+         ASTERISK-25183 #close
+         Reported by: Matt Jordan
 
-         Change-Id: I62a8ceb8679709f6c3769136dc6aa9a68202ff9b
+         Change-Id: I8bad0ae1daf18d75b8c9e55874244b7962df2d0a
 
-2015-04-28 06:55 +0000 [427209603d]  Joshua Colp <jcolp@digium.com>
+2015-10-02 17:05 +0000 [78ab76b46c]  Richard Mudgett <rmudgett@digium.com>
 
-       * Merge "cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version" into 13
-2015-04-27 12:11 +0000 [99fb87ae13]  George Joseph <george.joseph@fairview5.com>
+       * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled.
 
-       * res_pjsip: Fix SEGV on pending-qualify contacts
+         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.
 
-         Permanent contacts that hadn't been qualified yet were missing
-         their contact_status entries causing SEGVs when running CLI
-         commands.
+         ASTERISK-24975 #close
+         Reported by: Ashley Sanders
 
-         This patch makes sure that contact_statuses are created for
-         both dynamic and permanent contacts when they are created.
-         It also adds checks in the CLI code to make sure there's a
-         contact_status, just in case.
+         **** ASTERISK-24975 Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402
 
-         ASTERISK-25018 #close
-         Reported-by: Ivan Poddubny
-         Tested-by: Ivan Poddubny
-         Tested-by: George Joseph
+         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: I3cc13e5cedcafb24c400368b515b02d7fb81e029
+         Change-Id: I3222102d005f76744561b95a3b97700d82a5ee58
 
-2015-04-15 18:55 +0000 [d5dd43856e]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+2015-10-12 11:21 +0000 [47a9452780]  Richard Mudgett <rmudgett@digium.com>
 
-       * cdr/cdr_odbc.c: Added to record new columns add on CDR 1.8 Asterisk Version
+       * config.c: Fix off-nominal memory leak.
 
-         Add new column to INSERT new columns added in cdr 1.8 version. The columns are:
-          * peeraccount
-          * linkedid
-          * sequence
-         This feature is configurable in cdr_odbc.conf using a new configuration
-         option, 'newcdrcolumns'.
+         Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
 
-         ASTERISK-24976 #close
+2015-10-12 11:20 +0000 [728a2b7013]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Ibe0c7540a88305c6012786f438a0813ad8b19127
-2015-04-26 17:21 +0000 [e9788056e9]  Matt Jordan <mjordan@digium.com>
+       * config.c: Fix potential memory corruption after [section](+).
 
-       * channels/chan_skinny: Fix compilation error introduced in f8e21a1adf
+         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.
 
-         A typo in commit f8e21a1adf resulted in a compilation error in
-         chan_skinny. This patch fixes the typo.
+         Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93
 
-         ASTERISK-24917
+2015-10-12 11:21 +0000 [6c11fa2277]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: Id7f4ad1fe948eb2408622e80c27936ce4516c33c
+       * config.c: Fix #include after [section](+).
 
-2015-04-26 15:53 +0000 [2d277996b7]  Matt Jordan <mjordan@digium.com>
+         An #include right after a [section](+) would associate any variable
+         assignments before a new section in the #include with the wrong section.
 
-       * Merge "Clang: Fix some more tautological-compare warnings." into 13
-2015-04-24 13:07 +0000 [145f65598c]  Matt Jordan <mjordan@digium.com>
+         * Fix section association by setting the current section to the appended
+         section.
 
-       * Merge "app_confbridge: Default the template option to a compatible default profile." into 13
-2015-04-23 15:11 +0000 [7e5056b393]  Kevin Harwell <kharwell@digium.com>
+         * 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.
 
-       * app_confbridge: Default the template option to a compatible default profile.
+         ASTERISK-25461 #close
+         Reported by: Sean Pimental
 
-         Confbridge dynamic profiles did not have a default profile unless you
-         explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a
-         template was not set prior to the bridge being created then some
-         options were left with no default values set. This patch makes it so
-         the default templates are set to the default bridge and user profiles.
+         Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3
 
-         ASTERISK-24749 #close
-         Reported by: philippebolduc
+2015-10-06 20:43 +0000 [0fe83cad51]  Matt Jordan <mjordan@digium.com>
 
-         Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a
+       * res/res_rtp_asterisk: Fix assignment after ao2 decrement
 
-2015-04-24 09:17 +0000 [1da9ec969d]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * res_pjsip_outbound_authenticator: Increase CSeq on authed requests.
+         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.
 
-         The way PJSIP generates an authenticated request is to use a previous
-         request as a template. This means that the authenticated request will
-         have the same Call-ID, From header (including tag), and CSeq as the
-         original request. PJSIP generates a new branch on the Via header to
-         indicate that this is a new transaction, though.
+         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.
 
-         There are some SIP implementations, though, that do not notice the
-         change in the branch and therefore will match the authed request to the
-         original request's transaction. Since the CSeq is the same, the server
-         will repeat the response it sent to the original request.
+         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.
 
-         This patch aids interoperability by increasing the CSeq of the authed
-         request by one.
+         (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-24845 #close
-         Reported by: Carl Fortin
-         Tested by: Carl Fortin
+         ASTERISK-25449
 
-         Change-Id: I39c4ca52e688a9f83bcc1878371334becdc5be01
+         Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
 
-2015-04-24 09:24 +0000 [bf3d9db4a6]  Matt Jordan <mjordan@digium.com>
+2015-10-05 16:53 +0000 [c4f63952fc]  Richard Mudgett <rmudgett@digium.com>
 
-       * Merge "res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX." into 13
-2015-04-20 13:06 +0000 [cb318f3960]  Diederik de Groot <ddegroot@talon.nl>
+       * chan_pjsip: Fix crash on reINVITE before initial INVITE completes.
 
-       * Example script for scan-build (the llvm static analyzer)
+         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.
 
-          - Added Pre-amble (Options / Flags / Usage Example / GNU License)
-          - Extended Configurability
-          - Made Executable
+         * Fix checks for a reINVITE on incoming requests to look for the presence
+         of a to-tag instead of the initial INVITE transaction state.
 
-         ASTERISK-24917
-         Change-Id: I70405fe54e4be7dbfbcb62e291690069b88617a8
+         * 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.
 
-2015-04-23 17:23 +0000 [b3cd5bc77f]  Mark Michelson <mmichelson@digium.com>
+         ASTERISK-25404 #close
+         Reported by: Chet Stevens
 
-       * Merge "Clang: change previous tautological-compare fixes." into 13
-2015-04-23 12:54 +0000 [eabf3b5a3c]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be
 
-       * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX.
+2015-10-05 21:34 +0000 [d61da57428]  Matt Jordan <mjordan@digium.com>
 
-         When Asterisk originates a channel to an application, the channel is
-         hung up once the application finishes executing. When the application
-         in question is SendFax, the Asterisk PJSIP code will attempt to reinvite
-         the T.38 session to audio after the FAX completes. The hangup of the
-         channel happens in the midst of this reinvite transaction. In most
-         circumstances, this works out okay because the BYE is delayed until the
-         reinvite transaction can complete.
+       * Fix improper usage of scheduler exposed by 5c713fdf18f
 
-         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.
+         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 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 corrects the users such that they view '0' as valid, and a returned
+         ID of -1 as being invalid.
 
-         This patch also contains some corrections for comments that were
-         incorrect and really confused me when I first started looking at the
-         code.
+         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-25004 #close
-         Reported by Mark Michelson
+         ASTERISK-25449 #close
 
-         Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0
-2015-04-23 09:16 +0000 [f70d21b2cf]  George Joseph <george.joseph@fairview5.com>
+         Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
+2015-09-30 17:28 +0000 [5d12653d2a]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip:  Validate that contact uris start with sip: or sips:
+       * res_sorcery_memory_cache.c: Fix deadlock with scheduler.
 
-         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.
+         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.
 
-         To prevent this, permanent_contact_validate has been updated to check
-         that the scheme is either 'sip' or 'sips'.
+         * Add a deadlock avoidance loop in expire_objects_from_cache() to check if
+         someone is trying to remove the scheduler callback from the scheduler.
 
-         2 uses of possibly-null endpoint have also been fixed in
-         create_out_of_dialog_request.
+         ASTERISK-25441 #close
 
-         ASTERISK-24999
+         Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc
 
-         Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2
-         Reported-by: Brad Latus
+2015-10-01 14:30 +0000 [b35b9a9e32]  Richard Mudgett <rmudgett@digium.com>
 
-2015-04-23 08:00 +0000 [1bb16bedc7]  Diederik de Groot <ddegroot@talon.nl>
+       * res_sorcery_memory_cache.c: Replace inline code with function.
 
-       * Clang: change previous tautological-compare fixes.
+         Make sorcery_memory_cache_close() call remove_all_from_cache() instead of
+         partially inlining it.
 
-         clang can warn about a so called tautological-compare, when it finds
-         comparisons which are logically always true, and are therefor deemed
-         unnecessary.
+         ASTERISK-25441
 
-         Exanple:
-         unsigned int x = 4;
-         if (x > 0)    // x is always going to be bigger than 0
+         Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c
 
-         Enum Case:
-         Each enumeration is its own type. Enums are an integer type but they
-         do not have to be *signed*. C leaves it up to the compiler as an
-         implementation option what to consider the integer type of a particu-
-         lar enumeration is. Gcc treats an enum without negative values as
-         an int while clang treats this enum as an unsigned int.
+2015-10-01 14:27 +0000 [9ec52447bd]  Richard Mudgett <rmudgett@digium.com>
 
-         rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
-         The cast does have an effect. For gcc, which seems to treat all enums
-         as int, the cast to unsigned int will eliminate the possibility of
-         negative values being allowed. For clang, which seems to treat enums
-         without any negative members as unsigned int, the cast will have no
-         effect. If for some reason in the future a negative value is ever
-         added to the enum the assert will still catch the negative value.
+       * res_sorcery_memory_cache.c: Shutdown in a less crash potential order.
 
-         ASTERISK-24917
+         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: I0557ae0154a0b7de68883848a609309cdf0aee6a
+         Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e
 
-2015-04-23 06:50 +0000 [a06924e9d9]  Matt Jordan <mjordan@digium.com>
+2015-09-30 17:27 +0000 [110927bacc]  Richard Mudgett <rmudgett@digium.com>
 
-       * Merge "Astobj2: Ensure all calls to __adjust_lock pass a valid object." into 13
-2015-04-22 16:22 +0000 [1474bb05f6]  George Joseph <george.joseph@fairview5.com>
+       * res_sorcery_memory_cache.c: Misc tweaks.
 
-       * res_corosync: Add check for config file before calling corosync apis
+         Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
 
-         On some systems, res_corosync isn't compatible with the installed version of
-         corosync so corosync_cfg_initialize fails, load_module returns LOAD_FAILURE,
-         and Asterisk terminates.  The work around has been to remember to add
-         res_corosync as a noload in modules.conf.  A better solution though is to have
-         res_corosync check for its config file before attempting to call corosync apis
-         and return LOAD_DECLINE if there's no config file.  This lets Asterisk loading
-         continue.
+2015-09-30 17:27 +0000 [14ac763ab3]  Richard Mudgett <rmudgett@digium.com>
 
-         If you have a res_corosync.conf file and res_corosync fails, you get the same
-         behavior as today and the fatal error tells you something is wrong with the
-         install.
+       * res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK.
 
-         ASTERISK-24998
+         Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
 
-         Change-Id: Iaf94a9431a4922ec4ec994003f02135acfdd3889
-2015-04-22 15:17 +0000 [73efb093b8]  Corey Farrell <git@cfware.com>
+2015-04-09 10:42 +0000 [39fe210fd9]  yaron nahum (License 6676)
 
-       * Astobj2: Ensure all calls to __adjust_lock pass a valid object.
+       * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests
 
-         __adjust_lock doesn't check for invalid objects, and doesn't have an
-         appropriate return value for invalid objects.  Most callers of
-         __adjust_lock pass objects that have already been confirmed valid,
-         this change adds checks before the remaining calls.
+         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-24997 #close
-         Reported by: Corey Farrell
+         ASTERISK-24862 #close
+         Reported by: yaron nahum
+         patches:
+           res_pjsip_dlg_options.c submitted by yaron nahum (License 6676)
 
-         Change-Id: I669100f87937cc3f867cec56a27ae9c01292908f
+         Change-Id: Iefc901a7c5c88d9d4b853188f85092d9eb7b6ada
 
-2015-04-22 16:32 +0000 [b0e929219b]  George Joseph <george.joseph@fairview5.com>
+2015-09-24 14:56 +0000 [00be2f6b4f]  Richard Mudgett <rmudgett@digium.com>
 
-       * .gitignore:  Add .gcno and .gcda
+       * app_queue.c: Force COLP update if outgoing channel name changed.
 
-         Products of --enable-coverage
+         * When a call is answered and the outgoing channel name has changed then
+         force a connected line update because the channel is no longer the same.
+         The channel was masqueraded into by another channel.  This is usually
+         because of a call pickup.
 
-         Change-Id: Ie20882d64b60692e2c941ea8872ab82a86ce77a3
+         Note: Forwarded calls are handled in a controlled manner so the original
+         channel name is replaced with the forwarded channel.
 
-2015-04-22 14:25 +0000 [5a3948a66f]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-25423 #close
+         Reported by: John Hardin
 
-       * Merge "Fix/Update clang-RAII macro implementation" into 13
-2015-04-22 14:07 +0000 [2ef1e1fc68]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Ie275ea9e99c092ad369db23e0feb08c44498c172
 
-       * Merge "res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers." into 13
-2015-04-22 04:17 +0000 [d6dfc85666]  Diederik de Groot <ddegroot@talon.nl>
+2015-09-24 14:20 +0000 [bd43638622]  Richard Mudgett <rmudgett@digium.com>
 
-       * Clang: Fix some more tautological-compare warnings.
+       * app_queue.c: Factor out a connected line update routine.
 
-         clang can warn about a so called tautological-compare, when it finds
-         comparisons which are logically always true, and are therefor deemed
-         unnecessary.
+         Replace inlined code with update_connected_line_from_peer().
 
-         Exanple:
-         unsigned int x = 4;
-         if (x > 0)    // x is always going to be bigger than 0
+         ASTERISK-25423
+         Reported by: John Hardin
 
-         Enum Case:
-         Each enumeration is its own type. Enums are an integer type but they
-         do not have to be *signed*. C leaves it up to the compiler as an
-         implementation option what to consider the integer type of a particu-
-         lar enumeration is. Gcc treats an enum without negative values as
-         an int while clang treats this enum as an unsigned int.
+         Change-Id: I33bbd033596fcb0208d41d8970369b4e87b806f3
 
-         rmudgett & mmichelson: cast the enum to (unsigned int) in assert.
-         The cast does have an effect. For gcc, which seems to treat all enums
-         as int, the cast to unsigned int will eliminate the possibility of
-         negative values being allowed. For clang, which seems to treat enums
-         without any negative members as unsigned int, the cast will have no
-         effect. If for some reason in the future a negative value is ever
-         added to the enum the assert will still catch the negative value.
+2015-09-24 13:27 +0000 [f5a935f9d1]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-24917
-         Change-Id: Ief23ef68916192b9b72dabe702b543ecfeca0b62
+       * app_dial.c: Make 'A' option pass COLP updates.
 
-2015-04-22 05:45 +0000 [edd9e54818]  Joshua Colp <jcolp@digium.com>
+         While the 'A' option is playing the announcement file allow the caller and
+         peer to exchange COLP update frames.
 
-       * Merge "Check for ao2_alloc failure in __ast_channel_internal_alloc." into 13
-2015-04-14 14:04 +0000 [7b57116833]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25423
+         Reported by: John Hardin
 
-       * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers.
+         Change-Id: Iac6cf89b56d26452c6bb88e9363622bbf23895f9
 
-         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.
+2015-09-24 12:59 +0000 [91f754cb89]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * app_dial.c: Force COLP update if outgoing channel name changed.
 
-         ASTERISK-24982 #close
-         Reported by: Joshua Colp
+         * When a call is answered and the outgoing channel name has changed then
+         force a connected line update because the channel is no longer the same.
+         The channel was masqueraded into by another channel.  This is usually
+         because of a call pickup.
 
-         Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58
+         Note: Forwarded calls are handled in a controlled manner so the original
+         channel name is replaced with the forwarded channel.
 
-2015-04-22 05:29 +0000 [4423d5f755]  Joshua Colp <jcolp@digium.com>
+         ASTERISK-25423
+         Reported by: John Hardin
 
-       * Merge "res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs." into 13
-2015-04-21 15:17 +0000 [ad1a118632]  Corey Farrell <git@cfware.com>
+         Change-Id: I2e01f7a698fbbc8c26344a59c2be40c6cd98b00c
 
-       * Check for ao2_alloc failure in __ast_channel_internal_alloc.
+2015-09-24 12:37 +0000 [9792b21720]  Richard Mudgett <rmudgett@digium.com>
 
-         Fix a crash that could occur in __ast_channel_internal_alloc if
-         ao2_alloc fails.
+       * app_dial.c: Factor out a connected line update routine.
 
-         ASTERISK-24991 #close
+         Replace inlined code with update_connected_line_from_peer().
 
-         Change-Id: I4ca89189eb22f907408cb87d0a1645cfe1314a90
+         ASTERISK-25423
+         Reported by: John Hardin
 
-2015-04-20 14:30 +0000 [3327560cb2]  Mark Michelson <mmichelson@digium.com>
+         Change-Id: Ia14f18def417645cd7fb453e1bdac682630a5091
 
-       * res_pjsip_pubsub: Set the endpoint on SUBSCRIBE dialogs.
+2015-09-24 14:49 +0000 [7a4581a41b]  Mark Michelson <mmichelson@digium.com>
 
-         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.
+       * Do not swallow frames on channels leaving bridges.
 
-         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 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.
 
-         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.
+         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.
 
-         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.
+         ASTERISK-25418 #close
+         Reported by Mark Michelson
 
-         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.
+         Change-Id: If6115204dfa0551c050974ee138fabd15f978949
 
-         This commit message is like 50x longer than the actual fix.
+2015-09-22 17:08 +0000 [86eee104be]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK 24981 #close
-         Reported by Mark Michelson
+       * app_page.c: Fix crash when forwarding with a predial handler.
 
-         Change-Id: I2b963c58c063bae293e038406f7d044a8a5377cd
-2015-04-20 18:00 +0000 [d08446ec36]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * chan_dahdi/sig_pri: Make post AMI HangupRequest events on PRI channels.
+         * 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.
 
-         The chan_dahdi channel driver is a very old driver.  The ability for it to
-         support ISDN was added well after the initial analog support.  Setting the
-         softhangup flags is a carry over from the original analog code.  The
-         driver was not updated to call ast_queue_hangup() which will post the AMI
-         HangupRequest event.
+         * 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.
 
-         * Changed sig_pri.c to call ast_queue_hangup() instead of setting the
-         softhangup flag when the remote party initiates a hangup.
+         ASTERISK-25384 #close
+         Reported by: Chet Stevens
 
-         ASTERISK-24895 #close
-         Reported by: Andrew Zherdin
+         Change-Id: If53892b286d29f6cf955e2545b03dcffa2610981
 
-         Change-Id: I5fe2e48556507785fd8ab8e1c960683fd5d20325
+2015-06-18 13:16 +0000 [deccd2ef3c]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-20 17:23 +0000 [96e18453f4]  Joshua Colp <jcolp@digium.com>
+       * Resolve race conditions involving Stasis bridges.
 
-       * Merge "pjsip_options:  Fix non-qualified contacts showing as unavailable" into 13
-2015-04-20 13:01 +0000 [2be9cc2643]  Diederik de Groot <ddegroot@talon.nl>
+         This resolves two observed race conditions.
 
-       * Fix/Update clang-RAII macro implementation
+         First, a bit of background on what the Stasis application does:
 
-         - When you need to refer to 'variable XXX' outside a block, it needs
-         to be declared as '__block XXX', otherwise it will not be available with-
-         in the block, making updating that variable hard to do, and ast_free
-         lead to issues.
+         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.
 
-         - Removed the #error message
-         because it creates complications when compiling external projects
-         against asterisk For example when using a different compiler than the
-         one used to compile asterisk. The warning/error should be generated
-         during the configure process not the compilation process
+         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.
 
-         ASTERISK-24917
-         Change-Id: I12091228090e90831bf2b498293858f46ea7a8c2
-2015-04-20 09:53 +0000 [b74b2cdcda]  George Joseph <george.joseph@fairview5.com>
+         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.
 
-       * pjsip_options:  Fix format specifier for int64_t rtt.
+         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.
 
-         Contact status rtt is an int64_t and needs the PRId64 macro to
-         properly create the format specifier on 32-bit systems.
+         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).
 
-         Change-Id: I4b8ab958fc1e9a179556a9b4ffa49673ba9fdec7
+         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.
 
-2015-04-20 06:29 +0000 [27a122af66]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-25091 #close
+         Reported by Ilya Trikoz
 
-       * Merge "main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple" into 13
-2015-04-20 05:54 +0000 [9581a0ebf3]  Joshua Colp <jcolp@digium.com>
+         Change-Id: If66265b73b4c9f8f58599124d777fedc54576628
 
-       * Merge "Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled." into 13
-2015-04-18 13:36 +0000 [63169e00ff]  George Joseph <george.joseph@fairview5.com>
+2015-09-21 18:06 +0000 [43e6804b0c]  Kevin Harwell <kharwell@digium.com>
 
-       * pjsip_options:  Fix non-qualified contacts showing as unavailable
+       * app_record: RECORDED_FILE variable not being populated
 
-         The "Add qualify_timeout processing and eventing" patch introduced
-         an issue where contacts that had qualify_frequency set to 0 were
-         showing Unavailable instead Unknown.  This patch checks for
-         qualify_frequency=0 and create an "Unknown"  contact_status
-         with an RTT = 0.
+         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.
 
-         Previously, the lack of contact_status implied Unknown but since
-         we're now changing endpoint state based on contact_status, I've
-         had to add new UNKNOWN status so that changes could trigger the
-         appropriate contact_status observers.
+         ASTERISK-25410 #close
 
-         ASTERISK-24977: #close
+         Change-Id: I4ec826d8eb582ae2ad184e717be8668b74d37653
 
-         Change-Id: Ifcbc01533ce57f0e4e584b89a395326e098b8fe7
+2015-09-16 08:22 +0000 [ca401c6842]  Joshua Colp <jcolp@digium.com>
 
-2015-04-19 15:49 +0000 [f0c82a173a]  Matt Jordan <mjordan@digium.com>
+       * pbx: Update device and presence state when changing a hint extension.
 
-       * main/pbx: Don't attempt to destroy a previously destroyed exten/priority tuple
+         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).
 
-         When a PBX registrar is unloaded, it will fail to remove its extension from
-         the context root_table if a dialplan application used by that extension is
-         still loaded. This can be the case for AGI, which can be unloaded after several
-         of the standard PBX providers. Often, this is harmless; however, if the
-         extension's priorities are removed during the failed unloading *and* the
-         dialplan application later unregisters, it leaves a ticking timebomb for the
-         next PBX provider that attempts to iterate over the extensions. When that
-         occurs, the peer_table pointer on the extension will already be set to NULL.
-         The current code does not check to see if the pointer is NULL before passing
-         it to a hashtab function this is not NULL tolerant.
+         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.
 
-         Since it is possible for the peer_table to be NULL when we normally would not
-         expect that to be the case, the solution in this patch is to simply skip over
-         processing an extension's priorities if peer_table is NULL.
+         ASTERISK-25394 #close
 
-         Prior to this patch, the tests/pbx/callerid_match test would crash during
-         module unload. With this patch, the test no longer crashes after running.
+         Change-Id: If268f1110290e502c73dd289c9e7e7b27bc8432f
 
-         ASTERISK-24774 #close
-         Reported by: Corey Farrell
+2015-09-16 17:36 +0000 [20702e0cf2]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I2bbeecb7e0f77bac303a1b9135e4cdb4db6d4c40
+       * res_pjsip_pubsub: Eliminate race during initial NOTIFY.
 
-2015-04-17 18:05 +0000 [82bc0fd3ad]  Richard Mudgett <rmudgett@digium.com>
+         There is a slim chance of a race condition occurring where two threads
+         can both attempt to manipulate the same area.
 
-       * res_fax: Fix latent bug exposed by ASTERISK-24841 changes.
+         Thread A can be handling an incoming initial SUBSCRIBE request. Thread A
+         lets the specific subscription handler know that the subscription has
+         been established.
 
-         Three fax related tests started failing as a result of changes made for
-         ASTERISK-24841:
-         tests/fax/pjsip/gateway_t38_g711
-         tests/fax/sip/gateway_mix1
-         tests/fax/sip/gateway_mix3
+         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.
 
-         Historically, ast_channel_make_compatible() did nothing if the channels
-         were already "compatible" even if they had a sub-optimal translation path
-         already setup.  With the changes from ASTERISK-24841 this is no longer
-         true in order to allow the best translation paths to always be picked.  In
-         res_fax.c:fax_gateway_framehook() code manually setup the channels to go
-         through slin and then called ast_channel_make_compatible().  With the
-         previous version of ast_channel_make_compatible() this was always a
-         no-operation.
+         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.
 
-         * Remove call to ast_channel_make_compatible() in fax_gateway_framehook()
-         that now undoes what was just setup when the framehook is attached.
+         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.
 
-         * Fixed locking around saving the channel formats in
-         fax_gateway_framehook() to ensure that the formats that are saved are
-         consistent.
+         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.
 
-         * Fix copy pasta errors in fax_gateway_framehook() that confuses read and
-         write when dealing with saved channel formats.
+         Change-Id: I5a89a77b5f2717928c54d6efb9955e5f6f5cf815
 
-         ASTERISK-24841
-         Reported by: Matt Jordan
+2015-09-10 17:19 +0000 [3ef74244a4]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I6fda0877104a370af586a5e8cf9e161a484da78d
+       * scheduler: Use queue for allocating sched IDs.
 
-2015-04-17 16:19 +0000 [c59a800707]  Corey Farrell <git@cfware.com>
+         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.
 
-       * Fix issue with AST_THREADSTORAGE_RAW when DEBUG_THREADLOCALS is enabled.
+         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.
 
-         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.
+         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.
 
-         ASTERISK-24975 #close
-         Reported by: Ashley Sanders
+         Change-Id: I532708eef8f669d823457d7fefdad9a6078b99b2
 
-         Change-Id: I3ef7428ee402816d9fcefa1b3b95830c00d5c402
+2015-09-10 09:49 +0000 [8826e6c416]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-17 15:57 +0000 [e05b076827]  Matt Jordan <mjordan@digium.com>
+       * res_pjsip: Copy default_from_user to avoid crash.
 
-       * Merge "Detect potential forwarding loops based on count." into 13
-2015-04-15 10:38 +0000 [4f1a8dbe92]  Mark Michelson <mmichelson@digium.com>
+         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.
 
-       * Detect potential forwarding loops based on count.
+         The fix here is to copy the default_from_user value out of the global
+         configuration struct.
 
-         A potential problem that can arise is the following:
+         Thanks go to John Hardin for discovering this problem and proposing the
+         patch on which this fix is based.
 
-         * Bob's phone is programmed to automatically forward to Carol.
-         * Carol's phone is programmed to automatically forward to Bob.
-         * Alice calls Bob.
+         ASTERISK-25390 #close
+         Reported by Mark Michelson
 
-         If left unchecked, this results in an endless loops of call forwards
-         that would eventually result in some sort of fiery crash.
+         Change-Id: I6b96067a495c1259da768f4012d44e03e7c6148c
 
-         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.
+2015-04-23 09:16 +0000 [943d5c0c99]  gtjoseph <george.joseph@fairview5.com>
 
-         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:
+       * res_pjsip:  Validate that contact uris start with sip: or sips:
 
-         * There are legitimate use cases where a device may be dialed multiple
-         times, or
-         * There can be human error when forwarding calls.
+         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.
 
-         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:
+         To prevent this, permanent_contact_validate has been updated to check
+         that the scheme is either 'sip' or 'sips'.
 
-         * It is much simpler.
-         * It can detect loops involving local channels.
-         * It is user configurable.
+         2 uses of possibly-null endpoint have also been fixed in
+         create_out_of_dialog_request.
 
-         The only disadvantage it has is that in the case where there is a
-         legitimate forwarding loop present, it takes longer to detect it.
-         However, the forwarding loop is still properly detected and the
-         call is cleaned up as it should be.
+         ASTERISK-24999
 
-         Address review feedback on gerrit.
+         Change-Id: Ifc17d16a4923e1045d37fe51e43bbe29fa556ca2
+         Reported-by: Brad Latus
+         (cherry picked from commit 75666ad7c608ad9968a216a8f0a5832bf85b785c)
 
-         * 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
+2015-09-03 14:07 +0000 [7b5bcbeebe]  Jonathan Rose <jrose@digium.com>
 
-         ASTERISK-24958 #close
+       * ParkAndAnnounce: Add variable inheritance
 
-         Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
-2015-04-11 16:56 +0000 [674b18bdf0]  George Joseph <george.joseph@fairview5.com>
+         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.
 
-       * pjsip_options: Add qualify_timeout processing and eventing
+         ASTERISK-25369 #close
+         Review: https://gerrit.asterisk.org/#/c/1180/
 
-         This is the second follow-on to https://reviewboard.asterisk.org/r/4572/ and the
-         discussion at
-         http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
+         Change-Id: Ie47e618330114ad2ea91e2edcef1cb6f341eed6e
 
-         The basic issues are that changes in contact status don't cause events to be
-         emitted for the associated endpoint.  Only dynamic contact add/delete actions
-         update the endpoint.  Also, the qualify timeout is fixed by pjsip at 32 seconds
-         which is a long time.
+2015-08-29 10:36 +0000 [0901a82adb]  Joshua Colp <jcolp@digium.com>
 
-         This patch makes use of the new transaction timeout feature in r4585 and
-         provides the following capabilities...
+       * taskprocessor: Fix race condition between unreferencing and finding.
 
-         1.  A new aor/contact variable 'qualify_timeout' has been added that allows the
-         user to specify the maximum time in milliseconds to wait for a response to an
-         OPTIONS message.  The default is 3000ms.  When the timer expires, the contact is
-         marked unavailable.
+         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.
 
-         2.  Contact status changes are now propagated up to the endpoint as follows...
-         When any contact is 'Available', the endpoint is marked as 'Reachable'.  When
-         all contacts are 'Unavailable', the endpoint is marked as 'Unreachable'.  The
-         existing endpoint events are generated appropriately.
+         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-24863 #close
+         ASTERISK-25295
 
-         Change-Id: Id0ce0528e58014da1324856ea537e7765466044a
-         Tested-by: Dmitriy Serov
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+         Change-Id: Icb842db82fe1cf238da55df92e95938a4419377c
+         (cherry picked from commit a676ba2aad5525926ae31b8317b95ae52cbbabbb)
 
-2015-04-17 15:29 +0000 [f1abf51b73]  Matt Jordan <mjordan@digium.com>
+2015-09-04 14:40 +0000 [500856b4f0]  Mark Michelson <mmichelson@digium.com>
 
-       * Merge "res_pjsip: Refactor endpt_send_request to include transaction timeout" into 13
-2015-04-17 10:30 +0000 [ab5b38e434]  Matt Jordan <mjordan@digium.com>
+       * res_pjsip: Change default from user value.
 
-       * Merge "res_pjsip: Add global option to limit the maximum time for initial qualifies" into 13
-2015-04-17 10:25 +0000 [ec77b6148f]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * Merge "res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced" into 13
-2015-04-16 10:51 +0000 [b56c1914fa]  Kevin Harwell <kharwell@digium.com>
+         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.
 
-       * bridge.c: NULL app causes crash during attended transfer
+         ASTERISK-25377 #close
+         Reported by Mark Michelson
 
-         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.
+         Change-Id: I6a4d34a56ff73ff4f661b0075aeba5461b7f3190
 
-         ASTERISK-24869 #close
-         Reported by: viniciusfontes
-         Review:
+2015-05-13 15:41 +0000 [42c40b59b6]  Jonathan Rose <jrose@digium.com>
 
-         Change-Id: I5134b84c4524906d8148817719d76ffb306488ac
+       * Message.c: Clear message channel frames on cleanup
 
-2015-04-16 13:20 +0000 [8d4ce7cc2b]  Scott Griepentrog <scott@griepentrog.com>
+         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.
 
-       * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced
+         ASTERISK-25083 #close
+         Reported by: Jonathan Rose
 
-         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.
+         Change-Id: Idf18df73ccd8c220be38743335b5c79c2a4c0d0f
+         (cherry picked from commit 02c513058905dae19f28393ea840a47ae4a9e66d)
 
-         ASTERISK-24970 #close
+2015-09-02 17:26 +0000 [a1e1d8e815]  Mark Michelson <mmichelson@digium.com>
 
-         Change-Id: I1f20ffc08b192f59c457293b218025a693992cbf
-2015-04-11 16:39 +0000 [bf46799f0e]  George Joseph <george.joseph@fairview5.com>
+       * res_pjsip: Fix contact refleak on stateful responses.
 
-       * res_pjsip: Refactor endpt_send_request to include transaction timeout
+         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 is the first follow-on to https://reviewboard.asterisk.org/r/4572/ and the
-         discussion at
-         http://lists.digium.com/pipermail/asterisk-dev/2015-March/073921.html
+         This patch adds the missing deref and fixes the reference leak.
 
-         Since we currently have no control over pjproject transaction timeout, this
-         patch pulls the pjsip_endpt_send_request function out of pjproject and into
-         res_pjsip/endpt_send_transaction in order to implement that capability.
+         Change-Id: I2f97ad512aeb1b17e87ca29ae0abacb4d6395f07
 
-         Now when the transaction is initiated, we also schedule our own pj_timer with
-         our own desired timeout.
+2015-09-02 12:41 +0000 [9f5e1c0e56]  Joshua Colp <jcolp@digium.com>
 
-         If the transaction completes before either timeout, pjproject cancels its timer,
-         and calls our tsx callback where we cancel our timer and run the app callback.
+       * pbx: Fix crash when issuing "core show hints" with long pattern match.
 
-         If the pjproject timer times out first, pjproject calls our tsx callback where
-         we cancel our timer and run the app callback.
+         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.
 
-         If our timer times out first, we terminate the transaction which causes
-         pjproject to cancel its timer and call our tsx callback where we run the app
-         callback.
+         This change makes it so the construction of the combined hint extension
+         and context can not exceed the size of the buffer.
 
-         Regardless of the scenario, pjproject is calling the tsx callback inside the
-         group_lock and there are checks in the callback to make sure it doesn't run
-         twice.
+         ASTERISK-25367 #close
 
-         As part of this patch ast_sip_send_out_of_dialog_request was created to replace
-         its similarly named private function.  It takes a new timeout argument in
-         milliseconds (<= 0 to disable the timeout).
+         Change-Id: Idfa1b95d0d4dc38e675be7c1de8900b3f981f499
 
-         ASTERISK-24863 #close
-         Reported-by: George Joseph <george.joseph@fairview5.com>
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+2015-07-02 14:51 +0000 [1c89230e2a]  Richard Mudgett <rmudgett@digium.com>
 
-         Change-Id: I0778dc730d9689c5147a444a04aee3c1026bf747
-2015-04-11 17:04 +0000 [1b6f6ff841]  George Joseph <george.joseph@fairview5.com>
+       * PJSIP XML, XPIDF: Fix buffer size overwrite memory corruption error.
 
-       * res_pjsip: Add global option to limit the maximum time for initial qualifies
+         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.
 
-         Currently when Asterisk starts initial qualifies of contacts are spread out
-         randomly between 0 and qualify_timeout to prevent network and system overload.
-         If a contact's qualify_frequency is 5 minutes however, that contact may be
-         unavailable to accept calls for the entire 5 minutes after startup.  So while
-         staggering the initial qualifies is a good idea, basing the time on
-         qualify_timeout could leave contacts unavailable for too long.
+         * 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.
 
-         This patch adds a new global parameter "max_initial_qualify_time" that sets the
-         maximum time for the initial qualifies.  This way you could make sure that all
-         your contacts are initialy, randomly qualified within say 30 seconds but still
-         have the contact's ongoing qualifies at a 5 minute interval.
+         * 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.
 
-         If max_initial_qualify_time is > 0, the formula is initial_interval =
-         min(max_initial_interval, qualify_timeout * random().  If not set,
-         qualify_timeout is used.
+         * 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.
 
-         The default is "0" (disabled).
+         ASTERISK-25168
+         Reported by: Carl Fortin
 
-         ASTERISK-24863 #close
+         Change-Id: Id70e1d373a6a2b2bd9e678b5cbc5e55b308981de
 
-         Change-Id: Ib80498aa1ea9923277bef51d6a9015c9c79740f4
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+2015-09-01 09:05 +0000 [2f2c35e91d]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-15 16:08 +0000 [5d218cde87]  George Joseph <george.joseph@fairview5.com>
+       * res_pjsip_pubsub: re-re-fix persistent subscription storage.
 
-       * More .gitignore updates
+         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.
 
-         Added .pyc and .sha1 to the top-level .gitignore.
+         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.
 
-         Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a
-         Tested-by: George Joseph <george.joseph@fairview5.com>
+         ASTERISK-25365 #close
+         Reported by Mark Michelson
 
-2015-04-15 13:36 +0000 [97f83c4c53]  Matt Jordan <mjordan@digium.com>
+         Change-Id: I33153b10d0b4dc8e3801aaaee2f48173b867855b
 
-       * Merge "Build System: Replace comment about setting menuselect defaults." into 13
-2015-04-14 13:16 +0000 [abd56db3e0]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+2015-08-31 15:24 +0000 [88ee3b3ef2]  Mark Michelson <mmichelson@digium.com>
 
-       * cel_pgsql: Fix name string for log on unable allocate memory.
+       * Fix deadlock on presence state changes.
 
-         The LOG_ERROR has reference to CDR instead of CEL  for LENGTHEN_BUF1 and
-         LENGTHEN_BUF2.
+         A deadlock was observed where three threads were competing for different
+         locks:
 
-         ASTERISK-24965 #close
-         Reported by: Rodrigo Ramirez Norambuena
+         * 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.
 
-         Change-Id: Icc818697d7d66d34bfe3048cdd15ca2b06c89744
-2015-04-14 13:48 +0000 [222fbe1d9a]  Corey Farrell <git@cfware.com>
+         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.
 
-       * Build System: Replace comment about setting menuselect defaults.
+         ASTERISK-25362 #close
+         Reported by Mark Michelson
 
-         The Makefile claims that you can set default menuselect options by creating
-         ~/.asterisk.makeopts or /etc/asterisk.makeopts, but those files have never
-         been respected in Asterisk 11 or 13.  This changes the comment to accurately
-         reflect that these files are not automatically used by the build system.
+         Change-Id: I15ec2416b92978a4c0c08273b2d46cb21aff97e2
 
-         ASTERISK-13721 #close
-         Reported by: pj
+2015-08-28 20:22 +0000 [8842637d8f]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: Ibde804ff196283def49ccb9432fbf224a22586e2
+       * res_pjsip_sdp_rtp: Fix multiple keepalive scheduled items.
 
-2015-04-12 09:08 +0000 [07e729cc7b]  Rodrigo Ramírez Norambuena <decipher.hk@gmail.com>
+         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.
 
-       * cdr_pgsql: Fix CLI "cdr show pgsql status" command.
+         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.
 
-         The command always showed the usage information.
+         ASTERISK-25356 #close
 
-         * Fix the error in command validation for CLI_SHOWUSAGE.
+         Change-Id: Ibe6a7cc0927c87326fd5f1c0d4ad889dbfbea1de
 
-         ASTERISK-24959 #close
-         Reported by: Rodrigo Ramirez Norambuena
+2015-08-28 19:57 +0000 [06d42fede3]  Joshua Colp <jcolp@digium.com>
 
-         Change-Id: I584f0936bb01001336a468a55c1d05d79fe795d5
-         (cherry picked from commit 23a180cade51e84b9def65b05759c3cb9feba225)
+       * sched: ast_sched_del may return prematurely due to spurious wakeup
 
-2015-04-13 19:06 +0000 [7d43d85bea]  George Joseph <george.joseph@fairview5.com>
+         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.
 
-       * .gitignore updates for master/13
+         This change adds a loop around the ast_cond_wait to make sure that
+         it only exits when the executing task has really completed.
 
-         Added products of ./bootstrap
+         ASTERISK-25355 #close
 
-         Added nmenuselect and gmenuselect to menuselect/
+         Change-Id: I51198270eb0b637c956c61aa409f46283432be61
 
-         Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35
+2015-07-23 13:11 +0000 [74d6ae20cb]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-13 14:41 +0000 [3d27c223a5]  David M. Lee <dlee@respoke.io>
+       * Local channels: Alternate solution to ringback problem.
 
-       * Fixing extconf compile
+         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.
 
-         During the mass code deletion for clang support, a stray backslash was
-         left behind that was causing utils to fail to compile.
+         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.
 
-         Change-Id: I60e5fa58c9a5b248bde23aaada79ff663f87a2a1
+         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.
 
-2015-04-13 12:03 +0000 [30045b4e67]  Matt Jordan <mjordan@digium.com>
+         ASTERISK-25250 #close
+         Reported by Etienne Lessard
 
-       * Merge "build_tools/make_version: Update version parsing for Git migration" into 13
-2015-04-13 10:47 +0000 [88dbf6653e]  Joshua Colp <jcolp@digium.com>
+         Change-Id: I3bc87a18a38eb2b68064f732d098edceb5c19f39
 
-       * Merge "res_monitor: Add dependency on func_periodic_hook." into 13
-2015-04-13 09:54 +0000 [e996d8f728]  Matt Jordan <mjordan@digium.com>
+2015-08-26 05:40 +0000 [54a09e4cb5]  Joshua Colp <jcolp@digium.com>
 
-       * build_tools/make_version: Update version parsing for Git migration
+       * chan_sip: Allow call pickup to set the hangup cause.
 
-         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.
+         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 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.
+         This change sets the hangup cause to "normal clearing" as a
+         default initially but allows the call pickup to change it as
+         needed.
 
-         ASTERISK-24954 #close
+         ASTERISK-25346 #close
 
-         Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799
+         Change-Id: I00ac2c269cee9e29586ee2c65e83c70e52a02cff
 
-2015-04-12 12:59 +0000 [d1a6f1a9f9]  Matt Jordan <mjordan@digium.com>
+2015-08-25 07:17 +0000 [942d0ba96f]  Joshua Colp <jcolp@digium.com>
 
-       * git migration: Remove support for file versions
+       * res_pjsip: Add common ast_sip_get_host_ip API.
 
-         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.
+         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.
 
-         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.
+         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.
 
-         * main/manager: The Version key now always reports the Asterisk version.
+         ASTERISK-25342 #close
 
-         * UPGRADE: Add notes for:
-           - Modification to the ModuleCheck AMI Action.
-           - Modification of the "core show file version" CLI command.
+         Change-Id: I3205deb679b01fa5ac05a94b623bfd620a2abe1e
 
-         Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28
+2015-08-24 06:21 +0000 [ad4e895928]  Joshua Colp <jcolp@digium.com>
 
-2015-04-13 06:19 +0000 [0e4b997cd7]  Corey Farrell <git@cfware.com>
+       * bridge: Kick channel from bridge if hung up during action.
 
-       * res_monitor: Add dependency on func_periodic_hook.
+         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.
 
-         OPTIONAL_API has conditionals to define AST_OPTIONAL_API and
-         AST_OPTIONAL_API_ATTR differently based on if AST_API_MODULE is defined.
-         Unfortunately this is inside the include protection block, so only the
-         first status of AST_API_MODULE is respected.  For example res_monitor
-         is an optional API provider, but uses func_periodic_hook.  This makes
-         func_periodic_hook non-optional to res_monitor.
+         ASTERISK-25341 #close
 
-         ASTERISK-17608 #close
-         Reported by: Warren Selby
+         Change-Id: I6dd8b0c3f5888da1c57afed9e8a802ae0a053062
 
-         Change-Id: I8fcf2a5e7b481893e17484ecde4f172c9ffb5679
+2015-08-24 11:04 +0000 [4083e543fd]  Joshua Colp <jcolp@digium.com>
 
-2015-04-12 15:27 +0000 [91c1ed7ef6]  Matt Jordan <mjordan@digium.com>
+       * res_pjsip_pubsub: On recreated notify fail deleted sub_tree is referenced
 
-       * Merge "main/editline: Add .gitignore." into 13
-2015-04-12 06:12 +0000 [a77c31b99c]  Corey Farrell <git@cfware.com>
+         When recreating a subscription it is possible for a freed sub_tree
+         to be referenced when the initial NOTIFY fails to be created.
 
-       * main/editline: Add .gitignore.
+         Change-Id: I681c215309aad01b21d611c2de47b3b0a6022788
 
-         This patch adds a .gitignore for main/editline to ignore all build results.
+2015-04-16 13:20 +0000 [0b04269e73]  Scott Griepentrog <scott@griepentrog.com>
 
-         Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d
+       * res_pjsip_pubsub: On notify fail deleted sub_tree is then referenced
 
-2015-04-11 23:22 +0000 [d918c3b78e]  Matt Jordan <mjordan@digium.com>
+         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.
 
-       * .gitignore: Ignore tarballs (*.gz)
+         ASTERISK-24970 #close
 
-         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: I1f20ffc08b192f59c457293b218025a693992cbf
+         (cherry picked from commit 8d4ce7cc2b87317005588e700b278a8cca7005c8)
 
-         Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa
+2015-08-14 15:46 +0000 [f049ad951b]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-11 13:20 +0000 [555b5f5d30]  George Joseph <george.joseph@fairview5.com>
+       * res_pjsip_sdp_rtp: Restore removed NULL check.
 
-       * Add .gitignore and .gitreview files
+         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.
 
-         Add the .gitignore and .gitreview files to the asterisk repo.
+         Change-Id: I2d7dcd5022697cfc6bf3d9e19245419078e79b64
 
-         NB:  You can add local ignores to the .git/info/exclude file
-         without having to do a commit.
+2015-08-13 12:22 +0000 [fb347a4ded]  Richard Mudgett <rmudgett@digium.com>
 
-         Common ignore patterns are in the top-level .gitignore file.
-         Subdirectory-specific ignore patterns are in their own .gitignore
-         files.
+       * audiohook.c: Fix MixMonitor crash when using the r() or t() options.
 
-         Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696
-         Tested-by: George Joseph
+         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.
 
-2015-04-11 10:35 +0000 [5807ca519c]  Matthew Jordan <mjordan@digium.com>
+         ASTERISK-25322 #close
+         Reported by Sean Pimental
 
-       * Blocked revisions 434708
+         Change-Id: I86f85b5c48c49e4e2d3b770797b9d484250a1538
 
-         ........
-         main/event: Remove unnecessary assignment of negative value to enum
+2015-08-12 12:59 +0000 [a5049df640]  Kevin Harwell <kharwell@digium.com>
 
-         When cleaning up some clang compiler warnings, the comparison of a negative
-         value to an unsigned enum was removed. However, the initial assignment of a
-         negative value to said enum remained in the variable declaration. This patch
-         removes that assignment.
+       * chan_sip.c: wrong peer searched in sip_report_security_event
 
-         Thanks to ibercom in #asterisk-bugs for pointing it out.
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434709 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-25320 #close
 
-2015-04-11 10:26 +0000 [d0d78d5732]  dkdegroot (License 6600)
+         Change-Id: I9b3f11549efb475b6561c64f0e6da1a481d98bc4
+2015-08-13 05:26 +0000 [7089472637]  Joshua Colp <jcolp@digium.com>
 
-       * clang compiler warnings: Fix various warnings for tests
+       * res_http_websocket: When shutting down a session don't close closed socket
 
-         This patch fixes a variety of clang compiler warnings for unit tests. This
-         includes autological comparison issues, ignored return values, and
-         interestingly enough, one embedded function. Fun!
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4555
+         Change-Id: I7572583529a42a7dc911ea77a974d8307d5c0c8b
+2015-08-11 05:24 +0000 [128d2348e6]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4555.patch submitted by dkdegroot (License 6600)
-         ........
+       * res_http_websocket: Forcefully terminate on write errors.
 
-         Merged revisions 434705 from http://svn.asterisk.org/svn/asterisk/branches/11
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434706 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-25312 #close
 
-2015-04-11 10:10 +0000 [4cf7d0bf01]  Juergen Spies (License 6698)
+         Change-Id: I10973086671cc192a76424060d9ec8e688602845
 
-       * res/res_pjsip_t38: Add missing initialization of t38faxmaxdatagram
+2015-08-10 13:43 +0000 [6b219a866c]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * chan_dahdi.c: Flush the DAHDI write buffer after starting DTMF.
 
-         Review: https://reviewboard.asterisk.org/r/4589
+         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.
 
-         ASTERISK-24928 #close
-         Reported by: Juergen Spies
-         Tested by: Juergen Spies
-         patches:
-           pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698)
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-10 18:29 +0000 [13cd99682d]  Richard Mudgett <rmudgett@digium.com>
+         * Made dahdi_digit_begin() flush the DAHDI write buffer after requesting
+         to send a DTMF digit.
 
-       * chan_pjsip/res_pjsip/bridge_softmix/core: Improve translation path choices.
+         ASTERISK-25315 #close
+         Reported by John Hardin
 
-         With this patch, chan_pjsip/res_pjsip now sets the native formats to the
-         codecs negotiated by a call.
+         Change-Id: Ib56262c708cb7858082156bfc70ebd0a220efa6a
 
-         * The changes in chan_pjsip.c and res_pjsip_sdp_rtp.c set the native
-         formats to include all the negotiated audio codecs instead of only the
-         initial preferred audio codec and later the currently received audio
-         codec.
+2015-08-05 14:21 +0000 [fc4455216a]  Richard Mudgett <rmudgett@digium.com>
 
-         * The audio frame handling in channel.c:ast_read() is more streamlined and
-         will automatically adjust to changes in received frame formats.  The new
-         policy is to remove translation and pass the new frame format to the
-         receiver except if the translation was to a signed linear format.  A more
-         long winded version is commented in ast_read() along with some caveats.
+       * chan_dahdi.c: Lock private struct for ast_write().
 
-         * The audio frame handling in channel.c:ast_write() is more streamlined
-         and will automatically adjust any needed translation to changes in the
-         frame formats sent.  Frame formats sent can change for many reasons such
-         as a recording is being played back or the bridged peer changed the format
-         it sends.  Since it is a normal expectation that sent formats can change,
-         the codec mismatch warning message is demoted to a debug message.
+         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.
 
-         * Removed the short circuit check in
-         channel.c:ast_channel_make_compatible_helper().  Two party bridges need to
-         make channels compatible with each other.  However, transfers and moving
-         channels among bridges can result in otherwise compatible channels having
-         sub-optimal translation paths if the make compatible check is short
-         circuited.  A result of forcing the reevaluation of channel compatibility
-         is that the asterisk.conf:transcode_via_slin and codecs.conf:genericplc
-         options take effect consistently now.  It is unfortunate that these two
-         options are enabled by default and negate some of the benefits to the
-         changes in channel.c:ast_read() by forcing translation through signed
-         linear on a two party bridge.
+         * Made dahdi_write() lock the private struct before writing to the DAHDI
+         file descriptor.
 
-         * Improved the softmix bridge technology to better control the translation
-         of frames to the bridge.  All of the incoming translation is now normally
-         handled by ast_read() instead of splitting any translation steps between
-         ast_read() and the slin factory.  If any frame comes in with an unexpected
-         format then the translation path in ast_read() is updated for the next
-         frame and the slin factory handles the current frame translation.
+         ASTERISK-25315
+         Reported by John Hardin
 
-         This is the final patch in a series of patches aimed at improving
-         translation path choices.  The other patches are on the following reviews:
-         https://reviewboard.asterisk.org/r/4600/
-         https://reviewboard.asterisk.org/r/4605/
+         Change-Id: Ib4e0264cf63305ed5da701188447668e72ec9abb
 
-         ASTERISK-24841 #close
-         Reported by: Matt Jordan
+2015-08-10 18:23 +0000 [739fca6084]  Richard Mudgett <rmudgett@digium.com>
 
-         Review: https://reviewboard.asterisk.org/r/4609/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434671 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * 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.
 
-2015-04-10 16:03 +0000 [af458e2e60]  Kevin Harwell <kharwell@digium.com>
+         ASTERISK-25306
+         Reported by Mark Michelson
 
-       * chan_sip: make progressinband default to no
+         Change-Id: Ie0677f69f707503b1a37df18723bd59418085256
 
-         After the "progressinband" value setting of "never" was updated to never send a
-         183 this separated its use from the "no" value. Since "never" was the default,
-         but most users probably expect "no" this patch updates the default for the
-         "progressinband" setting to "no."
+2015-08-06 12:48 +0000 [bfb15bea06]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-24835 #close
-         Reported by: Andrew Nagy
-         Review: https://reviewboard.asterisk.org/r/4606/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434654 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-10 12:53 +0000 [88b0fa7755]  yaron nahum (License 6676)
+         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.
 
-       * res_pjsip: Add an 'auto' option for DTMF Mode
+         ASTERISK-25306 #close
+         Reported by Mark Michelson
 
-         This patch adds support for automatically detecting the type of DTMF that a
-         PJSIP endpoint supports. When the 'dtmf_mode' endpoint option is set to 'auto',
-         the channel created for an endpoint will attempt to determine if RFC 4733
-         DTMF is supported. If so, it will use that DTMF type. If not, the DTMF type
-         for the channel will be set to inband.
+         Change-Id: I4bf16f7b76a2541d10b55de82bcd14c6e542afb2
 
-         Review: https://reviewboard.asterisk.org/r/4438
+2015-08-04 16:12 +0000 [9e93ad109b]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-24706 #close
-         Reported by: yaron nahum
-         patches:
-           yaron_patch_3_Feb.diff submitted by yaron nahum (License 6676)
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434637 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-10 11:59 +0000 [16afee4651]  George Joseph <george.joseph@fairview5.com>
+         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.
 
-       * res_pjsip_config_wizard: Cleanup load unload
+         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.
 
-         While investigating other unload issues I realized that the load/unload process 
-         for the config wizard was pretty ugly so I've refactored it as follows...
+         ASTERISK-25304 #close
 
-         When the res_pjsip sorcery instance is created the config_wizard bumps it's own 
-         module reference to prevent it from unloading while the sorcery instance is 
-         still active.  When res_pjsip unloads and it's sorcery instance is destroyed, 
-         the config wizard unrefs itself which then allows itself to unload cleanly.  
-         Since the config wizard now can't load after res_pjsip or unload before it 
-         (which should have been the correct behavior all along), I was able to remove 
-         the chunks of code in both load_module and unload_module that handled that case.
+         Change-Id: I743dd9809d3e13d722df1b0509dfe34621398302
 
-         Ran the testsuite tests to insure there were no functional changes and REF_DEBUG 
-         to insure that Asterisk was shutting down cleanly with no FRACKs or leaks.
+2015-02-13 11:21 +0000 [f6dcbd9707]  Richard Mudgett <rmudgett@digium.com>
 
-         Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4610/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * Changed to put delayed BYE requests at the head of the delayed queue.
+         There is no sense in processing delayed UPDATEs and re-INVITEs when a BYE
+         has been requested.
 
-2015-04-10 11:37 +0000 [125acc52fe]  Richard Mudgett <rmudgett@digium.com>
+         * 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.
 
-       * bridge_softmix.c,channel.c: Minor code simplification and cleanup.
+         * 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.
 
-         * Made code easier to follow in bridge_softmix.c:analyse_softmix_stats()
-         and made some debug messages more helpful.
+         * 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.
 
-         * Made some debug and warning messages more helpful in
-         channel.c:set_format().
+         ASTERISK-24727 #close
+         Reported by: Mark Michelson
 
-         Review: https://reviewboard.asterisk.org/r/4607/
+         Review: https://reviewboard.asterisk.org/r/4414/
 
+         Change-Id: Ib05700c3a13ceac53b17d66099ef0d296a5e1863
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434617 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-01-16 16:12 +0000 [4350fd22c8]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-10 11:28 +0000 [a63f7ad04a]  Richard Mudgett <rmudgett@digium.com>
+       * Fix problem where a hung channel could occur on a failed blind transfer.
 
-       * translate.c: Only select audio codecs to determine the best translation choice.
+         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.
 
-         Given a source capability of h264 and ulaw, a destination capability of
-         h264 and g722 then ast_translator_best_choice() would pick h264 as the
-         best choice even though h264 is a video codec and Asterisk only supports
-         translation of audio codecs.  When the audio starts flowing, there are
-         warnings about a codec mismatch when the channel tries to write a frame to
-         the peer.
+         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.
 
-         * Made ast_translator_best_choice() only select audio codecs.
+         ASTERISK-24624 #close
+         Reported by Zane Conkle
 
-         * Restore a check in channel.c:set_format() lost after v1.8 to prevent
-         trying to set a non-audio codec.
+         Review: https://reviewboard.asterisk.org/r/4339
 
-         This is an intermediate patch for a series of patches aimed at improving
-         translation path choices for ASTERISK-24841.
+         Change-Id: I76e440e08e603c1eea40a14951e7b171c0472a55
 
-         This patch is a complete enough fix for ASTERISK-21777 as the v11 version
-         of ast_translator_best_choice() does the same thing.  However, chan_sip.c
-         still somehow tries to call ast_codec_choose() which then calls
-         ast_best_codec() with a capability set that doesn't contain any audio
-         formats for the incoming call.  The remaining warning message seems to be
-         a benign transient.
+2015-07-18 11:16 +0000 [fae081ad5b]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-21777 #close
-         Reported by: Nick Ruggles
+       * pjsip: Add rtp_timeout and rtp_timeout_hold endpoint options.
 
-         ASTERISK-24380 #close
-         Reported by: Matt Jordan
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4605/
-         ........
+         ASTERISK-25259 #close
 
-         Merged revisions 434614 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Change-Id: I3f39daaa7da2596b5022737b77799d16204175b9
 
+2015-07-09 14:17 +0000 [d66abb6746]  Mark Michelson <mmichelson@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434615 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * res_pjsip: Add rtp_keepalive endpoint option.
 
-2015-04-10 09:55 +0000 [c9791dba1f]  Matthew Jordan <mjordan@digium.com>
+         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.
 
-       * res/ari: Fix model validation for ChannelHold event
+         ASTERISK-25242 #close
+         Reported by Mark Michelson
 
-         When the ChannelHold event was added, the 'musicclass' parameter was
-         erroneously removed. This caused the ChannelHold events to be rejected as
-         they failed model validation. This patch updates the Swagger schema such that
-         it now properly reflects the event that is being created.
+         Change-Id: I683bdc206c8c7def586ecaa64dcf2b86550be3bf
 
-         Hooray for tests that catch things like this.
+2015-07-16 09:46 +0000 [1b744ab684]  Joshua Colp <jcolp@digium.com>
 
+       * chan_pjsip: Don't change formats when frame of unsupported format is received.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434597 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-10 07:39 +0000 [c39faa4729]  Y Ateya (License 6693)
+         ASTERISK-25258 #close
 
-       * channels/chan_iax2: Improve POKE expiration time calculation for lossy networks
+         Change-Id: If93d641fb6418a285928839300d7854cab8c1020
 
-         POKE is used to check for peer availability; however, in networks with packet
-         loss, the current calculations may result in POKE expiration times that are too
-         short. This patch alters the expiration/retry time logic to take into account
-         the last known qualify round trip time, as opposed to always using a static
-         value for each peer.
+2015-07-15 15:40 +0000 [147b86a8d1]  Richard Mudgett <rmudgett@digium.com>
 
-         Review: https://reviewboard.asterisk.org/r/4536
+       * strings.h: Fix issues with escape string functions.
 
-         ASTERISK-22352 #close
-         Reported by: Frederic Van Espen
+         Fixes for issues with the ASTERISK-24934 patch.
 
-         ASTERISK-24894 #close
-         Reported by: Y Ateya
-         patches:
-           poke_noanswer_duration.diff submitted by Y Ateya (License 6693)
-         ........
+         * 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.
 
-         Merged revisions 434564 from http://svn.asterisk.org/svn/asterisk/branches/11
+         * 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().
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434565 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * Updated ast_escape() and ast_escape_c() doxygen function description
+         comments to reflect reality.
 
-2015-04-09 17:35 +0000 [75c2c85962]  George Joseph <george.joseph@fairview5.com>
+         * Added some more unit test cases to /main/strings/escape to cover the
+         empty source string issues.
 
-       * res_pjsip_phoneprov_provider: Fix reference leak on unload
+         ASTERISK-25255 #close
+         Reported by: Richard Mudgett
 
-         res_pjsip_phoneprov_provider was leaking references to phoneprov objects due to 
-         a missing OBJ_NODATA in an ao2_callback in load_users().  Rather than adding the 
-         OBJ_NODATA, I changed load_users to use a more straightforward ao2_iterator.  
-         This plugged the leak but exposed an unload order issue between 
-         res_pjsip_phoneprov_provider, res_phoneprov and res_pjsip.
+         Change-Id: Id77fc704600ebcce81615c1200296f74de254104
 
-         res_pjsip_phoneprov_provider unloads first, then res_phoneprov, then res_pjsip.  
-         Since res_pjsip_phoneprov_provider uses res_pjsip's sorcery instance, when it 
-         unloads, it's objects are still in the sorcery instance.  When res_pjsip 
-         unloads, it destroys all its objects including res_pjsip_phoneprov_provider's.  
-         The phoneprov destructor then attempts to unregister the extension from 
-         res_phoneprov but because res_phoneprov is already cleaned up, its users 
-         container is gone and we get a FRACK.
+2015-07-14 14:36 +0000 [131f6ef8f5]  Richard Mudgett <rmudgett@digium.com>
 
-         Simple solution, check for the NULL users container before attempting to remove 
-         the entry. Duh.
+       * res_parking: Fix crash if ATTENDEDTRANSFER set empty before Park.
 
-         Ran tests/res_phoneprov/res_phoneprov_provider.  No leaks in 
-         res_pjsip_phoneprov_provider and no FRACKs.
+         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.
 
-         Reported-by: Corey Farrell
-         Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4608/
-         ASTERISK-24935 #close
+         * 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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434545 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-07-09 09:18 +0000 [23b7b109c2]  Joshua Colp <jcolp@digium.com>
 
-2015-04-09 17:31 +0000 [73c286a393]  George Joseph <george.joseph@fairview5.com>
+       * bridge_native_rtp.c: Don't start native RTP bridging after attended transfer.
 
-       * loader/main: Don't set ast_fully_booted until deferred reloads are processed
+         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.
 
-         Until we have a true module management facility it's sometimes necessary for one 
-         module to force a reload on another before its own load is complete.  If 
-         Asterisk isn't fully booted yet, these reloads are deferred.  The problem is 
-         that asterisk reports fully booted before processing the deferred reloads which 
-         means Asterisk really isn't quite ready when it says it is.
+         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.
 
-         This patch moves the report of fully booted after the processing of the deferred 
-         reloads is complete.
+         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.
 
-         Since the pjsip stack has the most number of related modules, I ran the 
-         channels/pjsip testsuite to make sure there aren't any issues.  All tests 
-         passed.
+         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.
 
-         Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4604/
+         ASTERISK-25240 #close
 
+         Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2
 
+2015-05-26 07:44 +0000 [0fcc530dc7]  Joshua Colp <jcolp@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434544 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * sorcery: Fix cache creation callback.
 
-2015-04-09 17:03 +0000 [5737650a67]  Kevin Harwell <kharwell@digium.com>
+         The cache creation callback function expects to receive a sorcery_details
+         structure and not just a standalone object.
 
-       * res_pjsip: add CLI command to show global and system configuration
+         Change-Id: Id2a9e5f271c466686e6d0def461fa50c8b2cae53
 
-         Added a new CLI command for res_pjsip that shows both global and system
-         configuration settings: pjsip show settings
+2015-07-08 14:39 +0000 [c8d53f2372]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-24918 #close
-         Reported by: Scott Griepentrog
-         Review: https://reviewboard.asterisk.org/r/4597/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434527 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I27b3d833acda9dd1770fdbe594964197b93779b0
 
-2015-04-09 11:07 +0000 [1695a5b85f]  Richard Mudgett <rmudgett@digium.com>
+2015-07-06 09:24 +0000 [a72cf6ce81]  Joshua Colp <jcolp@digium.com>
 
-       * chan_iax2.c: Fix ref leak in iax2_request().
+       * res_sorcery_memory_cache: Execute stale unit test last.
 
-         * Increased warning message format capability string buffer size in
-         iax2_request().
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4601/
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434510 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: Ifd6550a949613be774b75fa5db12c02110f82c4a
 
-2015-04-09 10:54 +0000 [92c1688edb]  Richard Mudgett <rmudgett@digium.com>
+2015-06-17 07:00 +0000 [e0cd8216bb]  Joshua Colp <jcolp@digium.com>
 
-       * bridge_native_rtp.c: Defer allocation and check if it fails in native_rtp_bridge_compatible().
+       * res_sorcery_memory_cache: Remove 'prefetch' option.
 
-         Review: https://reviewboard.asterisk.org/r/4601/
+         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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434508 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I9ce6aa3e5c6c5bc3c5baa8ff90fa036d73939895
 
-2015-04-09 10:42 +0000 [2679d0100a]  yaron nahum (License 6676)
+2015-06-02 10:20 +0000 [8b2bad7740]  Joshua Colp <jcolp@digium.com>
 
-       * res/res_pjsip_dlg_options: Add a module to handle in-dialog OPTIONS requests
+       * test_sorcery_memory_cache_thrash: Add unit tests for thrashing the memory cache.
 
-         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.
+         This change adds a CLI command which can perform memory cache thrashing as well
+         as unit tests which perform thrashing under the following configurations:
 
-         ASTERISK-24862 #close
-         Reported by: yaron nahum
-         patches:
-           res_pjsip_dlg_options.c submitted by yaron nahum (License 6676)
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434506 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-25067
+         Reported by: Matt Jordan
 
-2015-04-09 07:56 +0000 [6ba6e3dffd]  dkdegroot (License 6600)
+         Change-Id: I8c8ceff977332c80ed4a31f10d694d48552b2f78
 
-       * clang compiler warnings: Fix autological comparisons
+2015-06-04 13:11 +0000 [8575c4f18d]  Joshua Colp <jcolp@digium.com>
 
-         This fixes autological comparison warnings in the following:
-          * chan_skinny: letohl may return a signed or unsigned value, depending on the
-            macro chosen
-          * func_curl: Provide a specific cast to CURLoption to prevent mismatch
-          * cel: Fix enum comparisons where the enum can never be negative
-          * enum: Fix comparison of return result of dn_expand, which returns a signed
-            int value
-          * event: Fix enum comparisons where the enum can never be negative
-          * indications: tone_data.freq1 and freq2 are unsigned, and hence can never be
-            negative
-          * presencestate: Use the actual enum value for INVALID state
-          * security_events: Fix enum comparisons where the enum can never be negative
-          * udptl: Don't bother to check if the return value from encode_length is less
-            than 0, as it returns an unsigned int
-          * translate: Since the parameters are unsigned int, don't bother checking
-            to see if they are negative. The cast to unsigned int would already blow
-            past the matrix bounds.
-          * res_pjsip_exten_state: Use a temporary value to cache the return of
-            ast_hint_presence_state
-          * res_stasis_playback: Fix enum comparisons where the enum can never be
-            negative
-          * res_stasis_recording: Add an enum value for the case where the recording
-            operation is in error; fix enum comparisons
-          * resource_bridges: Use enum value as opposed to -1
-          * resource_channels: Use enum value as opposed to -1
+       * res_sorcery_memory_cache: Implement expire_on_reload option.
 
-         Review: https://reviewboard.asterisk.org/r/4533
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4533.patch submitted by dkdegroot (License 6600)
-         ........
+         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.
 
-         Merged revisions 434469 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-25067
+         Reported by: Matt Jordan
 
+         Change-Id: Id46aa1957d660556700e689e195eed57c989b85e
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434470 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-06-04 05:33 +0000 [da52527136]  Joshua Colp <jcolp@digium.com>
 
-2015-04-08 21:05 +0000 [e05c8ae68e]  Stefan Engström (License 6691)
+       * res_sorcery_memory_cache: Add test event when a refresh occurs.
 
-       * apps/app_queue: Prevent possible crash when evaluating queue penalty rules
+         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.
 
-         Although it only occurred once, a crash occurred when a queue attempted to
-         evaluate a queue penalty rule that appeared to have already been destroyed.
-         In many locations in app_queue, a test is done to see if qe->pr is NULL;
-         however, when we dispose of a queue's penalty rules, we don't set the pointer
-         to NULL after free'ing it. This patch does that to prevent any dangling
-         pointers from lingering on the queue object.
+         ASTERISK-25067
+         Reported by: Matt Jordan
 
-         Review: https://reviewboard.asterisk.org/r/4522
+         Change-Id: Iaa6b8d2d6bab7f99ee08e1c8908b8272a8987e65
 
-         ASTERISK-23319 #close
-         Reported by: Vadim
-         patches:
-           rb4552.patch submitted by Stefan Engström (License 6691)
-         ........
+2015-05-26 07:34 +0000 [f596b4a85c]  Joshua Colp <jcolp@digium.com>
 
-         Merged revisions 434448 from http://svn.asterisk.org/svn/asterisk/branches/11
+       * res_sorcery_memory_cache: Add CLI commands and AMI actions.
 
+         This change adds the following CLI commands and AMI actions:
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         sorcery memory cache show
+         sorcery memory cache dump
+         sorcery memory cache expire
+         sorcery memory cache stale
 
-2015-04-08 13:15 +0000 [f21b45db49]  Jonathan Rose <jrose@digium.com>
+         SorceryMemoryCacheExpire
+         SorceryMemoryCacheExpireObject
+         SorceryMemoryCacheStale
+         SorceryMemoryCacheStaleObject
 
-       * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication
+         These allow both examination and manipulation of sorcery memory
+         caches from external sources.
 
-         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.
+         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-24933 #close
-         Reported by: Jonathan Rose
-         Review: https://reviewboard.asterisk.org/r/4577/
+         ASTERISK-25067
+         Reported by Matt Jordan
 
+         Change-Id: I68e03cfd8c34b5e07f4b6ee4fd93a3f4a00a3d9e
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434425 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-05-26 13:01 +0000 [9c2de310be]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-08 13:14 +0000 [4441bb6a25]  Richard Mudgett <rmudgett@digium.com>
+       * res_sorcery_memory_cache: Add support for refreshing stale objects.
 
-       * Bridging: Eliminate the unnecessary make channel compatible with bridge operation.
+         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.
 
-         When a channel enters the bridging system it is first made compatible with
-         the bridge and then the bridge technology makes the channel compatible
-         with the technology.  For all but the DAHDI native and softmix bridge
-         technologies the make channel compatible with the bridge step is an
-         effective noop because the other technologies allow all audio formats.
-         For the DAHDI native bridge technology it doesn't matter because it is not
-         an initial bridge technology and chan_dahdi allows only one native format
-         per channel.  For the softmix bridge technology, it is a noop at best and
-         harmful at worst because the wrong translation path could be setup if the
-         channel's native formats allow more than one audio format.
+         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.
 
-         This is an intermediate patch for a series of patches aimed at improving
-         translation path choices.
+         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.
 
-         * Removed code dealing with the unnecessary step of making the channel
-         compatible with the bridge.
+         ASTERISK-25067
+         Reported by Matt Jordan
 
-         ASTERISK-24841
-         Reported by: Matt Jordan
+         Change-Id: I9bd7c049adf6939bfe2899f393c2bfbbf412d217
 
-         Review: https://reviewboard.asterisk.org/r/4600/
+2015-05-20 17:35 +0000 [9a7fccc50c]  Joshua Colp <jcolp@digium.com>
 
+       * res_sorcery_memory_cache: Add support for object_lifetime_maximum.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         This makes the "object_lifetime_maximum" option operational.
 
-2015-04-08 11:40 +0000 [f767440906]  mhej (license 6085)
+         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.
 
-       * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN.
+         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.
 
-         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.
+         If during these two operations no additional objects exist in the
+         cache then no task is scheduled.
 
-         ASTERISK-24847 #close
-         Reported by: Maciej Szmigiero
-         Patches:
-          asterisk-null-in-cn.patch submitted by mhej (license 6085)
-         ........
+         An additional unit test has been added which verifies this
+         functionality.
 
-         Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8
-         ........
+         ASTERISK-25067
+         Reported by: Matt Jordan
 
-         Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Change-Id: I87409674674a508e7717ee20739ca15cec6ba7b6
 
+2015-05-20 15:19 +0000 [9ae9221d2b]  Mark Michelson <mmichelson@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434384 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * res_sorcery_memory_cache: Add support for maximum_objects.
 
-2015-04-08 11:23 +0000 [1712d16825]  Richard Mudgett <rmudgett@digium.com>
+         This makes the "maximum_objects" option operational.
 
-       * format_cache.c: Add missing slin12 format to ast_format_cache_is_slinear().
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434357 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-08 07:33 +0000 [ae39dd1f46]  Matthew Jordan <mjordan@digium.com>
+         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.
 
-       * chan_iax2: Fix compilation issue due to funky merge
+         ASTERISK-25067 #close
+         Reported by Matt Jordan
 
-         Don't mix declarations and code
+         Change-Id: I490658830e9c4cbf0b3051e4cdc4913cf9f1b73a
 
+2015-05-16 17:02 +0000 [e4d42119b5]  Joshua Colp <jcolp@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434314 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * res_sorcery_memory_cache: Add basic module implementation.
 
-2015-04-08 07:00 +0000 [05397ad01e]  Jaco Kroon (License 5671)
+         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.
 
-       * chan_iax2: Fix crash caused by unprotected access to iaxs[peer->callno]
+         Objects can be added, updated, deleted, and retrieved from the memory
+         cache. Automatic expiration and stale handling will be added in the
+         future.
 
-         This patch fixes an access to the peer callnumber that is unprotected by a
-         corresponding mutex. The peer->callno value can be changed by multiple threads,
-         and all data inside the iaxs array must be procted by a corresponding lock
-         of iaxsl.
+         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.
 
-         The patch moves the unprotected access to a location where the mutex is
-         safely obtained.
+         ASTERISK-25067 #close
+         Reported by: Matt Jordan
 
-         Review: https://reviewboard.asterisk.org/r/4599/
+         Change-Id: Id8a6a357ef5a83d466f81eee56a67d13eeb118b9
 
-         ASTERISK-21211 #close
-         Reported by: Jaco Kroon
-         patches:
-           asterisk-11.2.1-iax2_poke-segfault.diff submitted by Jaco Kroon (License 5671)
-         ........
+2015-07-02 17:03 +0000 [49a37f22e1]  Jonathan Rose <jrose@digium.com>
 
-         Merged revisions 434291 from http://svn.asterisk.org/svn/asterisk/branches/11
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434292 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I1c2cf6d5a8589104154a86538ecd3f62a2694681
+2015-04-22 16:22 +0000 [f58c0acfa2]  gtjoseph <george.joseph@fairview5.com>
 
-2015-04-08 06:53 +0000 [be13c72142]  Valentin Vidić (License 6697)
+       * res/res_corosync: Always decline module load, instead of failing
 
-       * chan_sip: Handle IPv4 mapped IPv6 clients when NAT is enabled
+         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.
 
-         When udpbindaddr is set to the IPv6 bind all address of '::', Asterisk will
-         attempt to handle both IPv4 and IPv6 addresses, although the information will
-         be stored in a struct with an AF_INET6 address type. However, the current
-         NAT handling code won't handle the IPv4 mapped IPv6 addresses correctly.
-         This patch adds an additional check for the mapped address case, allowing
-         the NAT code to handle clients even when the address is IPv6.
+         res_corosync is really not that important.
 
-         Review: https://reviewboard.asterisk.org/r/4563/
+         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.
 
-         ASTERISK-18032 #close
-         Reported by: Christoph Timm
-         patches:
-           nat_with_ipv6.diff submitted by Valentin Vidić (License 6697)
-         ........
+         Note that this issue was keeping Asterisk unit tests from running on
+         certain build agents.
 
-         Merged revisions 434288 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Change-Id: I252249e81fb9b1a68e0da873f54f47e21d648f0f
 
+2015-06-29 12:45 +0000 [9cbd76630a]  Mark Michelson <mmichelson@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434289 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * res_sorcery_realtime: Fix leak of sorcery object type.
 
-2015-04-08 06:44 +0000 [f324870dab]  dkdegroot (License 6600)
+         This prevents a leak of a sorcery object type when realtime sorcery
+         objects are retrieved by fields or when multiple objects are retrieved.
 
-       * clang compiler warnings: Fix pointer-bool-converesion warnings
+         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.
 
-         This patch fixes several warnings pointed out by the clang compiler.
-         * chan_pjsip: Removed check for data->text, as it will always be non-NULL.
-         * app_minivm: Fixed evaluation of etemplate->locale, which will always
-           evaluate to 'true'. This patch changes the evaluation to use
-           ast_strlen_zero.
-         * app_queue:
-           - Fixed evaluation of qe->parent->monfmt, which always evaluates to
-             true. Instead, we just check to see if the dereferenced pointer
-             evaluates to true.
-           - Fixed evaluation of mem->state_interface, wrapping it with a call to
-             ast_strlen_zero.
-         * res_smdi: Wrapped search_msg->mesg_desk_term with calls to ast_strlen_zero.
+         ASTERISK-25165 #close
+         Reported by Corey Farrell
 
-         Review: https://reviewboard.asterisk.org/r/4541
+         Change-Id: I625c3b50eee4576670b7eeb013c81ad043b4b4f8
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4541.patch submitted by dkdegroot (License 6600)
-         ........
+2015-06-26 16:12 +0000 [8ba3de43ad]  Mark Michelson <mmichelson@digium.com>
 
-         Merged revisions 434285 from http://svn.asterisk.org/svn/asterisk/branches/11
+       * res_pjsip_nat: Adjust when contact should be rewritten.
 
+         A previous change made the contact only get rewritten if the dialog's
+         route set was not marked frozen. Unfortunately, while the intent of this
+         is correct, the dialog's route set actually gets marked as frozen
+         earlier than expected, especially for UAS dialogs.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434286 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Instead, the idea is that the contact needs to not be rewritten if there
+         is a pre-existing route set on the dialog. This is now accomplished by
+         checking the dialog's route set list instead of checking if the route
+         set is frozen.
 
-2015-04-07 14:38 +0000 [a6aed7f6f6]  Scott Griepentrog <sgriepentrog@digium.com>
+         Doing this causes some broken tests to begin passing again.
 
-       * Revert accidental change in r434261
+         ASTERISK-25196
+         Reported by Mark Michelson
 
+         Change-Id: I525ab251fd40a52ede327a52a2810a56deb0529e
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434262 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-06-26 10:41 +0000 [20f50131d7]  Mark Michelson <mmichelson@digium.com>
 
-2015-04-07 14:35 +0000 [0584e29300]  Scott Griepentrog <sgriepentrog@digium.com>
+       * res_pjsip_refer: Prevent sending duplicate headers.
 
-       * pjsip: resolve compatibility problem with ast_sip_session
+         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.
 
-         A change in r430179 inserted a variable near the top of a
-         structure caused a problem when running DPMA in a version
-         of Asterisk compiled across the change.  This patch moves
-         the new variable to the end of the structure, eliminating
-         the problem.
+         ASTERISK-25204 #close
+         Reported by Mark Michelson
 
-         Review: https://reviewboard.asterisk.org/r/4574/
-         ........
+         Change-Id: I59fb5c08b4d253c0dba9ee3d3950b5025358222d
 
-         Merged revisions 433944 from http://svn.asterisk.org/svn/asterisk/branches/13
+2015-06-23 17:43 +0000 [0d535df734]  Mark Michelson <mmichelson@digium.com>
 
+       * res_pjsip_nat: Rewrite route set when required.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434261 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-07 11:40 +0000 [d754f70239]  Kevin Harwell <kharwell@digium.com>
+         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:
 
-       * bridge.c: Hangup attended transfer target after it has been swapped out
+         * Set R-URI of the ACK to sip:bar.
+         * Add Route headers for sip:foo and sip:baz, in that order.
 
-         After completing an attended transfer the transfer target channel (the one that
-         gets swapped out) was not being hung up after leaving the bridge. This resulted
-         in a channel possibly being left around. Added an explicit softhangup for the
-         channel in question after the transfer is successfully completed in order to
-         make sure the channel is hung up.
+         However, the rewrite_contact option resulted in our rewriting the
+         Contact header on the 200 OK to sip:foo. The result was:
 
-         ASTERISK-24782 #close
-         Reported by: John Bigelow
-         Review: https://reviewboard.asterisk.org/r/4575/
+         * 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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434240 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I9702157c3603a2d0bd8a8215ac27564d366b666f
+2015-06-23 14:34 +0000 [3332869b48]  Richard Mudgett <rmudgett@digium.com>
 
-2015-04-07 10:33 +0000 [c516981dc7]  Mark Michelson <mmichelson@digium.com>
+       * AMI: Add Linkedid to the standard channel snapshot AMI event headers.
 
-       * Do not queue message requests that we do not respond to.
+         ASTERISK-25189 #close
+         Reported by: John Hardin
 
-         If we receive a MESSAGE request that we cannot send a response
-         to, we should not send the incoming MESSAGE to the dialplan.
+         Change-Id: I2b1778c3fdc1dca0ed55db4e3a639eddfb16c2ac
 
-         This commit should help the bouncing message_retrans test to
-         pass consistently.
+2015-06-17 05:04 +0000 [a35d6feae2]  Joshua Colp <jcolp@digium.com>
 
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434218 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-25180 #close
 
-2015-04-07 10:21 +0000 [ab803ec342]  Matthew Jordan <mjordan@digium.com>
+         Change-Id: Id847b47de4b8b3ab8858455ccc2f07b0f915f252
 
-       * ARI: Add the ability to intercept hold and raise an event
+2015-06-10 18:28 +0000 [75589c4a3b]  Joshua Colp <jcolp@digium.com>
 
-         For some applications - such as SLA - a phone pressing hold should not behave
-         in the fashion that the Asterisk core would like it to. Instead, the hold
-         action has some application specific behaviour associated with it - such as
-         disconnecting the channel that initiated the hold; only playing MoH to channels
-         in the bridge if the channels are of a particular type, etc.
+       * bridge: When performing a blonde transfer update connected line information.
 
-         One way of accomplishing this is to use a framehook to intercept the
-         hold/unhold frames, raise an event, and eat the frame. Tasty. This patch
-         accomplishes that using a new dialplan function, HOLD_INTERCEPT.
+         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.
 
-         In addition, some general cleanup of raising hold/unhold Stasis messages was
-         done, including removing some RAII_VAR usage.
+         This change does the following to resolve this:
 
-         Review: https://reviewboard.asterisk.org/r/4549/
+         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.
 
-         ASTERISK-24922 #close
+         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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: Ibb8798184a1dab3ecd35299faecc420034adbf20
 
-2015-04-06 21:09 +0000 [488f093e97]  dkdegroot (License 6600)
+2015-06-11 14:39 +0000 [8142b922ab]  Richard Mudgett <rmudgett@digium.com>
 
-       * clang compiler warnings: Fix sometimes-initialized warning in func_math
+       * app_directory: Fix crash when using the alias option 'a'.
 
-         This patch fixes a bug in a unit test in func_math where a variable could be
-         passed to ast_free that wasn't allocated. This patch corrects the issue and
-         ensures that we only attempt to free a variable if we previously allocated
-         it.
+         The voicemail.conf mailbox key/value pair is defined as:
+         <mailbox>=[<password>[,<full-name>[,<email>[,<pager>[,<options>]]]]]
+         Where all fields in the value including the field values are optional.
 
-         Review: https://reviewboard.asterisk.org/r/4552
+         Since the parsing code for the mailbox key/value pair is sloppy, this
+         patch tightens the parsing for the directory information.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4552.patch submitted by dkdegroot (License 6600)
-         ........
+         * Renamed the 'pos' and 'bufptr' variables to 'name' and 'options'
+         respectively in search_directory_sub().  Those names make more sense.
 
-         Merged revisions 434190 from http://svn.asterisk.org/svn/asterisk/branches/11
+         * 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
+         <mailbox>=<password>,<name> when the 'a' option is used.  If there were no
+         fields after the name then the 'options' pointer was not checked for NULL.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434191 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * Fix users.conf alias processing if the 'a' option is used.  The wrong
+         variable was used.
 
-2015-04-06 21:03 +0000 [c027133f6d]  dkdegroot (License 6600)
+         ASTERISK-25087 #close
+         Reported by: Chet Stevens
 
-       * clang compiler warnings: Fix non-literal-null-conversion warnings
+         Change-Id: I86052ea77307beddddba5279824d39dc0d593374
 
-         Clang will flag errors when a char pointer is set to '\0', as opposed to a
-         value that the char pointer points to. This patch fixes this warning
-         in a variety of locations.
+2015-06-08 12:28 +0000 [ca2174bb23]  Matt Jordan <mjordan@digium.com>
 
-         Review: https://reviewboard.asterisk.org/r/4551
+       * .version: Update for certified/13.1-cert3-rc1
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4551.patch submitted by dkdegroot (License 6600)
-         ........
+2015-06-08 12:28 +0000 [2ef2c12fae]  Matt Jordan <mjordan@digium.com>
 
-         Merged revisions 434187 from http://svn.asterisk.org/svn/asterisk/branches/11
+       * .lastclean: Update for certified/13.1-cert3-rc1
 
+2015-06-08 12:28 +0000 [5032390639]  Matt Jordan <mjordan@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * realtime: Add database scripts for certified/13.1-cert3-rc1
 
-2015-04-06 14:23 +0000 [2270c40d33]  Kevin Harwell <kharwell@digium.com>
+2015-06-08 09:43 +0000 [2bf6fd263a]  Kevin Harwell <kharwell@digium.com>
 
-       * res_pjsip: config option 'timers' can't be set to 'no'
+       * AMI: Escape string values.
 
-         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.
+         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.
 
-         ASTERISK-24910 #close
-         Reported by: Ray Crumrine
-         Review: https://reviewboard.asterisk.org/r/4582/
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434131 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-24934 #close
+         Reported by: warren smith
 
-2015-04-06 14:02 +0000 [95de71f247]  George Joseph <george.joseph@fairview5.com>
+         Change-Id: Ib55a5b84fe0481b0f2caaaab68c566f392c0aac0
 
-       * build: Fixes for gcc 5 compilation
+2015-06-03 17:41 +0000 [5f954e1e00]  Mark Michelson <mmichelson@digium.com>
 
-         These are fixes for compilation under gcc 5.0...
+       * res_pjsip: Prevent access of NULL channels.
 
-         chan_sip.c:    In parse_request needed to make 'lim' unsigned.
-         inline_api.h:  Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 
-                        inline semantics (same as clang).
-         ccss.c:        In ast_cc_set_parm, needed to fix weird comparison.
-         dsp.c:         Needed to work around a possible compiler bug.  It was throwing 
-                        an array-bounds error but neither
-                        sgriepentrog, rmudgett nor I could figure out why.
-         manager.c:     In action_atxfer, needed to correct an array allocation.
+         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.
 
-         This patch will go to 11, 13, trunk.
+         While several places have been amended to deal with NULL channels, there
+         were still a couple of places that needed updating.
 
-         Review: https://reviewboard.asterisk.org/r/4581/
-         Reported-by: Jeffrey Ollie
-         Tested-by: George Joseph
-         ASTERISK-24932 #close
-         ........
+         res_pjsip_dtmf_info.c: When handling incoming INFO requests, we need to
+         return early if there is no channel on the session.
 
-         Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11
+         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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: Id1a75ffc3d0eaa168b0b28188fb54d6cf9fc47a9
 
-2015-04-06 13:18 +0000 [d54ccda3b1]  dkdegroot (License 6600)
+2015-02-17 09:34 +0000 [c994a3bfa0]  Richard Mudgett <rmudgett@digium.com>
 
-       * clang compiler warnings: Remove large chunks of unused code from extconf
+       * res_pjsip_refer: Fix crash from a REFER and BYE collision.
 
-         This patch fixes a warning caught by clang, in which it detected that large
-         chunks of extconf were unused. Frankly, I wish we could pretend that all of
-         extconf was unused, but alas, that is not yet the case.
+         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.
 
-         A few extraneous functions in the parking tests were removed as well, for
-         the same reason.
+         * Made check the session channel pointer before processing an incoming
+         REFER request in res_pjsip_refer.
 
-         Review: https://reviewboard.asterisk.org/r/4553
+         * 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.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4553.patch submitted by dkdegroot (License 6600)
-         ........
+         * Made res_pjsip_messaging respond to a message body too large with a 413
+         instead of ignoring it.
 
-         Merged revisions 434093 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24700 #close
+         Reported by: Zane Conkle
 
+         Review: https://reviewboard.asterisk.org/r/4417/
+         ........
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434097 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Merged revisions 431898 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-04-06 13:03 +0000 [0ecd472e4f]  dkdegroot (License 6600)
+         Change-Id: I57878adc0846dd942a699ad36dcec9cba5e57994
 
-       * clang compiler warnings: Fix sometimes-uninitialized warning in pbx_config
+2015-04-06 14:23 +0000 [1e98fcac6b]  Kevin Harwell <kharwell@digium.com>
 
-         This patch fixes a warning caught by clang, in which a char pointer could be
-         assigned to before it was initialized. The patch re-organizes the code to
-         ensure that the pointer is always initialized, even on off nominal paths.
+       * res_pjsip: config option 'timers' can't be set to 'no'
 
-         Review: https://reviewboard.asterisk.org/r/4529
+         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-24917
-         Reported by: dkdegroot
-         patches:
-           rb4529.patch submitted by dkdegroot (License 6600)
+         ASTERISK-24910 #close
+         Reported by: Ray Crumrine
+         Review: https://reviewboard.asterisk.org/r/4582/
          ........
 
-         Merged revisions 434090 from http://svn.asterisk.org/svn/asterisk/branches/11
-
+         Merged revisions 434131 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434091 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: Ibbc25d4592aabf7596ef473447d630961f88c217
 
-2015-04-06 12:52 +0000 [4e7be5b2dc]  dkdegroot (License 6600)
+2015-05-26 13:56 +0000 [bd32327353]  Richard Mudgett <rmudgett@digium.com>
 
-       * clang compiler warnings: Fix format specified in framehook
+       * res_pjsip_session: Fix in-dialog authentication.
 
-         This patch fixes an invalid format specifier used in the formatting of an
-         ERROR message in the framehook code. The format specifier specifies a
-         type of 'unsigned short', but the argument passed to it is of type 'int'.
-         The patch changes the format specifier to 'i'.
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4540
+         * 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.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4535.patch submitted by dkdegroot (License 6600)
-         ........
+         * Pulled needed code from res/res_pjsip/pjsip_outbound_auth.c in
+         preparation for removing the file.  The generic outbound authentication
+         code did not work as well as anticipated.
 
-         Merged revisions 434087 from http://svn.asterisk.org/svn/asterisk/branches/11
+         * 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
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I12bdd7ddccc819b4ce4b091e826d1e26334601b0
 
-2015-04-06 11:02 +0000 [2443b40341]  Mark Michelson <mmichelson@digium.com>
+2015-05-12 17:45 +0000 [b81353a0ec]  Jonathan Rose <jrose@digium.com>
 
-       * Ensure that a non-zero sample rate is returned for all formats.
+       * app_voicemail: fix moving when old messages full
 
-         Versions of Asterisk prior to 12 defaulted to 8000 as a sample rate
-         if one was not provided by a format. In Asterisk 13, this was removed.
-         The result was that some calculations which involve dividing by the
-         sample rate resulted in dividing by 0. The fix being put in place
-         here is to have the same default fallback that was present in previous
-         versions of Asterisk.
+         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-24914 #close
-         Reported by Marcello Ceschia
+         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 <rmudgett@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434046 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision.
 
-2015-04-06 10:16 +0000 [b1102cd642]  Corey Farrell <git@cfware.com>
+         If an ISDN call is hungup by both sides at the same time a crash could
+         happen.
 
-       * res_pjsip_phoneprov_provider: Revert 433996 / 433997.
+         * 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.
 
-         res_pjsip_phoneprov_provider is using ao2_callback with OBJ_MULTIPLE, then
-         ignoring the return.  OBJ_NODATA flag was to prevent a reference leak, but
-         this caused the module to FRACK on unload.  Revert change until this can
-         be investigated further.
+         ASTERISK-21893 #close
+         Reported by:  Alexandr Gordeev
 
-         ASTERISK-24935
-         Reported by: Corey Farrell
-         Review: https://reviewboard.asterisk.org/r/4578/
+         Change-Id: Ica3e266ebc7a894b41d762326f08653e1904bb9a
 
+2015-04-16 10:51 +0000 [b764454d4d]  Kevin Harwell <kharwell@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * bridge.c: NULL app causes crash during attended transfer
 
-2015-04-06 09:50 +0000 [0f25076f67]  Mark Michelson (license #5049)
+         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.
 
-       * ParkedCall: Don't allow dialplan fallthrough after retrieving parked call.
+         ASTERISK-24869 #close
+         Reported by: viniciusfontes
+         Review:
 
-         This is a change to align behavior with that of Asterisk 11 and previous versions.
-         In those versions, if a parked call were retrieved, and the call ended, the parked
-         call retriever would be hung up after the ParkedCall application ran. Prior to this
-         patch, in Asterisk 13, the same situation would result in the parked call retriever
-         falling through to additional priorities in the extension where the ParkedCall
-         application was called. With this patch, the behavior between Asterisk 11 and 13
-         aligns.
+         Change-Id: I5134b84c4524906d8148817719d76ffb306488ac
 
-         ASTERISK-24899 #close
-         Reported by Malcolm Davenport
-         Patches:
-               ASTERISK-24899.patch uploaded by Mark Michelson(license #5049)
+2015-05-06 13:24 +0000 [6433b697ae]  Joshua Colp <jcolp@digium.com>
 
+       * res_pjsip_exten_state: Fix race condition between sending NOTIFY and termination
 
+         The res_pjsip_exten_state module currently has a race condition between
+         processing the extension state callback from the PBX core and processing
+         the subscription shutdown callback from res_pjsip_pubsub. There is currently
+         no synchronization between the two. This can present a problem as while
+         the SIP subscription will remain valid the tree it points to may not.
+         This is in particular a problem as a task to send a NOTIFY may get queued
+         which will try to use the tree that may no longer be valid.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434022 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         This change does the following to fix this problem:
 
-2015-04-05 07:53 +0000 [709fa14b44]  Corey Farrell <git@cfware.com>
+         1. All access to the subscription tree is done within the task that
+         sends the NOTIFY to ensure that no other thread is modifying or
+         destroying the tree. This task executes on the serializer for the
+         subscriptions.
 
-       * res_pjsip_phoneprov_provider: Fix leaked OBJ_MULTIPLE iterator.
+         2. A reference to the subscription serializer is kept to ensure it
+         remains valid for the lifetime of the extension state subscription.
 
-         res_pjsip_phoneprov_provider was using ao2_callback with OBJ_MULTIPLE, then
-         ignoring the return.  Added OBJ_NODATA flag to prevent a reference leak.
+         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-24935 #close
-         Reported by: Corey Farrell
-         Review: https://reviewboard.asterisk.org/r/4578/
+         ASTERISK-25057 #close
+         Reported by: Matt Jordan
 
+         Change-Id: I0b3cd2fac5be8d9b3dc5e693aaa79846eeaf5643
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433996 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-01-19 07:18 +0000 [bf31a486cb]  Joshua Colp <jcolp@digium.com>
 
-2015-04-03 16:53 +0000 [1ee8424f27]  Mark Michelson <mmichelson@digium.com>
+       * res_pjsip / res_pjsip_multihomed: Use the correct transport and addressing information on UAS sessions.
 
-       * res_pjsip_messaging: Serialize outbound SIP MESSAGEs
+         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.
 
-         Outbound SIP MESSAGEs had the potential to be sent out
-         of order from how they were specified in a set of
-         dialplan steps.
+         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.
 
-         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-24615 #close
+         Reported by: David Justl
 
-         ASTERISK-24937 #close
-         Reported by Mark Michelson
+         Change-Id: I5b57362201cc8c6555834ec8707e9fbddeff7904
 
-         Review: https://reviewboard.asterisk.org/r/4579
+2015-05-04 12:16 +0000 [7c687c8e54]  Joshua Colp <jcolp@digium.com>
 
+       * stasis: Fix dial masquerade datastore lifetime
 
+         A recent change went into Asterisk which added reference counts to the
+         channels stored in a dial masquerade datastore. Unfortunately this
+         included a reference to the caller in a dialing operation. While all
+         of the dialed targets have the datastore removed from them upon dialing
+         completion this did not occur for the caller, causing it to have a
+         reference to itself that could go never go away (as it depended on
+         the destruction of the datastore which only happened when the channel
+         was destroyed). This resulted in the caller channel remaining on the
+         system despite it having hung up.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433968 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         This change does the following to fix this issue:
 
-2015-04-02 09:56 +0000 [169e57d2e0]  Scott Griepentrog <sgriepentrog@digium.com>
+         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.
 
-       * pjsip: resolve compatibility problem with ast_sip_session
+         ASTERISK-25025 #close
 
-         A change in r430179 inserted a variable near the top of a
-         structure caused a problem when running DPMA in a version
-         of Asterisk compiled across the change.  This patch moves
-         the new variable to the end of the structure, eliminating
-         the problem.
+         Change-Id: I1ef4ca5ca04980028604cc2af5d2992ac3431b3f
 
-         Review: https://reviewboard.asterisk.org/r/4574/
+2015-04-29 14:29 +0000 [0602409c89]  Richard Mudgett <rmudgett@digium.com>
 
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433944 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-04-02 05:31 +0000 [1eb0c5f4e8]  Corey Farrell <git@cfware.com>
+         * 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.
 
-       * Tell menuselect that MALLOC_DEBUG conflicts with DEBUG_CHAOS.
+         ASTERISK-25034 #close
+         Reported by: Richard Mudgett
 
-         DEBUG_CHAOS was marked as conflicting with MALLOC_DEBUG, but
-         for this to work correctly MALLOC_DEBUG must also be marked
-         as conflicting with DEBUG_CHAOS.
+         Change-Id: Ib8b17a438799920f4a2038826ff99a1884042f65
 
-         Review: https://reviewboard.asterisk.org/r/4557/
+2015-04-30 15:20 +0000 [c6c06bbe70]  Mark Michelson <mmichelson@digium.com>
 
+       * Prevent potential crash on blond transfer.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433923 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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)
 
-2015-04-01 11:25 +0000 [e301185983]  Ashley Sanders <asanders@digium.com>
+         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.
 
-       * stasis: set a channel variable on websocket disconnect error
+         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.
 
-         Resolve compile errors caused by r433863 by fixing the
-         documentation xml to comply with the schema.
+         ASTERISK-25025 #close
+         Reported by Chet Stevens
 
+         Change-Id: I54eedda207b8ec7a69263353b43abe5746aea197
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-04-30 14:09 +0000 [08a4cf3237]  Mark Michelson <mmichelson@digium.com>
 
-2015-03-31 22:26 +0000 [a1f12d9231]  Ashley Sanders <asanders@digium.com>
+       * res_pjsip_outbound_authenticator_digest: Add missing outbound authenticator callback.
 
-       * stasis: set a channel variable on websocket disconnect error
+         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.
 
-         Resolve compile errors caused by r433839 by included the missing
-         header file, pbx.h.
+         Change-Id: I5ca9379698c606da36bc38eaffccedaf64211ce3
+2015-04-30 06:04 +0000 [47df4e031c]  Joshua Colp <jcolp@digium.com>
 
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433863 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-03-31 17:00 +0000 [7293ecd90b]  Ashley Sanders <asanders@digium.com>
+         ASTERISK-25037 #close
+         Reported by: Joshua Colp
 
-       * stasis: set a channel variable on websocket disconnect error
+         Change-Id: I749dc12f3a22115c49c5d7d95ff42a5fa45319de
 
-         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).
+2015-04-27 16:56 +0000 [11d85ea251]  Mark Michelson <mmichelson@digium.com>
 
-         To remedy this scenario, this patch introduces a new channel variable:
-         STASISSTATUS.
+       * res_pjsip_outbound_registration: Don't fail on delayed processing: 13.
 
-         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
+         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.
 
-         ASTERISK-24802
-         Reported By: Kevin Harwell
-         Review: https://reviewboard.asterisk.org/r/4519/
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433839 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-03-31 11:55 +0000 [94949e7f2f]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * chan_sip: Fix expression in unit test /channels/chan_sip/test_sip_rtpqos.
+         ASTERISK-25020
+         Reported by Mark Michelson
 
-         Fix misplaced parentheses in original fabs() expression.
-         ........
+         Change-Id: If1ee5f601be839479a219424f0358a229f358f7c
 
-         Merged revisions 433816 from http://svn.asterisk.org/svn/asterisk/branches/11
+2015-04-27 14:44 +0000 [0037ca59a6]  Mark Michelson <mmichelson@digium.com>
 
+       * res_pjsip_outbound_registration: Add debugging messages.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433817 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         When problems occur regarding outbound registrations, it currently
+         is difficult to debug. Most off-nominal paths had warning messages,
+         but sometimes we want to know what's going on before hitting the
+         off-nominal path. This patch adds lots of debugging output that
+         should give a clearer picture of what is happening with regards
+         to outbound registrations.
 
-2015-03-31 06:47 +0000 [9967739669]  Corey Farrell <git@cfware.com>
+         ASTERISK-25020
+         Reported by Mark Michelson
 
-       * Re-add _ast_mem_backtrace_buffer variable for ABI compatibility.
+         Change-Id: I577bde7860be0a6c872b5bcb4d5047340bf45d45
 
-         Modules built prior to commit of r4502 expect to link at runtime
-         to the variable _ast_mem_backtrace_buffer.  This change re-adds
-         the variable to the C file only.
+2015-04-11 10:10 +0000 [e84fcb2464]  Juergen Spies (License 6698)
 
-         Review: https://reviewboard.asterisk.org/r/4558/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433795 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Review: https://reviewboard.asterisk.org/r/4589
 
-2015-03-30 06:42 +0000 [2d39bc5528]  Corey Farrell <git@cfware.com>
+         ASTERISK-24928 #close
+         Reported by: Juergen Spies
+         Tested by: Juergen Spies
+         patches:
+           pjsipT38patch20150331.txt submitted by Juergen Spies (License 6698)
 
-       * Fix an ABI compatibility issue with ast_log_safe for modules.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Change-Id: I15bde169fd59a224a02005fec9a439f0679a375e
 
-         Binary modules are sometimes built against the latest release of
-         Asterisk in each branch, and need to be compatible with all
-         releases of that branch.  This change ensures that utils.h only
-         uses ast_log_safe from the core.  For modules and utilities ast_log
-         is used instead.
+2015-04-23 12:54 +0000 [008076ecf4]  Mark Michelson <mmichelson@digium.com>
 
-         Review: https://reviewboard.asterisk.org/r/4548/
-         ........
+       * res_pjsip_t38: Don't crash on authenticated reinvite after originated T.38 FAX.
 
-         Merged revisions 433772 from http://svn.asterisk.org/svn/asterisk/branches/11
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433773 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-03-29 21:44 +0000 [5f8faf16af]  dkdegroot (License 6600)
+         This patch also contains some corrections for comments that were
+         incorrect and really confused me when I first started looking at the
+         code.
 
-       * clang compiler warnings: Fix -Wabsolute-value warnings
+         ASTERISK-25004 #close
+         Reported by Mark Michelson
 
-         This patch fixes several warnings caught by clang - in this case, usage of the
-         abs function on non-integer values. This patch uses labs and fabs, as
-         appropriate, in the various affected files.
+         Change-Id: Ic5a1230668369dda4bb13524098aed9306ab45a0
 
-         Review: https://reviewboard.asterisk.org/r/4525
+2015-04-15 10:38 +0000 [1bb6122f35]  Mark Michelson <mmichelson@digium.com>
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4525.patch submitted by dkdegroot (License 6600)
-         ........
+       * Detect potential forwarding loops based on count.
 
-         Merged revisions 433749 from http://svn.asterisk.org/svn/asterisk/branches/11
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         If left unchecked, this results in an endless loops of call forwards
+         that would eventually result in some sort of fiery crash.
 
-2015-03-29 21:39 +0000 [09b681e344]  dkdegroot (License 6600)
+         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.
 
-       * clang compiler warnings: Fix invalid enum conversion
+         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:
 
-         This patch fixes some invalid enum conversion warnings caught by clang. In
-         particular:
-         * chan_sip: Several functions mixed usage of the st_refresher_param
-           enum and st_refresher enum. This patch corrects the functions to use the
-           right enum.
-         * chan_pjsip: Fixed mixed usage of ast_sip_session_t38state and ast_t38_state.
-         * strings: Fixed incorrect usage of AO2 flags with strings container.
-         * res_stasis: Change a return enumeration to stasis_app_user_event_res.
+         * There are legitimate use cases where a device may be dialed multiple
+         times, or
+         * There can be human error when forwarding calls.
 
-         Review: https://reviewboard.asterisk.org/r/4535
+         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:
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4535.patch submitted by dkdegroot (License 6600)
-         ........
+         * It is much simpler.
+         * It can detect loops involving local channels.
+         * It is user configurable.
 
-         Merged revisions 433746 from http://svn.asterisk.org/svn/asterisk/branches/11
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * 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
 
-2015-03-29 21:29 +0000 [7f33abb827]  Matthew Jordan <mjordan@digium.com>
+         ASTERISK-24958 #close
 
-       * main/stdtime/localtime: Fix warning introduced in r433720
+         Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
 
-         The patch in r433720 caused a warning to be kicked back by gcc. It occurred
-         due to this check in unistd.h:
+2015-04-15 16:08 +0000 [cb67aae596]  gtjoseph <george.joseph@fairview5.com>
 
-             if (__nbytes > __bos0 (__buf))
-                 return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf));
+       * More .gitignore updates
 
-         That is, if __nbytes is greater than the result of GCC's built-in object size
-         for the struct, we'll kick back a warning.
+         Added .pyc and .sha1 to the top-level .gitignore.
 
-         As it turns out, this is because there is an error in the code in the patch.
-         We are passing the address of the pointer to the struct, not iev, which is a
-         pointer to the struct. Hence, the number of bytes is probably going to be lot
-         larger than the number of bytes that make up a pointer! This patch changes
-         the code just read from the pointer to the struct - which fixes the warning.
+         Change-Id: I7dfc4f554d54d22947b38140d3305007503cc16a
+         Tested-by: George Joseph <george.joseph@fairview5.com>
 
-         ASTERISK-24917
-         ........
+2015-04-13 19:06 +0000 [70fab74baf]  gtjoseph <george.joseph@fairview5.com>
 
-         Merged revisions 433743 from http://svn.asterisk.org/svn/asterisk/branches/11
+       * .gitignore updates for master/13
 
+         Added products of ./bootstrap
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433744 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Added nmenuselect and gmenuselect to menuselect/
 
-2015-03-29 20:56 +0000 [47eeb67e14]  dkdegroot (License 6600)
+         Change-Id: Ied658463958bafc04a9aff9ebc28e40c116a6e35
 
-       * clang compiler warnings: Ignore -Wunused-command-line-argument
+2015-04-13 09:54 +0000 [735bea479a]  Matt Jordan <mjordan@digium.com>
 
-         Asterisk's build system has a tendency to pass include directives for libraries
-         to everything compiled within a particular group of source files. This means
-         we pass the header for libxml2 to things that don't necessarily need it. As a
-         result, we ignore this particular warning.
+       * build_tools/make_version: Update version parsing for Git migration
 
-         Review: https://reviewboard.asterisk.org/r/4545/
+         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.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4545.patch submitted by dkdegroot (License 6600)
-         ........
+         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.
 
-         Merged revisions 433720 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24954 #close
 
+         Change-Id: I8090d5d548b6d19e917157ed530b914b7eaf9799
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433721 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-04-12 12:59 +0000 [7d64479748]  Matt Jordan <mjordan@digium.com>
 
-2015-03-29 20:52 +0000 [dbb4d6f9e7]  dkdegroot (License 6600)
+       * git migration: Remove support for file versions
 
-       * clang compiler warnings: Fix warning for -Wgnu-variable-sized-type-not-at-end
+         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.
 
-         This patch fixes a warning caught by clang, wherein a variable sized struct is
-         not located at the end of a struct. While the code in question actually
-         expected this, this is a good warning to watch for. Hence, this patch refactors
-         the code in question to not have two variable length elements in the same
-         struct.
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4530/
+         * main/manager: The Version key now always reports the Asterisk version.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4530.patch submitted by dkdegroot (License 6600)
-         ........
+         * UPGRADE: Add notes for:
+           - Modification to the ModuleCheck AMI Action.
+           - Modification of the "core show file version" CLI command.
 
-         Merged revisions 433717 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Change-Id: Ia932d3c64cd18a14a3c894109baa657ec0a85d28
 
+2015-04-12 06:12 +0000 [9237e8b11e]  Corey Farrell <git@cfware.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433718 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * main/editline: Add .gitignore.
 
-2015-03-28 07:56 +0000 [e126ab9eeb]  dkdegroot (License 6600)
+         This patch adds a .gitignore for main/editline to ignore all build results.
 
-       * clang compiler warnings: Fix a variety of "unused" warnings
+         Change-Id: I68c7bf375ea46282689e5a706534b69fca233b5d
 
-         This patch fixes the -Wunused-value -Wunused-variable -Wunused-const-variable
-         errors caught by clang. Specifically:
+2015-04-11 23:22 +0000 [630dbcb8b4]  Matt Jordan <mjordan@digium.com>
 
-         * apps/app_queue.c: removed unused qpm_cmd_usage[], qum_cmd_usage[],
-                             qsmp_cmd_usage[]
-         * cel/cel_sqlite3_custom.c: removed unused name[] = "cel_sqlite3_custom"
-         * channels/chan_pjsip.c: removed unused desc[] = "PJSIP Channel"
-         * codecs/gsm/src/gsm_create.c: removed unused ident[] = "$Header$"
-         * funcs/func_env.c:729: Fixed ast_str_append_substr.
-         * main/editline/np/strlcat.c: removed unused rcsid variable
-         * main/editline/np/strlcpy.c: removed unused rcsid variable
-         * main/security_events.c: removed unused TIMESTAMP_STR_LEN
-         * utils/conf2ael.c: removed unused cfextension_states
-         * utils/extconf.c: removed unused cfextension_states
+       * .gitignore: Ignore tarballs (*.gz)
 
-         Review: https://reviewboard.asterisk.org/r/4526
+         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.
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4526.patch submitted by dkdegroot (License 6600)
-         ........
+         Change-Id: I1e42fbfa02a8884231507b683e8e49ac3e278aaa
 
-         Merged revisions 433693 from http://svn.asterisk.org/svn/asterisk/branches/11
+2015-04-11 13:20 +0000 [e4892f9aa4]  gtjoseph <george.joseph@fairview5.com>
 
+       * Add .gitignore and .gitreview files
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433694 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Add the .gitignore and .gitreview files to the asterisk repo.
 
-2015-03-28 07:48 +0000 [2f6534527d]  dkdegroot (License 6600)
+         NB:  You can add local ignores to the .git/info/exclude file
+         without having to do a commit.
 
-       * clang compiler warnings: Fix -Wself-assign
+         Common ignore patterns are in the top-level .gitignore file.
+         Subdirectory-specific ignore patterns are in their own .gitignore
+         files.
 
-         Assigning a variable to itself isn't super useful. However, the WAV format
-         modules make use of this in order to perform byte endian checks. This patch
-         works around the warning by only performing the self assignment if we are
-         going to do more than just assign it to ourselves. Which is odd, but true.
+         Change-Id: I4c8af3b8e3739957db545f7368ac53f38e99f696
+         Tested-by: George Joseph
 
-         Review: https://reviewboard.asterisk.org/r/4544/
+2015-04-14 14:04 +0000 [677898f839]  Joshua Colp <jcolp@digium.com>
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4544.patch submitted by dkdegroot (License 6600)
-         ........
+       * res_pjsip_mwi: Send unsolicited MWI NOTIFY on startup and when endpoint registers.
 
-         Merged revisions 433690 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Currently the res_pjsip_mwi module only sends an unsolicited MWI NOTIFY upon
+         a mailbox state change (such as a new message being left, or one being deleted).
+         In practice this is not sufficient to keep clients aware of the current MWI status.
 
+         This change makes the module send unsolicited MWI NOTIFY on startup so that
+         clients are guaranteed to have the most up to date MWI information. It also makes
+         clients receive an unsolicited MWI NOTIFY upon registration so if they are unaware
+         of the current MWI status they receive it.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433691 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         ASTERISK-24982 #close
+         Reported by: Joshua Colp
 
-2015-03-28 07:40 +0000 [eb70993a50]  dkdegroot (License 6600)
+         Change-Id: I043f20230227e91218f18a82c7d5bb2aa62b1d58
 
-       * clang compiler warnings: Fix -Wparantheses-equality warnings
+2015-04-08 13:19 +0000 [918ca7dd36]  Jonathan Rose <jrose@digium.com>
 
-         Clang will treat ((a == b)) as a warning, as it reasonably expects that the
-         developer may have intended to write (a == b) or ((a = b)). This patch cleans
-         up all instances where equality, not assignment, was intended between two
-         parantheses.
+       * res_pjsip_t38: Fix FAX failures when using PJSIP with authentication
 
-         Review: https://reviewboard.asterisk.org/r/4531/
+         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-24917
-         Repoted by: dkdegroot
-         patches:
-           rb4531.patch submitted by dkdegroot (License 6600)
+         ASTERISK-24933 #close
+         Reported by: Jonathan Rose
+         Review: https://reviewboard.asterisk.org/r/4577/
          ........
 
-         Merged revisions 433687 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 434425 from http://svn.asterisk.org/svn/asterisk/branches/13
 
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433688 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434428 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-28 07:31 +0000 [c0ff16036a]  dkdegroot (License 6600)
+2015-04-08 12:24 +0000 [08945a5c77]  Maciej Szmigiero <mail@maciej.szmigiero.name> (license 6085)
 
-       * clang compiler warnings: Fix -Wbitfield-constant-conversion warning
+       * Security/tcptls: MitM Attack potential from certificate with NULL byte in CN.
 
-         In chan_iax2, we attempt to assign a -1 to a bitfield. This gets caught by
-         clang, as it will truncate the -1 to a 1 implicitly.
+         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.
 
-         Instead, we just assign the value a '1'.
+         ASTERISK-24847 #close
+         Reported by: Maciej Szmigiero
+         Patches:
+          asterisk-null-in-cn.patch submitted by mhej (license 6085)
+         ........
 
-         Review: https://reviewboard.asterisk.org/r/4537/
+         Merged revisions 434337 from http://svn.asterisk.org/svn/asterisk/branches/1.8
+         ........
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4537.patch submitted by dkdegroot (License 6600)
+         Merged revisions 434338 from http://svn.asterisk.org/svn/asterisk/branches/11
          ........
 
-         Merged revisions 433683 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/branches/13@433684 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434418 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-28 07:27 +0000 [844bc76bef]  dkdegroot (License 6600)
+2015-04-07 10:35 +0000 [45f09898e9]  Mark Michelson <mmichelson@digium.com>
 
-       * clang compiler warnings: Fix -Winitializer-overrides
+       * Do not queue message requests that we do not respond to.
 
-         This patch fixes clange compiler warnings for initializer overrides.
-         Specifically:
+         If we receive a MESSAGE request that we cannot send a response
+         to, we should not send the incoming MESSAGE to the dialplan.
 
-         res_pjsip/config_transport maps PJSIP_TLSV1_METHOD to the same enumeration
-         value as PJSIP_SSL_DEFAULT_METHOD. When initializing an array containing
-         those enum values, we therefore initialize the value twice to two different
-         values, "tlsv1" and "default". This patch changes it to just initialize
-         the index in the array to "tlsv1".
+         This commit should help the bouncing message_retrans test to
+         pass consistently.
+         ........
 
-         Review: https://reviewboard.asterisk.org/r/4539/
+         Merged revisions 434218 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4539.patch submitted by dkdegroot (License 6600)
 
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@434220 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433682 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+2015-04-03 16:59 +0000 [42b7ebdd4d]  Mark Michelson <mmichelson@digium.com>
 
-2015-03-28 07:19 +0000 [5e204042d9]  dkdegroot (License 6600)
+       * res_pjsip_messaging: Serialize outbound SIP MESSAGEs
 
-       * clang compiler warnings: Fix -Wunused-function; make inline function static
+         Outbound SIP MESSAGEs had the potential to be sent out
+         of order from how they were specified in a set of
+         dialplan steps.
 
-         This patch fixes clang compilers warnings for unused functions. Specifically:
-          * channels/chan_iax2: removed user_ref function
-          * main/dsp.c: removed goertzel_update function
-          * main/config.c: made variable_list_switch static
+         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.
 
-         Review: https://reviewboard.asterisk.org/r/4527
+         ASTERISK-24937 #close
+         Reported by Mark Michelson
 
-         ASTERISK-24917
-         Reported by: dkdegroot
-         patches:
-           rb4527.patch submitted by dkdegroot (License 6600)
+         Review: https://reviewboard.asterisk.org/r/4579
          ........
 
-         Merged revisions 433678 from http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 433968 from http://svn.asterisk.org/svn/asterisk/branches/13
 
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433680 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433970 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-27 17:34 +0000 [cfbf5fbe91]  Jonathan Rose <jrose@digium.com>
+2015-04-01 15:32 +0000 [b6fff2719d]  Mark Michelson <mmichelson@digium.com>
 
-       * SAC: Add a few basic queues
+       * core: avoid possible asterisk -r crash from long id
 
-         Review: https://reviewboard.asterisk.org/r/4503/
+         When connecting to the remote console, an id string
+         is first provided that consts of the hostname, pid,
+         and version.  This is parsed by the remote instance
+         using a buffer that may be too short, and can allow
+         a buffer overrun because it is not terminated. This
+         patch adds termination and a larger buffer.
 
+         Review: https://reviewboard.asterisk.org/r/4182/
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         AFS-254
+         ........
 
-2015-03-27 17:25 +0000 [1a50d8d4c2]  Jonathan Rose <jrose@digium.com>
+         Merged revisions 429223 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * SAC: Add conferencing extensions and configuration
 
-         Review: https://reviewboard.asterisk.org/r/4504/
+         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 <asanders@digium.com>
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433656 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+       * stasis: set a channel variable on websocket disconnect error
 
-2015-03-27 16:15 +0000 [c6c08d755d]  Rusty Newton <rnewton@digium.com>
+         Resolve compile errors caused by r433863 by fixing the
+         documentation xml to comply with the schema.
+         ........
 
-       * configs/basic-pbx - Super Awesome Company example configs Phase 1, Patch 2
+         Merged revisions 433888 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         Example configuration files for a "basic PBX" deployment for the fictitious
-         Super Awesome Company. Details at https://reviewboard.asterisk.org/r/4488/
-         and https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
 
-         Patch 4488 includes all functionality needed for SAC's outside connectivity
-         and some externally accessed features, as well as outbound dialing.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433890 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Reported by: Malcolm Davenport
-         Tested by: Rusty Newton
+2015-03-31 22:39 +0000 [259227eb1a]  Ashley Sanders <asanders@digium.com>
 
-         Review: https://reviewboard.asterisk.org/r/4488/
+       * stasis: set a channel variable on websocket disconnect error
 
+         Resolve compile errors caused by r433839 by included the missing
+         header file, pbx.h.
+         ........
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433624 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Merged revisions 433863 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-03-27 16:04 +0000 [13557675d4]  Richard Mudgett <rmudgett@digium.com>
 
-       * res_pjsip_registrar_expire.c: Made use ao2 container template routines and eliminated some RAII_VAR() usage.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433864 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Converted the contact_autoexpire container to use the ao2 template hash
-         and cmp functions.  Also made use the OBJ_SEARCH_xxx names instead of the
-         deprecated names.
+2015-03-31 17:34 +0000 [758fead630]  Ashley Sanders <asanders@digium.com>
 
-         * Eliminates several unnecessary uses of RAII_VAR().
+       * stasis: set a channel variable on websocket disconnect error
 
-         Review: https://reviewboard.asterisk.org/r/4524/
+         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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433622 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         The possible values for STASISSTATUS are:
+         SUCCESS         - The channel has exited Stasis without any failures
+         FAILED          - Something caused Stasis to croak. Some (not all) possible
+                           reasons for this:
+                             - The app registry is not instantiated;
+                             - The app requested is not registered;
+                             - The app requested is not active;
+                             - Stasis couldn't send a start message
 
-2015-03-27 15:30 +0000 [85feac857c]  Mark Michelson <mmichelson@digium.com>
+         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 <mmichelson@digium.com>
 
        * Add stateful PJSIP response API call, and use it for out-of-dialog responses.
 
          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/branches/13@433619 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-27 12:50 +0000 [dc2cf21144]  Richard Mudgett <rmudgett@digium.com>
+         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 <rmudgett@digium.com>
 
        * res_pjsip_registrar_expire.c: Cleanup scheduler leaks on unload/shutdown.
 
          object ref held by the scheduler entry.
 
          Review: https://reviewboard.asterisk.org/r/4523/
-
-
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433596 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-
-2015-03-27 09:41 +0000 [6e6f5b3a1f]  scsiguy (License 6692)
-
-       * res/res_timing_kqueue: Update the module to conform to current timer API
-
-         This patch updates the kqueue timing module to conform to current timer API.
-
-         This fixes issues with using the kqueue timing source on Asterisk 13 on
-         FreeBSD 10. These issues include:
-
-         - Remove support for kevent64().  The values used to support Asterisk timers
-           fit within 32bits and so can be handled on all platforms via kevent().
-
-         - Provide debug logging for, but do not track, unacked events.  This matches
-           the behavior of all other timer implementations.
-
-         - Implement continuous mode by triggering and leaving active, a user event.
-           This ensures that the file descriptor for the timer returns immediately from
-           poll(), without placing the load of a high speed timer on the kernel.
-
-         - In kqueue_timer_get_max_rate(), don't overstate the capability of the timer.
-           On some platforms, UINT_MAX is greater than INTPTR_MAX, the largest integer
-           type kqueue supports for timers.
-
-         - In kqueue_timer_get_event(), assume the caller woke up from poll() and just
-           return the mode the timer is currently in. This matches all other timer
-           implementations.
-
-         - Adjust the test code now that unacked events are not tracked.
-
-         Review: https://reviewboard.asterisk.org/r/4465/
-
-         ASTERISK-24857 #close
-         Reported by: scsiguy
-         Tested by: Ed Hynan
-         patches:
-           rb4465.patch submitted by scsiguy (License 6692)
-
-
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-
-2015-03-27 07:26 +0000 [b0df413fb2]  Corey Farrell <git@cfware.com>
-
-       * Fix link error for utils/aelparse.
-
-         Use the standard ast_log instead of ast_log_safe for STANDALONE programs.
-
-         Review: https://reviewboard.asterisk.org/r/4538/
          ........
 
-         Merged revisions 433549 from http://svn.asterisk.org/svn/asterisk/branches/11
-
-
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433550 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-
-2015-03-27 02:09 +0000 [d01706ce1e]  Corey Farrell <git@cfware.com>
-
-       * Improved and portable ast_log recursion avoidance
-
-         This introduces a new logger routine ast_log_safe.  This routine should be
-         used for all error messages in code that can be run as a result of ast_log.
-         ast_log_safe does nothing if run recursively.  All error logging in
-         astobj2.c, strings.c and utils.h have been switched to ast_log_safe.
+         Merged revisions 433596 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         This required adding support for raw threadstorage.  This provides direct
-         access to the void* pointer in threadstorage.  In ast_log_safe, NULL is used
-         to signify that this thread is not already running ast_log_safe, (void*)1 when
-         it is already running.  This was done since it's critical that ast_log_safe
-         do nothing that could log during recursion checking.
 
-         ASTERISK-24155 #close
-         Reported by: Timo Teräs
-         Review: https://reviewboard.asterisk.org/r/4502/
-         ........
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433618 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         Merged revisions 433522 from http://svn.asterisk.org/svn/asterisk/branches/11
+2015-03-20 14:57 +0000 [fb7062afca]  Richard Mudgett <rmudgett@digium.com>
 
+       * Audit ast_pjsip_rdata_get_endpoint() usage for ref leaks.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433523 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         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.
 
-2015-03-26 18:07 +0000 [4b225e2104]  Corey Farrell <git@cfware.com>
+         * 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().
 
-       * Fix compile errors caused by r4500 / r4501.
+         * Eliminated RAII_VAR() use with ast_pjsip_rdata_get_endpoint() in
+         res/res_pjsip_nat.c:nat_on_rx_message().
 
-         * Add ast_register_cleanup to utils/clicompat.c to deal with
-           any utils that copy sources from main.
-         * Asterisk 13+: remove unused variables from core_local.c.
+         * Fixed inconsistent but benign return value in
+         res/res_pjsip/pjsip_options.c:options_on_rx_request().
 
-         Review: https://reviewboard.asterisk.org/r/4534/
+         Review: https://reviewboard.asterisk.org/r/4511/
          ........
 
-         Merged revisions 433499 from http://svn.asterisk.org/svn/asterisk/branches/11
-
-
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433500 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Merged revisions 433222 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-03-26 17:19 +0000 [6adf26f14d]  Corey Farrell <git@cfware.com>
 
-       * Replace most uses of ast_register_atexit with ast_register_cleanup.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433224 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         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.
+2015-03-20 14:04 +0000 [cf9799845f]  Richard Mudgett <rmudgett@digium.com>
 
-         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.
+       * res_pjsip_sdp_rtp,sorcery: Fix invalid access and memory leak respectively.
 
-         ASTERISK-24142 #close
-         Reported by: David Brillert
+         Valgrind found a memory leak and invalid access.
 
-         ASTERISK-24683 #close
-         Reported by: Peter Katzmann
+         * Fix invalid access by sscanf() being fed a non-nul terminated string of
+         digits in res/res_pjsip_sdp_rtp.c:get_codecs().
 
-         ASTERISK-24805 #close
-         Reported by: Badalian Vyacheslav
+         * Fix memory leak in main/sorcery.c:sorcery_object_field_destructor().
 
-         ASTERISK-24881 #close
-         Reported by: Corey Farrell
+         * Fix potential NULL pointer dereference in
+         main/xmldoc.c:xmldoc_get_syntax_config_option().
 
-         Review: https://reviewboard.asterisk.org/r/4500/
-         Review: https://reviewboard.asterisk.org/r/4501/
+         Review: https://reviewboard.asterisk.org/r/4513/
          ........
 
-         Merged revisions 433495 from http://svn.asterisk.org/svn/asterisk/branches/11
-
+         Merged revisions 433199 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433497 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-
-2015-03-26 12:46 +0000 [d0df545a44]  Corey Farrell <git@cfware.com>
 
-       * res_pjsip: Enable unload of all modules at shutdown.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433201 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Move most of res_pjsip:module_unload to unload_pjsip to resolve crashes
-           caused by running PJSIP functions from non-PJSIP threads.
-         * Remove call to pjsip_endpt_destroy(ast_pjsip_endpoint), it was causing
-           crashes in some cases.  In theory pj_shutdown() should take care of this.
-         * Mark res_pjsip_keepalive and res_pjsip_session as allowed to unload at
-           shutdown.
-         * Resolve leaked config global in res_pjsip_notify.
-         * Unregister pubsub pjsip service module.
-         * Implement cleanup for res_pjsip_session.
+2015-03-17 16:56 +0000 [90fc65da62]  Richard Mudgett <rmudgett@digium.com>
 
-         ASTERISK-24731 #close
-         Reported by: Corey Farrell
-         Review: https://reviewboard.asterisk.org/r/4498/
+       * 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.
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433469 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         * Fix ast_sockaddr_resolve() memory leak in
+         apps/app_externalivr.c:app_exec().
 
-2015-03-26 12:04 +0000 [fd434a210f]  Kevin Harwell <kharwell@digium.com>
+         * 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().
 
-       * app_confbridge: file playback blocks dtmf
+         * 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.
 
-         Attempting to execute DTMF in a confbridge while file playback (prompt,
-         announcement, etc) is occurring is not allowed. You have to wait until
-         the sound file has completed before entering DTMF. This patch fixes it
-         so that app_confbridge now monitors for dtmf key presses during menu
-         driven file playback. If a key is pressed playback stops and it executes
-         the matched menu option.
+         Review: https://reviewboard.asterisk.org/r/4509/
+         ........
 
-         ASTERISK-24864 #close
-         Reported by: Steve Pitts
-         Review: https://reviewboard.asterisk.org/r/4510/
+         Merged revisions 433056 from http://svn.asterisk.org/svn/asterisk/branches/11
          ........
 
-         Merged revisions 433445 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/branches/13@433446 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-25 13:37 +0000 [dea885a607]  Richard Mudgett <rmudgett@digium.com>
+2015-03-17 13:44 +0000 [e0b644ddb7]  Kevin Harwell <kharwell@digium.com>
 
-       * A couple minor cleanup tweaks.
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-         * In res/res_sorcery_realtime.c: Broke long line.
+         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'
 
-         * In main/bucket.c: Eliminated unnecessary NULL check as
-         ast_sorcery_unref() is NULL tolerant and set the global object to NULL
-         after unref in the system shutdown bucket_cleanup().
+         ASTERISK-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/branches/13@433420 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-25 10:30 +0000 [05de9082a5]  Simon Arlott (License 5756)
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433034 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res_xmpp: Buddies are always auto-registered when processing the roster
+2015-03-17 13:43 +0000 [d7c8041f6b]  Kevin Harwell <kharwell@digium.com>
 
-         Due to a quirk in the configuration handling of res_xmpp, the 'autoregister'
-         setting was never actually processed. This was due to not properly copying
-         over the global settings to the client settings when applying the
-         configuration to the run-time object.
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-         Review: https://reviewboard.asterisk.org/r/4496/
+         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-14233
-         ASTERISK-24780 #close
-         Reported by: Simon Arlott
-         patches:
-           asterisk-13.1.0-24780 uploaded by Simon Arlott (License 5756)
+         ASTERISK-24840
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4489/
          ........
 
-         Merged revisions 433395 from http://svn.asterisk.org/svn/asterisk/branches/11
-
+         Merged revisions 433028 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433396 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-24 14:26 +0000 [b1e9552b08]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433033 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * chan_pjsip: Add "rpid_immediate" option to prevent unnecessary "180 Ringing" messages.
+2015-03-17 11:25 +0000 [cd4e18c4cc]  Richard Mudgett <rmudgett@digium.com>
 
-         Incoming PJSIP call legs that have not been answered yet send unnecessary
-         "180 Ringing" or "183 Progress" messages every time a connected line
-         update happens.  If the outgoing channel is also PJSIP then the incoming
-         channel will always send a "180 Ringing" or "183 Progress" message when
-         the outgoing channel sends the INVITE.
+       * Multiple revisions 431583,433005
 
-         Consequences of these unnecessary messages:
+         ........
+           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.
+         ........
 
-         * The caller can start hearing ringback before the far end even gets the
-         call.
+         Merged revisions 431583,433005 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-         * Many phones tend to grab the first connected line information and refuse
-         to update the display if it changes.  The first information is not likely
-         to be correct if the call goes to an endpoint not under the control of the
-         first Asterisk box.
 
-         When connected line first went into Asterisk in v1.8, chan_sip received an
-         undocumented option "rpid_immediate" that defaults to disabled.  When
-         enabled, the option immediately passes connected line update information
-         to the caller in "180 Ringing" or "183 Progress" messages as described
-         above.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@433025 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-         * Added "rpid_immediate" option to prevent unnecessary "180 Ringing" or
-         "183 Progress" messages.  The default is "no" to disable sending the
-         unnecessary messages.
+2015-03-13 10:51 +0000 [6cd70450fd]  Kevin Harwell <kharwell@digium.com>
 
-         ASTERISK-24781 #close
-         Reported by: Richard Mudgett
+       * Revert - res_pjsip: Allow configuration of endpoint identifier query order
 
-         Review: https://reviewboard.asterisk.org/r/4473/
+         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
+         ........
 
-         git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@433338 65c4cc65-6c06-0410-ace0-fbb531ad65f3
+         Merged revisions 432868 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-03-23  Asterisk Development Team <asteriskteam@digium.com>
 
-       * Asterisk 13.3.0-rc1 Released.
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432888 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-22 23:58 +0000 [r433247-433269]  Matthew Jordan <mjordan@digium.com>
+2015-03-09 11:44 +0000 [4eb1dd4b35]  Kevin Harwell <kharwell@digium.com>
 
-       * apps/app_queue.c, main/cli.c, main/cdr.c, main/manager.c,
-         main/rtp_engine.c, /, funcs/func_cdr.c: Fix compilations errors
-         on 64-bit OpenBSD systems In versiong 5.5, OpenBSD went to 64-bit
-         time values. This requires a cast to (long) when printing members
-         of certain time structs. Review:
-         https://reviewboard.asterisk.org/r/4507 ASTERISK-24879 #close
-         Reported by: snuffy Tested by: snuffy patches:
-         openbsd-time64.diff uploaded by snuffy (License 5024) ........
-         Merged revisions 433268 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * res_pjsip: Allow configuration of endpoint identifier query order
 
-       * main/asterisk.c, main/loader.c, main/xmldoc.c, /: Fix compilation
-         issues for OpenBSD This patch addresses compilation issues for
-         OpenBSD. Specifically, it addresses: * It allows including
-         <sys/vmmeter.h> in asterisk.c * Provides a needed (size_t) cast
-         in xmldoc.c In 13+, it also addresses a conditional inclusion in
-         loader.c. Review: https://reviewboard.asterisk.org/r/4506
-         ASTERISK-24880 #close Reported by: snuffy Tested by: snuffy
-         patches: misc-openbsd.diff uploaded by snuffy (License 5024)
-         ........ Merged revisions 433245 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         It's possible to have a scenario that will create a conflict between endpoint
+         identifiers. For instance an incoming call could be identified by two different
+         endpoint identifiers and the one chosen depended upon which identifier module
+         loaded first. This of course causes problems when, for example, the incoming
+         call is expected to be identified by username, but instead is identified by ip.
+         This patch adds a new 'global' option to res_pjsip called
+         'endpoint_identifier_order'. It is a comma separated list of endpoint
+         identifier names that specifies the order by which identifiers are processed
+         and checked.
 
-2015-03-20 19:52 +0000 [r433199-433222]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip_messaging.c, res/res_pjsip/pjsip_options.c,
-         res/res_pjsip.c, res/res_pjsip_nat.c: 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/
-
-       * res/res_pjsip_sdp_rtp.c, main/sorcery.c, main/xmldoc.c:
-         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/
-
-2015-03-19 19:19 +0000 [r433174]  Matthew Jordan <mjordan@digium.com>
-
-       * funcs/func_env.c, tests/test_func_file.c, /: funcs/func_env: Fix
-         regression caused in FILE read operation When r432935 was merged,
-         it did correctly fix a situation where a FILE read operation on
-         the middle of a file buffer would not read the requested length
-         in the parameters passed to the FILE function. Unfortunately, it
-         would also allow the FILE function to append more bytes than what
-         was available in the buffer if the length exceeded the end of the
-         buffer length. This patch takes the minimum of the remaining
-         bytes in the buffer along with the calculated length to append
-         provided by the original patch, and uses that as the length to
-         append in the return result. This patch also updates the unit
-         tests with the scenarios that were originally pointed out in
-         ASTERISK-21765 that the original implementation treated
-         incorrectly. ASTERISK-21765 ........ Merged revisions 433173 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24840 #close
+         Reported by: Mark Michelson
+         Review: https://reviewboard.asterisk.org/r/4455/
+         ........
 
-2015-03-19 10:20 +0000 [r433113-433126]  Corey Farrell <git@cfware.com>
+         Merged revisions 432638 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * main/logger.c, /: logger: Apply default console logging when
-         configuration cannot be loaded. When logger.conf is missing or
-         invalid enable console logging and display an error message.
-         ASTERISK-24817 #close Reported by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4497/ ........ Merged
-         revisions 433122 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * channels/sip/include/dialog.h, channels/chan_sip.c,
-         channels/sip/include/sip.h: chan_sip: Simplify dialog/peer
-         references, improve REF_DEBUG output. * Replace functions for
-         ref/undef of dialogs and peers with macro's to call
-         ao2_t_bump/ao2_t_cleanup. * Enable passthough of REF_DEBUG caller
-         information to sip_alloc and find_call. ASTERISK-24882 #close
-         Reported by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4189/
-
-       * /, channels/chan_sip.c: chan_sip: Fix dialog reference leaked to
-         scheduler for reinvite_timeout. Release the scheduler reference
-         to the dialog for reinvite timeout during dialog_unlink_all.
-         ASTERISK-24876 #close Reported by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4491/ ........ Merged
-         revisions 433112 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432658 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-18 02:34 +0000 [r433088]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip_session.c: res_pjsip_session: Fix off-nominal extra
-         unref of session.
-
-2015-03-17 22:15 +0000 [r433060-433064]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * main/asterisk.c, main/config.c, main/xmldoc.c, main/manager.c,
-         include/asterisk/config.h, main/utils.c, main/codec_builtin.c,
-         main/endpoints.c: Various: bugfixes found via chaos Using
-         DEBUG_CHAOS several instances of a null pointer crash, and one
-         uninitialized variable were uncovered and fixed. Also added
-         details on why Asterisk failed to initialize. Review:
-         https://reviewboard.asterisk.org/r/4468/
-
-       * build_tools/cflags.xml, include/asterisk/utils.h: core: Introduce
-         chaos into memory allocations Locate potential crashes by
-         exercising seldom used code paths. This patch introduces a new
-         define DEBUG_CHAOS, and mechanism to randomly return an error
-         condition from functions that will seldom do so. Functions that
-         handle the allocation of memory get the first treatment. Review:
-         https://reviewboard.asterisk.org/r/4463/
-
-2015-03-17 21:49 +0000 [r433057]  Richard Mudgett <rmudgett@digium.com>
-
-       * main/netsock2.c, /, res/res_pjsip_sdp_rtp.c, res/res_pjsip_t38.c,
-         apps/app_externalivr.c, res/res_pjsip_acl.c: 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
+2015-03-04 12:53 +0000 [52366a423c]  Matt Jordan <mjordan@digium.com>
 
-2015-03-17 18:34 +0000 [r433028-433031]  Kevin Harwell <kharwell@digium.com>
+       * translate: Prevent invalid memory accesses on fast shutdown
 
-       * include/asterisk/res_pjsip.h,
-         res/res_pjsip_endpoint_identifier_anonymous.c,
-         res/res_pjsip_endpoint_identifier_ip.c, res/res_pjsip.c,
-         res/res_pjsip_endpoint_identifier_user.c: 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
+         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.
 
-       * configs/samples/pjsip.conf.sample, CHANGES, res/res_pjsip.c,
-         res/res_pjsip_endpoint_identifier_user.c,
-         include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
-         res/res_pjsip_endpoint_identifier_anonymous.c,
-         res/res_pjsip_endpoint_identifier_ip.c,
-         contrib/ast-db-manage/config/versions/45e3f47c6c44_add_pjsip_endpoint_identifier_order.py:
-         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/
-
-2015-03-17 16:10 +0000 [r433005]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip.c: res_pjsip: Add reason comment.
-
-2015-03-14 02:28 +0000 [r432971]  Matthew Jordan <mjordan@digium.com>
-
-       * /, main/format_cap.c: main/frame: Don't report empty disallow
-         values as an error In realtime, it is normal to have a database
-         with both 'allow' and 'disallow' columns in the schema. It is
-         perfectly valid to have an 'allow' value of '!all,g722,ulaw,alaw'
-         and no 'disallow' value. Unlike in static conf files, you can't
-         *not* provide the disallow value. Thus, the empty disallow value
-         causes a spurious WARNING message, which is kind of annoying.
-         This patch makes it so that a 'disallow' value with no ... value
-         ... is ignored. Granted, you can still screw this up as well, as
-         technically specifying 'disallow=all,!ulaw' allows only ulaw, and
-         then you would have no 'allow' value in your database. But
-         really, why would you do that? WHY? ASTERISK-16779 #close
-         Reported by: Atis Lezdins ........ Merged revisions 432970 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         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/
+         ........
 
-2015-03-14 02:00 +0000 [r432945-432949]  Joshua Colp <jcolp@digium.com>
+         Merged revisions 432453 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * funcs/func_curl.c, /: func_curl: Don't hold exclusive lock when
-         performing HTTP request. This code originally kept a lock held
-         when performing the HTTP request to ensure that the options
-         provided to curl remain valid. This doesn't seem to be necessary
-         these days and holding the lock caused requests to happen
-         sequentially instead of in parallel. ASTERISK-18708 #close
-         Reported by: Dave Cabot ........ Merged revisions 432948 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * main/cli.c, /: core: Fix tab completion of "core set debug
-         channel" CLI command. The "core set debug channel" CLI command
-         mistakenly had source filenames added to its tab completion. This
-         occurred because the CLI generator fell back to the "core set
-         debug" command which permits setting debug at a source filename
-         level. ASTERISK-21038 #close Reported by: Richard Kenner ........
-         Merged revisions 432944 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432454 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-14 01:21 +0000 [r432920-432938]  Matthew Jordan <mjordan@digium.com>
+2015-03-02 13:15 +0000 [b17d0953b6]  Matt Jordan <mjordan@digium.com>
 
-       * /, funcs/func_env.c: FILE: fix retrieval of file contents when
-         offset is specified The loop that reads in a file was not
-         correctly using the offset when determining what bytes to append
-         to the output. This patch corrects the logic such that the
-         correct portion of the file is extracted when an offset is
-         specified. ASTERISK-21765 Reported by: John Zhong Tested by: Matt
-         Jordan, Di-Shi Sun patches: file_read_390821.patch uploaded by
-         Di-Shi Sun (License 5076) ........ Merged revisions 432935 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * res/res_pjsip_sdp_rtp: Revert portion of r432195
 
-       * apps/app_amd.c, /, configs/samples/amd.conf.sample: apps/app_amd:
-         Document maximum_word_length option; fix AMDCAUSE documentation
-         This patch corrects the documentation for the AMD application.
-         Specifically: * It documents the maximum_word_length option,
-         which limits the maximum allowed length of a single utterance. *
-         It clarifies the AMDCAUSE values MAXWORDS and MAXWORDLENGTH.
-         MAXWORDLENGTH was documented as MAXWORDS, while MAXWORDS was
-         undocumented. Thanks to the issue reporter, Frank DiGennaro, for
-         pointing out the issues. ASTERISK-19470 #close Reported by: Frank
-         DiGennaro ........ Merged revisions 432918 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Unfortunately, while initial testing with ConfBridge did not reproduce the
+         audio problem alluded to in the comment in res_pjsip_sdp_rtp, further testing
+         did show that bridge_softmix and/or ConfBridge has a severe problem bridging
+         two or more participants at different sampling rates. Sometimes, it even picks
+         odd sampling rates that cause hideous audio problems.
 
-2015-03-13 17:04 +0000 [r432892-432894]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip/pjsip_configuration.c: chan_pjsip: AMI action
-         PJSIPShowEndpoint closes AMI connection on error. Also fixed
-         similar problem with AMI action PJSIPShowEndpoints.
-         ASTERISK-24872 #close Reported by: Dmitriy Serov Review:
-         https://reviewboard.asterisk.org/r/4487/
-
-       * channels/chan_pjsip.c, res/res_pjsip_caller_id.c:
-         chan_pjsip/res_pjsip_callerid: Make Party ID handling simpler and
-         consistent. The res_pjsip modules were manually checking both
-         name and number presentation values when there is a function that
-         determines the combined presentation for a party ID struct. The
-         function takes into account if the name or number components are
-         valid while the manual code rarely checked if the data was even
-         valid. * Made use ast_party_id_presentation() rather than
-         manually checking party ID presentation values. * Ensure that
-         set_id_from_pai() and set_id_from_rpid() will not return
-         presentation values other than what is pulled out of the SIP
-         headers. It is best if the code doesn't assume that
-         AST_PRES_ALLOWED and AST_PRES_USER_NUMBER_UNSCREENED are zero. *
-         Fixed copy paste error in add_privacy_params() dealing with RPID
-         privacy. * Pulled the id->number.valid test from
-         add_privacy_header() and add_privacy_params() up into the parent
-         function add_id_headers() to skip adding PAI/RPID headers
-         earlier. * Made update_connected_line_information() not send out
-         connected line updates if the connected line number is invalid.
-         Lower level code would not add the party ID information and thus
-         the sent message would be unnecessary. * Eliminated RAII_VAR
-         usage in send_direct_media_request(). Review:
-         https://reviewboard.asterisk.org/r/4472/
-
-2015-03-13 14:48 +0000 [r432868]  Kevin Harwell <kharwell@digium.com>
-
-       * include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
-         res/res_pjsip_endpoint_identifier_anonymous.c,
-         res/res_pjsip_endpoint_identifier_ip.c,
-         contrib/ast-db-manage/config/versions/45e3f47c6c44_add_pjsip_endpoint_identifier_order.py,
-         configs/samples/pjsip.conf.sample, CHANGES, res/res_pjsip.c,
-         res/res_pjsip_endpoint_identifier_user.c: 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
-
-2015-03-12 12:58 +0000 [r432808-432811]  Matthew Jordan <mjordan@digium.com>
-
-       * /, main/audiohook.c: main/audiohook: Update internal sample rate
-         on reads When an audiohook is created (which is used by the
-         various Spy applications and Snoop channel in Asterisk 13+), it
-         initially is given a sample rate of 8kHz. It is expected,
-         however, that this rate may change based on the media that passes
-         through the audiohook. However, the read/write operations on the
-         audiohook behave very differently. When a frame is written to the
-         audiohook, the format of the frame is checked against the
-         internal sample rate. If the rate of the format does not match
-         the internal sample rate, the internal sample rate is updated and
-         a new SLIN format is chosen based on that sample rate. This works
-         just fine. When a frame is read, however, we do something quite
-         different. If the format rate matches the internal sample rate,
-         all is fine. However, if the rates don't match, the audiohook
-         attempts to "fix up" the number of samples that were requested.
-         This can result in some seriously large number of samples being
-         requested from the read/write factories. Consider the worst case
-         - 192kHz SLIN. If we attempt to read 20ms worth of audio produced
-         at that rate, we'd request 3840 samples (192000 / (1000 / 20)).
-         However, if the audiohook is still expecting an internal sample
-         rate of 8000, we'll attempt to "fix up" the requested samples to:
-         samples_converted = samples * (ast_format_get_sample_rate(format)
-         / (float) audiohook->hook_internal_samp_rate); which is: 92160 =
-         3840 * (192000 / 8000) This results in us attempting to read
-         92160 samples from our factories, as opposed to the 3840 that we
-         actually wanted. On a 64-bit machine, this miraculously survives
-         - despite allocating up to two buffers of length 92160 on the
-         stack. The 32-bit machines aren't quite so lucky. Even in the
-         case where this works, we will either (a) get way more samples
-         than we wanted; or (b) get about 3840 samples, assuming the
-         timing is pretty good on the machine. Either way, the calculation
-         being performed is wrong, based on the API users expectations. My
-         first inclination was to allocate the buffers on the heap. As it
-         is, however, there's at least two drawbacks with doing this: (1)
-         It's a bit complicated, as the size of the buffers may change
-         during the lifetime of the audiohook (ew). (2) The stack is
-         faster (yay); the heap is slower (boo). Since our calculation is
-         flat out wrong in the first place, this patch fixes this issue by
-         instead updating the internal sample rate based on the format
-         passed into the read operation. This causes us to read the
-         correct number of samples, and has the added benefit of setting
-         the audihook with the right SLIN format. Note that this issue was
-         caught by the Asterisk Test Suite as a result of r432195 in the
-         13 branch. Because this issue is also theoretically possible in
-         Asterisk 11, the change is being made here as well. Review:
-         https://reviewboard.asterisk.org/r/4475/ ........ Merged
-         revisions 432810 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         This patch backs out the offending portion of the code until the issues in
+         the affected bridging modules can be more properly analyzed.
 
-       * Makefile, include/asterisk/utils.h, /, configure, main/Makefile,
-         configure.ac, include/asterisk/inline_api.h, makeopts.in: Add
-         support for the clang compiler; update RAII_VAR to use
-         BlocksRuntime RAII_VAR, which is used extensively in Asterisk to
-         manage reference counted resources, uses a GCC extension to
-         automatically invoke a cleanup function when a variable loses
-         scope. While this functionality is incredibly useful and has
-         prevented a large number of memory leaks, it also prevents
-         Asterisk from being compiled with clang. This patch updates the
-         RAII_VAR macro such that it can be compiled with clang. It makes
-         use of the BlocksRuntime, which allows for a closure to be
-         created that performs the actual cleanup. Note that this does not
-         attempt to address the numerous warnings that the clang compiler
-         catches in Asterisk. Much thanks for this patch goes to: * The
-         folks on StackOverflow who asked this question and Leushenko for
-         providing the answer that formed the basis of this code:
-         http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang
-         * Diederik de Groot, who has been extremely patient in working on
-         getting this patch into Asterisk. Review:
-         https://reviewboard.asterisk.org/r/4370/ ASTERISK-24133
-         ASTERISK-23666 ASTERISK-20399 ASTERISK-20850 #close Reported by:
-         Diederik de Groot patches: RAII_CLANG.patch uploaded by Diederik
-         de Groot (License 6600) ........ Merged revisions 432807 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24841
+         ........
 
-2015-03-11 16:38 +0000 [r432764-432787]  Richard Mudgett <rmudgett@digium.com>
+         Merged revisions 432423 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * res/res_pjsip/config_domain_aliases.c,
-         res/res_pjsip/include/res_pjsip_private.h,
-         include/asterisk/res_pjsip.h: res_pjsip: Move internal
-         init/destroy prototypes to private header file. Done as a
-         separate commit from a finding in
-         https://reviewboard.asterisk.org/r/4467/
 
-       * include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
-         res/res_pjsip/pjsip_configuration.c: res_pjsip: Fix pjsip.conf
-         type=global object default value handling. When a type=global
-         section is not defined in pjsip.conf the global defaults are not
-         applied. As a result the mandatory Max-Forwards header is not
-         added to SIP messages for res_pjsip/chan_pjsip. The handling of
-         pjsip.conf type=global objects has several problems: 1) If the
-         global object is missing the defaults are not applied. 2) If the
-         global object is missing the default_outbound_endpoint's default
-         value is not returned by
-         ast_sip_global_default_outbound_endpoint(). 3) Defines are needed
-         so default values only need to be changed in one place. * Added a
-         sorcery instance observer callback to check if there were any
-         type=global sections loaded. If there were more than one then
-         issue an error message. If there were none then apply the global
-         defaults. * Fixed ast_sip_global_default_outbound_endpoint() to
-         return the documented default when no type=global object is
-         defined. * Made defines for the global default values. *
-         Increased the default_useragent[] size because SVN version
-         strings can get lengthy and 128 characters may not be enough. *
-         Fixed an off-nominal code path ref leak in global_alloc() if the
-         string fields fail to initialize. * Eliminated RAII_VAR in
-         get_global_cfg() and ast_sip_global_default_outbound_endpoint().
-         ASTERISK-24807 #close Reported by: Anatoli Review:
-         https://reviewboard.asterisk.org/r/4467/
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432424 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_pjsip/pjsip_global_headers.c: res_pjsip: Fixed invalid
-         empty Server and User-Agent SIP headers. Setting pjsip.conf
-         useragent to an empty string results in an empty SIP header being
-         sent. * Made not add an empty SIP header item to the global SIP
-         headers list. Review: https://reviewboard.asterisk.org/r/4467/
+2015-02-26 11:15 +0000 [3b4ba353f0]  Kevin Harwell <kharwell@digium.com>
 
-2015-03-10 23:09 +0000 [r432742]  Joshua Colp <jcolp@digium.com>
+       * app_chanspy, channel: fix frame leaks
 
-       * main/stasis_channels.c, main/endpoints.c, main/stasis_bridges.c:
-         core: Don't create snapshots with locks. Snapshots are immutable
-         and are never changed. Allocating them with a lock is wasteful.
-         Review: https://reviewboard.asterisk.org/r/4469/
+         Fixed a couple of frame leaks that were found during testing.
 
-2015-03-10 21:33 +0000 [r432693-432721]  Matthew Jordan <mjordan@digium.com>
-
-       * res/res_config_odbc.c, /: res/res_config_odbc: Fix improper
-         escaping of backslashes with MySQL When escaping backslashes with
-         MySQL, the proper way to escape the characters in a LIKE clause
-         is to escape the '\' four times, i.e., '\\\\'. To quote the MySQL
-         manual: "Because MySQL uses C escape syntax in strings (for
-         example, “\n” to represent a newline character), you must double
-         any “\” that you use in LIKE strings. For example, to search for
-         “\n”, specify it as “\\n”. To search for “\”, specify it as
-         “\\\\”; this is because the backslashes are stripped once by the
-         parser and again when the pattern match is made, leaving a single
-         backslash to be matched against." ASTERISK-24808 #close Reported
-         by: Javier Acosta patches: res_config_odbc.diff uploaded by
-         Javier Acosta (License 6690) ........ Merged revisions 432720
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * apps/app_voicemail.c, /: app_voicemail: Fix crash with IMAP
-         backends when greetings aren't present When an IMAP backend is in
-         use and greetings are set to be used, but aren't present for a
-         user in their IMAP folder, Asterisk will crash. This occurs due
-         to the mailstream being set to the 'greetings' folder and being
-         left in that particular state, regardless of the success/failure
-         of the attempt to access the folder the mailstream points to.
-         Later access of the mailstream assumes that it points to the
-         'INBOX' (or some other folder), resulting in either a crash (if
-         the greetings folder didn't exist and the mailstream is invalid)
-         or an inability to read messages from the 'INBOX' folder. This
-         patch restores the mailstream to its correct state after
-         accessing the greetings. This fixes the crash, and sets the
-         mailstream to the state that VoiceMailMain expects. Note that
-         while ASTERISK-23390 also contained a patch for this issue, the
-         patch on ASTERISK-24786 is the one being merged here. Review:
-         https://reviewboard.asterisk.org/r/4459/ ASTERISK-23390 #close
-         Reported by: Ben Smithurst ASTERISK-24786 #close Reported by:
-         Graham Barnett Tested by: Graham Barnett patches:
-         app_voicemail.c.patch.SIGSEGV3rev2 uploaded by Graham Barnett
-         (License 6685) ........ Merged revisions 432695 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24828 #close
+         Reported by: John Hardin
+         Review: https://reviewboard.asterisk.org/r/4445/
+         ........
 
-       * /, main/stdtime/localtime.c: localtime: Fix file descriptor leak
-         on kqueue(2) systems The localtime management in the Asterisk
-         core contains a thread that watches for changes in the local
-         timezone. On systems where the directory containing
-         /etc/localtime is modified frequently, the thread monitoring the
-         changes will be woken up to determine if any changes in timezone
-         have occurred. When using kqueue(2), this can cause a leak of
-         file descriptors due to some improper management of resources.
-         This patch updates the kqueue(2) handling in localtime, such that
-         is no longer leaks resources. Review:
-         https://reviewboard.asterisk.org/r/4450/ ASTERISK-24739 #close
-         Reported by: Ed Hynan patches: 11.15.0-u.diff uploaded by Ed
-         Hynan (Licnese 6680) 11.7.0-u.diff uploaded by Ed Hynan (License
-         6680) svn-trunk-Jan-26-2015-u.diff uploaded by Ed Hynan (License
-         6680) ........ Merged revisions 432691 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 432362 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ........
 
-2015-03-10 16:04 +0000 [r432668]  Richard Mudgett <rmudgett@digium.com>
+         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 <mjordan@digium.com>
+
+       * 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
+         ........
 
-       * res/res_pjsip_refer.c, res/res_pjsip_session.c,
-         include/asterisk/res_pjsip_session.h,
-         res/res_pjsip_session.exports.in: res_pjsip_refer: Fix occasional
-         unexpected BYE sent after receiving a REFER. A race condition
-         happened between initiating a transfer and requesting that a
-         dialog termination be delayed. Occasionally, the transferrer
-         channels would exit the bridge and hangup before the dialog
-         termination delay was requested. * Made request dialog
-         termination delay before initiating the transfer action. If the
-         transfer fails then cancel the delayed dialog termination
-         request. ASTERISK-24755 #close Reported by: John Bigelow Review:
-         https://reviewboard.asterisk.org/r/4460/
+         Merged revisions 432195 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-03-09 16:12 +0000 [r432638]  Kevin Harwell <kharwell@digium.com>
 
-       * include/asterisk/res_pjsip.h, res/res_pjsip/config_global.c,
-         res/res_pjsip_endpoint_identifier_anonymous.c,
-         res/res_pjsip_endpoint_identifier_ip.c,
-         contrib/ast-db-manage/config/versions/45e3f47c6c44_add_pjsip_endpoint_identifier_order.py
-         (added), configs/samples/pjsip.conf.sample, CHANGES,
-         res/res_pjsip.c, res/res_pjsip_endpoint_identifier_user.c:
-         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/
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@432197 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-03-08 01:46 +0000 [r432614]  Joshua Colp <jcolp@digium.com>
+2015-02-11 12:04 +0000 [3ad393b043]  Kevin Harwell <kharwell@digium.com>
 
-       * res/res_rtp_asterisk.c: res_rtp_asterisk: Fix wrongful use of
-         USE_PJPROJECT define. As pjproject is now used as a shared
-         library a different define, HAVE_PJPROJECT, is used to specify if
-         pjproject is present. ASTERISK-24830 #close Reported by: Stefan
-         Engström
+       * res_pjsip: dtls_handler causes Asterisk to crash
 
-2015-03-06 22:50 +0000 [r432574-432594]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * res/res_pjsip_refer.c: res_pjsip_refer: Make safely get the
-         context for a blind transfer. Made safely get the
-         TRANSFER_CONTEXT channel value while the channel is locked in
-         refer_incoming_attended_request() and
-         refer_incoming_blind_request(). The pointer returned by
-         pbx_builtin_getvar_helper() is only valid while the channel is
-         locked.
+         ASTERISK-24741 #close
+         Reported by: Zane Conkle
+         Review: https://reviewboard.asterisk.org/r/4409/
+         ........
 
-       * res/res_pjsip_refer.c: res_pjsip_refer: Made
-         refer_attended_alloc() not create the ao2 object with a lock. The
-         lock is unused.
-
-2015-03-06 21:11 +0000 [r432556]  Jonathan Rose <jrose@digium.com>
-
-       * include/asterisk/app.h, main/app.c: app: Add functions to swap
-         voicemail function table for testing purposes
-
-2015-03-06 20:18 +0000 [r432528-432534]  Richard Mudgett <rmudgett@digium.com>
-
-       * channels/chan_dahdi.c, channels/sig_analog.c, /,
-         channels/chan_dahdi.h, channels/sig_analog.h, UPGRADE.txt:
-         chan_dahdi/sig_analog: Fix distinctive ring detection to suck
-         less. The distinctive ring feature interferes with detecting
-         Caller ID and appears to have been broken for years. What happens
-         is if you have a ring-ring cadence as used in the UK you get too
-         many DAHDI events for the distinctive ring pattern array and
-         Caller ID detection is aborted. I think when Zapata/DAHDI added
-         the ring begin event it broke distinctive ring. More events
-         happen than before and the code does no filtering of which event
-         times are recorded in the pattern array. * Made distinctive ring
-         only record the ringt count when the ring ends instead of on just
-         any DAHDI event. Distinctive ring can be ring, ring-ring,
-         ring-ring-ring, or different ring durations for the up to three
-         rings. * Fixed the distinctive ring detection enable
-         (chan_dahdi.conf option usedistinctiveringdetection) to be per
-         port instead of somewhat per port and somewhat global. This has
-         been broken since v1.8. * Fixed using the default distinctive
-         ring context when the detected pattern does not match any
-         configured dringX patterns. The default context did not get set
-         when the previous call was a matched distinctive ring pattern and
-         the current call is not matched. This has been broken since v1.8.
-         * Made distinctive ring have no effect on Caller ID detection
-         when it is disabled. Caller ID detection just monitors for 10
-         seconds before giving up. * Fixed leak of struct callerid_state
-         memory when a polarity reversal during Caller ID detection causes
-         the incoming call to be aborted. DAHDI-1143 AST-1545
-         ASTERISK-24825 #close Reported by: Richard Mudgett ASTERISK-17588
-         Reported by: Daniel Flounders Review:
-         https://reviewboard.asterisk.org/r/4444/ ........ Merged
-         revisions 432530 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 431698 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * /, channels/chan_sip.c: chan_sip: Fix realtime locking inversion
-         when poking a just built peer. When a realtime peer is built it
-         can cause a locking inversion when the just built peer is poked.
-         If the CLI command "sip show channels" is periodically executed
-         then a deadlock can happen because of the locking inversion. *
-         Push the peer poke off onto the scheduler thread to avoid the
-         locking inversion of the just built realtime peer. AST-1540
-         ASTERISK-24838 #close Reported by: Richard Mudgett Review:
-         https://reviewboard.asterisk.org/r/4454/ ........ Merged
-         revisions 432526 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-03-05 16:38 +0000 [r432485]  George Joseph <george.joseph@fairview5.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431700 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * apps/app_voicemail.c, /: app_voicemail: Fix compile breaking in
-         app_voicemail with IMAP_STORAGE. There is a leftover "assert" in
-         app_voicemail/__messagecount that references variables that don't
-         exist. This causes the compile to fail when --enable-dev-mode and
-         IMAP_STORAGE are selected. This patch removes the assert.
-         Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4461/ ........ Merged
-         revisions 432484 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+2015-02-11 11:52 +0000 [8be00450b9]  Kevin Harwell <kharwell@digium.com>
 
-2015-03-04 18:52 +0000 [r432453]  Matthew Jordan <mjordan@digium.com>
+       * res_http_websocket: websocket write timeout fails to fully disconnect
 
-       * main/translate.c: 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/
-
-2015-03-02 19:14 +0000 [r432423]  Matthew Jordan <mjordan@digium.com>
-
-       * res/res_pjsip_sdp_rtp.c: 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
-
-2015-02-27 18:23 +0000 [r432404]  Richard Mudgett <rmudgett@digium.com>
-
-       * main/json.c, rest-api/api-docs/endpoints.json,
-         res/ari/resource_endpoints.c, res/res_ari_endpoints.c,
-         include/asterisk/json.h, res/ari/resource_channels.c: ARI: Fix
-         crash if integer values used in JSON payload 'variables' object.
-         Sending the following ARI commands caused Asterisk to crash if
-         the JSON body 'variables' object passes values of types other
-         than strings. POST /ari/channels POST /ari/channels/{channelid}
-         PUT /ari/endpoints/sendMessage PUT
-         /ari/endpoints/{tech}/{resource}/sendMessage * Eliminated
-         RAII_VAR usage in ast_ari_channels_originate_with_id(),
-         ast_ari_channels_originate(), ast_ari_endpoints_send_message(),
-         and ast_ari_endpoints_send_message_to_endpoint(). ASTERISK-24751
-         #close Reported by: jeffrey putnam Review:
-         https://reviewboard.asterisk.org/r/4447/
-
-2015-02-26 18:52 +0000 [r432385]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * include/asterisk/dial.h, main/dial.c: Dial API: add self destruct
-         option when complete This patch adds a self-destruction option to
-         the dial api. The usefulness of this is mostly when using async
-         mode to spawn a separate thread used to handle the new call,
-         while the calling thread is allowed to go on about other
-         business. The only alternative to this option would be the
-         calling thread spawning a new thread, or hanging around itself
-         waiting to destroy the dial struct after completion. Example of
-         use (minus error checking): struct ast_dial *dial =
-         ast_dial_create(); ast_dial_append(dial, "PJSIP", "200", NULL);
-         ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC,
-         "Echo"); ast_dial_option_global_enable(dial,
-         AST_DIAL_OPTION_SELF_DESTROY, NULL); ast_dial_run(dial, NULL, 1);
-         The dial_run call will return almost immediately after spawning
-         the new thread to run and monitor the dial. If the call is
-         answered, it is placed into the echo app. When completed, it will
-         call ast_dial_destroy() on the dial structure. Note that any
-         allocations made to pass values to ast_dial_set_user_data() or
-         dial options must be free'd in a state callback function on any
-         of: AST_DIAL_RESULT_UNASWERED, AST_DIAL_RESULT_ANSWERED,
-         AST_DIAL_RESULT_HANGUP, or AST_DIAL_RESULT_TIMEOUT. Review:
-         https://reviewboard.asterisk.org/r/4443/
-
-2015-02-26 17:07 +0000 [r432363]  Kevin Harwell <kharwell@digium.com>
-
-       * /, apps/app_chanspy.c, main/channel.c: 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
+         When writing to a websocket if a timeout occurred the underlying socket did not
+         get closed/disconnected. This patch makes sure the websocket gets disconnected
+         on a write timeout. Also a notice is logged stating that the websocket was
+         disconnected.
 
-2015-02-26 04:58 +0000 [r432321-432342]  Matthew Jordan <mjordan@digium.com>
+         ASTERISK-24701 #close
+         Reported by: Matt Jordan
+         Review: https://reviewboard.asterisk.org/r/4412/
+         ........
 
-       * /, apps/Makefile, channels/Makefile: make: Remove 'res_features'
-         from libraries to link against with cygwin/mingw32 Both the apps
-         and channels Makefiles still listed 'res_features' as modules to
-         link against when compiling for cygwin or mingw32. This module
-         hasn't existed for quite some time. ASTERISK-18105 #close
-         Reported by: feyfre ........ Merged revisions 432341 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 431669 from http://svn.asterisk.org/svn/asterisk/branches/11
+         ........
 
-       * /, channels/chan_sip.c: channels/chan_sip: Don't send a BYE after
-         final response when PBX thread fails When Asterisk fails to start
-         a PBX thread for a new channel - for example, when the maxcalls
-         setting in asterisk.conf is exceeded - we currently send a final
-         response, and then attempt to send a BYE request to the UA. Since
-         that's all sorts of wrong, this patch fixes that by setting
-         sipalreadygone on the sip_pvt such that we don't get stuck
-         sending BYE requests to something that does not want it. Note
-         that this patch is a slight modification of the one on
-         ASTERISK-15434. For clarity, it explicitly calls sipalreadygone
-         with the calls to transmit a final response. ASTERISK-21845
-         ASTERISK-15434 #close Reported by: Makoto Dei Tested by: Matt
-         Jordan patches: sip-pbxstart-failed.patch uploaded by Makoto Dei
-         (License 5027) ........ Merged revisions 432320 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 431670 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-02-25 23:48 +0000 [r432301]  Rusty Newton <rnewton@digium.com>
-
-       * configs/basic-pbx/README (added), configs/basic-pbx (added),
-         configs/basic-pbx/extensions.conf (added),
-         configs/basic-pbx/logger.conf (added),
-         configs/basic-pbx/indications.conf (added),
-         configs/basic-pbx/musiconhold.conf (added),
-         configs/basic-pbx/asterisk.conf (added),
-         configs/basic-pbx/pjsip.conf (added),
-         configs/basic-pbx/modules.conf (added),
-         configs/basic-pbx/voicemail.conf (added): configs/basic-pbx -
-         Super Awesome Company example configs Phase 1, Patch 1 Example
-         configuration files for a "basic PBX" deployment for the
-         fictitious Super Awesome Company. Details at
-         https://reviewboard.asterisk.org/r/4379/ and
-         https://wiki.asterisk.org/wiki/display/AST/Super+Awesome+Company
-         Reported by: Malcolm Davenport Tested by: Rusty Newton Review:
-         https://reviewboard.asterisk.org/r/4379/
-
-2015-02-25 23:09 +0000 [r432258-432281]  Matthew Jordan <mjordan@digium.com>
-
-       * /, configure, configure.ac: configure: Promote SQLite3 "not
-         installed" warning to error Since Asterisk won't build without
-         the library, not having it is definitely an error. Thanks to Kyle
-         Kurz for pointing this out. ........ Merged revisions 432280 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * /, channels/chan_sip.c: channels/chan_sip: Clarify WARNING
-         message in mismatched SRTP scenario When we receive an SDP as
-         part of an offer/answer for a peer/friend has been configured to
-         require encryption, and that SDP offer/answer failed to provide
-         acceptable crypto attributes, we currently issue a WARNING that
-         uses the phrase "we" and "requested". In this case, both of those
-         terms are ambiguous - the user will probably think "we" is
-         Asterisk (it most likely isn't) and it may not be a "request", so
-         much as an SDP that was received in some fashion. This patch
-         makes the WARNING messages slightly less bad and a bit more
-         accurate as well. ASTERISK-23214 #close Reported by: Rusty Newton
-         ........ Merged revisions 432277 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431697 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * main/sdp_srtp.c, /: channels/sip/sdp_crypto: Handle SRTP keys
-         negotiated with key lifetime/MKI Prior to this patch, SDP offers
-         negotiating SDES-SRTP crypto attributes would be rejected if
-         those crypto attributes contained either a key lifetime or a MKI
-         parameter. While from a theoretical point of view this was
-         defensible - Asterisk does not support key lifetimes or multiple
-         crypto keys - from a practical point of view, this is quite a
-         problem. A large number of endpoints offer lifetimes/MKI, which
-         Asterisk can tolerate so long as it doesn't actually have to
-         support anything more than a single key or refresh the key. In
-         reality, this is (so far as we've seen) always the case. This
-         patch is a forward port of Olle's work in the
-         lingon-srtp-key-lifetime-1.8 branch. To quote Olle from
-         ASTERISK-17721, it handles lifetime/MKI parameters in the
-         following fashion: > The Lingon branch now handle lifetime and
-         MKI parameters. > > We only accept lifetimes up to max for the
-         crypto and higher than 10 hours > for packetization of 20 ms (50
-         pps). > > We only handle MKI with index 1. > > We do not really
-         bother with counting packets and reinviting at end of > lifetime,
-         so the min of 10 hours kind of takes care of most calls. If there
-         > are longer ones, we rely on the other side for re-invites. > >
-         It's still not perfect, but I personally think this is an
-         improvement. A > configuration option for minimum lifetime
-         accepted could be added. When the patch was ported forward, I
-         decided against adding a configuration option as Olle's handling
-         was more than sufficient for every case I've seen come through
-         the issue tracker or through interoperability testing. We can
-         revisit that decision if it proves to be false. A few small other
-         tweaks were made to the surrounding code to reduce indentation
-         and provide better type safety for the 'tag' parameter. Review:
-         https://reviewboard.asterisk.org/r/4419/ Review:
-         https://reviewboard.asterisk.org/r/4418/ ASTERISK-17721 #close
-         Reported by: Terry Wilson ASTERISK-17899 #close Reported by:
-         Dwayne Hubbard patches: lingon-srtp-key-lifetime-1.8.diff
-         uploaded by oej (License 5267) ASTERISK-20233 Reported by: tootai
-         ASTERISK-22748 Reported by: Alejandro Mejia ........ Merged
-         revisions 432239 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+2015-02-11 11:48 +0000 [340588c721]  Richard Mudgett <rmudgett@digium.com>
 
-2015-02-25 20:44 +0000 [r432237]  David M. Lee <dlee@digium.com>
-
-       * res/res_http_websocket.c, /: Increase WebSocket frame size and
-         improve large read handling Some WebSocket applications, like
-         [chan_respoke][], require a larger frame size than the default
-         8k; this patch bumps the default to 16k. This patch also fixes
-         some problems exacerbated by large frames. The sanity counter was
-         decremented on every fread attempt in ws_safe_read(), regardless
-         of whether data was read from the socket or not. For large
-         frames, this could result in loss of sanity prior to reading the
-         entire frame. (16k frame / 1448 bytes per segment = 12 segments).
-         This patch changes the sanity counter so that it only decrements
-         when fread() doesn't read any bytes. This more closely matches
-         the original intention of ws_safe_read(), given that the error
-         message is "Websocket seems unresponsive". This patch also
-         properly logs EOF conditions, so disconnects are no longer
-         confused with unresponsive connections. [chan_respoke]:
-         https://github.com/respoke/chan_respoke Review:
-         https://reviewboard.asterisk.org/r/4431/ ........ Merged
-         revisions 432236 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * HTTP: Stop accepting requests on final system shutdown.
 
-2015-02-24 22:14 +0000 [r432195-432199]  Matthew Jordan <mjordan@digium.com>
-
-       * /, channels/chan_sip.c: channels/chan_sip: Fix crash when
-         transmitting packet after thread shutdown When the monitor thread
-         is stopped, its pthread ID is set to a specific value
-         (AST_PTHREADT_STOP) so that later portions of the code can
-         determine whether or not it is safe to manipulate the thread.
-         Unfortunately, __sip_reliable_xmit failed to check for that
-         value, checking instead only for AST_PTHREAD_STOP. Passing the
-         invalid yet very specific value to pthread_kill causes a crash.
-         This patch adds a check for AST_PTHREADT_STOP in
-         __sip_reliable_xmit such that it doesn't attempt to poke the
-         thread if the thread has already been stopped. ASTERISK-24800
-         #close Reported by: JoshE ........ Merged revisions 432198 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         There are three CLI commands to stop and restart Asterisk each.
 
-       * channels/chan_pjsip.c, main/channel.c, res/res_pjsip_sdp_rtp.c,
-         res/ari/resource_channels.c: 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
+         1) core stop/restart now - Hangup all calls and stop or restart Asterisk.
+         New channels are prevented while the shutdown request is pending.
 
-2015-02-24 18:32 +0000 [r432175]  Kevin Harwell <kharwell@digium.com>
-
-       * /, bridges/bridge_softmix.c: bridge_softmix: G.729 codec license
-         held When more than one call using the same codec type enters
-         into a softmix bridge and no audio is present for a channel the
-         bridge optimizes the out frame by using the same one for all
-         channels with the same codec type. Unfortunately, when that
-         number (channels with same codec type) dropped to <= 1 the codec
-         was not dereferenced. At least not until all parties left the
-         bridge. Thus in the case of G.729 the license was not released.
-         This patch ensures that the codec is dereferenced immediately
-         when the optimization no longer applies. ASTERISK-24797 #close
-         Reported by: Luke Hulsey Review:
-         https://reviewboard.asterisk.org/r/4429/ ........ Merged
-         revisions 432174 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         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.
 
-2015-02-21 20:47 +0000 [r432118-432154]  Joshua Colp <jcolp@digium.com>
+         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.
 
-       * rest-api/api-docs/channels.json, res/ari/resource_channels.c,
-         res/res_ari_channels.c: res_ari_channels: Return a 404 response
-         when a requested channel variable does not exist. This change
-         makes it so that if a channel variable is requested and it does
-         not exist a 404 response will be returned instead of an
-         allocation failed response. This makes it easier to debug and
-         figure out what is going on for a user. ASTERISK-24677 #close
-         Reported by: Joshua Colp
+         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.
 
-       * res/res_pjsip_registrar.c: res_pjsip_registrar: Add Expires
-         header to 200 OK if present in REGISTER. Some implementations
-         don't pay attention to the expires for individual contacts. In
-         this case they may consider the lack of an Expires header in the
-         200 OK as unregistered. This change makes it so if an Expires
-         header is present in the REGISTER we will add one in the 200 OK.
-         ASTERISK-24785 #close Reported by: Ross Beer
+         * Added a new shutdown committed phase so ARI applications can deal with
+         calls until the final committed to shutdown phase is reached.
 
-       * res/res_pjsip.c: res_pjsip: Add a log message when creating a UAC
-         dialog to a target URI that is invalid. ASTERISK-24499 #close
-         Reported by: Rusty Newton
+         * 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.
 
-2015-02-21 17:35 +0000 [r432099]  Matthew Jordan <mjordan@digium.com>
-
-       * apps/app_voicemail.c, /: apps/app_voicemail: Demote an ERROR
-         message to a WARNING message When using IMAP voicemail with
-         FreePBX, you will often get ERROR messages complaining about not
-         being able to find a mailbox. This is due to how FreePBX handles
-         voicemail mailboxes. Unfortunately, app_voicemail has to consider
-         this a configuration error, as in any other system it would be
-         indicative of someone misconfiguring their system. Regardless, a
-         misconfiguration is a WARNING, and not an ERROR. This patch
-         demotes the message so that system administrators can hopefully
-         reduce some of the noise in their log files. Note that in the
-         original patch this was made into a NOTICE, but that's a too
-         forgiving. ASTERISK-24790 #close Reported by: Graham Barnett
-         patches: app_voicemail.c.patch_noise uploaded by Graham Barnett
-         (License 6685) ........ Merged revisions 432098 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         * 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.
 
-2015-02-21 14:05 +0000 [r432079]  Joshua Colp <jcolp@digium.com>
+         * 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.
 
-       * main/http.c, /: http: Add missing html tag to 'httpstatus'
-         functionality. ASTERISK-24724 #close Reported by: Ashley Sanders
-         ........ Merged revisions 432078 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24752 #close
+         Reported by: Matthew Jordan
 
-2015-02-21 02:56 +0000 [r432055-432059]  Corey Farrell <git@cfware.com>
+         Review: https://reviewboard.asterisk.org/r/4399/
+         ........
 
-       * /, main/bucket.c, main/codec.c, main/loader.c: Allow shutdown to
-         unload modules that register bucket scheme's or codec's. * Change
-         __ast_module_shutdown_ref to be NULL safe (11+). * Allow modules
-         that call ast_bucket_scheme_register or ast_codec_register to be
-         unloaded during graceful shutdown only (13+ only). ASTERISK-24796
-         #close Reported by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4428/ ........ Merged
-         revisions 432058 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Merged revisions 431692 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * /, include/asterisk/lock.h: asterisk/lock.h: Fix syntax errors
-         for non-gcc OSX with 64-bit integers. Add a couple of missing
-         closing brackets / parenthesis. ASTERISK-24814 #close Reported
-         by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4436/ ........ Merged
-         revisions 432054 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-02-20 17:51 +0000 [r432034]  Richard Mudgett <rmudgett@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431696 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * /, channels/sig_analog.c: chan_dahdi/sig_analog: Put log message
-         strings on one line. With the log messages on one line, you can
-         search for the log message seen in the log and expect to find it.
-         ........ Merged revisions 432032 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+2015-02-11 10:19 +0000 [69dc8f9ec2]  Kevin Harwell <kharwell@digium.com>
 
-2015-02-20 17:46 +0000 [r432033]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_publish_asterisk.c, res/res_pjsip_acl.c:
-         ASTERISK-24811: Add ast_sorcery_apply_config() to
-         res_pjsip_publish_asterisk. Matt Hoskins reported that
-         res_pjsip_publish_asterisk wouldn't pull config from realtime.
-         Turns out it was just missing a call ast_sorcery_apply_config().
-         res_pjsip_acl was missing it as well, so I added it. The other
-         pjsip modules looked OK. ASTERISK-24811 #close Reported-by: Matt
-         Hoskins Tested-by: George Joseph Tested-by: Matt Hoskins patches:
-         res_pjsip_publish_asterisk.c.patch submitted by Matt Hoskins
-         (license 6688) Review: https://reviewboard.asterisk.org/r/4433/
-
-2015-02-20 15:47 +0000 [r432013]  Matthew Jordan <mjordan@digium.com>
-
-       * apps/app_voicemail.c, /: apps/app_voicemail: Fix IMAP header
-         compatibility issue with Microsoft Exchange When interfacing with
-         Microsoft Exchange, custom headers will be returned as all lower
-         case. Currently, the IMAP header code will fail to parse the
-         returned custom headers, as it will be performing a case
-         sensitive comparison. This can cause playback of messages to
-         fail, as needed information - such as origtime - will not be
-         present. This patch updates app_voicemail's header parsing code
-         to perform a case insensitive lookup for the requested custom
-         headers. Since the headers are specific to Asterisk, e.g.,
-         'x-asterisk-vm-orig-time', and headers should be unique in an
-         IMAP message, this should cause no issues with other systems.
-         ASTERISK-24787 #close Reported by: Graham Barnett patches:
-         app_voicemail.c.patch_MSExchange uploaded by Graham Barnett
-         (License 6685) ........ Merged revisions 432012 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * pjsip_options: Fix continued qualifies after endpoint/aor deletion
 
-2015-02-19 21:25 +0000 [r431956-431993]  Richard Mudgett <rmudgett@digium.com>
+         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.
 
-       * channels/chan_dahdi.c, channels/sig_analog.c, /: chan_dahdi:
-         Remove some dead code. ........ Merged revisions 431992 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         This patch unschedules all existing qualify tasks before scheduling
+         new ones on reload.
 
-       * main/aoc.c: ISDN AOC: Fix crash from an AOC-E message that
-         doesn't have a channel association. Processing an AOC-E event
-         that does not or no longer has a channel association causes a
-         crash. The problem with posting AOC events to the channel topic
-         is that AOC-E events don't always have a channel association and
-         posting the event to the all channels topic is just wrong. AOC-E
-         events do however have their own charging association method to
-         refer to the agreement with the charging entity. * Changed the
-         AOC events to post to the AMI manager topic instead of the
-         channel topics. If a channel is associated with the event then
-         channel snapshot information is supplied with the AMI event. *
-         Eliminated RAII_VAR() usage in aoc_to_ami() and
-         ast_aoc_manager_event(). This patch supercedes the patch on
-         Review: https://reviewboard.asterisk.org/r/4427/ ASTERISK-22670
-         #close Reported by: klaus3000 ASTERISK-24689 #close Reported by:
-         Marcel Manz ASTERISK-24740 #close Reported by: Panos Gkikakis
-         Review: https://reviewboard.asterisk.org/r/4430/
+         Tested-by: George Joseph
 
-       * res/res_pjsip_refer.c: res_pjsip_refer: Handle INVITE with
-         Replaces failure after answer. * Fixed hangup handling of the
-         session->channel after answer if the ast_channel_move() or
-         ast_bridge_impart() fails. We are still the thread controlling
-         the session->channel so we need to call ast_hangup() to kill the
-         channel. * Fixed debug messages in
-         refer_incoming_invite_request() referencing incorrect channnels
-         on success. Code comments now say why the session->channel cannot
-         be used. Review: https://reviewboard.asterisk.org/r/4422/
-
-2015-02-19 15:28 +0000 [r431937]  Matthew Jordan <mjordan@digium.com>
-
-       * main/tcptls.c, /: tcptls: Handle new OpenSSL compile time option
-         to disable SSLv3 Some distributions are going to disable SSLv3 at
-         compile time. This option can be checked using the directive
-         OPENSSL_NO_SSL3_METHOD. This patch updates the TCP/TLS handling
-         in Asterisk to look for that directive before attempting to use
-         the SSLv3 specific methods. ASTERISK-24799 #close Reported by:
-         Alexander Traud patches: no-ssl3-method.patch uploaded by
-         Alexander Traud (License 6520) ........ Merged revisions 431936
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-02-19 02:01 +0000 [r431917]  Corey Farrell <git@cfware.com>
-
-       * main/sched.c, /, include/asterisk/sched.h, channels/chan_iax2.c:
-         Create work around for scheduler leaks during shutdown. * Added
-         ast_sched_clean_by_callback for cleanup of scheduled events that
-         have not yet fired. * Run all pending peercnt_remove_cb and
-         replace_callno events in chan_iax2. Cleanup of replace_callno
-         events is only run 11, since it no longer releases any references
-         or allocations in 13+. ASTERISK-24451 #close Reported by: Corey
-         Farrell Review: https://reviewboard.asterisk.org/r/4425/ ........
-         Merged revisions 431916 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         Review: https://reviewboard.asterisk.org/r/4290/
+         ........
 
-2015-02-17 15:31 +0000 [r431898]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip_sdp_rtp.c, res/res_pjsip_messaging.c,
-         res/res_pjsip_caller_id.c, res/res_pjsip_refer.c,
-         res/res_pjsip_send_to_voicemail.c: 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/
-
-2015-02-16 21:29 +0000 [r431879]  Matthew Jordan <mjordan@digium.com>
-
-       * res/res_rtp_asterisk.c: res/res_rtp_asterisk: Fix crash in debug
-         from RTCP reports without report block When RTCP debugging was
-         enabled, an RTCP report without a report block would cause a
-         crash. This was due to the verbose output not checking to see if
-         the report_block pointer was NULl before dereferencing it. This
-         patch adds the necessary check to prevent printing any verbose
-         output if the far side hasn't provided us the information they
-         should have. ASTERISK-24791 #close Reported by: JoshE Tested by:
-         JoshE
-
-2015-02-15 19:00 +0000 [r431807-431860]  Joshua Colp <jcolp@digium.com>
-
-       * configs/samples/pjsip.conf.sample: pjsip: Remove "contact" type
-         from pjsip.conf.sample The "contact" object is not meant to be
-         configured from the pjsip.conf configuration file. It is meant to
-         be created as a result of a registration and stored elsewhere.
-         ASTERISK-24085 #close Reported by: Rusty Newton
-
-       * contrib/scripts/install_prereq: install_prereq: Tweak flags when
-         configuring pjproject. This change does two things: 1. Disables
-         debugging so assertions which can return an error do, instead of
-         asserting. 2. Enables IPv6 support. ASTERISK-24632 #close
-         Reported by: Rusty Newton
+         Merged revisions 430064 from http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * res/res_sorcery_config.c: res_sorcery_config: Improve object
-         lookup times. The res_sorcery_config module currently uses a
-         fixed bucket size of 53. This means that depending on the number
-         of objects you either end up with excess buckets or a lot of
-         collisions. Due to the way that res_sorcery_config is implemented
-         it's actually possible to make the bucket size dynamic based on
-         the number of objects. This is due to the fact that each loading
-         of the config file produces a new container and does not modify
-         the existing one. This change uses the number of expected objects
-         and finds a prime number near it. In practice depending on the
-         number of objects this can speed up lookups anywhere from 2X to
-         15X. This change also removes the lock from the container as it
-         is not needed. Review: https://reviewboard.asterisk.org/r/4423/
-
-       * res/res_pjsip/pjsip_cli.c: res_pjsip: Add "pjsip show version"
-         CLI command. When debugging things it can be useful to know
-         absolutely what version of pjproject res_pjsip is running
-         against. This change adds a "pjsip show version" CLI command
-         which can be used to query for this. ASTERISK-24685 #close
-         Reported by: Joshua Colp Review:
-         https://reviewboard.asterisk.org/r/4424/
-
-       * res/res_timing_pthread.c: res_timing_pthread: Fix leaky pipes.
-         During some refactoring the way private information for timers
-         was stored was changed. As a result of this the action which
-         normally removed the timer upon closure in res_timing_pthread was
-         also removed causing the timer to remain after it should using up
-         resources. This change ensures that the timer is removed upon
-         closure. ASTERISK-24768 #close Reported by: Matthias Urlichs
-         patches: timer.patch submitted by Matthias Urlichs (license 5508)
-
-2015-02-15 00:32 +0000 [r431789]  Matthew Jordan <mjordan@digium.com>
-
-       * /, apps/app_mixmonitor.c: apps/app_mixmonitor: Move Test Event
-         for MIXMONITOR_END to after it finishes The Test Event for
-         MIXMONITOR_END - which signals that a MixMonitor has completed -
-         technically fired before the filestream was closed. If a test
-         used this to trigger a condition to verify that the file was
-         written, it could result in a race condition where the file size
-         would not be what the test expected. Luckily, no tests were using
-         this (although they should have been). Since the test event
-         needed to be moved after the point where the MixMonitor autochan
-         has been destroyed, the test event no longer emits the channel
-         name. Luckily, nothing needs it. ........ Merged revisions 431788
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-02-14 19:45 +0000 [r431751-431771]  Joshua Colp <jcolp@digium.com>
-
-       * main/sorcery.c: sorcery: Output an error message if a wizard is
-         specified for an object type and it isn't found. ASTERISK-24612
-         #close Reported by: Joshua Colp
-
-       * res/res_pjsip_exten_state.c: res_pjsip_exten_state: Improve log
-         message when a subscription is attempted to a non-existent
-         extension. ASTERISK-24716 #close Reported by: Rusty Newton
-
-       * channels/pjsip/dialplan_functions.c: 'information' ends with an
-         'n'.
-
-       * channels/pjsip/dialplan_functions.c: chan_pjsip: Fix crash when
-         CHANNEL dialplan function is invoked with pjsip argument and no
-         type. ASTERISK-24771 #close Reported by: Niklas Larsson
-
-2015-02-13 17:21 +0000 [r431734]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip_session.c: 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/
-
-2015-02-12 20:32 +0000 [r431717]  Matthew Jordan <mjordan@digium.com>
-
-       * res/res_pjsip_multihomed.c, res/stasis/control.c,
-         include/asterisk/stasis_app.h, rest-api/api-docs/channels.json,
-         res/ari/resource_channels.c, CHANGES, res/res_ari_channels.c,
-         channels/chan_pjsip.c, res/res_pjsip_nat.c,
-         res/res_pjsip_transport_websocket.c, res/ari/resource_channels.h:
-         ARI/PJSIP: Add the ability to redirect (transfer) a channel in a
-         Stasis app This patch adds a new feature to ARI to redirect a
-         channel to another server, and fixes a few bugs in PJSIP's
-         handling of the Transfer dialplan application/ARI redirect
-         capability. *New Feature* A new operation has been added to the
-         ARI channels resource, redirect. With this, a channel in a Stasis
-         application can be redirected to another endpoint of the same
-         underlying channel technology. *Bug fixes* In the process of
-         writing this new feature, two bugs were fixed in the PJSIP stack:
-         (1) The existing .transfer channel callback had the limitation
-         that it could only transfer channels to a SIP URI, i.e., you had
-         to pass 'PJSIP/sip:foo@my_provider.com' to the dialplan
-         application. While this is still supported, it is somewhat
-         unintuitive - particularly in a world full of endpoints. As such,
-         we now also support specifying the PJSIP endpoint to transfer to.
-         (2) res_pjsip_multihomed was, unfortunately, trying to 'help' a
-         302 redirect by updating its Contact header. Alas, that resulted
-         in the forwarding destination set by the dialplan application/ARI
-         resource/whatever being rewritten with very incorrect
-         information. Hence, we now don't bother updating an outgoing
-         response if it is a 302. Since this took a looong time to find,
-         some additional debug statements have been added to those modules
-         that update the Contact headers. Review:
-         https://reviewboard.asterisk.org/r/4316/ ASTERISK-24015 #close
-         Reported by: Private Name ASTERISK-24703 #close Reported by: Matt
-         Jordan
-
-2015-02-11 18:02 +0000 [r431693-431698]  Kevin Harwell <kharwell@digium.com>
-
-       * res/res_pjsip/pjsip_configuration.c: 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/
-
-       * res/ari/ari_websockets.c: ari_websockets: removed extra check on
-         websocket session read When merging the websocket timeout issue
-         (ASTERISK-24701) an extra, almost duplicate, check was left in
-         the code that should not have been. This removes it.
-         ASTERISK-24701 #close Reported by: Matt Jordan Review:
-         https://reviewboard.asterisk.org/r/4412/
-
-2015-02-11 17:28 +0000 [r431692]  Richard Mudgett <rmudgett@digium.com>
-
-       * main/bridge.c, main/http.c, apps/app_confbridge.c,
-         include/asterisk/channel.h, res/res_pjsip/pjsip_options.c,
-         res/res_pjsip_pubsub.c, main/asterisk.c, main/channel.c,
-         include/asterisk.h, channels/chan_sip.c: 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/
-
-2015-02-11 17:12 +0000 [r431674]  Matthew Jordan <mjordan@digium.com>
-
-       * /, channels/chan_sip.c: channels/chan_sip: Fix RealTime error
-         during SIP unregistration with MariaDB When a SIP device that has
-         its registration stored in RealTime unregisters, the entry for
-         that device is updated with blank values, i.e., "", indicating
-         that it is no longer registered. Unfortunately, one of those
-         values that is 'blanked' is the device's port. If the column type
-         for the port is not a string datatype (the recommended type is
-         integer), an ODBC or database error will be thrown. MariaDB does
-         not coerce empty strings to a valid integer value. This patch
-         updates the query run from chan_sip such that it replaces the
-         port value with a value of '0', as opposed to a blank value. This
-         is the value that other database backends coerce the empty string
-         ("") to already, and the handling of reading a RealTime
-         registration value from a backend already anticipates receiving a
-         port of '0' from the backends. ASTERISK-24772 #close Reported by:
-         Richard Miller patches: chan_sip.diff uploaded by Richard Miller
-         (License 5685) ........ Merged revisions 431673 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-2015-02-11 16:51 +0000 [r431670]  Kevin Harwell <kharwell@digium.com>
-
-       * res/res_http_websocket.c, res/ari/ari_websockets.c, /:
-         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
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431667 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-2015-02-11 15:51 +0000 [r431663]  Corey Farrell <git@cfware.com>
+2015-02-05 09:50 +0000 [2125e1b2de]  Mark Michelson <mmichelson@digium.com>
 
-       * include/asterisk/module.h, main/loader.c, /,
-         bridges/bridge_builtin_features.c: Enable REF_DEBUG for
-         ast_module_ref / ast_module_unref. Add ast_module_shutdown_ref
-         for use by modules that can only be unloaded during graceful
-         shutdown. When REF_DEBUG is enabled: * Add an empty ao2 object to
-         struct ast_module. * Allocate ao2 object when the module is
-         loaded. * Perform an ao2_ref in each place where mod->usecount is
-         manipulated. * ao2_cleanup on module unload. ASTERISK-24479
-         #close Reported by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4141/ ........ Merged
-         revisions 431662 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * Add Asterisk 13 revision 431420 that fixes disabling 100rel option on PJSIP endpoints.
 
-2015-02-10 23:16 +0000 [r431643]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_config_wizard.c,
-         configs/samples/pjsip_wizard.conf.sample:
-         res_pjsip_config_wizard: Add ability to auto-create hints.
-         Looking at the Super Awesome Company sample reminded me that
-         creating hints is just plain gruntwork. So you can now have the
-         pjsip conifg wizard auto-create them for you. Specifying
-         'hint_exten' in the wizard will create 'exten =>
-         <hint_exten>,hint/PJSIP/<wizard_id>' in whatever is specified for
-         'hint_context'. Specifying 'hint_application' in the wizard will
-         create 'exten => <hint_exten>,1,<hint_application>' in whatever
-         is specified for 'hint_context'. The default for 'hint_context'
-         is the endpoint's context. There's no default for
-         'hint_application'. If not specified, no app is added. There's no
-         default for 'hint_exten'. If not specified, neither the hint
-         itself nor the application will be created. Some may think this
-         is the slippery slope to users.conf but hints are a basic
-         necessity for phones unlike voicemail, manager, etc that
-         users.conf creates. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4383/
-
-2015-02-09 03:10 +0000 [r431600-431622]  Matthew Jordan <mjordan@digium.com>
-
-       * rest-api/api-docs/channels.json, res/ari/resource_channels.c:
-         res/ari/resource_channels: Add missing 'no_answer' reason to
-         DELETE /channels One of the canonical reasons for hanging up a
-         channel is because the far end failed to answer - or because
-         someone else answered, and we want to get rid of this channel.
-         This patch adds the missing value to the 'reason' query parameter
-         for the DELETE /channels operation. Review:
-         https://reviewboard.asterisk.org/r/4400 ASTERISK-24745 #close
-         Reported by: Ben Merrills patches:
-         add_no_answer_ari_hangup_cause.diff uploaded by Ben Merrills
-         (License 6678)
-
-       * /, res/res_odbc.c: res/res_odbc: Remove unneeded queries when
-         determining if a table exists This patch modifies the
-         ast_odbc_find_table function such that it only performs a lookup
-         of the requested table if the table is not already known. Prior
-         to this patch, a queries would be executed against the database
-         even if the table was already known and cached. Review:
-         https://reviewboard.asterisk.org/r/4405/ ASTERISK-24742 #close
-         Reported by: ibercom patches: patch.diff uploaded by ibercom
-         (License 6599) ........ Merged revisions 431617 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
 
-       * res/res_pjsip_sdp_rtp.c: res/res_pjsip_sdp_rtp: Fix leak of local
-         ICE candidates when applying to SDP When an SDP is created for an
-         outgoing request/response, the ICE candidates obtained from the
-         RTP instance are currently leaked. This causes the ao2 container
-         that holds the candidates to never properly be reclaimed when the
-         RTP instance is destroyed. This patch properly decrements the ICE
-         candidates' container if it is successfully obtained.
-         ASTERISK-24769 #close Reported by: Matt Jordan
-
-2015-02-06 21:26 +0000 [r431583]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * main/utils.c, res/res_pjsip.c, main/config.c: 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/
 
-2015-02-04 01:27 +0000 [r431538-431555]  Joshua Colp <jcolp@digium.com>
+         git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@431573 65c4cc65-6c06-0410-ace0-fbb531ad65f3
 
-       * res/res_pjsip_keepalive.c: res_pjsip_keepalive: Don't crash if
-         PJSIP module is not loaded.
+2015-04-08  Asterisk Development Team <asteriskteam@digium.com>
 
-       * main/sorcery.c: sorcery: Don't try to load object types which
-         haven't been defined. The act of defining wizards for an object
-         type in sorcery.conf will create a minimal object type. This can
-         cause a problem when a module has multiple sorcery instances
-         (which all get the wizards from sorcery.conf applied) but the
-         sorcery instances do not all contain full information about the
-         object types. Upon loading errors will occur stating that the
-         objects can not be created. This is confusing and is actually
-         perfectly fine. This change makes it so that only object types
-         which have been fully defined will be loaded. ASTERISK-24748
-         #close Reported by: Joshua Colp
+       * Certified Asterisk 13.1-cert2 Released.
 
-2015-01-31 16:27 +0000 [r431521]  Joshua Colp <jcolp@digium.com>
+       * Mitigate MitM attack potential from certificate with NULL byte in CN.
 
-       * res/res_format_attr_h264.c: res_format_attr_h264: Fix crash when
-         determining joint capability. The res_format_attr_h264 module
-         currently incorrectly attempts to copy SPS and PPS information
-         from the wrong attribute. This change fixes that. ASTERISK-24616
-         #close Reported by: Yura Kocyuba Review:
-         https://reviewboard.asterisk.org/r/4392/
+         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.
 
-2015-02-06  Asterisk Development Team <asteriskteam@digium.com>
+         ASTERISK-24847 #close
+         Reported by: Maciej Szmigiero
+         patches:
+           asterisk-null-in-cn.patch uploaded by mhej (license 6085)
 
-       * Asterisk 13.2.0 Released.
+         AST-2015-003
 
 2015-01-30  Asterisk Development Team <asteriskteam@digium.com>
 
-       * Asterisk 13.2.0-rc1 Released.
+       * Certified Asterisk 13.1-cert1 Released.
 
-2015-01-30 17:44 +0000 [r431492]  Richard Mudgett <rmudgett@digium.com>
+2015-01-30 17:53 +0000 [r431494]  Richard Mudgett <rmudgett@digium.com>
 
-       * apps/app_agent_pool.c: app_agent_pool: Fix initial module load
+       * 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
          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/
-
-2015-01-30 17:38 +0000 [r431490]  Kevin Harwell <kharwell@digium.com>
-
-       * res/res_pjsip_outbound_publish.c: res_pjsip_outbound_publish:
-         eventually crashes when no response is ever received When
-         Asterisk attempts to send SIP outbound publish information and no
-         response is ever received (no 200 okay, 412, 423) the system
-         eventually crashes. A response is never received because the
-         system Asterisk is attempting to send publish information to is
-         not available. The underlying pjsip framework attempts to send
-         publish information. After several attempts it calls back into
-         the Asterisk outbound publish code. At this point if the
-         "client->queue" is empty Asterisk attempts to schedule a refresh
-         which utilizes "rdata" and since no response was received the
-         given "rdata" struture is NULL. Attempting to dereference a NULL
-         object of course results in a crash. The fix here removes the
-         dependency on rdata for schedule_publish_refresh. Instead
-         param->expiration is now passed to it as this is set to -1 if no
-         response is received. Also added a notification when no response
-         is received. ASTERISK-24635 #close Reported by: Marco Paland
-         Review: https://reviewboard.asterisk.org/r/4384/
-
-2015-01-30 16:52 +0000 [r431471]  asanders <asanders@localhost>:
+         https://reviewboard.asterisk.org/r/4390/ ........ Merged
+         revisions 431492 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * include/asterisk/http.h, configs/samples/http.conf.sample,
-         main/http.c: HTTP: For httpd server, need option to define server
-         name for security purposes Added a new config property
-         [servername] to the http.conf file; updated the http server to
-         use the new property when sending responses, for showing http
-         status through the CLI and when reporting status through the
-         'httpstatus' webpage. ASTERISK-24316 #close Reported By: Andrew
-         Nagy Review: https://reviewboard.asterisk.org/r/4374/
-
-2015-01-30 16:47 +0000 [r431468]  Mark Michelson <mmichelson@digium.com>
+2015-01-30 16:50 +0000 [r431470]  Mark Michelson <mmichelson@digium.com>
 
        * 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.
+         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-29 23:02 +0000 [r431450]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * include/asterisk/bridge.h, main/bridge.c,
-         res/stasis/stasis_bridge.c: stasis transfer: fix stasis bridge
-         push race part two When swapping a Local channel in place of one
-         already in a bridge (to complete a bridge attended transfer), the
-         channel that was swapped out can actually be hung up before the
-         stasis bridge push callback executes on the independant transfer
-         thread. This results in the stasis app loop dropping out and
-         removing the control that has the the app name which the local
-         replacement channel needs so it can re-enter stasis. To avoid
-         this race condition a new push_peek callback has been added, and
-         called from the ast_bridge_impart thread before it launches the
-         independant thread that will complete the transfer. Now the
-         stasis push_peek callback can copy the stasis app name before the
-         swap channel can hang up. ASTERISK-24649 Review:
-         https://reviewboard.asterisk.org/r/4382/
-
-2015-01-29 20:58 +0000 [r431420-431426]  Mark Michelson <mmichelson@digium.com>
-
-       * res/res_pjsip.c, res/res_pjsip_sips_contact.c (added): Use SIPS
-         URIs in Contact headers when appropriate. RFC 3261 sections
-         8.1.1.8 and 12.1.1 dictate specific scenarios when we are
-         required to use SIPS URIs in Contact headers. Asterisk's
-         non-compliance with this could actually cause calls to get
-         dropped when communicating with clients that are strict about
-         checking the Contact header. Both of the SIP stacks in Asterisk
-         suffered from this issue. This changeset corrects the behavior in
-         res_pjsip/chan_pjsip.c Review:
-         https://reviewboard.asterisk.org/r/4345
-
-       * /, channels/chan_sip.c: Use SIPS URIs in Contact headers when
-         appropriate. RFC 3261 sections 8.1.1.8 and 12.1.1 dictate
-         specific scenarios when we are required to use SIPS URIs in
-         Contact headers. Asterisk's non-compliance with this could
-         actually cause calls to get dropped when communicating with
-         clients that are strict about checking the Contact header. Both
-         of the SIP stacks in Asterisk suffered from this issue. This
-         changeset corrects the behavior in chan_sip. ASTERISK-24646
-         #close Reported by Stephan Eisvogel Review:
-         https://reviewboard.asterisk.org/r/4346 ........ Merged revisions
-         431423 from http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * res/res_pjsip/pjsip_configuration.c: Allow disabling of 100rel
-         support on PJSIP endpoints. Due to an inversion error, setting
-         100rel=no would not actually change the current value of the
-         setting (which defaulted to "yes"). With this fix, the inversion
-         is corrected.
-
-2015-01-29 16:46 +0000 [r431403]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_exten_state.c: res_pjsip_exten_state: Reduce log
-         clutter... change a WARNING to a VERBOSE/2 Reduce log clutter by
-         changing the "Watcher for hint %s (removed|deactivated)" message
-         from WARNING to VERBOSE/2. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4387/
-
-2015-01-29 12:09 +0000 [r431385]  Joshua Colp <jcolp@digium.com>
-
-       * res/res_rtp_asterisk.c, /: res_rtp_asterisk: Fix DTLS when used
-         with OpenSSL 1.0.1k A recent security fix for OpenSSL broke DTLS
-         negotiation for many applications. This was caused by read ahead
-         not being enabled when it should be. While a commit has gone into
-         OpenSSL to force read ahead on for DTLS it may take some time for
-         a release to be made and the change to be present in
-         distributions (if at all). As enabling read ahead is a simple one
-         line change this commit does that and fixes the issue.
-         ASTERISK-24711 #close Reported by: Jared Biel ........ Merged
-         revisions 431384 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+2015-01-30 16:41 +0000 [r431467]  Jonathan Rose <jrose@digium.com>
 
-2015-01-28 17:37 +0000 [r431301-431303]  Mark Michelson <mmichelson@digium.com>
+       * 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
 
-       * /, res/res_pjsip_sdp_rtp.c, res/res_pjsip_t38.c,
-         res/res_pjsip_session.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
+2015-01-28 21:53 +0000 [r431326-431334]  Mark Michelson <mmichelson@digium.com>
 
        * funcs/func_curl.c, /: Multiple revisions 431297-431298 ........
          r431297 | mmichelson | 2015-01-28 11:05:26 -0600 (Wed, 28 Jan
          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
-
-2015-01-28 12:18 +0000 [r431267]  Sean Bright <sean@malleable.com>
+         http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
+         revisions 431301 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * res/res_format_attr_silk.c, res/res_format_attr_opus.c: media
-         formats: update res_format_attr_opus & silk In r419044, we
-         changed how formats were handled, but the return value of the
-         format_parse_sdp_fmtp functions in res_format_attr_opus and
-         res_format_attr_silk were not updated, causing calls to fail. Ran
-         into this when getting codec_opus working with Asterisk 13. Once
-         the return value was corrected, we were crashing in opus_getjoint
-         because of NULL format attributes. I've fixed this as well in
-         this patch. Review: https://reviewboard.asterisk.org/r/4371/
+       * 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:09 +0000 [r431243]  Richard Mudgett <rmudgett@digium.com>
+2015-01-28 04:11 +0000 [r431244]  Richard Mudgett <rmudgett@digium.com>
 
-       * main/sorcery.c, res/res_pjsip_outbound_registration.c,
-         res/res_pjsip.c: res_pjsip_outbound_registration: Fix reload race
+       * /, 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
          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/
+         https://reviewboard.asterisk.org/r/4381/ ........ Merged
+         revisions 431243 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-01-27 22:56 +0000 [r431179-431219]  Kevin Harwell <kharwell@digium.com>
+2015-01-27 23:02 +0000 [r431200-431221]  Kevin Harwell <kharwell@digium.com>
 
-       * /, main/tcptls.c: tcptls: Bad file descriptor error when
+       * 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
          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
+         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
          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
+         http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
+         revisions 431194 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * res/res_pjsip/pjsip_outbound_auth.c, res/res_pjsip/config_auth.c,
-         main/stasis_message_router.c, res/res_pjsip/location.c,
-         res/res_pjsip/pjsip_configuration.c,
-         res/res_pjsip/pjsip_distributor.c,
-         res/res_pjsip/include/res_pjsip_private.h,
-         res/res_pjsip/pjsip_global_headers.c,
-         res/res_pjsip/pjsip_options.c, res/res_pjsip.c,
-         res/res_pjsip/config_transport.c: res_pjsip: make it unloadable
-         (take 2) Due to the original patch causing memory corruptions it
-         was removed until the problem could be resolved. This patch is
-         the original patch plus some added locking around stasis router
-         subcription that was needed to avoid the memory corruption.
-         Description of the original problem and patch (still applicable):
-         The res_pjsip module was previously unloadable. With this patch
-         it can now be unloaded. This patch is based off the original
-         patch on the issue (listed below) by Corey Farrell with a few
-         modifications. Namely, removed a few changes not required to make
-         the module unloadable and also fixed a bug that would cause
-         asterisk to crash on unloading. This patch is the first step
-         (should hopefully be followed by another/others at some point) in
-         allowing res_pjsip and the modules that depend on it to be
-         unloadable. At this time, res_pjsip and some of the modules that
-         depend on res_pjsip cannot be unloaded without causing problems
-         of some sort. The goal of this patch is to get res_pjsip and only
-         res_pjsip to be able to unload successfully and/or shutdown
-         without incident (crashes, leaks, etc...). Other dependent
-         modules may still cause problems on unload. Basically made sure,
-         with the patch applied, that res_pjsip (with no other dependent
-         modules loaded) could be succesfully unloaded and Asterisk could
-         shutdown without any leaks or crashes that pertained directly to
-         res_pjsip. ASTERISK-24485 #close Reported by: Corey Farrell
-         Review: https://reviewboard.asterisk.org/r/4363/ patches:
-         pjsip_unload-broken-r1.patch submitted by Corey Farrell (license
-         5909)
-
-2015-01-27 17:36 +0000 [r431160]  Richard Mudgett <rmudgett@digium.com>
+2015-01-27 17:52 +0000 [r431162]  Richard Mudgett <rmudgett@digium.com>
 
        * /, apps/confbridge/include/confbridge.h, apps/app_confbridge.c:
          app_confbridge: Repeatedly starting and stopping recording ref
          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
+         http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
+         revisions 431160 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-01-27 17:32 +0000 [r431157]  Joshua Colp <jcolp@digium.com>
+2015-01-27 17:35 +0000 [r431159]  Joshua Colp <jcolp@digium.com>
 
-       * main/bridge_channel.c, res/res_pjsip_sdp_rtp.c: bridge /
+       * 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
          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/
-
-2015-01-27 17:22 +0000 [r431153]  Jonathan Rose <jrose@digium.com>
+         https://reviewboard.asterisk.org/r/4378/ ........ Merged
+         revisions 431157 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * main/manager.c: 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-27 17:18 +0000 [r431140]  Matthew Jordan <mjordan@digium.com>
 
-2015-01-27 17:20 +0000 [r431134-431145]  Matthew Jordan <mjordan@digium.com>
-
-       * res/ari/resource_bridges.c,
-         rest-api-templates/asterisk_processor.py,
-         res/ari/resource_channels.h, res/res_ari_bridges.c,
-         res/ari/resource_bridges.h, rest-api-templates/api.wiki.mustache,
-         rest-api/api-docs/channels.json,
-         rest-api-templates/swagger_model.py,
-         rest-api/api-docs/bridges.json: ARI: Improve wiki documentation
-         This patch improves the documentation of ARI on the wiki.
-         Specifically, it addresses the following: * Allowed values and
-         allowed ranges weren't documented. This was particularly
-         frustrating, as Asterisk would reject query parameters with
-         disallowed values - but we didn't tell anyone what the allowed
-         values were. * The /play/id operation on /channels and /bridges
-         failed to document all of the added media resource types. *
-         Documentation for creating a channel into a Stasis application
-         failed to note when it occurred, and that creating a channel into
-         Stasis conflicts with creating a channel into the dialplan. *
-         Some other minor tweaks in the mustache templates, including
-         italicizing the parameter type, putting the default value on its
-         own sub-bullet, and some other nicities. Review:
-         https://reviewboard.asterisk.org/r/4351
-
-       * apps/confbridge/conf_config_parser.c,
-         apps/confbridge/include/confbridge.h: app_confbridge: Restore
+       * /, 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
          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
+         Reported by: Steve Pitts ........ Merged revisions 431134 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2015-01-27 11:47 +0000 [r431114]  Joshua Colp <jcolp@digium.com>
+2015-01-27 11:48 +0000 [r431116]  Joshua Colp <jcolp@digium.com>
 
-       * 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
+       * 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/
-
-2015-01-26 14:49 +0000 [r431092]  David M. Lee <dlee@digium.com>
-
-       * channels/sip/include/route.h, funcs/func_presencestate.c,
-         main/rtp_engine.c, configure, include/asterisk/autoconfig.h.in,
-         include/asterisk/sem.h, configure.ac, main/app.c,
-         main/bridge_channel.c, main/sem.c, res/res_timing_kqueue.c,
-         main/asterisk.c: Various fixes for OS X This patch addresses
-         compilation errors on OS X. It's been a while, so there's quite a
-         few things. * Fixed __attribute__ decls in route.h to be
-         portable. * Fixed htonll and ntohll to work when they are defined
-         as macros. * Replaced sem_t usage with our ast_sem wrapper. *
-         Added ast_sem_timedwait to our ast_sem wrapper. * Fixed some GCC
-         4.9 warnings using sig*set() functions. * Fixed some format
-         strings for portability. * Fixed compilation issues with
-         res_timing_kqueue (although tests still fail on OS X). * Fixed
-         menuconfig /sbin/launchd detection, which disables
-         res_timing_kqueue on OS X). ASTERISK-24539 #close Reported by:
-         George Joseph ASTERISK-24544 #close Reported by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4327/
-
-2015-01-25 13:42 +0000 [r431072]  Matthew Jordan <mjordan@digium.com>
-
-       * main/config.c: dynamic realtime: Updates fail to work due to
-         update fields being passed over When a crash was fixed due to
-         usage of the REALTIME function in r423003, a regression was
-         introduced into ast_update2_realtime where the update fields
-         passed to the function would be skipped and the lookup field
-         processed twice. The use of this function is a bit interesting: A
-         variable argument list is used with two sentinel values - the
-         first marks the end of the lookup fields/values; the second marks
-         the end of the update fields/values. Unfortunately,
-         ast_update2_realtime parses over the lookup fields twice, as
-         opposed to parsing over the update fields. This causes the
-         lookups to succeed, but the updates itself to have no effect.
-         Note that the most common instance of this problem occurred in
-         app_voicemail during the updating of a mailbox password. Thanks
-         to the issue reporter, Paddy Grice, for pointing out the problem.
-         Review: https://reviewboard.asterisk.org/r/4356/ ASTERISK-24231
-         ASTERISK-24626 #close Reported by: Paddy Grice
-
-2015-01-23 20:13 +0000 [r431050-431052]  Richard Mudgett <rmudgett@digium.com>
-
-       * apps/confbridge/conf_chan_record.c: app_confbridge: Make CBRec
-         channel names more unique. Channel names should be different from
-         other channels in the system while the channel exists. * Use a
-         sequence number for CBRec channels instead of a random number
-         because the same random number could be picked again for the next
-         CBRec channel.
-
-       * /, apps/app_confbridge.c: app_confbridge: Whitespace Because
-         there is sometimes no sence to any whitespace. ........ Merged
-         revisions 431049 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-23 17:08 +0000 [r431030]  David M. Lee <dlee@digium.com>
-
-       * res/res_pjsip_config_wizard.c: Add depend on pjproject to
-         res_pjsip_config_wizard.c
-
-2015-01-23 15:12 +0000 [r430999]  Kevin Harwell <kharwell@digium.com>
-
-       * 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, res/res_ari_events.c,
-         include/asterisk/stasis_app.h, res/res_pjsip_mwi.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/
-
-2015-01-23 15:03 +0000 [r430994-430998]  Walter Doekes <walter+asterisk@wjd.nu>
-
-       * apps/app_voicemail.c, channels/chan_unistim.c,
-         funcs/func_hangupcause.c, main/manager_bridges.c,
-         channels/chan_misdn.c, funcs/func_groupcount.c, /,
-         addons/ooh323c/src/ooh245.c, channels/chan_sip.c, res/res_fax.c,
-         res/res_pjsip_outbound_registration.c, apps/app_minivm.c,
-         apps/app_alarmreceiver.c, include/asterisk/channel.h,
-         contrib/utils/eagi_proxy.c: Fix typo's (retrieve, specified,
-         address). ........ Merged revisions 430996 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * /, channels/chan_sip.c: chan_sip: Case insensitive comparison of
-         "defaultuser" parameter. All the other configuration options are
-         case insensitive, so this one should be too. ASTERISK-24355
-         #close Reported by: HZMI8gkCvPpom0tM patches: ast.patch uploaded
-         by HZMI8gkCvPpom0tM (License 6658) ........ Merged revisions
-         430993 from http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-22 19:24 +0000 [r430957-430975]  Richard Mudgett <rmudgett@digium.com>
-
-       * include/asterisk/bridge.h,
-         include/asterisk/bridge_channel_internal.h, main/bridge.c,
-         include/asterisk/bridge_internal.h, main/bridge_channel.c: Bridge
-         core: Pass a ref with the swap channel when joining a bridge.
-         When code imparts a channel into a bridge to swap with another
-         channel, a ref needs to be held on the swap channel to ensure
-         that it cannot dissapear before finding it in the bridge. * The
-         ast_bridge_join() swap channel parameter now always steals a ref
-         for the swap channel. This is the only change to the bridge
-         framework's public API semantics. *
-         bridge_channel_internal_join() now requires the
-         bridge_channel->swap channel to pass in a ref. ASTERISK-24649
-         Reported by: John Bigelow Review:
-         https://reviewboard.asterisk.org/r/4354/
-
-       * res/res_pjsip_outbound_registration.c:
-         res_pjsip_outbound_registration.c: Minor code cleanup. * Add an
-         allocation failure check and assert in
-         sip_outbound_registration_response_cb(). * Made
-         sip_outbound_registration_state_destroy() handle partially
-         created state objects from
-         sip_outbound_registration_state_alloc(). Review:
-         https://reviewboard.asterisk.org/r/4366/
-
-2015-01-22 18:09 +0000 [r430939]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * res/stasis/app.c, res/stasis/stasis_bridge.c: stasis transfer:
-         fix a race condition on stasis bridge push After a bridge
-         transfer completes where a local replacement channel is used, a
-         stasis transfer message with the details of the transfer is sent.
-         This is processed by stasis which then sets the stasis app name
-         and replaced channel snapshot on the replacement channel.
-         However, since a separate thread was already started to run
-         stasis on the new replacement channel, a race was on to see if
-         the message processing would be completed before the app name was
-         needed, otherwise the channel would be hung up. This change moves
-         the calls used to set the stasis app name and the replace
-         snapshot to the bridge_stasis_push function callback from the
-         bridge transfer logic, allowing the steps to be completed earlier
-         and more deterministically, and the race elimianted. NOTE: the
-         swap channel parameter to bridge_stasis_push (and thus all bridge
-         push callbacks) must always be present when performing a swap
-         with another channel. ASTERISK-24649 #close Reported by: John
-         Bigelow Review: https://reviewboard.asterisk.org/r/4341/
-
-2015-01-22 14:23 +0000 [r430921]  Matthew Jordan <mjordan@digium.com>
-
-       * /, apps/app_voicemail.c: apps/app_voicemail: Trigger MWI
-         notification with MixMonitor m() option The MixMonitor m() option
-         allows a recording to be pushed to a specific voicemail mailbox.
-         If the message is delivered to the mailbox's INBOX, however, no
-         MWI notification is currently raised. This patch corrects the
-         issue by properly calling notify_new_state from the
-         msg_create_from_file function. This will cause MWI to be
-         triggered if the message was placed in the mailbox's INBOX.
-         ASTERISK-24709 #close Reported by: Gareth Palmer patches:
-         app_voicemail-430919.patch uploaded by Gareth Palmer (License
-         5169) ........ Merged revisions 430920 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-21 21:53 +0000 [r430902]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_pjsip_outbound_registration.c:
-         res_pjsip_outbound_registration.c: Move unref to a better place.
-         Move an unconditional unref of client_state so it doesn't look
-         like it could be used after the last ref has destroyed it.
+         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 <kharwell@digium.com>
+
+       * 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 <rmudgett@digium.com>
+
+       * 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:33 +0000 [r430840-430864]  Matthew Jordan <mjordan@digium.com>
+2015-01-21 13:36 +0000 [r430843-430865]  Matthew Jordan <mjordan@digium.com>
 
-       * channels/chan_sip.c: channels/chan_sip: Fix registration leak
+       * /, 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
          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
-
-       * cdr/cdr_manager.c, cel/cel_manager.c: AMI: Add documentation for
-         the missing Cdr/CEL events. This patch adds AMI event
-         documentation for the Cdr and CEL AMI events. Note that while
-         these events do share fields with each other and with other
-         channel related events, they do not contain all of the fields in
-         a standard channel snapshot, nor is the description of the fields
-         identical. As such, the patch opts for documentation for each
-         field, for each event. Review:
-         https://reviewboard.asterisk.org/r/4350/ ASTERISK-24671 #close
-         Reported by: Dan Jenkins
+         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
+       * 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
          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
-
-       * main/rtp_engine.c: main/rtp_engine: Format NTP timestamps as
-         unsigned longs When the RTCP reports are created, the NTP
-         timestamps are stored as strings, as JSON does not have an
-         integer type long enough to store the value. However, on 32-bit
-         systems, a signed long may overflow for some portion of the
-         timestamp. This patch corrects the overflow by formatting the
-         timestamps as unsigned longs.
-
-2015-01-20 16:51 +0000 [r430818]  asanders <asanders@localhost>:
-
-       * res/ari/resource_bridges.c: ARI: Fixed crash that occurred when
-         updating a bridge when the optional query parameter 'name' was
-         not supplied. Prior to this changeset, posting to the:
-         /ari/bridges/{bridgeId} endpoint without specifying a value for
-         the [name] query parameter, would crash Asterisk if the bridge
-         you are attempting to create (or update) had the same ID as an
-         existing bridge. The internal mechanism of the POST operation
-         interpreted a null value for name, thus resulting in an error
-         condition that crashed Asterisk. ASTERISK-24560 #close Reported
-         By: Kinsey Moore Review: https://reviewboard.asterisk.org/r/4349/
-
-2015-01-20 16:46 +0000 [r430817]  Richard Mudgett <rmudgett@digium.com>
-
-       * configs/samples/iax.conf.sample, res/res_fax.c,
-         funcs/func_channel.c, UPGRADE.txt, res/snmp/agent.c,
-         channels/chan_iax2.c: CHANNEL(peer), chan_iax2, res_fax, SNMP
-         agent: Fix deadlock from reaching across a bridge. Calling
-         ast_channel_bridge_peer() cannot be done while holding any
-         channel locks. The reported issue hit the deadlock in chan_iax2,
-         but an audit of the ast_channel_bridge_peer() calls found three
-         more locations where the same deadlock can occur. * Made
-         CHANNEL(peer), res_fax, and the SNMP agent not call
-         ast_channel_bridge_peer() with any channel locked. For
-         CHANNEL(peer) I had to rework the logic to not hold the channel
-         lock. * Made chan_iax2 no longer call ast_channel_bridge_peer().
-         It was done for legacy reasons that no longer apply. * Removed
-         the iax.conf forcejitterbuffer option. It is now always enabled
-         when the jitterbuffer option is enabled. If you put a jitter
-         buffer on a channel it will be on the channel. ASTERISK-24600
-         #close Reported by: Jeff Collell Review:
-         https://reviewboard.asterisk.org/r/4342/
-
-2015-01-20 02:39 +0000 [r430796-430799]  Matthew Jordan <mjordan@digium.com>
-
-       * contrib/scripts/install_prereq, /:
-         contrib/scripts/install_prereq: Don't install 32-bit packages on
-         64-bit hosts On Debian based systems, the install_prereq tool
-         uses a search command on Debian that results in selecting both
-         64-bit and 32-bit packages. Besides the waste of disk space, this
-         can actually cause aptitude use 100% of memory on a VM with 1GB
-         of RAM as it tried to work out all of the 32-bit package
-         dependencies. This patch filters out the 32-bit packages on a
-         64-bit machine, and leaves 32-bit machines alone. ASTERISK-24048
-         #close Reported by: Ben Klang Tested by: Ben Klang, Matt Jordan
-         patches: install_prereq_64-bit_compat.patch uploaded by Ben Klang
-         (License 5876) ........ Merged revisions 430798 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         ASTERISK-24682 #close Reported by: Matt Jordan ........ Merged
+         revisions 430842 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * apps/app_voicemail.c, /: app_voicemail: Temp message left after
-         review/hangup with ODBC/IMAP backend When using ODBC or IMAP
-         storage, temporary files created on the file system must be
-         disposed of using the DISPOSE macro. The DELETE macro will map to
-         a deletion function for the backend storage, but does not clean
-         up any local files created as a result of the operation. When
-         using voicemail with the operator and review options enabled,
-         pressing 0 to enter the menu, followed by 1 to save the message,
-         followed by any other DTMF press to delete the message, will
-         result in the temporary file lingering on the file system. This
-         patch properly calls DISPOSE after the DELETE. This causes the
-         local file to be disposed of. ASTERISK-24288 #close Reported by:
-         LEI FU patches: voicemail_odbc_review_fix.diff uploaded by LEI FU
-         (License 6640) ........ Merged revisions 430795 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-19 18:05 +0000 [r430776]  Mark Michelson <mmichelson@digium.com>
+2015-01-19 18:18 +0000 [r430782]  Mark Michelson <mmichelson@digium.com>
 
-       * main/pbx.c: Call extension state callbacks at hint creation. When
-         a hint gets created, any subsequent device or presence state
+       * 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-19 13:18 +0000 [r430755]  Joshua Colp <jcolp@digium.com>
-
-       * res/res_pjsip_multihomed.c, res/res_pjsip.c: res_pjsip /
-         res_pjsip_multihomed: Use the correct transport and addressing
-         information on UAS sessions. The first thing this patch fixes is
-         UAS dialogs. Previously if a transport was configured on an
-         endpoint and an inbound session was created there was no
-         guarantee that requests sent on the dialog would use the correct
-         transport and address information. This has now been fixed so an
-         explicitly configured transport is taken into account. The second
-         thing this patch fixes is res_pjsip_multihomed. The
-         res_pjsip_multihomed module attempts to determine what transport
-         a message should go out on and what addressing information should
-         go into the message itself. In a scenario where multiple
-         transports exist bound to the same IP address but a different
-         port the code would incorrectly alter the transport and change
-         the message to the wrong transport. This change makes the
-         res_pjsip_multihomed module smarter so it will only change the
-         transport and address information in the message when it is
-         possible and makes sense. ASTERISK-24615 #close Reported by:
-         David Justl Review: https://reviewboard.asterisk.org/r/4331/
-
-2015-01-17 00:31 +0000 [r430734]  Kevin Harwell <kharwell@digium.com>
-
-       * res/res_pjsip/config_transport.c,
-         res/res_pjsip/pjsip_outbound_auth.c, res/res_pjsip/config_auth.c,
-         main/stasis_message_router.c, res/res_pjsip/location.c,
-         res/res_pjsip/pjsip_configuration.c,
-         res/res_pjsip/pjsip_distributor.c,
-         res/res_pjsip/include/res_pjsip_private.h,
-         res/res_pjsip/pjsip_global_headers.c,
-         res/res_pjsip/pjsip_options.c, res/res_pjsip.c: REVERTING
-         res_pjsip: make it unloadable Due to the original patch causing
-         memory corruptions the patch is being removed until the problem
-         can be resolved.
-
-2015-01-16 22:13 +0000 [r430709-430716]  Mark Michelson <mmichelson@digium.com>
-
-       * CHANGES: Change PJProject version requirement for ca_list_path
-         transport option in CHANGES file.
-
-       * channels/chan_pjsip.c, res/res_pjsip_session.c: 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
-
-       * include/asterisk/res_pjsip.h, configure,
-         include/asterisk/autoconfig.h.in, configure.ac,
-         configs/samples/pjsip.conf.sample, CHANGES, res/res_pjsip.c,
-         res/res_pjsip/config_transport.c: Add support for the
-         ca_list_path option for PJSIP transports. This allows for a path
-         to be specified that has a collection of CA certificates in it.
-         ASTERISK-24575 #close Reported by cloos Patches:
-         pj-ca-path-trunk.diff uploaded by cloos (License #5956) Review:
-         https://reviewboard.asterisk.org/r/4344
-
-2015-01-15 17:35 +0000 [r430685-430687]  Richard Mudgett <rmudgett@digium.com>
-
-       * res/res_fax_spandsp.c, res/res_fax.c: res_fax.c,
-         res_fax_spandsp.c: Remove redundant locking. When FAX was
-         developed, apparently the faxregistry.container used to be a
-         linked list that was converted to an ao2 container. Some of the
-         replacement ao2 container operations still had explicit
-         lock/unlocks around them. Three off nominal code paths in
-         res_fax.c and res_fax_spandsp.c unlock the channel even though
-         the routine did not lock the channel and other code paths in the
-         routine do not unlock the channel. Review:
-         https://reviewboard.asterisk.org/r/4340/
-
-       * res/res_fax_spandsp.c, res/res_fax.c: res_fax.c,
-         res_fax_spandsp.c: Fix some curlies on the end of function
-         definitions.
-
-2015-01-15 12:09 +0000 [r430664]  Joshua Colp <jcolp@digium.com>
-
-       * res/res_pjsip_outbound_registration.c:
+2015-01-15 12:11 +0000 [r430666]  Joshua Colp <jcolp@digium.com>
+
+       * /, 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
          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/
-
-2015-01-15 02:18 +0000 [r430646]  Matthew Jordan <mjordan@digium.com>
-
-       * configure, configure.ac: configure: If cross-compiling, assume we
-         have working semaphores The Asterisk 13 configure.ac checks for
-         HAS_WORKING_SEMAPHORE but does not have an option for
-         cross-compiling so it fails with an exit. Since we're cross-
-         compiling, we can't exactly go looking for the header. The
-         semaphore.h header is relatively common: * It's part of the POSIX
-         standard * It's part of GNU C Library As such, we assume that it
-         will be present when cross-compiling. As such, this patch
-         defaults "HAS_WORKING_SEMAPHORE" to "1" if cross-compiling is
-         detected. If you're cross-compiling to a platform that doesn't
-         support this, then make sure you re-define this to 0.
-         ASTERISK-24663 #close Reported by: abelbeck patches:
-         asterisk-13-anonymous-semaphores.patch uploaded by abelbeck
-         (License 5903)
-
-2015-01-14 23:14 +0000 [r430628]  Kevin Harwell <kharwell@digium.com>
-
-       * res/res_pjsip/pjsip_configuration.c,
-         res/res_pjsip/pjsip_distributor.c,
-         res/res_pjsip/include/res_pjsip_private.h,
-         res/res_pjsip/pjsip_global_headers.c,
-         res/res_pjsip/pjsip_options.c, res/res_pjsip.c,
-         res/res_pjsip/config_transport.c,
-         res/res_pjsip/pjsip_outbound_auth.c, res/res_pjsip/config_auth.c,
-         main/stasis_message_router.c, res/res_pjsip/location.c:
-         res_pjsip: make it unloadable The res_pjsip module was previously
-         unloadable. With this patch it can now be unloaded. This patch is
-         based off the original patch on the issue (listed below) by Corey
-         Farrell with a few modifications. Namely, removed a few changes
-         not required to make the module unloadable and also fixed a bug
-         that would cause asterisk to crash on unloading. This patch is
-         the first step (should hopefully be followed by another/others at
-         some point) in allowing res_pjsip and the modules that depend on
-         it to be unloadable. At this time, res_pjsip and some of the
-         modules that depend on res_pjsip cannot be unloaded without
-         causing problems of some sort. The goal of this patch is to get
-         res_pjsip and only res_pjsip to be able to unload successfully
-         and/or shutdown without incident (crashes, leaks, etc...). Other
-         dependent modules may still cause problems on unload. Basically
-         made sure, with the patch applied, that res_pjsip (with no other
-         dependent modules loaded) could be succesfully unloaded and
-         Asterisk could shutdown without any leaks or crashes that
-         pertained directly to res_pjsip. ASTERISK-24485 #close Reported
-         by: Corey Farrell Review:
-         https://reviewboard.asterisk.org/r/4311/ patches:
-         pjsip_unload-broken-r1.patch submitted by Corey Farrell (license
-         5909)
-
-2015-01-14 20:27 +0000 [r430608]  Mark Michelson <mmichelson@digium.com>
-
-       * res/res_pjsip_outbound_publish.c: Prevent slow graceful shutdown
-         when outbound publications never started. The code was missing
-         the case for explicitly destroying an outbound publication when
-         Asterisk had never actually published anything. The result was
-         that Asterisk would hang for a while on a graceful shutdown. With
-         this change, the case is taken into account, and on a graceful
-         shutdown, these publications are destroyed without the need to
-         actually send a PUBLISH request. ASTERISK-24655 #close Reported
-         by Kevin Harwell Review: https://reviewboard.asterisk.org/r/4325
-
-2015-01-14 15:39 +0000 [r430590]  Matthew Jordan <mjordan@digium.com>
-
-       * build_tools/mkpkgconfig, /: build_tools/mkpkgconfig: Fix Cflags
-         concatenation error in asterisk.pc The mkpkgconfig script
-         incorrectly concatenates Cflags options together. As an example,
-         the following: Cflags: -I/usr/include/libxml2 -g3 Is instead
-         generated as: Cflags: -I/usr/include/libxml2-g3 This patch
-         corrects the generation of Cflags in mkpkgconfig such that the
-         Cflags options are output correctly. Review:
-         https://reviewboard.asterisk.org/r/3707/ ASTERISK-23991 #close
-         Reported by: Diederik de Groot patches: fix_mkpkgconfig.diff
-         uploaded by Diederik de Groot (License 6600) ........ Merged
-         revisions 430589 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-13 18:16 +0000 [r430565]  Richard Mudgett <rmudgett@digium.com>
-
-       * apps/app_macro.c, /: app_macro: Don't restore the calling
-         location on a channel redirect. v11: If a channel redirect to a
-         macro exten of a macro that is active happens, the redirect
-         location doesn't get executed. Instead the original macro
-         location is restored and gets reexecuted. v13: An additional
-         effect happens if a parked call times out to an extension in the
-         macro that parked the call then the macro is reexecuted instead
-         of the expected park return location. * Made not restore the
-         macro calling location on an AST_SOFTHANGUP_ASYNCGOTO. *
-         Increased the locked channel range when setting up the macro
-         execution environment to cover things that should be done while
-         the channel is locked. * Removed unnecessary NULL tests before
-         calling ast_free() in _macro_exec(). ASTERISK-23850 #close
-         Reported by: Andrew Nagy Review:
-         https://reviewboard.asterisk.org/r/4292/ ........ Merged
-         revisions 430564 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-13 12:06 +0000 [r430546]  Joshua Colp <jcolp@digium.com>
-
-       * channels/pjsip/dialplan_functions.c, configure,
-         include/asterisk/autoconfig.h.in, configure.ac: chan_pjsip: Add
-         configure check for 'pjsip_get_dest_info' function. The
-         'pjsip_get_dest_info' function is used to determine if the
-         signaling transport of the dialog is secure or not. This function
-         was added in PJSIP 2.3 and does not exist in earlier versions.
-         This configure check allows Asterisk to build and run with older
-         versions at the loss of the 'secure' argument for the PJSIP
-         CHANNEL dialplan function. Usage of this argument will require
-         upgrading to PJSIP 2.3. ASTERISK-24665 #close Reported by: Mark
-         Michelson Review: https://reviewboard.asterisk.org/r/4329/
-
-2015-01-12 18:34 +0000 [r430528]  Richard Mudgett <rmudgett@digium.com>
-
-       * include/asterisk/manager.h, main/manager.c: AMI: Revert
-         non-backwards compatible changes from earlier commit. * Reverted
-         the change to astman_send_listack() to not use the listflag
-         parameter and always set the value to "Start" so the start
-         capitalization is consistent. Unfortunately changing the case of
-         a returned value is not a backward compatible change so for now
-         FAXSessions is going to have to remain inconsistent with all of
-         the other AMI list actions. * Reverted the minor protocol error
-         fix in action_getconfig() when no requested categories are found.
-         Each line needs to be formatted as "Header: text". Caught by the
-         testsuite. ASTERISK-24049
-
-2015-01-12 18:28 +0000 [r430488-430526]  Matthew Jordan <mjordan@digium.com>
-
-       * configs/samples/features.conf.sample:
-         configs/samples/features.conf.sample: Document attended transfer
-         DTMF options The sample config was missing the configuration
-         options for DTMF attended transfer completion scenarios. The
-         configuration options 'atxferabort', 'atxfercomplete',
-         'atxferthreeway', and 'atxferswap' are now documented in the
-         appropriate configuration file. ASTERISK-24678 #close Reported
-         by: Niklas Larsson patches: features.conf.sample.diff uploaded by
-         Niklas Larsson (License 5068)
-
-       * main/syslog.c, include/asterisk/syslog.h, /: main/syslog: Allow
-         dynamic logs, such as security events, to log to the syslog The
-         security event log uses a dynamic log level (SECURITY) that is
-         registered with the Asterisk logging core. Unfortunately, the
-         syslog would ignore log statements that had a dynamic log level
-         associated with them. Because the syslog cannot handle ad hoc
-         dynamic log levels, this patch treats any dynamic log entries
-         sent to the syslog as logs with a level of NOTICE. ASTERISK-20744
-         #close Reported by: Michael Keuter Tested by: Michael L. Young,
-         Jacek Konieczny patches:
-         asterisk-20744-syslog-dynamic-logging_trunk.diff uploaded by
-         Michael L. Young (license 5026) ........ Merged revisions 430506
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * funcs/func_curl.c, /: funcs/func_curl: Fix memory leak when
-         CURLOPT channel datastore is destroyed When the channel datastore
-         associated with the usage of CURLOPT on a specific channel is
-         freed, the underlying structure holding the list of options is
-         not disposed of. This patch properly frees the structure in the
-         datastore .destroy callback. ASTERISK-24672 #close Reported by:
-         Kristian Hogh patches: func_curl-memory-leak.diff uploaded by
-         Kristian Hogh (License 6639) ........ Merged revisions 430487
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-09 22:08 +0000 [r430467-430469]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * contrib/scripts/sip_to_pjsip/sip_to_pjsip.py,
-         contrib/scripts/sip_to_pjsip/astconfigparser.py: sip_to_pjsip:
-         improve ability to parse input files General improvements to SIP
-         to PJSIP conversion utility: 1) track default section of input
-         file to allow parsing an include file that doesn't specify a
-         [section] 2) informatively handle case of assignment without
-         [section] 3) correctly handle getting sections from included
-         files - [section]'s are inherited by included file 4) provide
-         null string as default transport bind ip 5) gracefully handle
-         missing portions of registration string 6) denote steps of
-         operation during conversion and confirm top level files as a
-         convenience ASTERISK-24474 #close Review:
-         https://reviewboard.asterisk.org/r/4280/ Reported by: John
-         Kiniston
-
-       * main/features.c: app_bridge: return to the next dialplan priority
-         When app_bridge grabs a channel and puts it into a bridge, the
-         channel should then continue where it left off in the dialplan
-         after the bridge has ended. Although it stores the current
-         dialplan location as an after bridge goto on the channel, it was
-         executing the same priority again instead of going to the next
-         priority. By swapping the "specific" version of
-         bridge_set_after_goto with bridge_set_after_go_on, the next
-         priority in the dialplan is executed instead. ASTERISK-24637
-         #close Review: https://reviewboard.asterisk.org/r/4322/ Reported
-         by: John Bigelow
-
-2015-01-09 17:54 +0000 [r430434]  Richard Mudgett <rmudgett@digium.com>
-
-       * UPGRADE.txt, res/res_mwi_external_ami.c, CHANGES,
-         include/asterisk/manager.h, channels/chan_iax2.c,
-         apps/app_queue.c, apps/app_agent_pool.c,
-         res/res_manager_devicestate.c, main/manager_bridges.c,
-         channels/chan_dahdi.c, main/manager.c, channels/chan_skinny.c,
-         res/res_pjsip_outbound_registration.c,
-         res/res_manager_presencestate.c,
-         res/res_pjsip/pjsip_configuration.c, apps/app_confbridge.c,
-         res/res_pjsip_pubsub.c, main/db.c, res/parking/parking_manager.c,
-         res/res_pjsip_registrar.c, apps/app_voicemail.c, main/pbx.c,
-         channels/chan_sip.c, apps/app_meetme.c, main/bridge.c,
-         res/res_fax.c: AMI: Make AMI actions that generate event lists
-         consistent. * Made the following AMI actions use list API calls
-         for consistency: Agents BridgeInfo BridgeList
-         BridgeTechnologyList ConfbridgeLIst ConfbridgeLIstRooms
-         CoreShowChannels DAHDIShowChannels DBGet DeviceStateList
-         ExtensionStateList FAXSessions Hangup IAXpeerlist IAXpeers
-         IAXregistry MeetmeList MeetmeListRooms MWIGet ParkedCalls
-         Parkinglots PJSIPShowEndpoint PJSIPShowEndpoints
-         PJSIPShowRegistrationsInbound PJSIPShowRegistrationsOutbound
-         PJSIPShowResourceLists PJSIPShowSubscriptionsInbound
-         PJSIPShowSubscriptionsOutbound PresenceStateList PRIShowSpans
-         QueueStatus QueueSummary ShowDialPlan SIPpeers SIPpeerstatus
-         SIPshowregistry SKINNYdevices SKINNYlines Status
-         VoicemailUsersList * Incremented the AMI version to 2.7.0. *
-         Changed astman_send_listack() to not use the listflag parameter
-         and always set the value to "Start" so the start capitalization
-         is consistent. i.e., The FAXSessions used "Start" while the rest
-         of the system used "start". The corresponding complete event
-         always used "Complete". * Fixed ami_show_resource_lists()
-         "PJSIPShowResourceLists" to output the AMI ActionID for all of
-         its list events. * Fixed off-nominal AMI protocol error in
-         manager_bridge_info(), manager_parking_status_single_lot(), and
-         manager_parking_status_all_lots(). Use of astman_send_error()
-         after responding to the original AMI action request violates the
-         action response pattern by sending two responses. * Fixed minor
-         protocol error in action_getconfig() when no requested categories
-         are found. Each line needs to be formatted as "Header: text". *
-         Fixed off-nominal memory leak in
-         manager_build_parked_call_string(). * Eliminated unnecessary use
-         of RAII_VAR() in ami_subscription_detail(). ASTERISK-24049 #close
-         Reported by: Jonathan Rose Review:
-         https://reviewboard.asterisk.org/r/4315/
-
-2015-01-09 14:51 +0000 [r430416]  Kinsey Moore <kmoore@digium.com>
-
-       * /, res/res_fax.c, include/asterisk/res_fax.h,
-         configs/samples/res_fax.conf.sample, CHANGES: res_fax: Add T.38
-         negotiation timeout option This change makes the T.38 negotiation
-         timeout configurable via 't38timeout' in res_fax.conf or
-         FAXOPT(t38timeout). It was previously hard coded to be 5000
-         milliseconds. This change also handles T.38 switch failures by
-         aborting the fax since in the case where this can happen, both
-         sides have agreed to switch to T.38 and Asterisk is unable to do
-         so. Review: https://reviewboard.asterisk.org/r/4320/ ........
-         Merged revisions 430415 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2015-01-08 21:40 +0000 [r430373-430397]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_pubsub.c: res_pjsip_pubsub: Fix persistent
-         subscriptions not surviving graceful shutdown If you do a 'core
-         (shutdown|restart) graceful' persistent subscriptions won't
-         survive. If you do a 'core (shutdown|restart) now' or asterisk
-         terminates for some reason, they do. Here's why... When asterisk
-         shuts down gracefully, it sends a 'NOTIFY/terminated' to
-         subscribers for each subscription. This not only tells the
-         subscribers that the dialog/state machine is done, it also frees
-         the last reference to the subscription tree which causes the
-         persistent subscription to get deleted from astdb. When asterisk
-         restarts, nothing's left. Just preventing the delete from astdb
-         doesn't work because we already told the subscriber to terminate
-         the dialog so we can't restart it even if it was still in astdb.
-         Everything works OK if asterisk terminates unexpectedly because
-         we never send the 'terminated' message so on restart, the
-         subscription is still in astdb and the subscriber is none the
-         wiser. This patch suppresses the sending of 'NOTIFY/terminated'
-         on shutdown for persistent connections. Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4318/
-
-       * res/res_pjsip_outbound_registration.c:
-         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/
-
-       * res/res_pjsip_outbound_registration.c:
-         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/
-
-2015-01-07 21:25 +0000 [r430355]  Kinsey Moore <kmoore@digium.com>
-
-       * res/res_stasis.c: ARI: Allow usage of ASYNCGOTO with Stasis()
-         When the AMI Redirect action is used with a channel bridged
-         inside Stasis() and not running a pbx, the channel is hung up
-         instead of proceeding to the desired location in dialplan. This
-         change allows such channels to be Redirected properly by
-         detecting the operation used by Redirect (ASYNCGOTO) and using
-         the code already established for functionality of the ARI channel
-         continue operation. ASTERISK-24591 #close Review:
-         https://reviewboard.asterisk.org/r/4271/
-
-2015-01-07 18:53 +0000 [r430337]  Mark Michelson <mmichelson@digium.com>
-
-       * rest-api/api-docs/channels.json, rest-api/resources.json,
-         res/ari/resource_channels.c, CHANGES, res/res_ari_channels.c,
-         res/ari/resource_channels.h: Add the ability to continue and
-         originate using priority labels. With this patch, the following
-         two ARI commands POST /channels POST /channels/{id}/continue
-         Accept a new parameter, label, that can be used to continue to or
-         originate to a priority label in the dialplan. Because this is
-         adding a new parameter to ARI commands, the API version of ARI
-         has been bumped from 1.6.0 to 1.7.0. This patch comes courtesy of
-         Nir Simionovich from Greenfield Tech. Thanks! ASTERISK-24412
-         #close Reported by Nir Simionovich Review:
-         https://reviewboard.asterisk.org/r/4285
-
-2015-01-07 18:17 +0000 [r430315-430319]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_exten_state.c: res_pjsip_exten_state: Change 'does
-         not exist' warning to notice The 'new_subscribe: Extension <>
-         does not exist or has no associated hint' is a config issue and
-         doesn't need to clutter up logs with warnings. Changed to notice.
-         Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4307/
-
-       * res/res_pjsip_mwi.c: res_pjsip_mwi: Change "MWI Subscription
-         failed" message from warning to notice The "MWI Subscription
-         failed" message means the client is trying to subscribe to a
-         mailbox that doesn't exist. There's no need to clutter up logs
-         with warnings for a client misconfiguration so I changed it to a
-         notice. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4306/
-
-       * funcs/func_config.c, tests/test_config.c: func_config: Add
-         ability to retrieve specific occurrence of a variable I guess
-         nobody uses templates with AST_CONFIG because today if you have a
-         context that inherits from a template and you call AST_CONFIG on
-         the context, you'll get the value from the template even if
-         you've overridden it in the context. This is because AST_CONFIG
-         only gets the first occurrence which is always from the template.
-         This patch adds an optional 'index' parameter to AST_CONFIG which
-         lets you specify the exact occurrence to retrieve, or '-1' to
-         retrieve the last. The default behavior is the current behavior.
-         Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4313/
-
-2015-01-07 17:35 +0000 [r430313]  Mark Michelson <mmichelson@digium.com>
-
-       * res/res_pjsip_refer.c: Fix ability to perform a remote attended
-         transfer with PJSIP. This fix has two parts: * Corrected an error
-         message to properly state that external_replaces is an extension.
-         The error message also prints what dialplan context the
-         external_replaces extension was being looked for in. * Corrected
-         the printing of the Replaces: header in an INVITE request. We
-         were duplicating "Replaces: " in the header. ASTERISK-24376
-         #close Reported by Matt Jordan Review:
-         https://reviewboard.asterisk.org/r/4296
-
-2015-01-07 16:55 +0000 [r430295]  George Joseph <george.joseph@fairview5.com>
-
-       * include/asterisk/config.h, main/config.c, main/manager.c: config:
-         Add option to NOT preserve effective context when changing a
-         template Let's say you have a template T with variable VAR1 = ON
-         and you have a context C(T) that doesn't specify VAR1. If you
-         read C, the effective value of VAR1 is ON. Now you change T VAR1
-         to OFF and call ast_config_text_file_save. The current behavior
-         is that the file gets re-written with T/VAR1=OFF but C/VAR1=ON is
-         added. Personally, I think this is a bug. It's preserving the
-         effective state of C even though I didn't specify C/VAR1 in th
-         first place. I believe the behavior should be that if I didn't
-         specify C/VAR1 originally, then the effective value of C/VAR1
-         should continue to follow the inherited state. Now, if I DID
-         explicitly specify C/VAR1, the it should be preserved even if the
-         template changes. Even though I think the existing behavior is a
-         bug, it's been that way forever so I'm not changing it. Instead,
-         I've created ast_config_text_file_save2() that takes a bitmask of
-         flags, one of which is to preserve the effective context (the
-         current behavior). The original ast_config_text_file_save calls
-         *2 with the preserve flag. If you want the new behavior, call *2
-         directly without a flag. I've also updated Manager UpdateConfig
-         with a new parameter 'PreserveEffectiveContext' whose default is
-         'yes'. If you want the new behavior with UpdateConfig, set
-         'PreserveEffectiveContext: no'. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4297/
-
-2015-01-07 02:52 +0000 [r430274]  Kinsey Moore <kmoore@digium.com>
-
-       * res/res_pjsip/pjsip_options.c, res/res_pjsip.c,
-         main/rtp_engine.c: Fix dev-mode build on recent gcc
-
-2015-01-06 22:46 +0000 [r430252]  Matthew Jordan <mjordan@digium.com>
+         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 <mjordan@digium.com>
+
+       * 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/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
          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 17:52 +0000 [r430221-430227]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_mwi.c: res_pjsip_mwi: Change warning to notice When
-         res_pjsip loads and an endpoint auto-subscribes a mailbox for
-         mwi, if a contact hasn't registered yet, res_pjsip_mwi spits out
-         a warning. This is a perfectly normal situation though and
-         doesn't require something as serious as a warning. It's also self
-         correcting. The device will start getting mwi as soon as it
-         registers. This patch changes the warning to a notice. Tested-by:
-         George Joseph Review: https://reviewboard.asterisk.org/r/4314/
-
-       * bridges/bridge_native_rtp.c: bridge_native_rtp: Change
-         local/remote message from debug/2 to verb/4 Change the "Locally
-         bridged"/"Remotely bridged" messages from dbg/2 to verb/4.
-         Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4300/
-
-       * res/res_pjsip_outbound_registration.c, CHANGES:
-         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/
-
-       * res/res_pjsip/location.c: pjsip cli: Fix sorting of contacts for
-         'pjsip list contacts' For some reason I was using a hash
-         container instead of a list to gather the contacts for 'pjsip
-         list/show contacts' so even though I had a sort function, the
-         output wasn't sorted. This patch just changes the hash container
-         to a list container and the contacts now appear sorted in the
-         CLI. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4305/
+2015-01-06 19:53 +0000 [r430245]  Scott Griepentrog <sgriepentrog@digium.com>
 
-2015-01-05 22:49 +0000 [r430200]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * /, main/bridge_basic.c: bridge: avoid leaking channel during
+       * 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
          ASTERISK-24513 #close Review:
          https://reviewboard.asterisk.org/r/4302/ ........ Merged
          revisions 430199 from
-         http://svn.asterisk.org/svn/asterisk/branches/12
-
-2015-01-05 17:56 +0000 [r430179-430181]  Joshua Colp <jcolp@digium.com>
-
-       * CHANGES: pjsip: Document addition of 'PJSIP_AOR' and
-         'PJSIP_CONTACT' in CHANGES file.
-
-       * funcs/func_pjsip_contact.c (added), res/res_pjsip_session.c,
-         include/asterisk/res_pjsip.h,
-         channels/pjsip/dialplan_functions.c,
-         include/asterisk/res_pjsip_session.h, funcs/func_pjsip_aor.c
-         (added), res/res_pjsip/location.c: pjsip: Add 'PJSIP_AOR' and
-         'PJSIP_CONTACT' dialplan functions. The PJSIP_AOR dialplan
-         function allows inspection of configured AORs including what
-         contacts are currently bound to them. The PJSIP_CONTACT dialplan
-         function allows inspection of contacts in existence. These can
-         include both externally added (by way of registration) or
-         permanent ones. ASTERISK-24341 Reported by: xrobau Review:
-         https://reviewboard.asterisk.org/r/4308/
-
-2014-12-29 13:10 +0000 [r430145]  Kinsey Moore <kmoore@digium.com>
-
-       * res/res_pjsip.c: PJSIP: Update transport method documentation
-         This updates the documentation for the 'method' configuration
-         option to be more verbose about the behaviors of values
-         'unspecified' and 'default'. They do exactly the same thing which
-         is to select the default as defined by PJSIP which is currently
-         TLSv1. Review: https://reviewboard.asterisk.org/r/4264/
-
-2014-12-24 21:27 +0000 [r430127]  Kevin Harwell <kharwell@digium.com>
-
-       * /, configs/samples/queues.conf.sample: app_queue: Update sample
-         conf documenation Updated the queues.conf.sample file to
-         explicitly state which channel queue variables are propagated to.
-         ASTERISK-24267 Reported by: Mitch Claborn ........ Merged
-         revisions 430126 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+         http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged
+         revisions 430200 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2014-12-24 15:26 +0000 [r430083-430092]  Matthew Jordan <mjordan@digium.com>
+2014-12-24 15:27 +0000 [r430085-430094]  Matthew Jordan <mjordan@digium.com>
 
-       * res/res_pjsip.c,
-         contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py
-         (added): 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
+       * 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/config_global.c, res/res_pjsip_keepalive.c (added),
-         configs/samples/pjsip.conf.sample: res_pjsip_keepalive: Add
+         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
          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
+         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
-
-2014-12-23 23:18 +0000 [r430059-430064]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip/pjsip_options.c: 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/
-
-       * tests/test_astobj2.c: test_astobj2: Fix warning for missing
-         trailing slash in category This patch adds a trailing slash to
-         the category for this test. No more warning. Tested-by: George
-         Joseph Review: https://reviewboard.asterisk.org/r/4295/
-
-2014-12-22 21:18 +0000 [r430010-430034]  Richard Mudgett <rmudgett@digium.com>
-
-       * 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
+       * /, 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 <rmudgett@digium.com>
+
+       * 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
          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/
+         https://reviewboard.asterisk.org/r/4259/ ........ Merged
+         revisions 430034 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * /, main/logger.c, include/asterisk/_private.h, main/asterisk.c:
+       * 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
          #close Reported by: Denis Martinez Review:
          https://reviewboard.asterisk.org/r/4282/ ........ Merged
          revisions 430009 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2014-12-22 15:40 +0000 [r429983]  Matthew Jordan <mjordan@digium.com>
-
-       * /, channels/chan_sip.c: chan_sip: Send CANCEL via original INVITE
-         destination even after UPDATE request Given the following
-         scenario: * Three SIP phones (A, B, C), all communicating via a
-         proxy with Asterisk * A call is established between A and B. B
-         performs a SIP attended transfer of A to C. B sets the call on
-         hold (A is hearing MOH) and dials the extension of C. While phone
-         C is ringing, B transfers the call (that is, what we typically
-         call a 'blond transfer'). * When the transfer completes, A hears
-         the ringing of phone C, while B is idle. In the SIP messaging for
-         the above scenario, a REFER request is sent to transfer the call.
-         When "sendrpid=yes" is set in sip.conf, Asterisk may send an
-         UPDATE request to phone C to update party information. This
-         update is sent directly to phone C, not through the intervening
-         proxy. This has the unfortunate side effect of providing route
-         information, which is then set on the sip_pvt structure for C. If
-         someone (e.g. B) is trying to get the call back (through a
-         directed pickup), Asterisk will send a CANCEL request to C.
-         However, since we have now updated the route set, the CANCEL
-         request will be sent directly to C and not through the proxy. The
-         phone ignores this CANCEL according to RFC3261 (Section 9.1).
-         This patch updates reqprep such that the route is not updated if
-         an UPDATE request is being sent while the INVITE state is
-         INV_PROCEEDING or INV_EARLY_MEDIA. This ensures that a subsequent
-         CANCEL request is still sent to the correct location. Review:
-         https://reviewboard.asterisk.org/r/4279 ASTERISK-24628 #close
-         Reported by: Karsten Wemheuer patches: issue.patch uploaded by
-         Karsten Wemheuer (License 5930) ........ Merged revisions 429982
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-2014-12-22 00:17 +0000 [r429914]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_phoneprov_provider.c:
-         res_pjsip_phoneprovi_provider: Fix reload Reloading wasn't
-         working correctly because on a reload, the sorcery apply handler
-         was never being called for unchanged users. So, instead of using
-         an apply handler, I'm now iterating over all users. Works much
-         more reliably. Tested-by: George Joseph Review:
-         https://reviewboard.asterisk.org/r/4288/
-
-2014-12-20 20:57 +0000 [r429894]  Joshua Colp <jcolp@digium.com>
-
-       * main/named_acl.c, /: acl: Fix reloading of configuration if
-         configuration file does not exist at startup. The named ACL code
-         incorrectly destroyed the config options information if loading
-         of the configuration file failed at startup. This would result in
-         reloading also failing even if a valid configuration file was put
-         in place. ASTERISK-23733 #close Reported by: Richard Kenner
-         ........ Merged revisions 429893 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-2014-12-19 20:54 +0000 [r429829-429868]  Richard Mudgett <rmudgett@digium.com>
-
-       * /, res/res_http_websocket.c: res_http_websocket.c: Fix incorrect
-         use of sizeof in ast_websocket_write(). This won't fix the
-         reported issue but it is an incorrect use of sizeof.
-         ASTERISK-24566 Reported by: Badalian Vyacheslav ........ Merged
-         revisions 429867 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * 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
-
-2014-12-19 17:26 +0000 [r429827]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * /, main/bridge_basic.c: bridge: avoid leaking channel during
-         blond transfer After a blond transfer (start attended and hang
-         up) to a destination that also hangs up without answer, the
-         Local;1 channel was leaked and would show up on core show
-         channels. This was happening because the attended state
-         blond_nonfinal_enter() resetting the props->transfer_target to
-         null while releasing it's own reference, which would later
-         prevent props from releasing another reference during
-         destruction. The change made here is simply to not assign the
-         target to NULL. ASTERISK-24513 #close Reported by: Mark Michelson
-         Review: https://reviewboard.asterisk.org/r/4262/ ........ Merged
-         revisions 429826 from
-         http://svn.asterisk.org/svn/asterisk/branches/12
+         http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
+         revisions 430010 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2014-12-18 22:38 +0000 [r429784-429805]  Richard Mudgett <rmudgett@digium.com>
+2014-12-22 18:35 +0000 [r430007-430008]  bebuild <bebuild@localhost>:
 
-       * res/res_rtp_asterisk.c, channels/chan_dahdi.c, /: chan_dahdi.c,
-         res_rtp_asterisk.c: Change some spammy debug messages to level 5.
-         ASTERISK-24337 #close Reported by: Rusty Newton ........ Merged
-         revisions 429804 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+       * /, 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
 
-       * UPGRADE.txt, channels/sig_analog.c, /: chan_dahdi: Populate
-         CALLERID(ani2) for incoming calls in featdmf signaling mode. For
-         the featdmf signaling mode the incoming MF Caller-ID information
-         is formatted as follows:
-         *${CALLERID(ani2)}${CALLERID(ani)}#*${EXTEN}# Rather than
-         discarding the ani2 digits, populate the CALLERID(ani2) value
-         with what is received instead. AST-1368 #close Reported by: Denis
-         Martinez Patches: extract_ani2_for_featdmf_v11.patch (license
-         #5621) patch uploaded by Richard Mudgett ........ Merged
-         revisions 429783 from
-         http://svn.asterisk.org/svn/asterisk/branches/11
+2014-12-19 21:52 +0000 [r429855-429892]  bebuild <bebuild@localhost>:
 
-2014-12-18 15:50 +0000 [r429763]  Kevin Harwell <kharwell@digium.com>
+       * 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_sdp_rtp.c: res_pjsip_sdp_rtp: wrong bridge chosen
-         when the DTMF mode is not compatible A native rtp bridge was
-         being chosen (it shouldn't have been) when using two pjsip
-         channels with incompatible DTMF modes. This patch sets the rtp
-         instance property, AST_RTP_PROPERTY_DTMF, for the appropriate
-         DTMF mode(s) for pjsip. It was not being set before, meaning all
-         DTMF modes for pjsip were being treated as compatible, thus
-         native bridging would be chosen as the bridge type when it
-         shouldn't have been. ASTERISK-24459 #close Reported by: Yaniv
-         Simhi Review: https://reviewboard.asterisk.org/r/4265/
+       * 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
 
-2014-12-18 15:34 +0000 [r429739-429761]  Mark Michelson <mmichelson@digium.com>
+       * 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
+       * /, 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
          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
+         https://reviewboard.asterisk.org/r/4273 ........ Merged revisions
+         429761 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
-
-       * 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
+       * 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
 
-2014-12-18 00:10 +0000 [r429699-429719]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_config_wizard.c: res_pjsip_config_wizard: fix
-         unload SEGV If certain pjsip modules aren't loaded, the wizard
-         causes a SEGV when it unloads. Added a check for the presense of
-         the object type wizard before trying to clean it up. Tested-by:
-         George Joseph
-
-       * res/res_pjsip_config_wizard.c: res_pjsip_config_wizard: Change
-         FILEUNCHANGED config_load2 flag determination The module now
-         applies the FILEUNCHANGED flag when both reloaded is specified
-         AND there's no last_config for the object type. Tested-by: George
-         Joseph Review: https://reviewboard.asterisk.org/r/4276/
-
-2014-12-17 09:54 +0000 [r429675]  Walter Doekes <walter+asterisk@wjd.nu>
-
-       * addons/ooh323c/src/printHandler.c, apps/app_adsiprog.c,
-         channels/chan_unistim.c, main/udptl.c, res/res_rtp_asterisk.c, /,
-         channels/chan_sip.c, channels/vcodecs.c, res/res_crypto.c,
-         utils/astman.c, utils/smsq.c, main/utils.c, pbx/dundi-parser.c,
-         apps/app_getcpeid.c, channels/chan_iax2.c, channels/sig_pri.c,
-         res/res_pktccops.c, main/loader.c, channels/iax2/parser.c,
-         main/uuid.c, main/manager.c, channels/chan_misdn.c,
-         apps/app_osplookup.c, channels/misdn/ie.c, main/http.c,
-         apps/app_sms.c: Fix printf problems with high ascii characters
-         after r413586 (1.8). In r413586 (1.8) various casts were added to
-         silence gcc 4.10 warnings. Those fixes included things like: -out
-         += sprintf(out, "%%%02X", (unsigned char) *ptr); +out +=
-         sprintf(out, "%%%02X", (unsigned) *ptr); That works for low ascii
-         characters, but for the high range that yields e.g. FFFFFFC3 when
-         C3 is expected. This changeset: - fixes those casts to use the
-         'hh' unsigned char modifier instead - consistently uses %02x
-         instead of %2.2x (or other non-standard usage) - adds a few 'h'
-         modifiers in various places - fixes a 'replcaes' typo -
-         dev/urandon typo (in 13+ patch) Review:
-         https://reviewboard.asterisk.org/r/4263/ ASTERISK-24619 #close
-         Reported by: Stefan27 (on IRC) ........ Merged revisions 429673
-         from http://svn.asterisk.org/svn/asterisk/branches/11 ........
-         Merged revisions 429674 from
-         http://svn.asterisk.org/svn/asterisk/branches/12
-
-2014-12-16 17:53 +0000 [r429653]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_config_wizard.c: res_pjsip_config_wizard: fix test
-         breakage Fix test breakage caused by not checking for res_pjsip
-         before calling ast_sip_get_sorcery. Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4269/
-
-2014-12-16 16:38 +0000 [r429612-429633]  Joshua Colp <jcolp@digium.com>
-
-       * /, channels/chan_sip.c: chan_sip: Allow T.38 switch-over when
-         SRTP is in use. Previously when SRTP was enabled on a channel it
-         was not possible to switch to T.38 as no crypto attributes would
-         be present. This change makes it so it is now possible. If a T.38
-         re-invite comes in SRTP is terminated since in practice you can't
-         encrypt a UDPTL stream. Now... if we were doing T.38 over RTP
-         (which does exist) then we'd have a chance but almost nobody does
-         that so here we are. ASTERISK-24449 #close Reported by: Andreas
-         Steinmetz patches: udptl-ignore-srtp-v2.patch submitted by
-         Andreas Steinmetz (license 6523) ........ Merged revisions 429632
-         from http://svn.asterisk.org/svn/asterisk/branches/11
-
-       * res/res_pjsip_t38.c: res_pjsip_t38: Fix T.38 failure when peer
-         reinvites immediately. If a remote endpoint reinvites to T.38
-         immediately the state machine will go into a peer reinvite state.
-         If a T.38 capable application (such as ReceiveFax) queries it
-         will receive this state. Normally the application will then
-         indicate so that the channel driver will queue up the T.38 offer
-         previously received. Once it receives this offer the application
-         will act normally and negotiate. The res_pjsip_t38 module
-         incorrectly partially squashed this indication. This would cause
-         the application to think the request had failed when in reality
-         it had actually worked. This change makes it so that no T.38
-         control frames (or indications) are squashed.
-
-2014-12-15 17:07 +0000 [r429592]  George Joseph <george.joseph@fairview5.com>
-
-       * res/res_pjsip_phoneprov_provider.c,
-         configs/samples/pjsip_wizard.conf.sample (added), CHANGES,
-         res/res_pjsip_config_wizard.c (added): res_pjsip_config_wizard:
-         Allow streamlined config of common pjsip scenarios
-         res_pjsip_config_wizard ------------------ * This is a new module
-         that adds streamlined configuration capability for chan_pjsip.
-         It's targetted at users who have lots of basic configuration
-         scenarios like 'phone' or 'agent' or 'trunk'. Additional
-         information can be found in the sample configuration file at
-         config/samples/pjsip_wizard.conf.sample. Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4190/
-
-2014-12-15 15:36 +0000 [r429571]  Mark Michelson <mmichelson@digium.com>
-
-       * 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
-
-2014-12-12 23:54 +0000 [r429542]  George Joseph <george.joseph@fairview5.com>
-
-       * main/manager.c, include/asterisk/module.h,
-         include/asterisk/_private.h: loader: Move definition of
-         ast_module_reload from _private.h to module.h No functionality
-         change. Just move the definition of ast_module_reload from
-         _private.h to module.h so it can be public. Also removed the
-         include of _private.h from manager.c since ast_module_load was
-         the only reason for including it. Tested-by: George Joseph
-         Review: https://reviewboard.asterisk.org/r/4251/
-
-2014-12-12 23:40 +0000 [r429540]  Richard Mudgett <rmudgett@digium.com>
+       * 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
 
-       * main/lock.c, /, include/asterisk/lock.h: DEBUG_THREADS: Fix
+       * /, 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
          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
-
-2014-12-12 22:53 +0000 [r429518-429519]  Matthew Jordan <mjordan@digium.com>
-
-       * 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.
-
-       * /: Add 11 merge properties
-
-2014-12-12 16:57 +0000 [r429497]  Joshua Colp <jcolp@digium.com>
-
-       * main/format.c, main/codec.c, include/asterisk/format.h: 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/
-
-2014-12-12 15:30 +0000 [r429477]  Kevin Harwell <kharwell@digium.com>
-
-       * 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/
-
-2014-12-12 15:00 +0000 [r429457]  David M. Lee <dlee@digium.com>
-
-       * res/res_pjsip_outbound_publish.c: Fix crash for sorcery
-         misconfigs res_pjsip_outbound_publish was missing the
-         CHECK_PJSIP_MODULE_LOADED() call in load_module, and would crash
-         with a segfault if res_pjsip declined to load. Review:
-         https://reviewboard.asterisk.org/r/4258/
-
-2014-12-12 14:12 +0000 [r429430-429433]  Kinsey Moore <kmoore@digium.com>
-
-       * /, 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
-
-       * res/res_sorcery_config.c, /: Sorcery: Log when old config remains
-         in use This adds a log message notifying the user that a stale
-         configuration is in place upon reload when a config object fails
-         to load. This situation can end up causing confusion when the
-         object failed to load but exists from a previous config load
-         especially when the old config is significantly different from
-         the new config. Review: https://reviewboard.asterisk.org/r/4250/
-         Reported by: Thomas Thompson ........ Merged revisions 429429
-         from http://svn.asterisk.org/svn/asterisk/branches/12
-
-2014-12-12 13:05 +0000 [r429407-429409]  Joshua Colp <jcolp@digium.com>
-
-       * res/res_pjsip_session.exports.in, channels/chan_pjsip.c,
-         res/res_pjsip_session.c, include/asterisk/res_pjsip_session.h:
-         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/
-
-       * 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/
-
-2014-12-11 20:31 +0000 [r429387]  Kevin Harwell <kharwell@digium.com>
-
-       * CHANGES: ARI/AMI: Include language in standard channel snapshot
-         output The CHANGES verbiage for the "language" addition had been
-         put under the wrong release. This moves it to be under 13.1 to
-         13.2 changes. ASTERISK-24553 Reported by: Matt Jordan
-
-2014-12-11 17:21 +0000 [r429352-429379]  Kinsey Moore <kmoore@digium.com>
-
-       * /: Recorded merge of revisions 429378 from
-         http://svn.asterisk.org/svn/asterisk/branches/12 ........ Fix
-         incorrect patch applied in r429354 The patch that was applied was
-         another pending patch. This swaps them out.
-
-       * /: Recorded merge of revisions 429354 from
-         http://svn.asterisk.org/svn/asterisk/branches/12 ........ Stasis:
-         Update unittest for channel snapshots This adjusts the unit test
-         for channel snapshots to take the new language key into account.
-
-       * 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.
-
-2014-12-10 15:42 +0000 [r429326]  Kevin Harwell <kharwell@digium.com>
-
-       * /, CHANGES: ARI/AMI: Include language in standard channel
-         snapshot output Adding information about including "language" in
-         the standard channel snapshot output to the CHANGES file. Note
-         the actual source changes have already been previously committed.
-         ASTERISK-24553 Reported by: Matt Jordan ........ Merged revisions
-         429325 from http://svn.asterisk.org/svn/asterisk/branches/12
-
-2014-12-10 13:34 +0000 [r429273]  Joshua Colp <jcolp@digium.com>
-
-       * res/res_http_websocket.c, res/res_pjsip_transport_websocket.c, /,
-         channels/chan_sip.c: res_http_websocket: Fix crash due to double
-         freeing memory when receiving a payload length of zero. Frames
-         with a payload length of 0 were incorrectly handled in
-         res_http_websocket. Provided a frame with a payload had been
-         received prior it was possible for a double free to occur. The
-         realloc operation would succeed (thus freeing the payload) but be
-         treated as an error. When the session was then torn down the
-         payload would be freed again causing a crash. The read function
-         now takes this into account. This change also fixes assumptions
-         made by users of res_http_websocket. There is no guarantee that a
-         frame received from it will be NULL terminated. ASTERISK-24472
-         #close Reported by: Badalian Vyacheslav Review:
-         https://reviewboard.asterisk.org/r/4220/ Review:
-         https://reviewboard.asterisk.org/r/4219/ ........ Merged
-         revisions 429270 from
          http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged
-         revisions 429272 from
-         http://svn.asterisk.org/svn/asterisk/branches/12
-
-2014-12-10 13:14 +0000 [r429246]  Kinsey Moore <kmoore@digium.com>
+         revisions 429540 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-       * /, res/res_pjsip/pjsip_options.c: 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
-
-2014-12-09 20:46 +0000 [r429223]  Scott Griepentrog <sgriepentrog@digium.com>
-
-       * main/asterisk.c: 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/
-
-2014-12-09 20:19 +0000 [r429175-429206]  Kevin Harwell <kharwell@digium.com>
-
-       * res/ari/ari_model_validators.h, /, main/stasis_channels.c,
-         rest-api/api-docs/channels.json, res/ari/ari_model_validators.c,
-         main/manager_channels.c: 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
-
-       * include/asterisk/rtp_engine.h, res/res_rtp_asterisk.c,
-         main/rtp_engine.c, /, channels/chan_sip.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
-
-       * 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/
-
-2014-12-09 15:44 +0000 [r429153]  Joshua Colp <jcolp@digium.com>
-
-       * res/ari/resource_channels.h, rest-api/api-docs/channels.json,
-         res/ari/resource_channels.c, CHANGES, res/res_ari_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/
+       * /, res/res_pjsip_pubsub.c: Activate persistent subscriptions when
+         they are recreated. Prior to this change, recreating persistent
+         subscriptions would create the subscription but would not
+         activate it. This led to subscriptions being listed in the "NULL"
+         state by diagnostics and not sending NOTIFYs when expected.
+         Review: https://reviewboard.asterisk.org/r/4261 ........ Merged
+         revisions 429571 from
+         http://svn.asterisk.org/svn/asterisk/branches/13
 
-2014-12-09 14:00 +0000 [r429128]  Kinsey Moore <kmoore@digium.com>
+       * /, asterisk-13.1.0-summary.html (removed),
+         asterisk-13.1.0-summary.txt (removed): Update properties; remove
+         old summaries
 
-       * /, res/res_pjsip/pjsip_options.c: 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
+       * / (added): Create Certified Asterisk 13.1 branch
 
 2014-12-15  Asterisk Development Team <asteriskteam@digium.com>
 
diff --git a/asterisk-13.21.0-rc1-summary.html b/asterisk-13.21.0-rc1-summary.html
deleted file mode 100644 (file)
index 2cade2b..0000000
+++ /dev/null
@@ -1,348 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><title>Release Summary - asterisk-13.21.0-rc1</title><h1 align="center"><a name="top">Release Summary</a></h1><h3 align="center">asterisk-13.21.0-rc1</h3><h3 align="center">Date: 2018-04-19</h3><h3 align="center">&lt;asteriskteam@digium.com&gt;</h3><hr><h2 align="center">Table of Contents</h2><ol>
-<li><a href="#summary">Summary</a></li>
-<li><a href="#contributors">Contributors</a></li>
-<li><a href="#closed_issues">Closed Issues</a></li>
-<li><a href="#open_issues">Open Issues</a></li>
-<li><a href="#commits">Other Changes</a></li>
-<li><a href="#diffstat">Diffstat</a></li>
-</ol><hr><a name="summary"><h2 align="center">Summary</h2></a><center><a href="#top">[Back to Top]</a></center><p>This release is a point release of an existing major version. The changes included were made to address problems that have been identified in this release series, or are minor, backwards compatible new features or improvements. Users should be able to safely upgrade to this version if this release series is already in use. Users considering upgrading from a previous version are strongly encouraged to review the UPGRADE.txt document as well as the CHANGES document for information about upgrading to this release series.</p><p>The data in this summary reflects changes that have been made since the previous release, asterisk-13.20.0.</p><hr><a name="contributors"><h2 align="center">Contributors</h2></a><center><a href="#top">[Back to Top]</a></center><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were affected by commits that went into this release.</p><table width="100%" border="0">
-<tr><th width="33%">Coders</th><th width="33%">Testers</th><th width="33%">Reporters</th></tr>
-<tr valign="top"><td width="33%">38 Alexander Traud <pabstraud@compuserve.com><br/>27 Corey Farrell <git@cfware.com><br/>14 Richard Mudgett <rmudgett@digium.com><br/>9 George Joseph <gjoseph@digium.com><br/>3 Ross Beer <ross.beer@voicehost.co.uk><br/>1 Michael Cargile <mikec@vicidial.com><br/>1 Sean Bright <sean.bright@gmail.com><br/>1 Nathan Bruning <nathan@iperity.com><br/>1 Ivan Poddubny <ivan.poddubny@gmail.com><br/>1 Kevin Harwell <kharwell@digium.com><br/>1 Jean Aunis - Prescom <jean.aunis@prescom.fr><br/>1 Joshua Colp <jcolp@digium.com><br/>1 Chris Savinovich <csavinovich@digium.com><br/>1 Thomas Guebels <tgu@escaux.com><br/>1 Evandro César Arruda <ecarruda@gmail.com><br/>1 sungtae kim <pchero21@gmail.com><br/>1 Florian Floimair <f.floimair@commend.com><br/>1 Benjamin Keith Ford <bford@digium.com><br/></td><td width="33%"><td width="33%">31 Alexander Traud <pabstraud@compuserve.com><br/>4 Ross Beer <ross.beer@voicehost.co.uk><br/>3 John Nemeth <jnemeth@netbsd.org><br/>2 Richard Mudgett <rmudgett@digium.com><br/>1 Michael Cargile <mikec@vicidial.com><br/>1 Alex <metsys@gmx.com><br/>1 Sébastien Duthil <sduthil@wazo.community><br/>1 Jean Aunis - Prescom <jean.aunis@prescom.fr><br/>1 Joerg Sonnenberger, D'Arcy Cain<br/>1 Kevin Harwell <kharwell@digium.com><br/>1 Stephane Chazelas <stephane.chazelas@gmail.com><br/>1 Fran Vicente <franfj@gmail.com><br/>1 Michiel van Baak <michiel@vanbaak.info><br/>1 Curt Sampson <cjs@starling-software.com><br/>1 Corey Farrell <git@cfware.com><br/>1 Nathan Bruning <nathan@iperity.com><br/>1 Shannon Price <sprice@dialogtech.com><br/>1 John M. <xetra_frankfurt@gmx.de><br/>1 Bryan Walters <secretop@gmail.com><br/>1 clean targets.<br/>1 Tzafrir Cohen <tzafrir.cohen@xorcom.com><br/>1 George Joseph <gjoseph@digium.com><br/>1 Alejandro Padilla <alejandro.padilla83@gmail.com><br/>1 Thomas Guebels <tgu@escaux.com><br/>1 Evandro César Arruda <ecarruda@gmail.com><br/>1 lvl <laszlo@talkto.nl><br/></td></tr>
-</table><hr><a name="closed_issues"><h2 align="center">Closed Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p><h3>New Feature</h3><h4>Category: Resources/res_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27704">ASTERISK-27704</a>: Add cache_pools debug option to pjproject.conf<br/>Reported by: Richard Mudgett<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=104468ad3a6432d10acebb225774c529a229b2f0">[104468ad3a]</a> Richard Mudgett -- pjproject: Add cache_pools debugging option.</li>
-</ul><br><h3>Bug</h3><h4>Category: Addons/cdr_mysql</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27782">ASTERISK-27782</a>: cdr_mysql: Missing MYSQL_PORT definition<br/>Reported by: Evandro César Arruda<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=788635434344ef10c5e472ea720777d47d4c879b">[7886354343]</a> Evandro Cesar Arruda -- cdr_mysql: Compile error because MYSQL_PORT definition is missing</li>
-</ul><br><h4>Category: Applications/app_amd</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27610">ASTERISK-27610</a>: app_amd.so returning TOOLONG before reaching the timeout<br/>Reported by: Michael Cargile<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=bb973aecebee5a3c349cbffad41471b3f4705203">[bb973aeceb]</a> Michael Cargile -- apps/app_amd.c: Fixed total time and silence calculations</li>
-</ul><br><h4>Category: Applications/app_confbridge</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27755">ASTERISK-27755</a>: ConfBridge: raise ConfbridgeTalking when put on hold and clear talking status<br/>Reported by: Kevin Harwell<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=17cd6876794cad8e6b99f5fd8be92cfd2a8a68a9">[17cd687679]</a> Kevin Harwell -- bridge_softmix: Clear "talking" when a channel is put on hold</li>
-</ul><br><h4>Category: Applications/app_voicemail</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27703">ASTERISK-27703</a>: AMI Action VoicemailUsersList returns 0 MessageCount<br/>Reported by: Sébastien Duthil<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0597e72e1de3418824058b6dc97fc4dfa7730bd7">[0597e72e1d]</a> Sungtae Kim -- voicemail: Fixed wrong voicemail message count</li>
-</ul><br><h4>Category: Applications/app_voicemail/IMAP</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27734">ASTERISK-27734</a>: [patch] BuildSystem: Enable IMAP storage on openSUSE and Arch Linux.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7533d25e8da392eb290ed281801c58dd9729bcd3">[7533d25e8d]</a> Alexander Traud -- BuildSystem: Enable IMAP storage on openSUSE and Arch Linux.</li>
-</ul><br><h4>Category: Bridges/bridge_softmix</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27755">ASTERISK-27755</a>: ConfBridge: raise ConfbridgeTalking when put on hold and clear talking status<br/>Reported by: Kevin Harwell<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=17cd6876794cad8e6b99f5fd8be92cfd2a8a68a9">[17cd687679]</a> Kevin Harwell -- bridge_softmix: Clear "talking" when a channel is put on hold</li>
-</ul><br><h4>Category: Channels/chan_alsa</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27720">ASTERISK-27720</a>: [patch] BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=5b80e97ffffef46558ab0ffb77a4e926bccf1edc">[5b80e97fff]</a> Alexander Traud -- BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD.</li>
-</ul><br><h4>Category: Channels/chan_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27554">ASTERISK-27554</a>: res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints<br/>Reported by: Ross Beer<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ecff05d51c58bd583836ff5fdd3efa956d741ecb">[ecff05d51c]</a> Ross Beer -- res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27568">ASTERISK-27568</a>: PJSIP: Crash during SIP attended transfer.<br/>Reported by: Bryan Walters<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=3e5864bcc87df7424a8d3f5e1098869eb64cd886">[3e5864bcc8]</a> Richard Mudgett -- res_pjsip_refer.c: Fix attended transfer race condition crash.</li>
-</ul><br><h4>Category: Channels/chan_sip/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27674">ASTERISK-27674</a>: chan_sip: RTP framing issues on outgoing calls<br/>Reported by: Jean Aunis - Prescom<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a35a654a523c3de5e0ae658993ccf0de7e6617fb">[a35a654a52]</a> Jean Aunis -- chan_sip: Fix improper RTP framing on outgoing calls</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-24488">ASTERISK-24488</a>: Wrong remote identity and target in dialog package XML in NOTIFY<br/>Reported by: Alejandro Padilla<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=4da0e19b8947c7bc83bef393953cb6c0a47c2903">[4da0e19b89]</a> Joshua Colp -- chan_sip: Emit a second ringing event to ensure channel is found.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27646">ASTERISK-27646</a>: ICE fails with no candidate nominated<br/>Reported by: Thomas Guebels<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9325de11f8583cae37d128ab4ad7229acc0fe326">[9325de11f8]</a> Thomas Guebels -- res_rtp_asterisk: Fix ICE candidate nomination</li>
-</ul><br><h4>Category: Channels/chan_sip/TCP-TLS</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27457">ASTERISK-27457</a>: chan_sip: Guests disallowed via TCP (or TLS) if existing peer from same IP.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=64942276d15cf9edd20c69f10ecebbb65f7282f4">[64942276d1]</a> Alexander Traud -- chan_sip: Peers with distinct source ports don't match, regardless of transport.</li>
-</ul><br><h4>Category: Channels/chan_sip/Transfers</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27740">ASTERISK-27740</a>: chan_sip: New Channel creation from new SIP dialog with Replaces failed to be properly tracked and destroyed<br/>Reported by: Shannon Price<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ea055386e0a5631dd68a6dc5c5629025a148eb18">[ea055386e0]</a> Richard Mudgett -- chan_sip.c: Fix INVITE with replaces channel ref leak.</li>
-</ul><br><h4>Category: Channels/chan_unistim</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27714">ASTERISK-27714</a>: [patch] chan_unistim: NetBSD has an incompatible struct in_pktinfo.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7b5e0960efa8dc5015e1de4c48d920926d7fa383">[7b5e0960ef]</a> Alexander Traud -- chan_unistim: NetBSD has an incompatible struct in_pktinfo.</li>
-</ul><br><h4>Category: Core/AstDB</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27706">ASTERISK-27706</a>: PJSIP: Deadlock shutting down subscription TCP connection and sending subscription message.<br/>Reported by: Ross Beer<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e1363283d731ec0d12703842841d9d32a0401605">[e1363283d7]</a> Richard Mudgett -- res_pjsip: Fix deadlock on reliable transport shutdown.</li>
-</ul><br><h4>Category: Core/BuildSystem</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27435">ASTERISK-27435</a>: [patch] configure: pjsip_evsub_set_uas_timeout not found.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=de4e2c1de8006616b05937d74cdc6af0a5e4085d">[de4e2c1de8]</a> Alexander Traud -- BuildSystem: pjsip_evsub_set_uas_timeout was not used (part 2).</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27761">ASTERISK-27761</a>: [patch] BuildSystem: With external editline, do not require libs for internal editline.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=79bb956b693083994f48a7ee9431e64d6f09de82">[79bb956b69]</a> Alexander Traud -- BuildSystem: With external editline, do not require libs for internal editline.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27745">ASTERISK-27745</a>: [patch] BuildSystem: Remove unused dependency on libltdl.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0f634c1446b27bbea7859234fd96de4198156d9e">[0f634c1446]</a> Alexander Traud -- BuildSystem: Remove unused dependency on libltdl.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27720">ASTERISK-27720</a>: [patch] BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=5b80e97ffffef46558ab0ffb77a4e926bccf1edc">[5b80e97fff]</a> Alexander Traud -- BuildSystem: Enable Advanced Linux Sound Architecture (ALSA) in NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27734">ASTERISK-27734</a>: [patch] BuildSystem: Enable IMAP storage on openSUSE and Arch Linux.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7533d25e8da392eb290ed281801c58dd9729bcd3">[7533d25e8d]</a> Alexander Traud -- BuildSystem: Enable IMAP storage on openSUSE and Arch Linux.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-11015">ASTERISK-11015</a>: NetBSD Build Needs RPATH set in 1.2.25<br/>Reported by: Curt Sampson<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=bd6e0b1a723e6ccf50711989bc88530bfc99936a">[bd6e0b1a72]</a> Alexander Traud -- BuildSystem: Add NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27641">ASTERISK-27641</a>: BuildSystem: Enable Better Backtraces in FreeBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c2274623708b72e7821f7c95c61adc9ce08ac932">[c227462370]</a> Alexander Traud -- BuildSystem: Enable dladdr on non-Linux platforms like FreeBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-25586">ASTERISK-25586</a>: uuid_generate_random detection failure<br/>Reported by: John Nemeth<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0d70a9a006c2c4a6150c7cbf2e72402f9fcf0031">[0d70a9a006]</a> Alexander Traud -- BuildSystem: Re-check for another UUID library only when previous check failed.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27721">ASTERISK-27721</a>: [patch] BuildSystem: Enable PortAudio in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=54874eb44df9ccc95e82015a4d42670b8d6a8d03">[54874eb44d]</a> Alexander Traud -- BuildSystem: Enable PortAudio in NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27715">ASTERISK-27715</a>: [patch] BuildSystem: AC_PATH_PROG sets to colon character when not found.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=342aec5980c295dd42ded82c067f20d9c67ab6d1">[342aec5980]</a> Richard Mudgett -- BuildSystem regression: Fix errors reported by clean targets.</li>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=95ecbaa6b8820ae0103ad6a8bc0db193edbf32e2">[95ecbaa6b8]</a> Alexander Traud -- BuildSystem: AC_PATH_PROG sets to colon character when not found.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27718">ASTERISK-27718</a>: [patch] BuildSystem: Enable Lua in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=93df498f4e7649a5f442d038149f2717918424be">[93df498f4e]</a> Alexander Traud -- BuildSystem: Enable Lua in NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27722">ASTERISK-27722</a>: [patch] BuildSystem: Depend not implicitly but explicitly on external libraries.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=44dbb8251d069f5a6bbcb2664470a9fc4acf0f4a">[44dbb8251d]</a> Alexander Traud -- BuildSystem: Depend not implicitly but explicitly on external libraries.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27716">ASTERISK-27716</a>: [patch] BuildSystem: Enable autotools in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=0af1446d6ea7ba2651402bfd8305a365d7f83b82">[0af1446d6e]</a> Alexander Traud -- BuildSystem: Enable autotools in NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27713">ASTERISK-27713</a>: [patch] BuildSystem: Cast any intptr_t explicitly to its proposed type.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6b899b28493f2b8d3f855a8777c42f1eb274baf1">[6b899b2849]</a> Alexander Traud -- BuildSystem: Cast any intptr_t explicitly to its proposed type.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27712">ASTERISK-27712</a>: [patch] BuildSystem: Detect whether uselocale(.) is available.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=98e8e849dae95ec1ef3ee8add51d258b8b7af2ff">[98e8e849da]</a> Alexander Traud -- BuildSystem: Detect whether uselocale(.) is available.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27711">ASTERISK-27711</a>: [patch] BuildSystem: Avoid re-defining of pthread_* on NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=8348862103abea778e1e5cd470bb620a6c900ae1">[8348862103]</a> Alexander Traud -- BuildSystem: Avoid re-defining of pthread_* on NetBSD.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27710">ASTERISK-27710</a>: [patch] BuildSystem: Install init scripts on openSUSE Tumbleweed.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=47d45ba02577017086579c9f83cbb98ff9a0d6c9">[47d45ba025]</a> Alexander Traud -- BuildSystem: Install init scripts on openSUSE Tumbleweed.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27709">ASTERISK-27709</a>: [patch] BuildSystem: Avoid == for comparison in ./configure.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=4035582b64b49957e1c14ae0a5ae9959e1766f33">[4035582b64]</a> Alexander Traud -- BuildSystem: Avoid == for comparison in ./configure.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27686">ASTERISK-27686</a>: [patch] install_prereq: Update FreeBSD libraries.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=05fc37bbc2b7630f6d25b3366fccf722602547f7">[05fc37bbc2]</a> Alexander Traud -- install_prereq: Update FreeBSD libraries.</li>
-</ul><br><h4>Category: Core/Channels</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27743">ASTERISK-27743</a>: Generic PLC doesn't work if the 2 codecs on a channel are equal<br/>Reported by: George Joseph<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=373e7e3fb0756133f06ff86266c74b776c7cf707">[373e7e3fb0]</a> George Joseph -- channel.c:  Allow generic plc then channel formats are equal</li>
-</ul><br><h4>Category: Core/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-24488">ASTERISK-24488</a>: Wrong remote identity and target in dialog package XML in NOTIFY<br/>Reported by: Alejandro Padilla<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=4da0e19b8947c7bc83bef393953cb6c0a47c2903">[4da0e19b89]</a> Joshua Colp -- chan_sip: Emit a second ringing event to ensure channel is found.</li>
-</ul><br><h4>Category: Documentation</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-26688">ASTERISK-26688</a>: Documentation: voicemail.conf.sample shows 512 limit for emailbody field, however this is only true if compiled with LOW_MEMORY option<br/>Reported by: Fran Vicente<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=caad0c09cd9e2ab002baebc159c92c82bb0712fd">[caad0c09cd]</a> Corey Farrell -- core: Fix handling of maximum length lines in config files.</li>
-</ul><br><h4>Category: Formats/format_ogg_vorbis</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-12841">ASTERISK-12841</a>: [patch] Make format_ogg_vorbis work on OpenBSD<br/>Reported by: Michiel van Baak<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=afcd1dd8e55bf093aefce5e4865c98386b8939a7">[afcd1dd8e5]</a> Alexander Traud -- BuildSystem: Avoid an extra case for OpenBSD.</li>
-</ul><br><h4>Category: Resources/res_http_post</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27719">ASTERISK-27719</a>: [patch] res_http_post: Enable GMime in NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=2d63c185f022afd457ccb60da7275a03eb3f42fe">[2d63c185f0]</a> Alexander Traud -- res_http_post: Enable GMime in NetBSD.</li>
-</ul><br><h4>Category: Resources/res_musiconhold</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27774">ASTERISK-27774</a>: res_musiconhold: Music on hold restarts after every announcement<br/>Reported by: lvl<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=f2e140e8a7b9311d671c6f52139bdae8be59d531">[f2e140e8a7]</a> Ben Ford -- res_musiconhold: Don't restart MOH from beginning after announcement.</li>
-</ul><br><h4>Category: Resources/res_odbc</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27722">ASTERISK-27722</a>: [patch] BuildSystem: Depend not implicitly but explicitly on external libraries.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=44dbb8251d069f5a6bbcb2664470a9fc4acf0f4a">[44dbb8251d]</a> Alexander Traud -- BuildSystem: Depend not implicitly but explicitly on external libraries.</li>
-</ul><br><h4>Category: Resources/res_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27688">ASTERISK-27688</a>: res_pjsip: Crash on TCP PJSIP Transport Disconnect<br/>Reported by: Ross Beer<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=5955cdf5ae1c4d8a7a50a58ed320cd43b336b724">[5955cdf5ae]</a> Ross Beer -- pjsip_transport_events.c: Fix crash using stale transport pointer.</li>
-</ul><br><h4>Category: Resources/res_pjsip_refer</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27568">ASTERISK-27568</a>: PJSIP: Crash during SIP attended transfer.<br/>Reported by: Bryan Walters<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=3e5864bcc87df7424a8d3f5e1098869eb64cd886">[3e5864bcc8]</a> Richard Mudgett -- res_pjsip_refer.c: Fix attended transfer race condition crash.</li>
-</ul><br><h4>Category: Resources/res_pjsip_rfc3326</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27741">ASTERISK-27741</a>: res_pjsip_rfc3326.c rfc3326_use_reason_header doesn't account for more than one 'Reason' header<br/>Reported by: Ross Beer<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=96eaabd920ca1e855e61c5dd7c0aad49c6fae532">[96eaabd920]</a> Ross Beer -- res_pjsip_rfc3326.c: Account for more than one 'Reason' header</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27554">ASTERISK-27554</a>: res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints<br/>Reported by: Ross Beer<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ecff05d51c58bd583836ff5fdd3efa956d741ecb">[ecff05d51c]</a> Ross Beer -- res_pjsip_rfc3326: Order of 'Reason' headers break many endpoints</li>
-</ul><br><h4>Category: Resources/res_pjsip_session</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27614">ASTERISK-27614</a>: res_pjsip_session: SDP origin does not use resolved address<br/>Reported by: John M.<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=724d926d46d3f9f8df6118cf575d094f9d876f54">[724d926d46]</a> Chris-Savinovich -- res_pjsip_session: Rewrite o= with external_media_address.</li>
-</ul><br><h4>Category: Resources/res_srtp</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27733">ASTERISK-27733</a>: [patch] res_srtp: Add support for libsrtp2.x on openSUSE.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=09c43fdc1a23a58d33dffc9a6005c99f76c419bd">[09c43fdc1a]</a> Alexander Traud -- res_srtp: Add support for libsrtp2.x on openSUSE.</li>
-</ul><br><h4>Category: Utilities/aelparse</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27809">ASTERISK-27809</a>: [patch] utils/pval: Add -lBlocksRuntime for compiler clang conditionally.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=92f88f164ad2130bfddb54c5861ebd22c5a9607e">[92f88f164a]</a> Alexander Traud -- utils/pval: Add -lBlocksRuntime for compiler clang conditionally.</li>
-</ul><br><h4>Category: Utilities/conf2ael</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27809">ASTERISK-27809</a>: [patch] utils/pval: Add -lBlocksRuntime for compiler clang conditionally.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=92f88f164ad2130bfddb54c5861ebd22c5a9607e">[92f88f164a]</a> Alexander Traud -- utils/pval: Add -lBlocksRuntime for compiler clang conditionally.</li>
-</ul><br><h3>Improvement</h3><h4>Category: CDR/cdr_radius</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-26540">ASTERISK-26540</a>: cdr_radius: use radcli instead of freeradius-client<br/>Reported by: Tzafrir Cohen<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=83353997f41f76a81c17217660ec79a69c7444e0">[83353997f4]</a> Alexander Traud -- BuildSystem: Add support for building RADIUS with radcli.</li>
-</ul><br><h4>Category: Channels/chan_pjsip</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27697">ASTERISK-27697</a>: Enable in-dialog NOTIFY on chan_pjsip channels<br/>Reported by: Nathan Bruning<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6a4afe09ceba6a3e31c51c7de4294bcfb6bf2ca9">[6a4afe09ce]</a> Nathan Bruning -- res_pjsip_notify.c: enable in-dialog NOTIFY</li>
-</ul><br><h4>Category: Contrib/General</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27770">ASTERISK-27770</a>: [patch] install_prereq: Add Slackware (somehow).<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e8e4fc62022a1478152054fff5589f9a9f8e73ab">[e8e4fc6202]</a> Alexander Traud -- install_prereq: Add Slackware (somehow).</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27769">ASTERISK-27769</a>: [patch] install_prereq: Add Gentoo Linux.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=96a668e60b4404059d9d2d89f21e58c3e6029d80">[96a668e60b]</a> Alexander Traud -- install_prereq: Add Gentoo Linux.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27738">ASTERISK-27738</a>: [patch] install_prereq: Add Arch Linux.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e04be32fc577d00ade973675c20fea5295bd5f72">[e04be32fc5]</a> Alexander Traud -- install_prereq: Add Arch Linux.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27736">ASTERISK-27736</a>: [patch] install_prereq: Add SUSE.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b237ef7f27f6acadbfaaebe855c4d484a5fcffd2">[b237ef7f27]</a> Alexander Traud -- install_prereq: Add SUSE.</li>
-</ul><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27729">ASTERISK-27729</a>: [patch] install_prereq: Add NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=57e8754a3aed579fb82d692b77458afa47a03855">[57e8754a3a]</a> Alexander Traud -- install_prereq: Add NetBSD.</li>
-</ul><br><h4>Category: Core/BuildSystem</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27728">ASTERISK-27728</a>: [patch] BuildSystem: Add NetBSD.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=bd6e0b1a723e6ccf50711989bc88530bfc99936a">[bd6e0b1a72]</a> Alexander Traud -- BuildSystem: Add NetBSD.</li>
-</ul><br><h4>Category: Resources/res_pjsip/Bundling</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27730">ASTERISK-27730</a>: PJSIP: Update bundled PJPROJECT to version 2.7.2<br/>Reported by: Richard Mudgett<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=9ae427c7fd408c18e010d75b1dc6f3d7ea118a0c">[9ae427c7fd]</a> Richard Mudgett -- res_pjproject.c: Upgrade bundled PJPROJECT to 2.7.2</li>
-</ul><br><h4>Category: Resources/res_rtp_asterisk</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-26976">ASTERISK-26976</a>: libsrtp-2.x.x support<br/>Reported by: Alex<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=09c43fdc1a23a58d33dffc9a6005c99f76c419bd">[09c43fdc1a]</a> Alexander Traud -- res_srtp: Add support for libsrtp2.x on openSUSE.</li>
-</ul><br><hr><a name="open_issues"><h2 align="center">Open Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all open issues from the issue tracker that were referenced by changes that went into this release.</p><h3>Bug</h3><h4>Category: Core/BuildSystem</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27717">ASTERISK-27717</a>: [patch] BuildSystem: In NetBSD, the Python Programming Language is python-2.7.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c0c537c1d3aab05358df697d8d259aa73f55a43c">[c0c537c1d3]</a> Alexander Traud -- BuildSystem: In NetBSD, the Python Programming Language is python-X.Y.</li>
-</ul><br><h4>Category: Core/Portability</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27629">ASTERISK-27629</a>: [patch] headers: Replace typeof with __typeof__.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=07e408e5887effc8f2cf78b05af4a361e3e2cb22">[07e408e588]</a> Corey Farrell -- Build System: Strip '-std=c99' from CFLAGS provided by libraries.</li>
-</ul><br><h4>Category: Tests/testsuite</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-27717">ASTERISK-27717</a>: [patch] BuildSystem: In NetBSD, the Python Programming Language is python-2.7.<br/>Reported by: Alexander Traud<ul>
-<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c0c537c1d3aab05358df697d8d259aa73f55a43c">[c0c537c1d3]</a> Alexander Traud -- BuildSystem: In NetBSD, the Python Programming Language is python-X.Y.</li>
-</ul><br><hr><a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all changes that went into this release that did not reference a JIRA issue.</p><table width="100%" border="1">
-<tr><th>Revision</th><th>Author</th><th>Summary</th></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=39c51394c8164b64743994662f69d49d43225d41">39c51394c8</a></td><td>George Joseph</td><td>utils:  Add ast_assert_return</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b92ebdba5f2e8dc864e684aab2d01223150bf293">b92ebdba5f</a></td><td>Richard Mudgett</td><td>pjsip_scheduler.c: Add ability to trace scheduled tasks.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=12aa25b2e150068abe3cac98d2d85498c3194ef0">12aa25b2e1</a></td><td>Richard Mudgett</td><td>res_pjsip.c: Split ast_sip_push_task_synchronous() to fit expectations.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=dfdc9a257535e73964ed873454080147a057d647">dfdc9a2575</a></td><td>Richard Mudgett</td><td>pjsip_scheduler.c: Fix some corner cases.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=af36823907751a102f707be1c4c7c842f582b349">af36823907</a></td><td>Richard Mudgett</td><td>pjsip_scheduler.c: Sort "pjsip show scheduled_tasks" output.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c4f02c975b9bcd35ecb51565b8fb5485e889d3d7">c4f02c975b</a></td><td>Richard Mudgett</td><td>pjsip_scheduler.c: Fix ao2 usage errors.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=759335978737693c12909741c3b56e9026b6ada2">7593359787</a></td><td>Corey Farrell</td><td>Build System: Enable python3 compatibility.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=72b16ee400ba46e582be3994f2e71be83cce8c1c">72b16ee400</a></td><td>Richard Mudgett</td><td>res_pjsip_refer/chan_sip: Fix INVITE with replaces transfer to ConfBridge</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e94f8e4a24ccc044dd263bdd81b964406cd37a08">e94f8e4a24</a></td><td>Richard Mudgett</td><td>res_pjsip: Update authenticate_qualify documentation.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=906db6a3ffc324cf41527c772790596e584525a8">906db6a3ff</a></td><td>Richard Mudgett</td><td>app_agent_pool.c: Fix off nominal ref leak.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=01b3c435d8697a238318a994164d2a29ca7dd847">01b3c435d8</a></td><td>Corey Farrell</td><td>Build System: Fixes for configure script.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=cea1a22ef300aff2f3eed5cd472b9c47c7668214">cea1a22ef3</a></td><td>George Joseph</td><td>res_pjsip:  Correct usages of pjproject's timer heap</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=158c0efd4f2d3829ddb5b3431139f88d1c1f7e59">158c0efd4f</a></td><td>George Joseph</td><td>pjroject_bundled:  Add already-destroyed check to tsx_timer_callback</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=69c61237cdfc441423578ab8ba425a863562fdf6">69c61237cd</a></td><td>George Joseph</td><td>pjproject_bundled: timer: Clean up usage of timer heap</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c63a2e28f1be775cc431ee0661a2e97b0cc7f057">c63a2e28f1</a></td><td>George Joseph</td><td>pjproject_bundled:  Add patch for pj_atomic crashes</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=5908c6753b52212694c1be22533566f18ee75d4b">5908c6753b</a></td><td>Corey Farrell</td><td>core: Create main/options.c.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6615469a054187c9f07473ea23491bc5a842abcb">6615469a05</a></td><td>Corey Farrell</td><td>main/indications: Use ast_cli_completion_add for all completions.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=3a4a441817425495da9bfc8a6840f71508c0d497">3a4a441817</a></td><td>George Joseph</td><td>Revert "BuildSystem: In NetBSD, the Python Programming Language is python-X.Y."</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=69de659224102ee70a86b6da62ac66883fdc8613">69de659224</a></td><td>Ivan Poddubny</td><td>func_channel: Delete dead CHANNEL_TRACE code</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7580d1e0bbafd7562ce34d204c29dff32bb1c6fb">7580d1e0bb</a></td><td>Alexander Traud</td><td>BuildSystem: For consistency, avoid extra libs to be empty.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6f304697b0042f046db877f6498e88ae535c472c">6f304697b0</a></td><td>Corey Farrell</td><td>core: Remove dead symbols from asterisk.exports.in.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=8df4811cfae679613f7c5c688ed61872cde725a4">8df4811cfa</a></td><td>Corey Farrell</td><td>named_acl: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a89323236f8506aa65d7d04e51833be9606a1d46">a89323236f</a></td><td>Corey Farrell</td><td>main/sounds: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=dc520b6d8f52abd8df0fa7f68dfc0fb466f1d0d3">dc520b6d8f</a></td><td>Corey Farrell</td><td>manager: Use ast_cli_completion_add for completion generators.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=534fda0a59972a4cc2952b6336f7d0bf1e1551b5">534fda0a59</a></td><td>Corey Farrell</td><td>main/test: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=bd926539b079e66c65cba14e56a9196012265566">bd926539b0</a></td><td>Corey Farrell</td><td>main/translate: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=d202b56a7438f3c105956340b31c4baa135adaad">d202b56a74</a></td><td>Corey Farrell</td><td>main/taskprocessor: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=18cbfcf4f08321d408907cbeeeeef5fd9bf709f7">18cbfcf4f0</a></td><td>Corey Farrell</td><td>aco: Use ast_cli_completion_add for 'config show help'.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=d57b58f5e947eecbf7c419ea422e9210b424a0cf">d57b58f5e9</a></td><td>Corey Farrell</td><td>main/config: Use ast_cli_completion_add for reload completion.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=34e16cbf3a9e954a4e6e0201f9ba569f8f70b71c">34e16cbf3a</a></td><td>Corey Farrell</td><td>main/bridge: Use ast_cli_completion_add.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=98a3baca708caf7d8addf96fbec284fea755f6d3">98a3baca70</a></td><td>Corey Farrell</td><td>core: Minor cleanup of ast_el_read_char.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7b40605d8e08f85d7be225440d5ce94bfac92e69">7b40605d8e</a></td><td>Alexander Traud</td><td>BuildSystem: Check for header file of OGG.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=06ba60598811cd9ed2e89e0fc597236edc8f535b">06ba605988</a></td><td>Alexander Traud</td><td>BuildSystem: When no download utility is available, display the explanation.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=d5af24bb14ec0480a20e8f069ca57b5cde0e1d4d">d5af24bb14</a></td><td>George Joseph</td><td>app_voicemail:  Fix json blob errors</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=69463c612dfc419e46aa3834e842389afba8aa83">69463c612d</a></td><td>Florian Floimair</td><td>app_dial: Enable early-media video</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=a7ebb9409d43bc4a4d083e4c81819ac9b44fc935">a7ebb9409d</a></td><td>Corey Farrell</td><td>main/cdr: Use ast_cli_completion_add for CDR channel completion.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=5ac64a4464728289714e4c2da1ddeb8cf18797ae">5ac64a4464</a></td><td>Corey Farrell</td><td>main/ccss: Use ast_cli_completion_add for core id.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=eb699f36313b61fbf96b10bb7c2f6aeeff6cfc93">eb699f3631</a></td><td>Corey Farrell</td><td>core: Backport compatible MALLOC_DEBUG changes.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7e0c56f80060c4d44b88d2183bac7a1b1f0f6684">7e0c56f800</a></td><td>Corey Farrell</td><td>astobj2_container: Use ast_cli_completion_add for container names.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7e041d6233b9a4f81e855c6f03d965fd5911a8e2">7e041d6233</a></td><td>Corey Farrell</td><td>main/channel: Use ast_cli_completion_add for channeltypes.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=6539b89254dd708e608828434b25be9a23c107b5">6539b89254</a></td><td>Corey Farrell</td><td>cli: Enable ast_cli_completion_add on public completion generators.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=dc738b145fe17a8e40a3e95f01f7b9c208185cd9">dc738b145f</a></td><td>Corey Farrell</td><td>core: Remove incorrect usage of attribute_malloc.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=c09a10bb1bdc2159d93683b03afe7dcafb3dd8dc">c09a10bb1b</a></td><td>Corey Farrell</td><td>core: Remove non-critical cleanup from startup aborts.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=ba88af8a253ba01bdf161041065d5227ba3a10eb">ba88af8a25</a></td><td>Alexander Traud</td><td>BuildSystem: For consistency, avoid double-checking via if clauses.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7b6b6b0a7ed74c55183c53e709c9f75df5a803f0">7b6b6b0a7e</a></td><td>Alexander Traud</td><td>BuildSystem: Instead of $PJPROJECT_LIBS with s, use $PJPROJECT_LIB everywhere.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=b81eadcefcd0d0a3fc8c06fe1c4c1a12bceddd8e">b81eadcefc</a></td><td>Corey Farrell</td><td>Replace direct checks of option_debug with DEBUG_ATLEAST macro.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=725fd32428a7a65c9322e51a39f4f0d1041e08f3">725fd32428</a></td><td>Alexander Traud</td><td>utils: In Solaris, avoid a warning about an unused variable.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=41894965f23b756c647cd9bf1e6456336cb39e00">41894965f2</a></td><td>Corey Farrell</td><td>gitreview: Reorder and add padding.</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=68df9e609edfb37ef194f0e16192a8b5afe76664">68df9e609e</a></td><td>George Joseph</td><td>ast_coredumper:  Minor fixes</td></tr>
-<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=220accb461f516889242667429e0575d4f7da4af">220accb461</a></td><td>Sean Bright</td><td>modules: Set deprecated modules to not build by default</td></tr>
-</table><hr><a name="diffstat"><h2 align="center">Diffstat Results</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p><pre>.lastclean                                                                                      |    1
-.version                                                                                        |    1
-ChangeLog                                                                                       |58442 ----------
-asterisk-13.20.0-summary.html                                                                   | 1104
-asterisk-13.20.0-summary.txt                                                                    | 1739
-b/.gitreview                                                                                    |    7
-b/CHANGES                                                                                       |   29
-b/Makefile                                                                                      |   46
-b/UPGRADE.txt                                                                                   |    8
-b/addons/cdr_mysql.c                                                                            |    8
-b/addons/chan_ooh323.c                                                                          |    3
-b/apps/app_agent_pool.c                                                                         |    1
-b/apps/app_amd.c                                                                                |   21
-b/apps/app_dial.c                                                                               |    2
-b/apps/app_directory.c                                                                          |    6
-b/apps/app_minivm.c                                                                             |    2
-b/apps/app_voicemail.c                                                                          |   39
-b/autoconf/ast_ext_tool_check.m4                                                                |    2
-b/autoconf/ast_pkgconfig.m4                                                                     |    2
-b/bootstrap.sh                                                                                  |    4
-b/bridges/bridge_softmix.c                                                                      |   48
-b/build_tools/cflags.xml                                                                        |    2
-b/build_tools/menuselect-deps.in                                                                |    1
-b/cdr/cdr_adaptive_odbc.c                                                                       |    1
-b/cdr/cdr_odbc.c                                                                                |    1
-b/cdr/cdr_pgsql.c                                                                               |   22
-b/cdr/cdr_radius.c                                                                              |    6
-b/cel/cel_odbc.c                                                                                |    1
-b/cel/cel_pgsql.c                                                                               |   18
-b/cel/cel_radius.c                                                                              |    6
-b/channels/chan_alsa.c                                                                          |    4
-b/channels/chan_dahdi.c                                                                         |    4
-b/channels/chan_pjsip.c                                                                         |    6
-b/channels/chan_sip.c                                                                           |   56
-b/channels/chan_unistim.c                                                                       |    4
-b/channels/pjsip/dialplan_functions.c                                                           |    8
-b/configs/samples/codecs.conf.sample                                                            |    9
-b/configs/samples/pjproject.conf.sample                                                         |    7
-b/configs/samples/voicemail.conf.sample                                                         |    5
-b/configure                                                                                     | 1661
-b/configure.ac                                                                                  |  272
-b/contrib/scripts/ast_coredumper                                                                |    7
-b/contrib/scripts/install_prereq                                                                |  192
-b/contrib/scripts/refcounter.py                                                                 |   23
-b/contrib/scripts/voicemailpwcheck.py                                                           |   10
-b/doc/.gitignore                                                                                |    1
-b/formats/format_ogg_vorbis.c                                                                   |    1
-b/funcs/func_audiohookinherit.c                                                                 |    1
-b/funcs/func_channel.c                                                                          |   22
-b/funcs/func_odbc.c                                                                             |    1
-b/include/asterisk/_private.h                                                                   |    5
-b/include/asterisk/autoconfig.h.in                                                              |   14
-b/include/asterisk/bridge.h                                                                     |   11
-b/include/asterisk/channel.h                                                                    |    4
-b/include/asterisk/datastore.h                                                                  |    2
-b/include/asterisk/options.h                                                                    |   10
-b/include/asterisk/paths.h                                                                      |    4
-b/include/asterisk/res_pjproject.h                                                              |   26
-b/include/asterisk/res_pjsip.h                                                                  |  115
-b/include/asterisk/stringfields.h                                                               |    2
-b/include/asterisk/utils.h                                                                      |   15
-b/main/Makefile                                                                                 |    2
-b/main/asterisk.c                                                                               |  461
-b/main/asterisk.exports.in                                                                      |    6
-b/main/astmm.c                                                                                  |    3
-b/main/astobj2_container.c                                                                      |   29
-b/main/bridge.c                                                                                 |  110
-b/main/callerid.c                                                                               |    2
-b/main/ccss.c                                                                                   |   17
-b/main/cdr.c                                                                                    |   11
-b/main/cel.c                                                                                    |    9
-b/main/channel.c                                                                                |   33
-b/main/cli.c                                                                                    |   24
-b/main/config.c                                                                                 |   29
-b/main/config_options.c                                                                         |   79
-b/main/core_local.c                                                                             |    7
-b/main/devicestate.c                                                                            |    5
-b/main/dsp.c                                                                                    |   15
-b/main/features.c                                                                               |    9
-b/main/features_config.c                                                                        |    4
-b/main/indications.c                                                                            |   39
-b/main/manager.c                                                                                |   46
-b/main/named_acl.c                                                                              |   22
-b/main/netsock2.c                                                                               |    8
-b/main/options.c                                                                                |  463
-b/main/pbx.c                                                                                    |   10
-b/main/pbx_app.c                                                                                |   27
-b/main/pbx_builtins.c                                                                           |    1
-b/main/sched.c                                                                                  |   35
-b/main/sorcery.c                                                                                |    3
-b/main/sounds.c                                                                                 |   32
-b/main/stdtime/localtime.c                                                                      |    6
-b/main/taskprocessor.c                                                                          |   17
-b/main/test.c                                                                                   |   68
-b/main/translate.c                                                                              |   18
-b/main/utils.c                                                                                  |    3
-b/menuselect/configure                                                                          |    4
-b/res/res_config_ldap.c                                                                         |   12
-b/res/res_config_odbc.c                                                                         |    1
-b/res/res_config_pgsql.c                                                                        |   14
-b/res/res_http_post.c                                                                           |    2
-b/res/res_musiconhold.c                                                                         |    1
-b/res/res_odbc.c                                                                                |    1
-b/res/res_pjproject.c                                                                           |   12
-b/res/res_pjsip.c                                                                               |  131
-b/res/res_pjsip/config_system.c                                                                 |    2
-b/res/res_pjsip/config_transport.c                                                              |    2
-b/res/res_pjsip/location.c                                                                      |    4
-b/res/res_pjsip/pjsip_scheduler.c                                                               |  311
-b/res/res_pjsip/pjsip_transport_events.c                                                        |   55
-b/res/res_pjsip_header_funcs.c                                                                  |   22
-b/res/res_pjsip_history.c                                                                       |    7
-b/res/res_pjsip_notify.c                                                                        |  230
-b/res/res_pjsip_outbound_publish.c                                                              |    9
-b/res/res_pjsip_outbound_registration.c                                                         |   14
-b/res/res_pjsip_pubsub.c                                                                        |   51
-b/res/res_pjsip_refer.c                                                                         |   50
-b/res/res_pjsip_registrar.c                                                                     |   34
-b/res/res_pjsip_registrar_expire.c                                                              |    2
-b/res/res_pjsip_rfc3326.c                                                                       |   47
-b/res/res_pjsip_session.c                                                                       |   10
-b/res/res_pjsip_t38.c                                                                           |    6
-b/res/res_pjsip_transport_websocket.c                                                           |    6
-b/res/res_rtp_asterisk.c                                                                        |   37
-b/res/res_srtp.c                                                                                |    1
-b/res/srtp/srtp_compat.h                                                                        |    8
-b/rest-api-templates/api.wiki.mustache                                                          |    2
-b/rest-api-templates/ari_resource.h.mustache                                                    |    6
-b/rest-api-templates/asterisk_processor.py                                                      |    9
-b/rest-api-templates/make_ari_stubs.py                                                          |    5
-b/rest-api-templates/res_ari_resource.c.mustache                                                |    6
-b/rest-api-templates/swagger_model.py                                                           |   21
-b/rest-api-templates/transform.py                                                               |   10
-b/sounds/Makefile                                                                               |    6
-b/tests/test_amihooks.c                                                                         |    3
-b/third-party/pjproject/configure.m4                                                            |    2
-b/third-party/pjproject/patches/0070-os_core_unix-Set-mutex-NULL-in-atomic-destroy-and-ad.patch |  114
-b/third-party/pjproject/patches/0080-timer-Clean-up-usage-of-timer-heap.patch                   |  434
-b/third-party/pjproject/patches/0090-sip_transaction-In-tsx_timer_callback-check-if-tsx-i.patch |   31
-b/third-party/versions.mak                                                                      |    2
-b/utils/.gitignore                                                                              |    1
-b/utils/Makefile                                                                                |    2
-contrib/realtime/mssql/mssql_cdr.sql                                                            |   44
-contrib/realtime/mssql/mssql_config.sql                                                         | 1863
-contrib/realtime/mssql/mssql_voicemail.sql                                                      |   54
-contrib/realtime/mysql/mysql_cdr.sql                                                            |   32
-contrib/realtime/mysql/mysql_config.sql                                                         | 1106
-contrib/realtime/mysql/mysql_voicemail.sql                                                      |   34
-contrib/realtime/oracle/oracle_cdr.sql                                                          |   38
-contrib/realtime/oracle/oracle_config.sql                                                       | 1829
-contrib/realtime/oracle/oracle_voicemail.sql                                                    |   48
-contrib/realtime/postgresql/postgresql_cdr.sql                                                  |   36
-contrib/realtime/postgresql/postgresql_config.sql                                               | 1198
-contrib/realtime/postgresql/postgresql_voicemail.sql                                            |   38
-third-party/pjproject/patches/0070-sdp_media_fmt.patch                                          |   19
-third-party/pjproject/patches/0071-sdp_fmtp_attr.patch                                          |   34
-156 files changed, 3806 insertions(+), 70035 deletions(-)</pre><br></html>
\ No newline at end of file
diff --git a/asterisk-13.21.0-rc1-summary.txt b/asterisk-13.21.0-rc1-summary.txt
deleted file mode 100644 (file)
index 58598c8..0000000
+++ /dev/null
@@ -1,825 +0,0 @@
-                                Release Summary
-
-                              asterisk-13.21.0-rc1
-
-                                Date: 2018-04-19
-
-                           <asteriskteam@digium.com>
-
-     ----------------------------------------------------------------------
-
-                               Table of Contents
-
-    1. Summary
-    2. Contributors
-    3. Closed Issues
-    4. Open Issues
-    5. Other Changes
-    6. Diffstat
-
-     ----------------------------------------------------------------------
-
-                                    Summary
-
-                                 [Back to Top]
-
-   This release is a point release of an existing major version. The changes
-   included were made to address problems that have been identified in this
-   release series, or are minor, backwards compatible new features or
-   improvements. Users should be able to safely upgrade to this version if
-   this release series is already in use. Users considering upgrading from a
-   previous version are strongly encouraged to review the UPGRADE.txt
-   document as well as the CHANGES document for information about upgrading
-   to this release series.
-
-   The data in this summary reflects changes that have been made since the
-   previous release, asterisk-13.20.0.
-
-     ----------------------------------------------------------------------
-
-                                  Contributors
-
-                                 [Back to Top]
-
-   This table lists the people who have submitted code, those that have
-   tested patches, as well as those that reported issues on the issue tracker
-   that were resolved in this release. For coders, the number is how many of
-   their patches (of any size) were committed into this release. For testers,
-   the number is the number of times their name was listed as assisting with
-   testing a patch. Finally, for reporters, the number is the number of
-   issues that they reported that were affected by commits that went into
-   this release.
-
-   Coders                    Testers        Reporters                         
-   38 Alexander Traud                       31 Alexander Traud                
-   27 Corey Farrell                         4 Ross Beer                       
-   14 Richard Mudgett                       3 John Nemeth                     
-   9 George Joseph                          2 Richard Mudgett                 
-   3 Ross Beer                              1 Michael Cargile                 
-   1 Michael Cargile                        1 Alex                            
-   1 Sean Bright                            1 SA(c)bastien Duthil             
-   1 Nathan Bruning                         1 Jean Aunis - Prescom            
-   1 Ivan Poddubny                          1 Joerg Sonnenberger, D'Arcy Cain 
-   1 Kevin Harwell                          1 Kevin Harwell                   
-   1 Jean Aunis - Prescom                   1 Stephane Chazelas               
-   1 Joshua Colp                            1 Fran Vicente                    
-   1 Chris Savinovich                       1 Michiel van Baak                
-   1 Thomas Guebels                         1 Curt Sampson                    
-   1 Evandro CA(c)sar Arruda                1 Corey Farrell                   
-   1 sungtae kim                            1 Nathan Bruning                  
-   1 Florian Floimair                       1 Shannon Price                   
-   1 Benjamin Keith Ford                    1 John M.                         
-                                            1 Bryan Walters                   
-                                            1 clean targets.                  
-                                            1 Tzafrir Cohen                   
-                                            1 George Joseph                   
-                                            1 Alejandro Padilla               
-                                            1 Thomas Guebels                  
-                                            1 Evandro CA(c)sar Arruda         
-                                            1 lvl                             
-
-     ----------------------------------------------------------------------
-
-                                 Closed Issues
-
-                                 [Back to Top]
-
-   This is a list of all issues from the issue tracker that were closed by
-   changes that went into this release.
-
-  New Feature
-
-    Category: Resources/res_pjsip
-
-   ASTERISK-27704: Add cache_pools debug option to pjproject.conf
-   Reported by: Richard Mudgett
-     * [104468ad3a] Richard Mudgett -- pjproject: Add cache_pools debugging
-       option.
-
-  Bug
-
-    Category: Addons/cdr_mysql
-
-   ASTERISK-27782: cdr_mysql: Missing MYSQL_PORT definition
-   Reported by: Evandro CA(c)sar Arruda
-     * [7886354343] Evandro Cesar Arruda -- cdr_mysql: Compile error because
-       MYSQL_PORT definition is missing
-
-    Category: Applications/app_amd
-
-   ASTERISK-27610: app_amd.so returning TOOLONG before reaching the timeout
-   Reported by: Michael Cargile
-     * [bb973aeceb] Michael Cargile -- apps/app_amd.c: Fixed total time and
-       silence calculations
-
-    Category: Applications/app_confbridge
-
-   ASTERISK-27755: ConfBridge: raise ConfbridgeTalking when put on hold and
-   clear talking status
-   Reported by: Kevin Harwell
-     * [17cd687679] Kevin Harwell -- bridge_softmix: Clear "talking" when a
-       channel is put on hold
-
-    Category: Applications/app_voicemail
-
-   ASTERISK-27703: AMI Action VoicemailUsersList returns 0 MessageCount
-   Reported by: SA(c)bastien Duthil
-     * [0597e72e1d] Sungtae Kim -- voicemail: Fixed wrong voicemail message
-       count
-
-    Category: Applications/app_voicemail/IMAP
-
-   ASTERISK-27734: [patch] BuildSystem: Enable IMAP storage on openSUSE and
-   Arch Linux.
-   Reported by: Alexander Traud
-     * [7533d25e8d] Alexander Traud -- BuildSystem: Enable IMAP storage on
-       openSUSE and Arch Linux.
-
-    Category: Bridges/bridge_softmix
-
-   ASTERISK-27755: ConfBridge: raise ConfbridgeTalking when put on hold and
-   clear talking status
-   Reported by: Kevin Harwell
-     * [17cd687679] Kevin Harwell -- bridge_softmix: Clear "talking" when a
-       channel is put on hold
-
-    Category: Channels/chan_alsa
-
-   ASTERISK-27720: [patch] BuildSystem: Enable Advanced Linux Sound
-   Architecture (ALSA) in NetBSD.
-   Reported by: Alexander Traud
-     * [5b80e97fff] Alexander Traud -- BuildSystem: Enable Advanced Linux
-       Sound Architecture (ALSA) in NetBSD.
-
-    Category: Channels/chan_pjsip
-
-   ASTERISK-27554: res_pjsip_rfc3326: Order of 'Reason' headers break many
-   endpoints
-   Reported by: Ross Beer
-     * [ecff05d51c] Ross Beer -- res_pjsip_rfc3326: Order of 'Reason' headers
-       break many endpoints
-   ASTERISK-27568: PJSIP: Crash during SIP attended transfer.
-   Reported by: Bryan Walters
-     * [3e5864bcc8] Richard Mudgett -- res_pjsip_refer.c: Fix attended
-       transfer race condition crash.
-
-    Category: Channels/chan_sip/General
-
-   ASTERISK-27674: chan_sip: RTP framing issues on outgoing calls
-   Reported by: Jean Aunis - Prescom
-     * [a35a654a52] Jean Aunis -- chan_sip: Fix improper RTP framing on
-       outgoing calls
-   ASTERISK-24488: Wrong remote identity and target in dialog package XML in
-   NOTIFY
-   Reported by: Alejandro Padilla
-     * [4da0e19b89] Joshua Colp -- chan_sip: Emit a second ringing event to
-       ensure channel is found.
-   ASTERISK-27646: ICE fails with no candidate nominated
-   Reported by: Thomas Guebels
-     * [9325de11f8] Thomas Guebels -- res_rtp_asterisk: Fix ICE candidate
-       nomination
-
-    Category: Channels/chan_sip/TCP-TLS
-
-   ASTERISK-27457: chan_sip: Guests disallowed via TCP (or TLS) if existing
-   peer from same IP.
-   Reported by: Alexander Traud
-     * [64942276d1] Alexander Traud -- chan_sip: Peers with distinct source
-       ports don't match, regardless of transport.
-
-    Category: Channels/chan_sip/Transfers
-
-   ASTERISK-27740: chan_sip: New Channel creation from new SIP dialog with
-   Replaces failed to be properly tracked and destroyed
-   Reported by: Shannon Price
-     * [ea055386e0] Richard Mudgett -- chan_sip.c: Fix INVITE with replaces
-       channel ref leak.
-
-    Category: Channels/chan_unistim
-
-   ASTERISK-27714: [patch] chan_unistim: NetBSD has an incompatible struct
-   in_pktinfo.
-   Reported by: Alexander Traud
-     * [7b5e0960ef] Alexander Traud -- chan_unistim: NetBSD has an
-       incompatible struct in_pktinfo.
-
-    Category: Core/AstDB
-
-   ASTERISK-27706: PJSIP: Deadlock shutting down subscription TCP connection
-   and sending subscription message.
-   Reported by: Ross Beer
-     * [e1363283d7] Richard Mudgett -- res_pjsip: Fix deadlock on reliable
-       transport shutdown.
-
-    Category: Core/BuildSystem
-
-   ASTERISK-27435: [patch] configure: pjsip_evsub_set_uas_timeout not found.
-   Reported by: Alexander Traud
-     * [de4e2c1de8] Alexander Traud -- BuildSystem:
-       pjsip_evsub_set_uas_timeout was not used (part 2).
-   ASTERISK-27761: [patch] BuildSystem: With external editline, do not
-   require libs for internal editline.
-   Reported by: Alexander Traud
-     * [79bb956b69] Alexander Traud -- BuildSystem: With external editline,
-       do not require libs for internal editline.
-   ASTERISK-27745: [patch] BuildSystem: Remove unused dependency on libltdl.
-   Reported by: Alexander Traud
-     * [0f634c1446] Alexander Traud -- BuildSystem: Remove unused dependency
-       on libltdl.
-   ASTERISK-27720: [patch] BuildSystem: Enable Advanced Linux Sound
-   Architecture (ALSA) in NetBSD.
-   Reported by: Alexander Traud
-     * [5b80e97fff] Alexander Traud -- BuildSystem: Enable Advanced Linux
-       Sound Architecture (ALSA) in NetBSD.
-   ASTERISK-27734: [patch] BuildSystem: Enable IMAP storage on openSUSE and
-   Arch Linux.
-   Reported by: Alexander Traud
-     * [7533d25e8d] Alexander Traud -- BuildSystem: Enable IMAP storage on
-       openSUSE and Arch Linux.
-   ASTERISK-11015: NetBSD Build Needs RPATH set in 1.2.25
-   Reported by: Curt Sampson
-     * [bd6e0b1a72] Alexander Traud -- BuildSystem: Add NetBSD.
-   ASTERISK-27641: BuildSystem: Enable Better Backtraces in FreeBSD.
-   Reported by: Alexander Traud
-     * [c227462370] Alexander Traud -- BuildSystem: Enable dladdr on
-       non-Linux platforms like FreeBSD.
-   ASTERISK-25586: uuid_generate_random detection failure
-   Reported by: John Nemeth
-     * [0d70a9a006] Alexander Traud -- BuildSystem: Re-check for another UUID
-       library only when previous check failed.
-   ASTERISK-27721: [patch] BuildSystem: Enable PortAudio in NetBSD.
-   Reported by: Alexander Traud
-     * [54874eb44d] Alexander Traud -- BuildSystem: Enable PortAudio in
-       NetBSD.
-   ASTERISK-27715: [patch] BuildSystem: AC_PATH_PROG sets to colon character
-   when not found.
-   Reported by: Alexander Traud
-     * [342aec5980] Richard Mudgett -- BuildSystem regression: Fix errors
-       reported by clean targets.
-     * [95ecbaa6b8] Alexander Traud -- BuildSystem: AC_PATH_PROG sets to
-       colon character when not found.
-   ASTERISK-27718: [patch] BuildSystem: Enable Lua in NetBSD.
-   Reported by: Alexander Traud
-     * [93df498f4e] Alexander Traud -- BuildSystem: Enable Lua in NetBSD.
-   ASTERISK-27722: [patch] BuildSystem: Depend not implicitly but explicitly
-   on external libraries.
-   Reported by: Alexander Traud
-     * [44dbb8251d] Alexander Traud -- BuildSystem: Depend not implicitly but
-       explicitly on external libraries.
-   ASTERISK-27716: [patch] BuildSystem: Enable autotools in NetBSD.
-   Reported by: Alexander Traud
-     * [0af1446d6e] Alexander Traud -- BuildSystem: Enable autotools in
-       NetBSD.
-   ASTERISK-27713: [patch] BuildSystem: Cast any intptr_t explicitly to its
-   proposed type.
-   Reported by: Alexander Traud
-     * [6b899b2849] Alexander Traud -- BuildSystem: Cast any intptr_t
-       explicitly to its proposed type.
-   ASTERISK-27712: [patch] BuildSystem: Detect whether uselocale(.) is
-   available.
-   Reported by: Alexander Traud
-     * [98e8e849da] Alexander Traud -- BuildSystem: Detect whether
-       uselocale(.) is available.
-   ASTERISK-27711: [patch] BuildSystem: Avoid re-defining of pthread_* on
-   NetBSD.
-   Reported by: Alexander Traud
-     * [8348862103] Alexander Traud -- BuildSystem: Avoid re-defining of
-       pthread_* on NetBSD.
-   ASTERISK-27710: [patch] BuildSystem: Install init scripts on openSUSE
-   Tumbleweed.
-   Reported by: Alexander Traud
-     * [47d45ba025] Alexander Traud -- BuildSystem: Install init scripts on
-       openSUSE Tumbleweed.
-   ASTERISK-27709: [patch] BuildSystem: Avoid == for comparison in
-   ./configure.
-   Reported by: Alexander Traud
-     * [4035582b64] Alexander Traud -- BuildSystem: Avoid == for comparison
-       in ./configure.
-   ASTERISK-27686: [patch] install_prereq: Update FreeBSD libraries.
-   Reported by: Alexander Traud
-     * [05fc37bbc2] Alexander Traud -- install_prereq: Update FreeBSD
-       libraries.
-
-    Category: Core/Channels
-
-   ASTERISK-27743: Generic PLC doesn't work if the 2 codecs on a channel are
-   equal
-   Reported by: George Joseph
-     * [373e7e3fb0] George Joseph -- channel.c: Allow generic plc then
-       channel formats are equal
-
-    Category: Core/General
-
-   ASTERISK-24488: Wrong remote identity and target in dialog package XML in
-   NOTIFY
-   Reported by: Alejandro Padilla
-     * [4da0e19b89] Joshua Colp -- chan_sip: Emit a second ringing event to
-       ensure channel is found.
-
-    Category: Documentation
-
-   ASTERISK-26688: Documentation: voicemail.conf.sample shows 512 limit for
-   emailbody field, however this is only true if compiled with LOW_MEMORY
-   option
-   Reported by: Fran Vicente
-     * [caad0c09cd] Corey Farrell -- core: Fix handling of maximum length
-       lines in config files.
-
-    Category: Formats/format_ogg_vorbis
-
-   ASTERISK-12841: [patch] Make format_ogg_vorbis work on OpenBSD
-   Reported by: Michiel van Baak
-     * [afcd1dd8e5] Alexander Traud -- BuildSystem: Avoid an extra case for
-       OpenBSD.
-
-    Category: Resources/res_http_post
-
-   ASTERISK-27719: [patch] res_http_post: Enable GMime in NetBSD.
-   Reported by: Alexander Traud
-     * [2d63c185f0] Alexander Traud -- res_http_post: Enable GMime in NetBSD.
-
-    Category: Resources/res_musiconhold
-
-   ASTERISK-27774: res_musiconhold: Music on hold restarts after every
-   announcement
-   Reported by: lvl
-     * [f2e140e8a7] Ben Ford -- res_musiconhold: Don't restart MOH from
-       beginning after announcement.
-
-    Category: Resources/res_odbc
-
-   ASTERISK-27722: [patch] BuildSystem: Depend not implicitly but explicitly
-   on external libraries.
-   Reported by: Alexander Traud
-     * [44dbb8251d] Alexander Traud -- BuildSystem: Depend not implicitly but
-       explicitly on external libraries.
-
-    Category: Resources/res_pjsip
-
-   ASTERISK-27688: res_pjsip: Crash on TCP PJSIP Transport Disconnect
-   Reported by: Ross Beer
-     * [5955cdf5ae] Ross Beer -- pjsip_transport_events.c: Fix crash using
-       stale transport pointer.
-
-    Category: Resources/res_pjsip_refer
-
-   ASTERISK-27568: PJSIP: Crash during SIP attended transfer.
-   Reported by: Bryan Walters
-     * [3e5864bcc8] Richard Mudgett -- res_pjsip_refer.c: Fix attended
-       transfer race condition crash.
-
-    Category: Resources/res_pjsip_rfc3326
-
-   ASTERISK-27741: res_pjsip_rfc3326.c rfc3326_use_reason_header doesn't
-   account for more than one 'Reason' header
-   Reported by: Ross Beer
-     * [96eaabd920] Ross Beer -- res_pjsip_rfc3326.c: Account for more than
-       one 'Reason' header
-   ASTERISK-27554: res_pjsip_rfc3326: Order of 'Reason' headers break many
-   endpoints
-   Reported by: Ross Beer
-     * [ecff05d51c] Ross Beer -- res_pjsip_rfc3326: Order of 'Reason' headers
-       break many endpoints
-
-    Category: Resources/res_pjsip_session
-
-   ASTERISK-27614: res_pjsip_session: SDP origin does not use resolved
-   address
-   Reported by: John M.
-     * [724d926d46] Chris-Savinovich -- res_pjsip_session: Rewrite o= with
-       external_media_address.
-
-    Category: Resources/res_srtp
-
-   ASTERISK-27733: [patch] res_srtp: Add support for libsrtp2.x on openSUSE.
-   Reported by: Alexander Traud
-     * [09c43fdc1a] Alexander Traud -- res_srtp: Add support for libsrtp2.x
-       on openSUSE.
-
-    Category: Utilities/aelparse
-
-   ASTERISK-27809: [patch] utils/pval: Add -lBlocksRuntime for compiler clang
-   conditionally.
-   Reported by: Alexander Traud
-     * [92f88f164a] Alexander Traud -- utils/pval: Add -lBlocksRuntime for
-       compiler clang conditionally.
-
-    Category: Utilities/conf2ael
-
-   ASTERISK-27809: [patch] utils/pval: Add -lBlocksRuntime for compiler clang
-   conditionally.
-   Reported by: Alexander Traud
-     * [92f88f164a] Alexander Traud -- utils/pval: Add -lBlocksRuntime for
-       compiler clang conditionally.
-
-  Improvement
-
-    Category: CDR/cdr_radius
-
-   ASTERISK-26540: cdr_radius: use radcli instead of freeradius-client
-   Reported by: Tzafrir Cohen
-     * [83353997f4] Alexander Traud -- BuildSystem: Add support for building
-       RADIUS with radcli.
-
-    Category: Channels/chan_pjsip
-
-   ASTERISK-27697: Enable in-dialog NOTIFY on chan_pjsip channels
-   Reported by: Nathan Bruning
-     * [6a4afe09ce] Nathan Bruning -- res_pjsip_notify.c: enable in-dialog
-       NOTIFY
-
-    Category: Contrib/General
-
-   ASTERISK-27770: [patch] install_prereq: Add Slackware (somehow).
-   Reported by: Alexander Traud
-     * [e8e4fc6202] Alexander Traud -- install_prereq: Add Slackware
-       (somehow).
-   ASTERISK-27769: [patch] install_prereq: Add Gentoo Linux.
-   Reported by: Alexander Traud
-     * [96a668e60b] Alexander Traud -- install_prereq: Add Gentoo Linux.
-   ASTERISK-27738: [patch] install_prereq: Add Arch Linux.
-   Reported by: Alexander Traud
-     * [e04be32fc5] Alexander Traud -- install_prereq: Add Arch Linux.
-   ASTERISK-27736: [patch] install_prereq: Add SUSE.
-   Reported by: Alexander Traud
-     * [b237ef7f27] Alexander Traud -- install_prereq: Add SUSE.
-   ASTERISK-27729: [patch] install_prereq: Add NetBSD.
-   Reported by: Alexander Traud
-     * [57e8754a3a] Alexander Traud -- install_prereq: Add NetBSD.
-
-    Category: Core/BuildSystem
-
-   ASTERISK-27728: [patch] BuildSystem: Add NetBSD.
-   Reported by: Alexander Traud
-     * [bd6e0b1a72] Alexander Traud -- BuildSystem: Add NetBSD.
-
-    Category: Resources/res_pjsip/Bundling
-
-   ASTERISK-27730: PJSIP: Update bundled PJPROJECT to version 2.7.2
-   Reported by: Richard Mudgett
-     * [9ae427c7fd] Richard Mudgett -- res_pjproject.c: Upgrade bundled
-       PJPROJECT to 2.7.2
-
-    Category: Resources/res_rtp_asterisk
-
-   ASTERISK-26976: libsrtp-2.x.x support
-   Reported by: Alex
-     * [09c43fdc1a] Alexander Traud -- res_srtp: Add support for libsrtp2.x
-       on openSUSE.
-
-     ----------------------------------------------------------------------
-
-                                  Open Issues
-
-                                 [Back to Top]
-
-   This is a list of all open issues from the issue tracker that were
-   referenced by changes that went into this release.
-
-  Bug
-
-    Category: Core/BuildSystem
-
-   ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming
-   Language is python-2.7.
-   Reported by: Alexander Traud
-     * [c0c537c1d3] Alexander Traud -- BuildSystem: In NetBSD, the Python
-       Programming Language is python-X.Y.
-
-    Category: Core/Portability
-
-   ASTERISK-27629: [patch] headers: Replace typeof with __typeof__.
-   Reported by: Alexander Traud
-     * [07e408e588] Corey Farrell -- Build System: Strip '-std=c99' from
-       CFLAGS provided by libraries.
-
-    Category: Tests/testsuite
-
-   ASTERISK-27717: [patch] BuildSystem: In NetBSD, the Python Programming
-   Language is python-2.7.
-   Reported by: Alexander Traud
-     * [c0c537c1d3] Alexander Traud -- BuildSystem: In NetBSD, the Python
-       Programming Language is python-X.Y.
-
-     ----------------------------------------------------------------------
-
-                      Commits Not Associated with an Issue
-
-                                 [Back to Top]
-
-   This is a list of all changes that went into this release that did not
-   reference a JIRA issue.
-
-   +------------------------------------------------------------------------+
-   | Revision   | Author        | Summary                                   |
-   |------------+---------------+-------------------------------------------|
-   | 39c51394c8 | George Joseph | utils: Add ast_assert_return              |
-   |------------+---------------+-------------------------------------------|
-   | b92ebdba5f | Richard       | pjsip_scheduler.c: Add ability to trace   |
-   |            | Mudgett       | scheduled tasks.                          |
-   |------------+---------------+-------------------------------------------|
-   |            | Richard       | res_pjsip.c: Split                        |
-   | 12aa25b2e1 | Mudgett       | ast_sip_push_task_synchronous() to fit    |
-   |            |               | expectations.                             |
-   |------------+---------------+-------------------------------------------|
-   | dfdc9a2575 | Richard       | pjsip_scheduler.c: Fix some corner cases. |
-   |            | Mudgett       |                                           |
-   |------------+---------------+-------------------------------------------|
-   | af36823907 | Richard       | pjsip_scheduler.c: Sort "pjsip show       |
-   |            | Mudgett       | scheduled_tasks" output.                  |
-   |------------+---------------+-------------------------------------------|
-   | c4f02c975b | Richard       | pjsip_scheduler.c: Fix ao2 usage errors.  |
-   |            | Mudgett       |                                           |
-   |------------+---------------+-------------------------------------------|
-   | 7593359787 | Corey Farrell | Build System: Enable python3              |
-   |            |               | compatibility.                            |
-   |------------+---------------+-------------------------------------------|
-   | 72b16ee400 | Richard       | res_pjsip_refer/chan_sip: Fix INVITE with |
-   |            | Mudgett       | replaces transfer to ConfBridge           |
-   |------------+---------------+-------------------------------------------|
-   | e94f8e4a24 | Richard       | res_pjsip: Update authenticate_qualify    |
-   |            | Mudgett       | documentation.                            |
-   |------------+---------------+-------------------------------------------|
-   | 906db6a3ff | Richard       | app_agent_pool.c: Fix off nominal ref     |
-   |            | Mudgett       | leak.                                     |
-   |------------+---------------+-------------------------------------------|
-   | 01b3c435d8 | Corey Farrell | Build System: Fixes for configure script. |
-   |------------+---------------+-------------------------------------------|
-   | cea1a22ef3 | George Joseph | res_pjsip: Correct usages of pjproject's  |
-   |            |               | timer heap                                |
-   |------------+---------------+-------------------------------------------|
-   | 158c0efd4f | George Joseph | pjroject_bundled: Add already-destroyed   |
-   |            |               | check to tsx_timer_callback               |
-   |------------+---------------+-------------------------------------------|
-   | 69c61237cd | George Joseph | pjproject_bundled: timer: Clean up usage  |
-   |            |               | of timer heap                             |
-   |------------+---------------+-------------------------------------------|
-   | c63a2e28f1 | George Joseph | pjproject_bundled: Add patch for          |
-   |            |               | pj_atomic crashes                         |
-   |------------+---------------+-------------------------------------------|
-   | 5908c6753b | Corey Farrell | core: Create main/options.c.              |
-   |------------+---------------+-------------------------------------------|
-   |            |               | main/indications: Use                     |
-   | 6615469a05 | Corey Farrell | ast_cli_completion_add for all            |
-   |            |               | completions.                              |
-   |------------+---------------+-------------------------------------------|
-   |            |               | Revert "BuildSystem: In NetBSD, the       |
-   | 3a4a441817 | George Joseph | Python Programming Language is            |
-   |            |               | python-X.Y."                              |
-   |------------+---------------+-------------------------------------------|
-   | 69de659224 | Ivan Poddubny | func_channel: Delete dead CHANNEL_TRACE   |
-   |            |               | code                                      |
-   |------------+---------------+-------------------------------------------|
-   | 7580d1e0bb | Alexander     | BuildSystem: For consistency, avoid extra |
-   |            | Traud         | libs to be empty.                         |
-   |------------+---------------+-------------------------------------------|
-   | 6f304697b0 | Corey Farrell | core: Remove dead symbols from            |
-   |            |               | asterisk.exports.in.                      |
-   |------------+---------------+-------------------------------------------|
-   | 8df4811cfa | Corey Farrell | named_acl: Use ast_cli_completion_add.    |
-   |------------+---------------+-------------------------------------------|
-   | a89323236f | Corey Farrell | main/sounds: Use ast_cli_completion_add.  |
-   |------------+---------------+-------------------------------------------|
-   | dc520b6d8f | Corey Farrell | manager: Use ast_cli_completion_add for   |
-   |            |               | completion generators.                    |
-   |------------+---------------+-------------------------------------------|
-   | 534fda0a59 | Corey Farrell | main/test: Use ast_cli_completion_add.    |
-   |------------+---------------+-------------------------------------------|
-   | bd926539b0 | Corey Farrell | main/translate: Use                       |
-   |            |               | ast_cli_completion_add.                   |
-   |------------+---------------+-------------------------------------------|
-   | d202b56a74 | Corey Farrell | main/taskprocessor: Use                   |
-   |            |               | ast_cli_completion_add.                   |
-   |------------+---------------+-------------------------------------------|
-   | 18cbfcf4f0 | Corey Farrell | aco: Use ast_cli_completion_add for       |
-   |            |               | 'config show help'.                       |
-   |------------+---------------+-------------------------------------------|
-   | d57b58f5e9 | Corey Farrell | main/config: Use ast_cli_completion_add   |
-   |            |               | for reload completion.                    |
-   |------------+---------------+-------------------------------------------|
-   | 34e16cbf3a | Corey Farrell | main/bridge: Use ast_cli_completion_add.  |
-   |------------+---------------+-------------------------------------------|
-   | 98a3baca70 | Corey Farrell | core: Minor cleanup of ast_el_read_char.  |
-   |------------+---------------+-------------------------------------------|
-   | 7b40605d8e | Alexander     | BuildSystem: Check for header file of     |
-   |            | Traud         | OGG.                                      |
-   |------------+---------------+-------------------------------------------|
-   | 06ba605988 | Alexander     | BuildSystem: When no download utility is  |
-   |            | Traud         | available, display the explanation.       |
-   |------------+---------------+-------------------------------------------|
-   | d5af24bb14 | George Joseph | app_voicemail: Fix json blob errors       |
-   |------------+---------------+-------------------------------------------|
-   | 69463c612d | Florian       | app_dial: Enable early-media video        |
-   |            | Floimair      |                                           |
-   |------------+---------------+-------------------------------------------|
-   | a7ebb9409d | Corey Farrell | main/cdr: Use ast_cli_completion_add for  |
-   |            |               | CDR channel completion.                   |
-   |------------+---------------+-------------------------------------------|
-   | 5ac64a4464 | Corey Farrell | main/ccss: Use ast_cli_completion_add for |
-   |            |               | core id.                                  |
-   |------------+---------------+-------------------------------------------|
-   | eb699f3631 | Corey Farrell | core: Backport compatible MALLOC_DEBUG    |
-   |            |               | changes.                                  |
-   |------------+---------------+-------------------------------------------|
-   |            |               | astobj2_container: Use                    |
-   | 7e0c56f800 | Corey Farrell | ast_cli_completion_add for container      |
-   |            |               | names.                                    |
-   |------------+---------------+-------------------------------------------|
-   | 7e041d6233 | Corey Farrell | main/channel: Use ast_cli_completion_add  |
-   |            |               | for channeltypes.                         |
-   |------------+---------------+-------------------------------------------|
-   | 6539b89254 | Corey Farrell | cli: Enable ast_cli_completion_add on     |
-   |            |               | public completion generators.             |
-   |------------+---------------+-------------------------------------------|
-   | dc738b145f | Corey Farrell | core: Remove incorrect usage of           |
-   |            |               | attribute_malloc.                         |
-   |------------+---------------+-------------------------------------------|
-   | c09a10bb1b | Corey Farrell | core: Remove non-critical cleanup from    |
-   |            |               | startup aborts.                           |
-   |------------+---------------+-------------------------------------------|
-   | ba88af8a25 | Alexander     | BuildSystem: For consistency, avoid       |
-   |            | Traud         | double-checking via if clauses.           |
-   |------------+---------------+-------------------------------------------|
-   | 7b6b6b0a7e | Alexander     | BuildSystem: Instead of $PJPROJECT_LIBS   |
-   |            | Traud         | with s, use $PJPROJECT_LIB everywhere.    |
-   |------------+---------------+-------------------------------------------|
-   | b81eadcefc | Corey Farrell | Replace direct checks of option_debug     |
-   |            |               | with DEBUG_ATLEAST macro.                 |
-   |------------+---------------+-------------------------------------------|
-   | 725fd32428 | Alexander     | utils: In Solaris, avoid a warning about  |
-   |            | Traud         | an unused variable.                       |
-   |------------+---------------+-------------------------------------------|
-   | 41894965f2 | Corey Farrell | gitreview: Reorder and add padding.       |
-   |------------+---------------+-------------------------------------------|
-   | 68df9e609e | George Joseph | ast_coredumper: Minor fixes               |
-   |------------+---------------+-------------------------------------------|
-   | 220accb461 | Sean Bright   | modules: Set deprecated modules to not    |
-   |            |               | build by default                          |
-   +------------------------------------------------------------------------+
-
-     ----------------------------------------------------------------------
-
-                                Diffstat Results
-
-                                 [Back to Top]
-
-   This is a summary of the changes to the source code that went into this
-   release that was generated using the diffstat utility.
-
- .lastclean                                                                                      |    1
- .version                                                                                        |    1
- ChangeLog                                                                                       |58442 ----------
- asterisk-13.20.0-summary.html                                                                   | 1104
- asterisk-13.20.0-summary.txt                                                                    | 1739
- b/.gitreview                                                                                    |    7
- b/CHANGES                                                                                       |   29
- b/Makefile                                                                                      |   46
- b/UPGRADE.txt                                                                                   |    8
- b/addons/cdr_mysql.c                                                                            |    8
- b/addons/chan_ooh323.c                                                                          |    3
- b/apps/app_agent_pool.c                                                                         |    1
- b/apps/app_amd.c                                                                                |   21
- b/apps/app_dial.c                                                                               |    2
- b/apps/app_directory.c                                                                          |    6
- b/apps/app_minivm.c                                                                             |    2
- b/apps/app_voicemail.c                                                                          |   39
- b/autoconf/ast_ext_tool_check.m4                                                                |    2
- b/autoconf/ast_pkgconfig.m4                                                                     |    2
- b/bootstrap.sh                                                                                  |    4
- b/bridges/bridge_softmix.c                                                                      |   48
- b/build_tools/cflags.xml                                                                        |    2
- b/build_tools/menuselect-deps.in                                                                |    1
- b/cdr/cdr_adaptive_odbc.c                                                                       |    1
- b/cdr/cdr_odbc.c                                                                                |    1
- b/cdr/cdr_pgsql.c                                                                               |   22
- b/cdr/cdr_radius.c                                                                              |    6
- b/cel/cel_odbc.c                                                                                |    1
- b/cel/cel_pgsql.c                                                                               |   18
- b/cel/cel_radius.c                                                                              |    6
- b/channels/chan_alsa.c                                                                          |    4
- b/channels/chan_dahdi.c                                                                         |    4
- b/channels/chan_pjsip.c                                                                         |    6
- b/channels/chan_sip.c                                                                           |   56
- b/channels/chan_unistim.c                                                                       |    4
- b/channels/pjsip/dialplan_functions.c                                                           |    8
- b/configs/samples/codecs.conf.sample                                                            |    9
- b/configs/samples/pjproject.conf.sample                                                         |    7
- b/configs/samples/voicemail.conf.sample                                                         |    5
- b/configure                                                                                     | 1661
- b/configure.ac                                                                                  |  272
- b/contrib/scripts/ast_coredumper                                                                |    7
- b/contrib/scripts/install_prereq                                                                |  192
- b/contrib/scripts/refcounter.py                                                                 |   23
- b/contrib/scripts/voicemailpwcheck.py                                                           |   10
- b/doc/.gitignore                                                                                |    1
- b/formats/format_ogg_vorbis.c                                                                   |    1
- b/funcs/func_audiohookinherit.c                                                                 |    1
- b/funcs/func_channel.c                                                                          |   22
- b/funcs/func_odbc.c                                                                             |    1
- b/include/asterisk/_private.h                                                                   |    5
- b/include/asterisk/autoconfig.h.in                                                              |   14
- b/include/asterisk/bridge.h                                                                     |   11
- b/include/asterisk/channel.h                                                                    |    4
- b/include/asterisk/datastore.h                                                                  |    2
- b/include/asterisk/options.h                                                                    |   10
- b/include/asterisk/paths.h                                                                      |    4
- b/include/asterisk/res_pjproject.h                                                              |   26
- b/include/asterisk/res_pjsip.h                                                                  |  115
- b/include/asterisk/stringfields.h                                                               |    2
- b/include/asterisk/utils.h                                                                      |   15
- b/main/Makefile                                                                                 |    2
- b/main/asterisk.c                                                                               |  461
- b/main/asterisk.exports.in                                                                      |    6
- b/main/astmm.c                                                                                  |    3
- b/main/astobj2_container.c                                                                      |   29
- b/main/bridge.c                                                                                 |  110
- b/main/callerid.c                                                                               |    2
- b/main/ccss.c                                                                                   |   17
- b/main/cdr.c                                                                                    |   11
- b/main/cel.c                                                                                    |    9
- b/main/channel.c                                                                                |   33
- b/main/cli.c                                                                                    |   24
- b/main/config.c                                                                                 |   29
- b/main/config_options.c                                                                         |   79
- b/main/core_local.c                                                                             |    7
- b/main/devicestate.c                                                                            |    5
- b/main/dsp.c                                                                                    |   15
- b/main/features.c                                                                               |    9
- b/main/features_config.c                                                                        |    4
- b/main/indications.c                                                                            |   39
- b/main/manager.c                                                                                |   46
- b/main/named_acl.c                                                                              |   22
- b/main/netsock2.c                                                                               |    8
- b/main/options.c                                                                                |  463
- b/main/pbx.c                                                                                    |   10
- b/main/pbx_app.c                                                                                |   27
- b/main/pbx_builtins.c                                                                           |    1
- b/main/sched.c                                                                                  |   35
- b/main/sorcery.c                                                                                |    3
- b/main/sounds.c                                                                                 |   32
- b/main/stdtime/localtime.c                                                                      |    6
- b/main/taskprocessor.c                                                                          |   17
- b/main/test.c                                                                                   |   68
- b/main/translate.c                                                                              |   18
- b/main/utils.c                                                                                  |    3
- b/menuselect/configure                                                                          |    4
- b/res/res_config_ldap.c                                                                         |   12
- b/res/res_config_odbc.c                                                                         |    1
- b/res/res_config_pgsql.c                                                                        |   14
- b/res/res_http_post.c                                                                           |    2
- b/res/res_musiconhold.c                                                                         |    1
- b/res/res_odbc.c                                                                                |    1
- b/res/res_pjproject.c                                                                           |   12
- b/res/res_pjsip.c                                                                               |  131
- b/res/res_pjsip/config_system.c                                                                 |    2
- b/res/res_pjsip/config_transport.c                                                              |    2
- b/res/res_pjsip/location.c                                                                      |    4
- b/res/res_pjsip/pjsip_scheduler.c                                                               |  311
- b/res/res_pjsip/pjsip_transport_events.c                                                        |   55
- b/res/res_pjsip_header_funcs.c                                                                  |   22
- b/res/res_pjsip_history.c                                                                       |    7
- b/res/res_pjsip_notify.c                                                                        |  230
- b/res/res_pjsip_outbound_publish.c                                                              |    9
- b/res/res_pjsip_outbound_registration.c                                                         |   14
- b/res/res_pjsip_pubsub.c                                                                        |   51
- b/res/res_pjsip_refer.c                                                                         |   50
- b/res/res_pjsip_registrar.c                                                                     |   34
- b/res/res_pjsip_registrar_expire.c                                                              |    2
- b/res/res_pjsip_rfc3326.c                                                                       |   47
- b/res/res_pjsip_session.c                                                                       |   10
- b/res/res_pjsip_t38.c                                                                           |    6
- b/res/res_pjsip_transport_websocket.c                                                           |    6
- b/res/res_rtp_asterisk.c                                                                        |   37
- b/res/res_srtp.c                                                                                |    1
- b/res/srtp/srtp_compat.h                                                                        |    8
- b/rest-api-templates/api.wiki.mustache                                                          |    2
- b/rest-api-templates/ari_resource.h.mustache                                                    |    6
- b/rest-api-templates/asterisk_processor.py                                                      |    9
- b/rest-api-templates/make_ari_stubs.py                                                          |    5
- b/rest-api-templates/res_ari_resource.c.mustache                                                |    6
- b/rest-api-templates/swagger_model.py                                                           |   21
- b/rest-api-templates/transform.py                                                               |   10
- b/sounds/Makefile                                                                               |    6
- b/tests/test_amihooks.c                                                                         |    3
- b/third-party/pjproject/configure.m4                                                            |    2
- b/third-party/pjproject/patches/0070-os_core_unix-Set-mutex-NULL-in-atomic-destroy-and-ad.patch |  114
- b/third-party/pjproject/patches/0080-timer-Clean-up-usage-of-timer-heap.patch                   |  434
- b/third-party/pjproject/patches/0090-sip_transaction-In-tsx_timer_callback-check-if-tsx-i.patch |   31
- b/third-party/versions.mak                                                                      |    2
- b/utils/.gitignore                                                                              |    1
- b/utils/Makefile                                                                                |    2
- contrib/realtime/mssql/mssql_cdr.sql                                                            |   44
- contrib/realtime/mssql/mssql_config.sql                                                         | 1863
- contrib/realtime/mssql/mssql_voicemail.sql                                                      |   54
- contrib/realtime/mysql/mysql_cdr.sql                                                            |   32
- contrib/realtime/mysql/mysql_config.sql                                                         | 1106
- contrib/realtime/mysql/mysql_voicemail.sql                                                      |   34
- contrib/realtime/oracle/oracle_cdr.sql                                                          |   38
- contrib/realtime/oracle/oracle_config.sql                                                       | 1829
- contrib/realtime/oracle/oracle_voicemail.sql                                                    |   48
- contrib/realtime/postgresql/postgresql_cdr.sql                                                  |   36
- contrib/realtime/postgresql/postgresql_config.sql                                               | 1198
- contrib/realtime/postgresql/postgresql_voicemail.sql                                            |   38
- third-party/pjproject/patches/0070-sdp_media_fmt.patch                                          |   19
- third-party/pjproject/patches/0071-sdp_fmtp_attr.patch                                          |   34
- 156 files changed, 3806 insertions(+), 70035 deletions(-)
diff --git a/asterisk-certified-13.21-cert4-summary.html b/asterisk-certified-13.21-cert4-summary.html
new file mode 100644 (file)
index 0000000..e1f1bc2
--- /dev/null
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><title>Release Summary - asterisk-certified/13.21-cert4</title><h1 align="center"><a name="top">Release Summary</a></h1><h3 align="center">asterisk-certified/13.21-cert4</h3><h3 align="center">Date: 2019-07-11</h3><h3 align="center">&lt;asteriskteam@digium.com&gt;</h3><hr><h2 align="center">Table of Contents</h2><ol>
+<li><a href="#summary">Summary</a></li>
+<li><a href="#contributors">Contributors</a></li>
+<li><a href="#closed_issues">Closed Issues</a></li>
+<li><a href="#commits">Other Changes</a></li>
+<li><a href="#diffstat">Diffstat</a></li>
+</ol><hr><a name="summary"><h2 align="center">Summary</h2></a><center><a href="#top">[Back to Top]</a></center><p>This release has been made to address one or more security vulnerabilities that have been identified. A security advisory document has been published for each vulnerability that includes additional information. Users of versions of Asterisk that are affected are strongly encouraged to review the advisories and determine what action they should take to protect their systems from these issues.</p><p>Security Advisories:</p><ul>
+<li><a href="http://downloads.asterisk.org/pub/security/AST-2019-002,AST-2019-003.html">AST-2019-002,AST-2019-003</a></li>
+</ul><p>The data in this summary reflects changes that have been made since the previous release, asterisk-certified/13.21-cert3.</p><hr><a name="contributors"><h2 align="center">Contributors</h2></a><center><a href="#top">[Back to Top]</a></center><p>This table lists the people who have submitted code, those that have tested patches, as well as those that reported issues on the issue tracker that were resolved in this release. For coders, the number is how many of their patches (of any size) were committed into this release. For testers, the number is the number of times their name was listed as assisting with testing a patch. Finally, for reporters, the number is the number of issues that they reported that were affected by commits that went into this release.</p><table width="100%" border="0">
+<tr><th width="33%">Coders</th><th width="33%">Testers</th><th width="33%">Reporters</th></tr>
+<tr valign="top"><td width="33%">2 George Joseph <gjoseph@digium.com><br/>1 Sean Bright <sean.bright@gmail.com><br/>1 Chris-Savinovich <csavinovich@digium.com><br/>1 Francesco Castellano <francesco.castellano@messagenet.it><br/></td><td width="33%"><td width="33%">1 Eyal Hasson <eyal@kolhl.com><br/>1 Gil Richard<br/>1 Gil Richard <grichard@intertalksystems.com><br/>1 Francesco Castellano <francesco.castellano@messagenet.it><br/></td></tr>
+</table><hr><a name="closed_issues"><h2 align="center">Closed Issues</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all issues from the issue tracker that were closed by changes that went into this release.</p><h3>Security</h3><h4>Category: Channels/chan_sip/Interoperability</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-28465">ASTERISK-28465</a>: Broken SDP can cause a segfault in a T.38 reINVITE<br/>Reported by: Francesco Castellano<ul>
+<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=07048050b0a1e77e704ed06aa103a450fa1e64ea">[07048050b0]</a> Francesco Castellano -- chan_sip: Handle invalid SDP answer to T.38 re-invite</li>
+</ul><br><h4>Category: Resources/res_pjsip_messaging</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-28447">ASTERISK-28447</a>: res_pjsip_messaging: In-dialog MESSAGE with no body causes crash<br/>Reported by: Gil Richard<ul>
+<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=521581b762e9a72f1bcc6c4321db3fc53fdb084a">[521581b762]</a> George Joseph -- res_pjsip_messaging:  Check for body in in-dialog message</li>
+</ul><br><h3>Bug</h3><h4>Category: Core/PBX</h4><a href="https://issues.asterisk.org/jira/browse/ASTERISK-28140">ASTERISK-28140</a>: repeated segmentation faults <br/>Reported by: Eyal Hasson<ul>
+<li><a href="https://code.asterisk.org/code/changelog/asterisk?cs=79207ec9f1f6864b138ecbde1a69ea2acc1b823e">[79207ec9f1]</a> George Joseph -- backtrace:  Refactor ast_bt_get_symbols so it doesn't crash</li>
+</ul><br><hr><a name="commits"><h2 align="center">Commits Not Associated with an Issue</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a list of all changes that went into this release that did not reference a JIRA issue.</p><table width="100%" border="1">
+<tr><th>Revision</th><th>Author</th><th>Summary</th></tr>
+<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=e2e3def2d9a02506be87855570c85b5c9628033f">e2e3def2d9</a></td><td>Sean Bright</td><td>core: Add some documentation to the malloc_trim code</td></tr>
+<tr><td><a href="https://code.asterisk.org/code/changelog/asterisk?cs=7a7e3dfa5c3bb1a2a16fdb5b502ff4db95d3d538">7a7e3dfa5c</a></td><td>Chris-Savinovich</td><td>core: Merge malloc_trim patch</td></tr>
+</table><hr><a name="diffstat"><h2 align="center">Diffstat Results</h2></a><center><a href="#top">[Back to Top]</a></center><p>This is a summary of the changes to the source code that went into this release that was generated using the diffstat utility.</p><pre>asterisk-certified-13.21-cert3-summary.html |  108
+asterisk-certified-13.21-cert3-summary.txt  |  258
+b/.version                                  |    2
+b/CHANGES                                   |    9
+b/ChangeLog                                 |56052 +++++++++++-----------------
+b/UPGRADE.txt                               |    7
+b/asterisk-13.21.0-rc1-summary.html         |  348
+b/asterisk-13.21.0-rc1-summary.txt          |  825
+b/channels/chan_sip.c                       |    8
+b/configure                                 |    2
+b/configure.ac                              |    2
+b/include/asterisk/autoconfig.h.in          |    3
+b/include/asterisk/backtrace.h              |   19
+b/main/astmm.c                              |    8
+b/main/backtrace.c                          |  330
+b/main/cli.c                                |   46
+b/main/logger.c                             |   42
+b/main/utils.c                              |    8
+b/res/res_pjsip_messaging.c                 |    7
+b/tests/test_pbx.c                          |   22
+20 files changed, 24152 insertions(+), 33954 deletions(-)</pre><br></html>
\ No newline at end of file
diff --git a/asterisk-certified-13.21-cert4-summary.txt b/asterisk-certified-13.21-cert4-summary.txt
new file mode 100644 (file)
index 0000000..f48ca0c
--- /dev/null
@@ -0,0 +1,142 @@
+                                Release Summary
+
+                         asterisk-certified/13.21-cert4
+
+                                Date: 2019-07-11
+
+                           <asteriskteam@digium.com>
+
+     ----------------------------------------------------------------------
+
+                               Table of Contents
+
+    1. Summary
+    2. Contributors
+    3. Closed Issues
+    4. Other Changes
+    5. Diffstat
+
+     ----------------------------------------------------------------------
+
+                                    Summary
+
+                                 [Back to Top]
+
+   This release has been made to address one or more security vulnerabilities
+   that have been identified. A security advisory document has been published
+   for each vulnerability that includes additional information. Users of
+   versions of Asterisk that are affected are strongly encouraged to review
+   the advisories and determine what action they should take to protect their
+   systems from these issues.
+
+   Security Advisories:
+
+     * AST-2019-002,AST-2019-003
+
+   The data in this summary reflects changes that have been made since the
+   previous release, asterisk-certified/13.21-cert3.
+
+     ----------------------------------------------------------------------
+
+                                  Contributors
+
+                                 [Back to Top]
+
+   This table lists the people who have submitted code, those that have
+   tested patches, as well as those that reported issues on the issue tracker
+   that were resolved in this release. For coders, the number is how many of
+   their patches (of any size) were committed into this release. For testers,
+   the number is the number of times their name was listed as assisting with
+   testing a patch. Finally, for reporters, the number is the number of
+   issues that they reported that were affected by commits that went into
+   this release.
+
+   Coders                   Testers                  Reporters                
+   2 George Joseph                                   1 Eyal Hasson            
+   1 Sean Bright                                     1 Gil Richard            
+   1 Chris-Savinovich                                1 Gil Richard            
+   1 Francesco Castellano                            1 Francesco Castellano   
+
+     ----------------------------------------------------------------------
+
+                                 Closed Issues
+
+                                 [Back to Top]
+
+   This is a list of all issues from the issue tracker that were closed by
+   changes that went into this release.
+
+  Security
+
+    Category: Channels/chan_sip/Interoperability
+
+   ASTERISK-28465: Broken SDP can cause a segfault in a T.38 reINVITE
+   Reported by: Francesco Castellano
+     * [07048050b0] Francesco Castellano -- chan_sip: Handle invalid SDP
+       answer to T.38 re-invite
+
+    Category: Resources/res_pjsip_messaging
+
+   ASTERISK-28447: res_pjsip_messaging: In-dialog MESSAGE with no body causes
+   crash
+   Reported by: Gil Richard
+     * [521581b762] George Joseph -- res_pjsip_messaging: Check for body in
+       in-dialog message
+
+  Bug
+
+    Category: Core/PBX
+
+   ASTERISK-28140: repeated segmentation faults
+   Reported by: Eyal Hasson
+     * [79207ec9f1] George Joseph -- backtrace: Refactor ast_bt_get_symbols
+       so it doesn't crash
+
+     ----------------------------------------------------------------------
+
+                      Commits Not Associated with an Issue
+
+                                 [Back to Top]
+
+   This is a list of all changes that went into this release that did not
+   reference a JIRA issue.
+
+   +------------------------------------------------------------------------+
+   | Revision   | Author           | Summary                                |
+   |------------+------------------+----------------------------------------|
+   | e2e3def2d9 | Sean Bright      | core: Add some documentation to the    |
+   |            |                  | malloc_trim code                       |
+   |------------+------------------+----------------------------------------|
+   | 7a7e3dfa5c | Chris-Savinovich | core: Merge malloc_trim patch          |
+   +------------------------------------------------------------------------+
+
+     ----------------------------------------------------------------------
+
+                                Diffstat Results
+
+                                 [Back to Top]
+
+   This is a summary of the changes to the source code that went into this
+   release that was generated using the diffstat utility.
+
+ asterisk-certified-13.21-cert3-summary.html |  108
+ asterisk-certified-13.21-cert3-summary.txt  |  258
+ b/.version                                  |    2
+ b/CHANGES                                   |    9
+ b/ChangeLog                                 |56052 +++++++++++-----------------
+ b/UPGRADE.txt                               |    7
+ b/asterisk-13.21.0-rc1-summary.html         |  348
+ b/asterisk-13.21.0-rc1-summary.txt          |  825
+ b/channels/chan_sip.c                       |    8
+ b/configure                                 |    2
+ b/configure.ac                              |    2
+ b/include/asterisk/autoconfig.h.in          |    3
+ b/include/asterisk/backtrace.h              |   19
+ b/main/astmm.c                              |    8
+ b/main/backtrace.c                          |  330
+ b/main/cli.c                                |   46
+ b/main/logger.c                             |   42
+ b/main/utils.c                              |    8
+ b/res/res_pjsip_messaging.c                 |    7
+ b/tests/test_pbx.c                          |   22
+ 20 files changed, 24152 insertions(+), 33954 deletions(-)
index 972f69a97d2eb92a1c837fb1dffd20ceb424f026..83da97f2e8bd1481942ae56fa0b7be398fa0579b 100644 (file)
@@ -1,5 +1,6 @@
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> 210693f3123d
index 1dc22068bdf35e5cb0eeaaa4edea5986266206b8..056488bb45249af5ac13f7e0dc6c156e1fb0f1fd 100644 (file)
@@ -1,5 +1,6 @@
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> 4da0c5f79a9c
index 1ee25c28389c1ba1ddc09dfe9f487597129e7b15..b30456e41c1d0e52ee8a7dc7acae270d7a15559d 100644 (file)
@@ -1,5 +1,6 @@
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> a2e9769475e
index 5f1ffa4b1df124af3a82069b9709ed887ac908a5..9d74a7b7674e7c8257887a3052abad3198154208 100644 (file)
@@ -1,7 +1,8 @@
 BEGIN;
 
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> 210693f3123d
index 444e8bdda61c0fa6504f567bf44692e8fb147e31..0d5268e0e175b6114ae637b549d057847ef6d4eb 100644 (file)
@@ -1,7 +1,8 @@
 BEGIN;
 
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> 4da0c5f79a9c
index f9257849cad09c4ac9f6c11f7484ed882951de1b..db7d09a93075d50a98bd6096345119157869aa07 100644 (file)
@@ -1,7 +1,8 @@
 BEGIN;
 
 CREATE TABLE alembic_version (
-    version_num VARCHAR(32) NOT NULL
+    version_num VARCHAR(32) NOT NULL, 
+    CONSTRAINT alembic_version_pkc PRIMARY KEY (version_num)
 );
 
 -- Running upgrade  -> a2e9769475e