Skip to content
Snippets Groups Projects
  1. Nov 04, 2015
    • Matt Jordan's avatar
      main/dial: Protect access to the format_cap structure of the requesting channel · 9c293b51
      Matt Jordan authored
      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
      9c293b51
  2. Sep 22, 2015
    • Richard Mudgett's avatar
      app_page.c: Fix crash when forwarding with a predial handler. · 06f4f80a
      Richard Mudgett authored
      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
      06f4f80a
  3. Apr 17, 2015
    • Mark Michelson's avatar
      Detect potential forwarding loops based on count. · aae45acb
      Mark Michelson authored
      A potential problem that can arise is the following:
      
      * Bob's phone is programmed to automatically forward to Carol.
      * Carol's phone is programmed to automatically forward to Bob.
      * Alice calls Bob.
      
      If left unchecked, this results in an endless loops of call forwards
      that would eventually result in some sort of fiery crash.
      
      Asterisk's method of solving this issue was to track which interfaces
      had been dialed. If a destination were dialed a second time, then
      the attempt to call that destination would fail since a loop was
      detected.
      
      The problem with this method is that call forwarding has evolved. Some
      SIP phones allow for a user to manually forward an incoming call to an
      ad-hoc destination. This can mean that:
      
      * There are legitimate use cases where a device may be dialed multiple
      times, or
      * There can be human error when forwarding calls.
      
      This change removes the old method of detecting forwarding loops in
      favor of keeping a count of the number of destinations a channel has
      dialed on a particular branch of a call. If the number exceeds the
      set number of max forwards, then the call fails. This approach has
      the following advantages over the old:
      
      * It is much simpler.
      * It can detect loops involving local channels.
      * It is user configurable.
      
      The only disadvantage it has is that in the case where there is a
      legitimate forwarding loop present, it takes longer to detect it.
      However, the forwarding loop is still properly detected and the
      call is cleaned up as it should be.
      
      Address review feedback on gerrit.
      
      * Correct "mfgium" to "Digium"
      * Decrement max forwards by one in the case where allocation of the
        max forwards datastore is required.
      * Remove irrelevant code change from pjsip_global_headers.c
      
      ASTERISK-24958 #close
      
      Change-Id: Ia7e4b7cd3bccfbd34d9a859838356931bba56c23
      aae45acb
  4. Apr 13, 2015
    • Matt Jordan's avatar
      git migration: Refactor the ASTERISK_FILE_VERSION macro · 4a582616
      Matt Jordan authored
      Git does not support the ability to replace a token with a version
      string during check-in. While it does have support for replacing a
      token on clone, this is somewhat sub-optimal: the token is replaced
      with the object hash, which is not particularly easy for human
      consumption. What's more, in practice, the source file version was often
      not terribly useful. Generally, when triaging bugs, the overall version
      of Asterisk is far more useful than an individual SVN version of a file. As a
      result, this patch removes Asterisk's support for showing source file
      versions.
      
      Specifically, it does the following:
      
      * Rename ASTERISK_FILE_VERSION macro to ASTERISK_REGISTER_FILE, and
        remove passing the version in with the macro. Other facilities
        than 'core show file version' make use of the file names, such as
        setting a debug level only on a specific file. As such, the act of
        registering source files with the Asterisk core still has use. The
        macro rename now reflects the new macro purpose.
      
      * main/asterisk:
        - Refactor the file_version structure to reflect that it no longer
          tracks a version field.
        - Remove the "core show file version" CLI command. Without the file
          version, it is no longer useful.
        - Remove the ast_file_version_find function. The file version is no
          longer tracked.
        - Rename ast_register_file_version/ast_unregister_file_version to
          ast_register_file/ast_unregister_file, respectively.
      
      * main/manager: Remove value from the Version key of the ModuleCheck
        Action. The actual key itself has not been removed, as doing so would
        absolutely constitute a backwards incompatible change. However, since
        the file version is no longer tracked, there is no need to attempt to
        include it in the Version key.
      
      * UPGRADE: Add notes for:
        - Modification to the ModuleCheck AMI Action
        - Removal of the "core show file version" CLI command
      
      Change-Id: I6cf0ff280e1668bf4957dc21f32a5ff43444a40e
      4a582616
  5. Mar 13, 2015
  6. Feb 26, 2015
    • Scott Griepentrog's avatar
      Dial API: add self destruct option when complete · d79670b2
      Scott Griepentrog authored
      This patch adds a self-destruction option to the
      dial api.  The usefulness of this is mostly when
      using async mode to spawn a separate thread used
      to handle the new call, while the calling thread
      is allowed to go on about other business.
      
      The only alternative to this option would be the
      calling thread spawning a new thread, or hanging
      around itself waiting to destroy the dial struct
      after completion.
      
      Example of use (minus error checking):
      
        struct ast_dial *dial = ast_dial_create();
      
        ast_dial_append(dial, "PJSIP", "200", NULL);
      
        ast_dial_option_global_enable(dial, AST_DIAL_OPTION_ANSWER_EXEC, "Echo");
        ast_dial_option_global_enable(dial, AST_DIAL_OPTION_SELF_DESTROY, NULL);
      
        ast_dial_run(dial, NULL, 1);
      
      The dial_run call will return almost immediately
      after spawning the new thread to run and monitor
      the dial.  If the call is answered, it is placed
      into the echo app.  When completed, it will call
      ast_dial_destroy() on the dial structure.
      
      Note that any allocations made to pass values to
      ast_dial_set_user_data() or dial options must be
      free'd in a state callback function on any of:
        AST_DIAL_RESULT_UNASWERED,
        AST_DIAL_RESULT_ANSWERED,
        AST_DIAL_RESULT_HANGUP, or 
        AST_DIAL_RESULT_TIMEOUT.
      
      Review: https://reviewboard.asterisk.org/r/4443/
      ........
      
      Merged revisions 432385 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432386 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      d79670b2
  7. Sep 05, 2014
  8. Jul 24, 2014
    • Richard Mudgett's avatar
      accountcode: Slightly change accountcode propagation. · a2ce95d9
      Richard Mudgett authored
      The previous behavior was to simply set the accountcode of an outgoing
      channel to the accountcode of the channel initiating the call.  It was
      done this way a long time ago to allow the accountcode set on the SIP/100
      channel to be propagated to a local channel so the dialplan execution on
      the Local;2 channel would have the SIP/100 accountcode available.
      
      SIP/100 -> Local;1/Local;2 -> SIP/200
      
      Propagating the SIP/100 accountcode to the local channels is very useful.
      Without any dialplan manipulation, all channels in this call would have
      the same accountcode.
      
      Using dialplan, you can set a different accountcode on the SIP/200 channel
      either by setting the accountcode on the Local;2 channel or by the Dial
      application's b(pre-dial), M(macro) or U(gosub) options, or by the
      FollowMe application's b(pre-dial) option, or by the Queue application's
      macro or gosub options.  Before Asterisk v12, the altered accountcode on
      SIP/200 will remain until the local channels optimize out and the
      accountcode would change to the SIP/100 accountcode.
      
      Asterisk v1.8 attempted to add peeraccount support but ultimately had to
      punt on the support.  The peeraccount support was rendered useless because
      of how the CDR code needed to unconditionally force the caller's
      accountcode onto the peer channel's accountcode.  The CEL events were thus
      intentionally made to always use the channel's accountcode as the
      peeraccount value.
      
      With the arrival of Asterisk v12, the situation has improved somewhat so
      peeraccount support can be made to work.  Using the indicated example, the
      the accountcode values become as follows when the peeraccount is set on
      SIP/100 before calling SIP/200:
      
      SIP/100 ---> Local;1 ---- Local;2 ---> SIP/200
      acct: 100 \/ acct: 200 \/ acct: 100 \/ acct: 200
      peer: 200 /\ peer: 100 /\ peer: 200 /\ peer: 100
      
      If a channel already has an accountcode it can only change by the
      following explicit user actions:
      
      1) A channel originate method that can specify an accountcode to use.
      
      2) The calling channel propagating its non-empty peeraccount or its
      non-empty accountcode if the peeraccount was empty to the outgoing
      channel's accountcode before initiating the dial.  e.g., Dial and
      FollowMe.  The exception to this propagation method is Queue.  Queue will
      only propagate peeraccounts this way only if the outgoing channel does not
      have an accountcode.
      
      3) Dialplan using CHANNEL(accountcode).
      
      4) Dialplan using CHANNEL(peeraccount) on the other end of a local
      channel pair.
      
      If a channel does not have an accountcode it can get one from the
      following places:
      
      1) The channel driver's configuration at channel creation.
      
      2) Explicit user action as already indicated.
      
      3) Entering a basic or stasis-mixing bridge from a peer channel's
      peeraccount value.
      
      You can specify the accountcode for an outgoing channel by setting the
      CHANNEL(peeraccount) before using the Dial, FollowMe, and Queue
      applications.  Queue adds the wrinkle that it will not overwrite an
      existing accountcode on the outgoing channel with the calling channels
      values.
      
      Accountcode and peeraccount values propagate to an outgoing channel before
      dialing.  Accountcodes also propagate when channels enter or leave a basic
      or stasis-mixing bridge.  The peeraccount value only makes sense for
      mixing bridges with two channels; it is meaningless otherwise.
      
      * Made peeraccount functional by changing accountcode propagation as
      described above.
      
      * Fixed CEL extracting the wrong ie value for the peeraccount.  This was
      done intentionally in Asterisk v1.8 when that version had to punt on
      peeraccount.
      
      * Fixed a few places dealing with accountcodes that were reading from
      channels without the lock held.
      
      AFS-65 #close
      
      Review: https://reviewboard.asterisk.org/r/3601/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419520 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      a2ce95d9
  9. Jul 21, 2014
  10. Jul 20, 2014
  11. Jun 13, 2014
    • Matthew Jordan's avatar
      stasis: Reduce creation of channel snapshots to improve performance · 9cc1a8e8
      Matthew Jordan authored
      During some performance testing of Asterisk with AGI, ARI, and lots of Local
      channels, we noticed that there's quite a hit in performance during channel
      creation and releasing to the dialplan (ARI continue). After investigating
      the performance spike that occurs during channel creation, we discovered
      that we create a lot of channel snapshots that are technically unnecessary.
      This includes creating snapshots during:
       * AGI execution
       * Returning objects for ARI commands
       * During some Local channel operations
       * During some dialling operations
       * During variable setting
       * During some bridging operations
      And more.
      
      This patch does the following:
       - It removes a number of fields from channel snapshots. These fields were
         rarely used, were expensive to have on the snapshot, and hurt performance.
         This included formats, translation paths, Log Call ID, callgroup, pickup
         group, and all channel variables. As a result, AMI Status,
         "core show channel", "core show channelvar", and "pjsip show channel" were
         modified to either hit the live channel or not show certain pieces of data.
         While this is unfortunate, the performance gain from this patch is worth
         the loss in behaviour.
       - It adds a mechanism to publish a cached snapshot + blob. A large number of
         publications were changed to use this, including:
         - During Dial begin
         - During Variable assignment (if no AMI variables are emitted - if AMI
           variables are set, we have to make snapshots when a variable is changed)
         - During channel pickup
         - When a channel is put on hold/unhold
         - When a DTMF digit is begun/ended
         - When creating a bridge snapshot
         - When an AOC event is raised
         - During Local channel optimization/Local bridging
         - When endpoint snapshots are generated
         - All AGI events
         - All ARI responses that return a channel
         - Events in the AgentPool, MeetMe, and some in Queue
       - Additionally, some extraneous channel snapshots were being made that were
         unnecessary. These were removed.
       - The result of ast_hashtab_hash_string is now cached in stasis_cache. This
         reduces a large number of calls to ast_hashtab_hash_string, which reduced
         the amount of time spent in this function in gprof by around 50%.
      
      #ASTERISK-23811 #close
      Reported by: Matt Jordan
      
      Review: https://reviewboard.asterisk.org/r/3568/
      ........
      
      Merged revisions 416211 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@416216 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      9cc1a8e8
  12. Apr 18, 2014
    • Richard Mudgett's avatar
      Originated calls: Fix several originate call problems. · 51b6c496
      Richard Mudgett authored
      * Restore the reason value set by pbx_outgoing_attempt() to use
      AST_CONTROL_xxx values as all the consumers were expecting rather than
      cause codes.
      
      * Fixed the dial routines to set cause codes for more than just
      ast_request() so pbx_outgoing_attempt() reason codes will function.
      
      * Fix inconsistent locked_channel return status in pbx_outgoing_attempt().
      The chanel may not have been locked or the channel may have been a stale
      pointer.
      
      * Fixed the OutgoingSpoolFailed channel to run dialplan whenever the
      dialing fails for an originate exten and 1 < synchronous.
      
      * Fix incorrect ast_cond_wait() usage in pbx_outgoing_attempt().
      Indroduced by issue ASTERISK-22212 patch.
      
      * Made struct pbx_outgoing use the ao2 lock instead of its own lock for
      the cond wait mutex.  No sense in having two locks associated with the
      same struct when only one is needed.
      
      Review: https://reviewboard.asterisk.org/r/3421/
      ........
      
      Merged revisions 412581 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@412583 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      51b6c496
  13. Mar 20, 2014
    • Richard Mudgett's avatar
      assigned-uniqueids: Miscellaneous cleanup and fixes. · 1ba13718
      Richard Mudgett authored
      * Fix memory leak in ast_unreal_new_channels().  Made it generate the ;2
      uniqueid on a stack variable instead of mallocing it.
      
      * Made send error response to ARI and AMI requests instead of just logging
      excessive uniqueid length and allowing truncation.  action_originate() and
      ari_channels_handle_originate_with_id().
      
      * Fixed minor truncating uniqueid hole when generating the ;2 uniqueid
      string length.  Created public and internal lengths of uniqueid.  The
      internal length can handle a max public uniqueid plus an appended ;2.
      
      * free() and ast_free() are NULL tolerant so they don't need a NULL test
      before calling.
      
      * Made use better struct initialization format instead of the position
      dependent initialization format.  Also anything not explicitly initialized
      in the struct is initialized to zero by the compiler.
      
      * Made ast_channel_internal_set_fake_ids() use the safer
      ast_copy_string() instead of strncpy().
      
      Review: https://reviewboard.asterisk.org/r/3371/
      ........
      
      Merged revisions 410949 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@410950 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      1ba13718
  14. Mar 07, 2014
    • Scott Griepentrog's avatar
      uniqueid: channel linkedid, ami, ari object creation with id's · 80ef9a21
      Scott Griepentrog authored
      Much needed was a way to assign id to objects on creation, and
      much change was necessary to accomplish it.  Channel uniqueids
      and linkedids are split into separate string and creation time
      components without breaking linkedid propgation.  This allowed
      the uniqueid to be specified by the user interface - and those
      values are now carried through to channel creation, adding the
      assignedids value to every function in the chain including the
      channel drivers. For local channels, the second channel can be
      specified or left to default to a ;2 suffix of first.  In ARI,
      bridge, playback, and snoop objects can also be created with a
      specified uniqueid.
      
      Along the way, the args order to allocating channels was fixed
      in chan_mgcp and chan_gtalk, and linkedid is no longer lost as
      masquerade occurs.
      
      (closes issue ASTERISK-23120)
      Review: https://reviewboard.asterisk.org/r/3191/
      ........
      
      Merged revisions 410157 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@410158 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      80ef9a21
  15. Dec 18, 2013
    • Kevin Harwell's avatar
      channel locking: Add locking for channel snapshot creation · 28c0cb28
      Kevin Harwell authored
      Original commit message by mmichelson (asterisk 12 r403311):
      
      "This adds channel locks around calls to create channel snapshots as well
      as other functions which operate on a channel and then end up
      creating a channel snapshot. Functions that expect the channel to be
      locked prior to being called have had their documentation updated to
      indicate such."
      
      The above was initially committed and then reverted at r403398.  The problem
      was found to be in core_local.c in the publish_local_bridge_message function.
      The ast_unreal_lock_all function locks and adds a reference to the returned
      channels and while they were being unlocked they were not being unreffed when
      no longer needed.  Fixed by unreffing the channels.
      
      Also in bridge.c a lock was obtained on "other->chan", but then an attempt was
      made to unlock "other" and not the previously locked channel.  Fixed by
      unlocking "other->chan"
      
      (closes issue ASTERISK-22709)
      Reported by: John Bigelow
      ........
      
      Merged revisions 404237 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@404260 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      28c0cb28
  16. Dec 14, 2013
  17. Dec 09, 2013
  18. Dec 05, 2013
  19. Dec 03, 2013
  20. Oct 03, 2013
  21. Oct 02, 2013
  22. Sep 20, 2013
  23. Jul 17, 2013
  24. Jun 17, 2013
    • Matthew Jordan's avatar
      Update Asterisk's CDRs for the new bridging framework · 6258bbe7
      Matthew Jordan authored
      This patch is the initial push to update Asterisk's CDR engine for the new
      bridging framework. This patch guts the existing CDR engine and builds the new
      on top of messages coming across Stasis. As changes in channel state and bridge
      state are detected, CDRs are built and dispatched accordingly. This
      fundamentally changes CDRs in a few ways.
      (1) CDRs are now *very* reflective of the actual state of channels and bridges.
          This means CDRs track well with what an actual channel is doing - which
          is useful in transfer scenarios (which were previously difficult to pin
          down). It does, however, mean that CDRs cannot be 'fooled'. Previous
          behavior in Asterisk allowed for CDR applications, channels, and other
          properties to be spoofed in parts of the code - this no longer works.
      (2) CDRs have defined behavior in multi-party scenarios. This behavior will not
          be what everyone wants, but it is a defined behavior and as such, it is
          predictable.
      (3) The CDR manipulation functions and applications have been overhauled. Major
          changes have been made to ResetCDR and ForkCDR in particular. Many of the
          options for these two applications no longer made any sense with the new
          framework and the (slightly) more immutable nature of CDRs.
      
      There are a plethora of other changes. For a full description of CDR behavior,
      see the CDR specification on the Asterisk wiki.
      
      (closes issue ASTERISK-21196)
      
      Review: https://reviewboard.asterisk.org/r/2486/
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@391947 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      6258bbe7
  25. May 22, 2013
  26. May 18, 2013
  27. May 17, 2013
    • Matthew Jordan's avatar
      Publish the outbound channel's application/data when dialing · d04f1fd6
      Matthew Jordan authored
      This patch does two things:
      * It fixes a bug where the outbound channel's application/data set by the
        dialing API/app_dial is not communicated until the channel is hung up.
        If that happens, AMI would incorrectly send a NewExten event immediately
        after a Hangup. This isn't really AMI's fault, as the dialing APIs never
        communicated the 'helpful' app/data on the outbound channel until it was
        hungup.
      * It makes public sending a stasis message about a change in channel state.
        This is useful enough that - for now at least - it should be public. If
        operations on a channel go to being more coarse-grained, this function
        could be made private again.
      
      Review: https://reviewboard.asterisk.org/r/2548
      
      Note that this problem was found and reported by Matt DiMeo.
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@388976 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      d04f1fd6
  28. Apr 08, 2013
    • Matthew Jordan's avatar
      Add multi-channel Stasis messages; refactor Dial AMI events to Stasis · b8d4e573
      Matthew Jordan authored
      This patch does the following:
       * A new Stasis payload has been defined for multi-channel messages. This
         payload can store multiple ast_channel_snapshot objects along with a single
         JSON blob. The payload object itself is opaque; the snapshots are stored
         in a container keyed by roles. APIs have been provided to query for and
         retrieve the snapshots from the payload object.
       * The Dial AMI events have been refactored onto Stasis. This includes dial
         messages in app_dial, as well as the core dialing framework. The AMI events
         have been modified to send out a DialBegin/DialEnd events, as opposed to
         the subevent type that was previously used.
       * Stasis messages, types, and other objects related to channels have been
         placed in their own file, stasis_channels. Unit tests for some of these
         objects/messages have also been written.
      
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@384910 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      b8d4e573
  29. Feb 05, 2013
  30. Jun 15, 2012
    • Kevin P. Fleming's avatar
      Multiple revisions 369001-369002 · 166b4e2b
      Kevin P. Fleming authored
      ........
        r369001 | kpfleming | 2012-06-15 10:56:08 -0500 (Fri, 15 Jun 2012) | 11 lines
        
        Add support-level indications to many more source files.
        
        Since we now have tools that scan through the source tree looking for files
        with specific support levels, we need to ensure that every file that is
        a component of a 'core' or 'extended' module (or the main Asterisk binary)
        is explicitly marked with its support level. This patch adds support-level
        indications to many more source files in tree, but avoids adding them to
        third-party libraries that are included in the tree and to source files
        that don't end up involved in Asterisk itself.
      ........
        r369002 | kpfleming | 2012-06-15 10:57:14 -0500 (Fri, 15 Jun 2012) | 3 lines
        
        Add a script to enable finding source files without support-levels defined.
      ........
      
      Merged revisions 369001-369002 from http://svn.asterisk.org/svn/asterisk/branches/1.8
      ........
      
      Merged revisions 369005 from http://svn.asterisk.org/svn/asterisk/branches/10
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@369013 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      166b4e2b
  31. May 14, 2012
    • Kinsey Moore's avatar
      Commit framework for HANGUPCAUSE (replacement for SIP_CAUSE) · b5a6de76
      Kinsey Moore authored
      This is the starting point for the Asterisk 11: Who Hung Up work and provides
      a framework which will allow channel drivers to report the types of hangup
      cause information available in SIP_CAUSE without incurring the overhead of the
      MASTER_CHANNEL dialplan function. The initial implementation only includes
      cause generation for chan_sip and does not include cause code translation
      utilities.
      
      This change deprecates SIP_CAUSE and replaces its method of reporting cause
      codes with the new framework. This change also deprecates the 'storesipcause'
      option in sip.conf.
      
      Review: https://reviewboard.asterisk.org/r/1822/
      (Closes issue SWP-4221)
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@366408 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      b5a6de76
  32. Mar 29, 2012
  33. Mar 22, 2012
  34. Mar 10, 2012
  35. Feb 29, 2012
  36. Feb 27, 2012
  37. Feb 20, 2012
  38. Feb 13, 2012
Loading