Skip to content
Snippets Groups Projects
  1. Jul 17, 2015
  2. Jul 16, 2015
  3. Jul 15, 2015
  4. Jul 14, 2015
    • Richard Mudgett's avatar
      res_pjsip_session.c: Fix crash on call disconnect. · 1b666549
      Richard Mudgett authored
      The crash fix for ASTERISK-25183 backported some code from master to try
      to make sure that a BYE response is processed by the same serializer used
      by the BYE request.  The identified race condition causing that backport
      was the BYE request code had not finished processing after sending the BYE
      before the BYE response came in for processing under a different thread.
      Unfortunately, there is still a race condition.  Now the race condition is
      between destroying the call session's serializer in
      ast_taskprocessor_unreference() and using ast_taskprocessor_get() to get a
      reference to the serializer for a BYE response.  Even worse, the new race
      condition is a design limitation of the taskprocessor implementation that
      didn't matter in versions before v12.  Back then, taskprocessors were only
      destroyed when a module unloaded.  Now res_pjsip can destroy them when a
      call ends.
      
      However, as noted on the ASTERISK-25183 commit,
      session_inv_on_state_changed() is disassociating the dialog from the
      session when the invite dialog state becomes PJSIP_INV_STATE_DISCONNECTED.
      This is a tad too soon because our BYE request transaction has not
      completed yet.
      
      * Split session_end() that is called by session_inv_on_state_changed() to
      hold off session destruction until the BYE transaction timeout occurs or a
      failed initial INVITE transaction timeout occurs in
      session_inv_on_tsx_state_changed().
      
      ASTERISK-25201 #close
      Reported by: Matt Jordan
      
      Change-Id: Iaf8dc8485fd8392a2a3ee4ad3b7f7f04a0dcc961
      1b666549
    • Benjamin Ford's avatar
      ARI: Added new functionality to reload a single module. · 9d458b83
      Benjamin Ford authored
      An http request can be sent to reload an Asterisk module. If the
      module can not be reloaded or is not already loaded, an error
      response will be returned.
      
      The command "curl -v -u user:pass -X PUT 'http://localhost:8088
      /ari/asterisk/modules/{moduleName}'" (or something similar, based
      on configuration) can be run in the terminal to access this new
      functionality.
      
      For more information, see:
      https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
      
      * Added new ARI functionality
      * Asterisk modules can be reloaded through http requests
      
      ASTERISK-25173
      
      Change-Id: I289188bcae182b2083bdbd9ebfffd50b62f58ae1
      9d458b83
    • Mark Michelson's avatar
    • Matt Jordan's avatar
    • Benjamin Ford's avatar
      ARI: Added new functionality to unload a single module. · f64f1c27
      Benjamin Ford authored
      An http request can be sent to unload an Asterisk module. If the
      module can not be unloaded or is already unloaded, an error response
      will be returned.
      
      The command "curl -v -u user:pass -X DELETE 'http://localhost:8088
      /ari/asterisk/modules/{moduleName}'" (or something similar, depending
      on configuration) can be run in the terminal to access this new
      functionality.
      
      For more information, see:
      https://wiki.asterisk.org/wiki.display/~bford/Asterisk+ARI+Resource
      
      * Added new ARI functionality
      * Asterisk modules can be unloaded through http requests
      
      ASTERISK-25173
      
      Change-Id: I535a95f5676deb02651522761ecbdc0b00b5ac57
      f64f1c27
  5. Jul 13, 2015
  6. Jul 12, 2015
    • Matt Jordan's avatar
      main/sorcery: Don't fail object set creation from JSON if field fails · 458715d0
      Matt Jordan authored
      Some individual fields may fail their conversion due to their default
      values being invalid for their custom handlers. In particular,
      configuration values that depend on others being enabled (and thus have
      an empty default value) are notorious for tripping this routine up. An
      example of this are any of the DTLS options for endpoints. Any of the
      DTLS options will fail to be applied (as DTLS is not enabled), causing
      the entire object set to be aborted.
      
      This patch makes it so that we log a debug message when skipping a
      field, and rumble on anyway.
      
      ASTERISK-25238
      
      Change-Id: I0bea13de79f66bf9f9ae6ece0e94a2dc1c026a76
      458715d0
  7. Jul 11, 2015
  8. Jul 10, 2015
  9. Jul 09, 2015
    • Joshua Colp's avatar
      bridge_native_rtp.c: Don't start native RTP bridging after attended transfer. · 4a25d554
      Joshua Colp authored
      The bridge_native_rtp module adds a frame hook to channels which are in
      a native RTP bridge. This frame hook is used to intercept when a hold
      or unhold frame traverses the bridge so native RTP can be stopped or
      started as appropriate. This is expected but exposes a specific bug
      when attended transfers are involved.
      
      Upon completion of an attended transfer an unhold frame is queued up
      to take one of the channels involved off hold. After this is done
      the channel is moved between bridges.
      
      When the frame hook is involved in this case for the unhold it
      releases the channel lock and acquires the bridge lock. This
      allows the bridge core to step in and move the channel
      (potentially changing the bridging techology) from another thread.
      Once completed the bridge lock is released by the bridge core.
      The frame hook is then able to acquire the bridge lock and
      wrongfully starts native RTP again, despite the channel no longer
      being in the bridge or needing to start native RTP. In fact at
      this point the frame hook is no longer attached to the channel.
      
      This change makes it so the native RTP bridge data is available to
      the frame hook when it is invoked. Whether the frame hook has
      been detached or not is stored on the native RTP bridge data and
      is checked by the frame hook before starting or stopping native
      RTP bridging. If the frame hook has been detached it does nothing.
      
      ASTERISK-25240 #close
      
      Change-Id: I13a73186a05f4e5a764f81e5cd0ccec1ed1891d2
      4a25d554
Loading