Skip to content
Snippets Groups Projects
  1. Jun 27, 2014
  2. Jun 26, 2014
  3. Jun 25, 2014
  4. Jun 23, 2014
  5. Jun 20, 2014
  6. Jun 19, 2014
  7. Jun 17, 2014
  8. Jun 16, 2014
  9. Jun 15, 2014
  10. Jun 14, 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
    • Kinsey Moore's avatar
      MoH: Don't restart stream on repeated start calls · 0acc6265
      Kinsey Moore authored
      Currently, music on hold will stop and then start again from the
      beginning if ast_moh_start() is called multiple times. This can happen
      if a call is put on hold repeatedly (the channel receives multiple
      HOLD control frames) and can be triggered from ARI by starting MoH on a
      channel multiple times. This is fairly jarring/annoying to users.
      
      This change prevents MoH from being restarted if the requested music
      class is the same as the one currently playing.
      
      Review: https://reviewboard.asterisk.org/r/3615/
      ........
      
      Merged revisions 416150 from http://svn.asterisk.org/svn/asterisk/branches/1.8
      ........
      
      Merged revisions 416151 from http://svn.asterisk.org/svn/asterisk/branches/11
      ........
      
      Merged revisions 416152 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@416153 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      0acc6265
  12. Jun 12, 2014
  13. Jun 10, 2014
  14. Jun 09, 2014
  15. Jun 06, 2014
    • Kinsey Moore's avatar
      PJSIP: Remove premature write of raw formats · 5510e3c6
      Kinsey Moore authored
      Currently, there are situations that can occur when using chan_pjsip
      and certain dialplan applications (notably ChanSpy()) that can cause
      the channel to get no audio with scrolling warnings about format
      mismatches. This is caused by a failure to update translation paths on
      a mid-call native format update since the raw formats have already
      been updated by res_pjsip_sdp_rtp.c in set_caps(). Removing the
      premature raw format updates allows the translation paths to be setup
      correctly and the raw read and write formats with them.
      
      AFS-63 #close
      ........
      
      Merged revisions 415342 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@415343 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      5510e3c6
  16. Jun 05, 2014
    • Kevin Harwell's avatar
      res_http_websocket: Create a websocket client · e763d704
      Kevin Harwell authored
      Added a websocket server client in Asterisk. Asterisk has a websocket server,
      but not a client. The ability to have Asterisk be able to connect to a websocket
      server can potentially be useful for future work (for instance this could allow
      ARI to connect back to some external system, although more work would be needed
      in order to incorporate that).
      
      Also a couple of things to note - proxy connection support has not been
      implemented and there is limited http response code handling (basically, it is
      connect or not).
      
      Also added an initial new URI handling mechanism to core.  Internet type URI's
      are parsed into a data structure that contains pointers to the various parts of
      the URI.
      
      (closes issue ASTERISK-23742)
      Reported by: Kevin Harwell
      Review: https://reviewboard.asterisk.org/r/3541/
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@415223 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      e763d704
  17. Jun 04, 2014
  18. May 30, 2014
  19. May 28, 2014
  20. May 27, 2014
  21. May 22, 2014
    • Scott Griepentrog's avatar
      ARI: Add ability to raise arbitrary User Events · cf21644d
      Scott Griepentrog authored
      User events can now be generated from ARI.  Events can be signalled with
      arbitrary json variables, and include one or more of channel, bridge, or
      endpoint snapshots.  An application must be specified which will receive
      the event message (other applications can subscribe to it).  The message
      will also be delivered via AMI provided a channel is attached.  Dialplan
      generated user event messages are still transmitted via the channel, and
      will only be received by a stasis application they are attached to or if
      the channel is subscribed to.
      
      This change also introduces the multi object blob mechanism used to send
      multiple snapshot types in a single message.  The dialplan app UserEvent
      was also changed to use multi object blob, and a new stasis message type
      created to handle them.
      
      ASTERISK-22697 #close
      Review: https://reviewboard.asterisk.org/r/3494/
      ........
      
      Merged revisions 414405 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414406 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      cf21644d
    • Jonathan Rose's avatar
      res_pjsip_refer: Fix bugs involving Parking/PJSIP/transfers · d0088210
      Jonathan Rose authored
      PJSIP would never send the final 200 Notify for a blind transfer
      when transferring to parking. This patch fixes that. In addition,
      it fixes a reference leak when performing blind transfers to
      non-bridging extensions.
      
      Review: https://reviewboard.asterisk.org/r/3485/
      ........
      
      Merged revisions 414400 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414403 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      d0088210
    • Matthew Jordan's avatar
      res_corosync: Update module to work with Stasis (and compile) · 9cee08f5
      Matthew Jordan authored
      This patch fixes res_corosync such that it works with Asterisk 12. This
      restores the functionality that was present in previous versions of
      Asterisk, and ensures compatibility with those versions by restoring the
      binary message format needed to pass information from/to them.
      
      The following changes were made in the core to support this:
       * The event system has been partially restored. All event definition and
         event types in this patch were pulled from Asterisk 11. Previously, we had
         hoped that this information would live in res_corosync; however, the
         approach in this patch seems to be better for a few reasons:
         (1) Theoretically, ast_events can be used by any module as a binary
             representation of a Stasis message. Given the structure of an ast_event
             object, that information has to live in the core to be used universally.
             For example, defining the payload of a device state ast_event in
             res_corosync could result in an incompatible device state representation
             in another module.
         (2) Much of this representation already lived in the core, and was not
             easily extensible.
         (3) The code already existed. :-)
       * Stasis message types now have a message formatter that converts their
         payload to an ast_event object.
       * Stasis message forwarders now handle forwarding to themselves. Previously
         this would result in an infinite recursive call. Now, this simply creates a
         new forwarding object with no forwards set up (as it is the thing it is
         forwarding to). This is advantageous for res_corosync, as returning NULL
         would also imply an unrecoverable error. Returning a subscription in this
         case allows for easier handling of message types that are published directly
         to an aggregate topic that has forwarders.
      
      Review: https://reviewboard.asterisk.org/r/3486/
      
      ASTERISK-22912 #close
      ASTERISK-22372 #close
      ........
      
      Merged revisions 414330 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414331 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      9cee08f5
  22. May 19, 2014
  23. May 18, 2014
    • Matthew Jordan's avatar
      bridge_native_rtp/bridge_channel: Fix direct media issues due to frame hook · 17ff4d92
      Matthew Jordan authored
      This patch fixes issues with direct media bridges that occur after a blind
      transfer. These issues were caught by the (currently failing)
      pjsip/transfers/blind_transfer/caller_direct_media test.
      
      The test currently fails primarily for two reasons:
      (1) When Bob and Charlie (the transfer target and the transfer destination)
          enter a bridge together, the framehook remains on the transfer target
          channel until both channels are in the bridge. As it consumes voice frames,
          the initial bridge type is a simple bridge. The framehook is removed when
          both channels are in the bridge; however, this does not currently cause the
          bridging framework to re-evaluate the bridge. This patch adds a
          AST_SOFTHANGUP_UNBRIDGE poke to the transfer target channel when a
          framehook is removed so the bridge can re-evaluate itself.
      
      (2) When a channel leaves a native RTP bridge, it may be leaving due to being
          hung up. Sending a re-INVITE to a channel that is about to be hung up is
          not nice - in fact, there's a good chance we'll send the BYE request before
          the channel has had a chance to send back a 200 OK. To be somewhat nicer,
          this patch adds a function to channel.h that allows the bridging framework
          to query for exactly why a channel is leaving a bridge via the channel's
          soft hangup flags. This allows it to only send the re-INVITE if there's a
          chance the channel will survive the native bridging experience.
      
      Review: https://reviewboard.asterisk.org/r/3535/
      ........
      
      Merged revisions 414122 from http://svn.asterisk.org/svn/asterisk/branches/12
      
      
      git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@414123 65c4cc65-6c06-0410-ace0-fbb531ad65f3
      17ff4d92
  24. May 14, 2014
  25. May 13, 2014
Loading