Skip to content
Snippets Groups Projects
  1. Jan 08, 2020
    • Kevin Harwell's avatar
      app_agent_pool: Update XML docs for AgentLogin · 00a74321
      Kevin Harwell authored
      This patch fixes some wrongly formatted documentation for the AgentLogin
      application. A couple of "see also" links should contain only the function
      name, and no parameters.
      
      Change-Id: I3f788b47dce3292e311f8a9856938d59a0bd0661
      00a74321
  2. Aug 01, 2019
    • Kevin Harwell's avatar
      various modules: json integer overflow · 3656c42c
      Kevin Harwell authored
      There were still a few places in the code that could overflow when "packing"
      a json object with a value outside the base type integer's range. For instance:
      
      unsigned int value = INT_MAX + 1
      ast_json_pack("{s: i}", value);
      
      would result in a negative number being "packed". In those situations this patch
      alters those values to a ast_json_int_t, which widens the value up to a long or
      long long.
      
      ASTERISK-28480
      
      Change-Id: Ied530780d83e6f1772adba0e28d8938ef30c49a1
      3656c42c
  3. Nov 26, 2018
    • 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
  4. Apr 04, 2018
  5. Dec 15, 2017
    • Corey Farrell's avatar
      aco: Minimize use of regex. · bf2d3593
      Corey Farrell authored
      Remove nearly all use of regex from ACO users.  Still remaining:
      * app_confbridge has a legitamate use of option name regex.
      * ast_sorcery_object_fields_register is implemented with regex, all
        callers use simple prefix based regex.  I haven't decided the best
        way to fix this in both 13/15 and master.
      
      Change-Id: Ib5ed478218d8a661ace4d2eaaea98b59a897974b
      bf2d3593
  6. Oct 29, 2017
  7. Oct 23, 2017
  8. Apr 12, 2017
    • George Joseph's avatar
      modules: change module LOAD_FAILUREs to LOAD_DECLINES · 747beb1e
      George Joseph authored
      In all non-pbx modules, AST_MODULE_LOAD_FAILURE has been changed
      to AST_MODULE_LOAD_DECLINE.  This prevents asterisk from exiting
      if a module can't be loaded.  If the user wishes to retain the
      FAILURE behavior for a specific module, they can use the "require"
      or "preload-require" keyword in modules.conf.
      
      A new API was added to logger: ast_is_logger_initialized().  This
      allows asterisk.c/check_init() to print to the error log once the
      logger subsystem is ready instead of just to stdout.  If something
      does fail before the logger is initialized, we now print to stderr
      instead of stdout.
      
      Change-Id: I5f4b50623d9b5a6cb7c5624a8c5c1274c13b2b25
      747beb1e
  9. Oct 27, 2016
    • Corey Farrell's avatar
      Remove ASTERISK_REGISTER_FILE. · a6e5bae3
      Corey Farrell authored
      ASTERISK_REGISTER_FILE no longer has any purpose so this commit removes
      all traces of it.
      
      Previously exported symbols removed:
      * __ast_register_file
      * __ast_unregister_file
      * ast_complete_source_filename
      
      This also removes the mtx_prof static variable that was declared when
      MTX_PROFILE was enabled.  This variable was only used in lock.c so it
      is now initialized in that file only.
      
      ASTERISK-26480 #close
      
      Change-Id: I1074af07d71f9e159c48ef36631aa432c86f9966
      a6e5bae3
  10. 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
  11. Jan 30, 2015
    • Richard Mudgett's avatar
      app_agent_pool: Fix initial module load agent device state reporting. · 23bb5f6a
      Richard Mudgett authored
      When the app_agent_pool module initially loads there is a race condition
      between the thread loading agents.conf and the device state internal
      processing thread.  If the device state internal processing thread handles
      the agent creation state updates before the thread that loaded agents.conf
      registers the device state provider callback then the cached agent state
      is "Invalid".  When a consumer module like app_queue asks for the agent state
      it gets the cached "Invalid" state instead of the real state from the provider.
      
      * Moved loading the agents.conf configuration to the last thing setup by
      app_agent_pool in load_module().  Now the device state provider callback
      is registered before the config is loaded so the agent creation state
      updates are guaranteed to get the initial device state.
      
      * Removed some now redundant config cleanup on error in load_config().
      
      * Added lock protection when accessing the device state in
      agent_pvt_devstate_get() and eliminated the RAII_VAR() usage.
      
      ASTERISK-24737 #close
      Reported by: Steve Pitts
      
      Review: https://reviewboard.asterisk.org/r/4390/
      ........
      
      Merged revisions 431492 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@431493 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      23bb5f6a
  12. Jan 12, 2015
  13. Jan 09, 2015
    • Richard Mudgett's avatar
      AMI: Remove no longer used parameter from astman_send_listack(). · ef34a05f
      Richard Mudgett authored
      Follow-up issue to -r430435 from reviewboard review.
      
      ASTERISK-24049
      Review: https://reviewboard.asterisk.org/r/4315/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430452 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      ef34a05f
    • Richard Mudgett's avatar
      AMI: Make AMI actions that generate event lists consistent. · 52a7cdb1
      Richard Mudgett authored
      * Made the following AMI actions use list API calls for consistency:
      Agents
      BridgeInfo
      BridgeList
      BridgeTechnologyList
      ConfbridgeLIst
      ConfbridgeLIstRooms
      CoreShowChannels
      DAHDIShowChannels
      DBGet
      DeviceStateList
      ExtensionStateList
      FAXSessions
      Hangup
      IAXpeerlist
      IAXpeers
      IAXregistry
      MeetmeList
      MeetmeListRooms
      MWIGet
      ParkedCalls
      Parkinglots
      PJSIPShowEndpoint
      PJSIPShowEndpoints
      PJSIPShowRegistrationsInbound
      PJSIPShowRegistrationsOutbound
      PJSIPShowResourceLists
      PJSIPShowSubscriptionsInbound
      PJSIPShowSubscriptionsOutbound
      PresenceStateList
      PRIShowSpans
      QueueStatus
      QueueSummary
      ShowDialPlan
      SIPpeers
      SIPpeerstatus
      SIPshowregistry
      SKINNYdevices
      SKINNYlines
      Status
      VoicemailUsersList
      
      * Incremented the AMI version to 2.7.0.
      
      * Changed astman_send_listack() to not use the listflag parameter and
      always set the value to "Start" so the start capitalization is consistent.
      i.e., The FAXSessions used "Start" while the rest of the system used
      "start".  The corresponding complete event always used "Complete".
      
      * Fixed ami_show_resource_lists() "PJSIPShowResourceLists" to output the
      AMI ActionID for all of its list events.
      
      * Fixed off-nominal AMI protocol error in manager_bridge_info(),
      manager_parking_status_single_lot(), and
      manager_parking_status_all_lots().  Use of astman_send_error() after
      responding to the original AMI action request violates the action response
      pattern by sending two responses.
      
      * Fixed minor protocol error in action_getconfig() when no requested
      categories are found.  Each line needs to be formatted as "Header: text".
      
      * Fixed off-nominal memory leak in manager_build_parked_call_string().
      
      * Eliminated unnecessary use of RAII_VAR() in ami_subscription_detail().
      
      ASTERISK-24049 #close
      Reported by: Jonathan Rose
      
      Review: https://reviewboard.asterisk.org/r/4315/
      ........
      
      Merged revisions 430434 from http://svn.asterisk.org/svn/asterisk/branches/13
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430435 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      52a7cdb1
  14. Nov 06, 2014
  15. Jul 25, 2014
  16. Jul 20, 2014
  17. 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
  18. May 28, 2014
  19. 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
  20. 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
  21. Dec 17, 2013
  22. Dec 05, 2013
  23. Dec 03, 2013
  24. Oct 08, 2013
  25. Sep 13, 2013
    • Richard Mudgett's avatar
      Restore Dial, Queue, and FollowMe 'I' option support. · 2a371cd8
      Richard Mudgett authored
      The Dial, Queue, and FollowMe applications need to inhibit the bridging
      initial connected line exchange in order to support the 'I' option.
      
      * Replaced the pass_reference flag on ast_bridge_join() with a flags
      parameter to pass other flags defined by enum ast_bridge_join_flags.
      
      * Replaced the independent flag on ast_bridge_impart() with a flags
      parameter to pass other flags defined by enum ast_bridge_impart_flags.
      
      * Since the Dial, Queue, and FollowMe applications are now the only
      callers of ast_bridge_call() and ast_bridge_call_with_flags(), changed the
      calling contract to require the initial COLP exchange to already have been
      done by the caller.
      
      * Made all callers of ast_bridge_impart() check the return value.  It is
      important.  As a precaution, I also made the compiler complain now if it
      is not checked.
      
      * Did some cleanup in parking_tests.c as a result of checking the
      ast_bridge_impart() return value.
      
      An independent, but associated change is:
      * Reduce stack usage in ast_indicate_data() and add a dropping redundant
      connected line verbose message.
      
      (closes issue ASTERISK-22072)
      Reported by: Joshua Colp
      
      Review: https://reviewboard.asterisk.org/r/2845/
      ........
      
      Merged revisions 399136 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@399138 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      2a371cd8
  26. Sep 06, 2013
  27. Aug 22, 2013
  28. Aug 21, 2013
    • Richard Mudgett's avatar
      Fix several interrelated issues dealing with the holding bridge technology. · d213dfa3
      Richard Mudgett authored
      * Added an option flags parameter to interval hooks.  Interval hooks now
      can specify if the callback will affect the media path or not.
      
      * Added an option flags parameter to the bridge action custom callback.
      The action callback now can specify if the callback will affect the media
      path or not.
      
      * Made the holding bridge technology reexamine the participant idle mode
      option whenever the entertainment is restarted.
      
      * Fixed app_agent_pool waiting agents needlessly starting and stopping MOH
      every second by specifying the heartbeat interval hook as not affecting
      the media path.
      
      * Fixed app_agent_pool agent alert from restarting the MOH after the alert
      beep.  The agent entertainment is now changed from MOH to silence after
      the alert beep.
      
      * Fixed holding bridge technology to defer starting the entertainment.  It
      was previously a mixture of immediate and deferred.
      
      * Fixed holding bridge technology to immediately stop the entertainment.
      It was previously a mixture of immediate and deferred.  If the channel
      left the bridging system, any deferred stopping was discarded before
      taking effect.
      
      * Miscellaneous holding bridge technology rework coding improvements.
      
      Review: https://reviewboard.asterisk.org/r/2761/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397294 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      d213dfa3
  29. Aug 01, 2013
  30. Jul 26, 2013
    • Richard Mudgett's avatar
      Remove the unsafe bridge parameter from ast_bridge_hook_callback's. · c017d5e6
      Richard Mudgett authored
      Most hook callbacks did not need the bridge parameter.  The pointer value
      could become invalid if the channel is moved to another bridge while it is
      executing.
      
      * Fixed some issues in feature_attended_transfer() as a result.
      
      * Reduce the bridge inhibit count in
      attended_transfer_properties_shutdown() after it has restored the bridge
      channel hooks.
      
      * Removed basic bridge requirement on feature_blind_transfer().  It does
      not require the basic bridge like feature_attended_transfer().
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395574 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      c017d5e6
  31. Jul 25, 2013
  32. Jul 24, 2013
  33. Jul 15, 2013
    • Richard Mudgett's avatar
      Replace chan_agent with app_agent_pool. · d43b17a8
      Richard Mudgett authored
      The ill conceived chan_agent is no more.  It is now replaced by
      app_agent_pool.
      
      Agents login using the AgentLogin() application as before.  The
      AgentLogin() application no longer does any authentication.
      Authentication is now the responsibility of the dialplan.  (Besides, the
      authentication done by chan_agent did not match what the voice prompts
      asked for.)
      
      Sample extensions.conf
      [login]
      ; Sample agent 1001 login
      ; Set COLP for in between calls so the agent does not see the last caller COLP.
      exten => 1001,1,Set(CONNECTEDLINE(all)="Agent Waiting" <1001>)
      ; Give the agent DTMF transfer and disconnect features when connected to a caller.
      same => n,Set(CHANNEL(dtmf-features)=TX)
      same => n,AgentLogin(1001)
      same => n,NoOp(AGENT_STATUS is ${AGENT_STATUS})
      same => n,Hangup()
      
      [caller]
      ; Sample caller direct connect to agent 1001
      exten => 800,1,AgentRequest(1001)
      same => n,NoOp(AGENT_STATUS is ${AGENT_STATUS})
      same => n,Hangup()
      
      ; Sample caller going through a Queue to agent 1001
      exten => 900,1,Queue(agent_q)
      same => n,Hangup()
      
      Sample queues.conf
      [agent_q]
      member => Local/800@caller,,SuperAgent,Agent:1001
      
      Under the hood operation overview:
      1) Logged in agents wait for callers in an agents holding bridge.
      2) Caller requests an agent using AgentRequest()
      3) A basic bridge is created, the agent is notified, and caller joins the
         basic bridge to wait for the agent.
      4) The agent is either automatically connected to the caller or must ack
         the call to connect.
      5) The agent is moved from the agents holding bridge to the basic bridge.
      6) The agent and caller talk.
      7) The connection is ended by either party.
      8) The agent goes back to the agents holding bridge.
      
      To avoid some locking issues with the agent holding bridge, I needed to
      make some changes to the after bridge callback support.  The after bridge
      callback is now a list of requested callbacks with the last to be added
      the only active callback.  The after bridge callback for failed callbacks
      will always happen in the channel thread when the channel leaves the
      bridging system or is destroyed.
      
      (closes issue ASTERISK-21554)
      Reported by: Matt Jordan
      
      Review: https://reviewboard.asterisk.org/r/2657/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@394417 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      d43b17a8
  34. Jul 03, 2013
Loading