Skip to content
Snippets Groups Projects
  1. Nov 26, 2018
    • George Joseph's avatar
      bridges: Remove reliance on stasis caching · 3667c5e1
      George Joseph authored
      * The bridging core no longer uses the stasis cache for bridge
        snapshots.  The latest bridge snapshot is now stored on the
        ast_bridge structure itself.
      
      * The following APIs are no longer available since the stasis cache
        is no longer used:
          ast_bridge_topic_cached()
          ast_bridge_topic_all_cached()
      
      * A topic pool is now used for individual bridge topics.
      
      * The ast_bridge_cache() function was removed since there's no
        longer a separate container of snapshots.
      
      * A new function "ast_bridges()" was created to retrieve the
        container of all bridges.  Users formerly calling
        ast_bridge_cache() can use the new function to iterate over
        bridges and retrieve the latest snapshot directly from the
        bridge.
      
      * The ast_bridge_snapshot_get_latest() function was renamed to
        ast_bridge_get_snapshot_by_uniqueid().
      
      * A new function "ast_bridge_get_snapshot()" was created to retrieve
        the bridge snapshot directly from the bridge structure.
      
      * The ast_bridge_topic_all() function now returns a normal topic
        not a cached one so you can't use stasis cache functions on it
        either.
      
      * The ast_bridge_snapshot_type() stasis message now has the
        ast_bridge_snapshot_update structure as it's data.  It contains
        the last snapshot and the new one.
      
      * cdr, cel, manager and ari have been updated to use the new
        arrangement.
      
      Change-Id: I7049b80efa88676ce5c4666f818fa18ad1985369
      3667c5e1
    • Joshua Colp's avatar
      stasis: Use an implementation specific channel snapshot cache. · d0ccbb33
      Joshua Colp authored
      Channels no longer use the Stasis cache for channel snapshots. Instead
      they are stored in a hash table in stasis_channels which reduces the
      number of Stasis messages created and allows better storage.
      
      As a result the following APIs are no longer available since the stasis
      cache is no longer used:
      ast_channel_topic_cached()
      ast_channel_topic_all_cached()
      
      The ast_channel_cache_all() and ast_channel_cache_by_name() functions
      now return an ao2_container of ast_channel_snapshots rather than
      a container of stasis_messages therefore you can't (and don't need
      to) call stasis_cache functions on it.
      
      The ast_channel_topic_all() function now returns a normal topic not
      a cached one so you can't use stasis cache functions on it either.
      
      The ast_channel_snapshot_type() stasis message now has the
      ast_channel_snapshot_update structure as it's data. It contains the
      last snapshot and the new one.
      
      ast_channel_snapshot_get_latest() still returns the latest snapshot.
      
      The latest snapshot is now stored on the channel itself to eliminate
      cache hits when Stasis messages that have the snapshot as a payload
      are created.
      
      ASTERISK-28102
      
      Change-Id: I9334febff60a82d7c39703e49059fa3a68825786
      d0ccbb33
  2. Oct 25, 2018
    • Corey Farrell's avatar
      chan_sip deprecation. · 90a11c4a
      Corey Farrell authored
      This officially deprecates chan_sip in Asterisk 17+.  A warning is
      printed upon startup or module load to tell users that they should
      consider migrating.  chan_sip is still built by default but the default
      modules.conf skips loading it at startup.
      
      Very important to note we are not scheduling a time where chan_sip will
      be removed.  The goal of this change is to accurately inform end users
      of the current state of chan_sip and encourage movement to the fully
      supported chan_pjsip.
      
      Change-Id: Icebd8848f63feab94ef882d36b2e99d73155af93
      90a11c4a
    • Corey Farrell's avatar
      UPDATE.txt: Fix formatting to match previous files. · e81d33e7
      Corey Farrell authored
      Add 'Section:' headings and use '-' for bullet points.
      
      Change-Id: I7e2be35601ac8fea53b90d926da564512b6716e4
      e81d33e7
    • Sean Bright's avatar
      res_parking: Stop setting the deprecated PARKINGSLOT channel variable. · 79c2b4fd
      Sean Bright authored
      Change-Id: Ia155ce2a53d61556aa4685524d1b48cfacfa3a8b
      79c2b4fd
  3. Oct 24, 2018
  4. Oct 22, 2018
  5. Jul 18, 2018
  6. May 03, 2018
    • Tzafrir Cohen's avatar
      chan_dahdi: Configurable dialed digit timeouts · 63015314
      Tzafrir Cohen authored
      Analog phones dial overlap dialing and it is chan_dahdi's job to read the
      numbers.  It has three timeout constants that this commit converts to
      channel-level configuration options:
      
      * firstdigit_timeout: Default time (ms) to detect first digit
      
      * interdigit_timeout: Default time (ms) to detect following digits
      
      * matchdigit_timeout: Default time (ms) to wait in case of ambiguous
      match.  This happens when the dialed digits match a number in the current
      context but are also the prefix of another number.
      
      Change-Id: Ib728fa900a4f6ae56d1ed810aba61b6593fb7213
      63015314
  7. Mar 01, 2018
    • Richard Mudgett's avatar
      core: Remove ABI effects of MALLOC_DEBUG. · c711e407
      Richard Mudgett authored
      This allows asterisk to be compiled with MALLOC_DEBUG to load modules
      built without MALLOC_DEBUG.  Now pre-compiled third-party modules will
      still work regardless of MALLOC_DEBUG being enabled or not.
      
      Change-Id: Ic07ad80b2c2df894db984cf27b16a69383ce0e10
      c711e407
  8. Feb 13, 2018
    • Corey Farrell's avatar
      Deprecate legacy modules. · 9f74afbd
      Corey Farrell authored
      * app_fax (replaced by res_fax).
      * res_config_sqlite (replaced by res_config_sqlite3).
      * res_monitor (replaced by app_mixmonitor).
      
      This is related to ASTERISK~23657 but does not resolve that ticket.
      Resolving that ticket would require complete removal of res_monitor.
      
      ASTERISK-27671 #close
      
      Change-Id: I16a3edd61fc1abd4a7b2e9357693ed663f62dd49
      9f74afbd
  9. Feb 12, 2018
    • Corey Farrell's avatar
      core: Remove embedded editline. · 9fddc8b4
      Corey Farrell authored
      This removes the embedded copy of editline from the Asterisk source
      tree, making a system copy of libedit mandatory in Asterisk 16+.
      
      ASTERISK-27634 #close
      
      Change-Id: Iedb64ad92acb78419f3caefedaa2bb7cd2a1a33f
      9fddc8b4
  10. Jan 16, 2018
    • Richard Mudgett's avatar
      res_pjsip: Split type=identify to IP address and SIP header matching priorities · 8494e780
      Richard Mudgett authored
      The type=identify endpoint identification method can match by IP address
      and by SIP header.  However, the SIP header matching has limited
      usefulness because you cannot specify the SIP header matching priority
      relative to the IP address matching.  All the matching happens at the same
      priority and the order of evaluating the identify sections is
      indeterminate.  e.g., If you had two type=identify sections where one
      matches by IP address for endpoint alice and the other matches by SIP
      header for endpoint bob then you couldn't predict which endpoint is
      matched when a request comes in that matches both.
      
      * Extract the SIP header matching criteria into its own "header" endpoint
      identification method so the user can specify the relative priority of the
      SIP header and the IP address matching criteria in the global
      endpoint_identifier_order option.  The "ip" endpoint identification method
      now only matches by IP address.
      
      ASTERISK-27491
      
      Change-Id: I9df142a575b7e1e3471b7cda5d3ea156cef08095
      8494e780
  11. Jan 10, 2018
    • Sean Bright's avatar
      cdr_syslog: Deprecate unmaintained module · 9e2fcb82
      Sean Bright authored
      There has been an open issue against cdr_syslog (ASTERISK~14441) about
      a race condition for 7.5 years that has never been addressed. Because
      this module is effectively unmaintained and currently broken, there is
      no sense in keeping it around.
      
      If logging CDRs to syslog is a desirable feature, it would probably be
      better to write the logs directly to the syslog server via socket
      instead of using the facilities provided by openlog/syslog/closelog.
      Doing so would address the race condition referenced in the associated
      issue.
      
      Change-Id: Ic77b94cd97f355a9cf5b1d3f3444964a6e0ba5dc
      9e2fcb82
  12. Dec 11, 2017
    • Kevin Harwell's avatar
      pjsip_options: wrongly applied "UNKNOWN" status · b088cddc
      Kevin Harwell authored
      A couple of places were setting the status to "UNKNOWN" when qualifies were
      being disabled. Instead this should be set to the "CREATED" status that
      represents when a contact is given (uri available), but the qualify frequency
      is set to zero so we don't know the status.
      
      This patch updates the relevant places with "CREATED". It also updates the
      "CREATED" status description (value shown in CLI/AMI/ARI output) to a value
      of "NonQualified"/"NonQual" as this description is hopefully less confusing.
      
      ASTERISK-27467
      
      Change-Id: Id67509d25df92a72eb3683720ad2a95a27b50c89
      b088cddc
  13. Oct 18, 2017
    • Corey Farrell's avatar
      app_macro deprecation. · 955a891a
      Corey Farrell authored
      * Mark the module deprecated.
      * Disable the module by default.
      * Produce a warning the first time a macro is used.
      * Note deprecation related options in app_dial and app_queue.
      
      ASTERISK-27350
      
      Change-Id: I560ea043bacdbc5534a17d97854273d52c2f1bdc
      955a891a
  14. Aug 10, 2017
  15. Jul 20, 2017
  16. Jul 13, 2017
    • Corey Farrell's avatar
      core: Add PARSE_TIMELEN support to ast_parse_arg and ACO. · 78a50b03
      Corey Farrell authored
      This adds support for parsing timelen values from config files.  This
      includes support for all flags which apply to PARSE_INT32.  Support for
      this parser is added to ACO via the OPT_TIMELEN_T option type.
      
      Fixes an issue where extra characters provided to ast_app_parse_timelen
      were ignored, they now cause an error.
      
      Testing is included.
      
      ASTERISK-27117 #close
      
      Change-Id: I6b333feca7e3f83b4ef5bf2636fc0fd613742554
      78a50b03
  17. Jul 05, 2017
    • Sean Bright's avatar
      core: Remove 'Data Retrieval API' · 325eeced
      Sean Bright authored
      This API was not actively maintained, was not added to new modules
      (such as res_pjsip), and there exist better alternatives to acquire the
      same information, such as the ARI.
      
      Change-Id: I4b2185a83aeb74798b4ad43ff8f89f971096aa83
      325eeced
  18. Mar 27, 2017
  19. Mar 17, 2017
  20. Mar 15, 2017
    • Mark Michelson's avatar
      Add rtcp-mux support · 10fa49e3
      Mark Michelson authored
      This commit adds support for RFC 5761: Multiplexing RTP Data and Control
      Packets on a Single Port. Specifically, it enables the feature when
      using chan_pjsip.
      
      A new option, "rtcp_mux" has been added to endpoint configuration in
      pjsip.conf. If set, then Asterisk will attempt to use rtcp-mux with
      whatever it communicates with. Asterisk follows the rules set forth in
      RFC 5761 with regards to falling back to standard RTCP behavior if the
      far end does not indicate support for rtcp-mux.
      
      The lion's share of the changes in this commit are in
      res_rtp_asterisk.c. This is because it was pretty much hard wired to
      have an RTP and an RTCP transport. The strategy used here is that when
      rtcp-mux is enabled, the current RTCP transport and its trappings (such
      as DTLS SSL session) are freed, and the RTCP session instead just
      mooches off the RTP session. This leads to a lot of specialized if
      statements throughout.
      
      ASTERISK-26732 #close
      Reported by Dan Jenkins
      
      Change-Id: If46a93ba1282418d2803e3fd7869374da8b77ab5
      10fa49e3
  21. Jan 20, 2017
    • Martin Tomec's avatar
      app_queue: add RINGCANCELED log event on caller hang up · 40b9766a
      Martin Tomec authored
      QueueLog did not log ringnoanswer when the caller abandoned call
      before first timeout. It was impossible to get agent membername
      and ringing duration for this short calls. After some discusions
      it seems that the best way is to add new event RINGCANCELED,
      which is generated after caller hangup during ringing.
      
      ASTERISK-26665
      
      Change-Id: Ic70f7b0f32fc95c9378e5bcf63865519014805d3
      40b9766a
  22. Oct 27, 2016
    • Tzafrir Cohen's avatar
      chan_dahdi: remove by_name support · 0646b48e
      Tzafrir Cohen authored
      Support for referring to DAHDI channels by logical names was added in
      (FIXME: when? Asterisk 11? 1.8?) and was intended to be part of support
      of refering to channels by name.
      
      While technically usable, it has never been properly supported in
      dahdi-tools, as using it would require many changes at the Asterisk
      level. Instead logical mapping was added at the kernel level.
      
      Thus it seems that refering to DAHDI channels by name is not really used
      by anyone, and therefore should probably be removed.
      
      Change-Id: I7d50bbfd9d957586f5cd06570244ef87bd54b485
      0646b48e
  23. Sep 30, 2016
    • Etienne Lessard's avatar
      app_queue: Update dynamic members ringinuse on reload. · 806d08b6
      Etienne Lessard authored
      Previously, when reloading the members of a queue, the members added statically
      (i.e. defined in queues.conf) would see their "ringinuse" value updated but not
      the members added dynamically.
      
      This change makes dynamic members ringuse value to be updated on reload.
      
      Note that it's impossible to add a dynamic member with a specific ringinuse
      value. For both static and dynamic members, the ringinuse value can always be
      changed later on with command like "queue set ringinuse" or with the AMI action
      "QueueMemberRingInUse". So it's possible this commit could break a user workflow
      if he was changing the ringinuse value of dynamic members via such commands and
      was also relying on the fact that a queue reload would not update the dynamic
      members ringinuse value.
      
      ASTERISK-26330
      
      Change-Id: I3745cc9a06ba7e02c399636f1ee9e58c04081f3f
      806d08b6
  24. Sep 29, 2016
  25. Jul 21, 2016
  26. May 31, 2016
    • Mark Michelson's avatar
      Expand the scope of Dial Events · 205a31f8
      Mark Michelson authored
      Dial events up to this point have come in two flavors
      * A Dial event with no status to indicate that dialing has begun
      * A Dial event with a status to indicate that dialing has ended
      
      With this change, Dial events have been expanded to also give
      intermediate events, such as "RINGING", "PROCEEDING", and "PROGRESS".
      This is especially useful for ARI dialing, as it gives the application
      writer the opportunity to place a channel into an early bridge when
      early media is detected.
      
      AMI handles these in-progress dial events by sending a new event called
      "DialState" that simply indicates that dial state has changed but has
      not ended. ARI never distinguished between DialBegin and DialEnd, so no
      change was made to the event itself.
      
      Another change here relates to dial forwards. A forward-related event
      was previously only sent when a channel was successfully able to forward
      a call to a new channel. With this set of changes, if forwarding is
      blocked, we send a Dial event with a forwarding destination but no
      forwarding channel, since we were prevented from creating one. This is
      again useful for ARI since application writers can now handle call
      forward attempts from within their own application.
      
      ASTERISK-25925 #close
      Reported by Mark Michelson
      
      Change-Id: I42cbec7730d84640a434d143a0d172a740995543
      205a31f8
  27. Feb 19, 2016
    • Walter Doekes's avatar
      chan_sip: Optionally supply fromuser/fromdomain in SIP dial string. · c0008232
      Walter Doekes authored
      Previously you could add [!dnid] to the SIP dial string to alter the To:
      header. This change allows you to alter the From header as well.
      
      SIP dial string extra options now look like this:
      
          [![touser[@todomain]][![fromuser][@fromdomain]]]
      
      INCOMPATIBLE CHANGE: If you were using an exclamation mark in your To:
      header, that is no longer possible.
      
      ASTERISK-25803 #close
      
      Change-Id: I2457e9ba7a89eb1da22084bab5a4d4328e189db7
      c0008232
  28. Dec 22, 2015
    • Dade Brandon's avatar
      app_amd: Correct maximum_number_of_words functionality & documentation · ca394161
      Dade Brandon authored
      - The maximum_number_of_words was previously documented as being
      the number of words that when exceeded, would result in the AMD
      application returning that the audio represents a machine.
      
      This was inconsistent with its actual functionality - it was
      a number of words that when REACHED, would result in determination
      as a machine.
      
      This update corrects the functionality to match the previously
      documented functionality.  This is a backwards incompatible change
      in configuration file, and has been added to UPGRADE.txt as a result.
      
      The sample configuration file and application defaults have been updated
      so that the default value is now 2, which reflects the same default
      functionality as previous versions.
      
      - Update documentation for silence_threshold, which previously implied
      that it was measuring time, rather than noise averages in the sample.
      
      - Update the comments in amd.conf.sample.
      
      ASTERISK-25639 #close
      Change-Id: I4b1451e5dc9cb3cb06d59b6ab872f5275ba79093
      ca394161
  29. May 12, 2015
    • Corey Farrell's avatar
      Allow command-line options to override asterisk.conf. · 57386dcb
      Corey Farrell authored
      Previous versions of Asterisk processed command-line options before
      processing asterisk.conf.  This meant that if an option was set in
      asterisk.conf, it could not be overridden with the equivelent command
      line option.  This change causes Asterisk to process the command-line
      twice.  First it processes options that are needed to load asterisk.conf,
      then it processes the remaining options after the config is read.
      
      This changes the function of -X slightly.  Previously using -X without
      disabling execincludes in asterisk.conf caused #exec to be usable in any
      config.  Now -X only enables #exec for the load of asterisk.conf, if it
      is wanted in the rest of the system it must be enabled with execincludes
      in asterisk.conf.  Updated 'asterisk -h' and 'man asterisk' to reflect
      the limited function of -X.
      
      ASTERISK-25042 #close
      Reported by: Corey Farrell
      
      Change-Id: I1450d45c15b4467274b871914d893ed4f6564cd7
      57386dcb
  30. Apr 27, 2015
    • Corey Farrell's avatar
      Astobj2: Allow reference debugging to be enabled/disabled by config. · 5c1d07ba
      Corey Farrell authored
      * The REF_DEBUG compiler flag no longer has any effect on code that uses
        Astobj2.  It is used to determine if reference debugging is enabled by
        default.  Reference debugging can be enabled or disabled in asterisk.conf.
      * Caller information is provided in logger errors for ao2 bad magic numbers.
      * Optimizes AO2 by merging internal functions with the public counterpart.
        This was possible now that we no longer require a dual ABI.
      
      ASTERISK-24974 #close
      Reported by: Corey Farrell
      
      Change-Id: Icf3552721fe999365ba8a8cf00a965aa6b897cc1
      5c1d07ba
  31. Apr 21, 2015
    • Gareth Palmer's avatar
      New AMI Command Output Format · 2f418c05
      Gareth Palmer authored
      This change modifies how the the output from a CLI command is sent
      to a client over AMI.
      
      Output from the CLI command is now sent as a series of zero-or-more
      Output: headers.
      
      Additionally, commands that fail to execute (eg: no such command,
      invalid syntax etc.) now cause an Error response instead of Success.
      
      If the command executed successfully, but the manager unable to
      provide the output the reason will be included in the Message:
      header. Otherwise it will contain 'Command output follows'.
      
      Depends on a new version of starpy (> 1.0.2) that supports the new
      output format.
      
      See pull-request https://github.com/asterisk/starpy/pull/34
      
      ASTERISK-24730
      
      Change-Id: I6718d95490f0a6b3f171c1a5cdad9207f9a44888
      2f418c05
  32. 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
  33. Mar 13, 2015
  34. Mar 06, 2015
    • Richard Mudgett's avatar
      chan_dahdi/sig_analog: Fix distinctive ring detection to suck less. · c7cc1b30
      Richard Mudgett authored
      The distinctive ring feature interferes with detecting Caller ID and
      appears to have been broken for years.  What happens is if you have a
      ring-ring cadence as used in the UK you get too many DAHDI events for the
      distinctive ring pattern array and Caller ID detection is aborted.  I
      think when Zapata/DAHDI added the ring begin event it broke distinctive
      ring.  More events happen than before and the code does no filtering of
      which event times are recorded in the pattern array.
      
      * Made distinctive ring only record the ringt count when the ring ends
      instead of on just any DAHDI event.  Distinctive ring can be ring,
      ring-ring, ring-ring-ring, or different ring durations for the up to three
      rings.
      
      * Fixed the distinctive ring detection enable (chan_dahdi.conf option
      usedistinctiveringdetection) to be per port instead of somewhat per port
      and somewhat global.  This has been broken since v1.8.
      
      * Fixed using the default distinctive ring context when the detected
      pattern does not match any configured dringX patterns.  The default
      context did not get set when the previous call was a matched distinctive
      ring pattern and the current call is not matched.  This has been broken
      since v1.8.
      
      * Made distinctive ring have no effect on Caller ID detection when it is
      disabled.  Caller ID detection just monitors for 10 seconds before giving
      up.
      
      * Fixed leak of struct callerid_state memory when a polarity reversal
      during Caller ID detection causes the incoming call to be aborted.
      
      DAHDI-1143
      AST-1545
      ASTERISK-24825 #close
      Reported by: Richard Mudgett
      
      ASTERISK-17588
      Reported by: Daniel Flounders
      
      Review: https://reviewboard.asterisk.org/r/4444/
      ........
      
      Merged revisions 432530 from http://svn.asterisk.org/svn/asterisk/branches/11
      ........
      
      Merged revisions 432534 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432551 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      c7cc1b30
  35. Aug 08, 2014
  36. 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
  37. Jul 20, 2014
Loading