Skip to content
Snippets Groups Projects
  1. Dec 24, 2015
  2. Dec 23, 2015
  3. 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
  4. Dec 21, 2015
    • Dade Brandon's avatar
      res_rtp_asterisk: Resolve further timing issues with DTLS negotiation · 648ca2b1
      Dade Brandon authored
      Resolves an edge case dtls negotiation delay for certain networks which
      somehow manage to drop the rtcp side's packet when these are both sent
      ast_rtp_remote_address_set, causing it to have to time-out and restart
      the handshake.
      
      Move dtls pending bio flush in to it's own function, and call it from
      ast_rtp_on_ice_complete, when we're rtp->ice, rather than when
      ast_rtp_remote_address_set.
      
      Keep the existing flush from the recent change to res_rtp_remote_address_set
      if ice is not being used.
      
      ASTERISK-25614 #close
      Reported-by: XenCALL
      Tested by: XenCALL
      
      Change-Id: Ie2caedbdee1783159f375589b6fd3845c8577ba5
      648ca2b1
  5. Dec 19, 2015
  6. Dec 18, 2015
  7. Dec 17, 2015
  8. Dec 16, 2015
    • Joshua Colp's avatar
      json: Audit ast_json_* usage for thread safety. · d17d9a92
      Joshua Colp authored
      The JSON library Asterisk uses, jansson, is not thread
      safe for us in a few ways. To help with this wrappers for JSON
      object reference count increasing and decreasing were added
      which use a global lock to ensure they don't clobber over
      each other. This does not extend to reference count manipulation
      within the jansson library itself. This means you can't safely
      use the object borrowing specifier (O) in ast_json_pack and
      you can't share JSON instances between objects.
      
      This change removes uses of the O specifier and replaces them
      with the o specifier and an explicit ast_json_ref. Some cases
      of instance sharing have also been removed.
      
      ASTERISK-25601 #close
      
      Change-Id: I06550d8b0cc1bfeb56cab580a4e608ae4f1ec7d1
      d17d9a92
    • Matt Jordan's avatar
      093f14d7
  9. Dec 15, 2015
    • server-pandora's avatar
      res_rtp_asterisk.c: Fix DTLS negotiation delays. · 32ec83f3
      server-pandora authored
      - Trigger pending DTLS packets to send out, once the RTP instance's remote
        address is set.
      - Avoids locking the DTLS structure unnecessarily by only doing this if
        DTLS is passive.
      - Add DTLS locks around the structurally sensitive calls in the SSL
        portion of __rtp_recvfrom, since dtls_srtp_check_pending does not lock
        inside of itself, and we're dealing with the SSL BIO in at least two
        threads.
      
      WebRTC channels may receive a DTLS handshake before
      ast_rtp_remote_address_set is called, which causes there to be a pending
      response to send out.   Previous to 1ad827, this was handled by calling
      dtls_srtp_check_pending on receipt of any RTP packet - a STUN or RTP
      packet could trigger the pending handshake response.  Since that was
      rightfully removed, whenever the DTLS handshake is received before the
      remote address is set, we would have to wait until another SSL packet
      arrives.
      
      As of Chrome M47's optimizations to their handshake process, WebRTC
      conversations between Chrome M47+ and Asterisk, where Asterisk is passive,
      experience a 1 second delay without this patch, because the SSL handshake
      is received before ICE negotation stores the remote_address, and the next
      SSL packet isn't received until after a 1 second timeout in Chrome, which
      causes a new handshake request.
      
      ASTERISK-25614 #close
      
      Change-Id: I547f1be7e302dbf71f6553dd8cbc0657b1d0b908
      32ec83f3
    • pchero's avatar
      AMI: Fixed OriginateResponse message · 52ca6fb9
      pchero authored
      When the asterisk sending OriginateResponse message,
      it doesn't set the "Uniqueid".
      And it didn't support correct response message for
      Application originate.
      
      ASTERISK-25624 #close
      
      Change-Id: I26f54f677ccfb0b7cfd4967a844a1657fd69b74d
      52ca6fb9
  10. Dec 14, 2015
  11. Dec 13, 2015
    • Matt Jordan's avatar
      main/utils: Don't emit an ERROR message if the read end of a pipe closes · 9a96a86e
      Matt Jordan authored
      An ERROR or WARNING message should generally indicate that something has gone
      wrong in Asterisk. In the case of writing to a file descriptor, Asterisk is not
      in control of when the far end closes its reading on a file descriptor. If the
      far end does close the file descriptor in an unclean fashion, this isn't a bug
      or error in Asterisk, particularly when the situation can be gracefully
      handled in Asterisk.
      
      Currently, when this happens, a user would see the following somewhat cryptic
      ERROR message:
      
        "utils.c: write() returned error: Broken pipe"
      
      There's a few problems with this:
      (1) It doesn't provide any context, other than 'something broke a pipe'
      (2) As noted, it isn't actually an error in Asterisk
      (3) It can get rather spammy if the thing breaking the pipe occurs often, such
          as a FastAGI server
      (4) Spammy ERROR messages make Asterisk appear to be having issues, or can even
          mask legitimate issues
      
      This patch changes ast_carefulwrite to only log an ERROR if we actually had one
      that was reasonably under our control. For debugging purposes, we still emit
      a debug message if we detect that the far side has stopped reading.
      
      Change-Id: Ia503bb1efcec685fa6f3017bedf98061f8e1b566
      9a96a86e
  12. Dec 12, 2015
    • George Joseph's avatar
      pjsip/config_transport: Check pjproject version at runtime for async ops · 3e6637fe
      George Joseph authored
      pjproject < 2.5.0 will segfault on a tls transport if async_operations
      is greater than 1.  A runtime version check has been added to throw
      an error if the version is < 2.5.0 and async_operations > 1.
      
      To assist in the check, a new api "ast_compare_versions" was added
      to utils which compares 2 major.minor.patch.extra version strings.
      
      ASTERISK-25615 #close
      
      Change-Id: I8e88bb49cbcfbca88d9de705496d6f6a8c938a98
      Reported-by: George Joseph
      Tested-by: George Joseph
      3e6637fe
  13. Dec 10, 2015
  14. Dec 09, 2015
    • Corey Farrell's avatar
      app_meetme: Set default value for audio_buffers. · fcaebb0e
      Corey Farrell authored
      The default value was never set for audio_buffers, causing bad
      audio quality.  This ensures the default is always set.
      
      ASTERISK-25569 #close
      
      Change-Id: I2d2ee3e644120b0f9f6ea6ab9286d7d590942a44
      fcaebb0e
    • tcambron's avatar
      res_chan_stats: Fix bug to send correct statistics to StatsD · 57907004
      tcambron authored
      Fixed a bug that originally would show a negative number of
      active calls occuring in Asterisk. A gauge is persistent so
      incrementing and decrementing it results in a more consistent
      performance. Also changed to the call to StatsD to use
      ast_statsd_log_string() so that a "+" could be sent to StatsD.
      
      ASTERISK-25619 #close
      
      Change-Id: Iaaeff5c4c6a46535366b4d16ea0ed0ee75ab2ee7
      57907004
    • Matt Jordan's avatar
    • George Joseph's avatar
      res_pjsip: Add existence and readablity checks for tls related files · a9874345
      George Joseph authored
      Both transport and endpoint now check for the existence and readability
      of tls certificate and key files before passing them on to pjproject.
      This will cause the object to not load rather than waiting for pjproject
      to discover that there's a problem when a session is attempted.
      
      NOTE: chan_sip also uses ast_rtp_dtls_cfg_parse but it's located
      in build_peer which is gigantic and I didn't want to disturb it.
      Error messages will emit but it won't interrupt chan_sip loading.
      
      ASTERISK-25618 #close
      
      Change-Id: Ie43f2c1d653ac1fda6a6f6faecb7c2ebadaf47c9
      Reported-by: George Joseph
      Tested-by: George Joseph
      a9874345
  15. Dec 08, 2015
  16. Dec 07, 2015
  17. Dec 06, 2015
    • Matt Jordan's avatar
      Revert "bridges/bridge_t38: Add a bridging module for managing T.38 state" · 75c800eb
      Matt Jordan authored
      This reverts commit f42d22d3.
      
      Unfortunately, using a bridge to manage T.38 state will cause severe deadlocks
      in core_unreal/chan_local. Local channels attempt to reach across both their
      peer and the peer's bridge to inspect T.38 state. Given the propensity of
      Local channel chains, managing the locking situation in such a scenario is
      practically infeasible.
      
      Change-Id: I932107387c13aad2c75a7a4c1e94197a9d6d8a51
      75c800eb
  18. Dec 04, 2015
    • George Joseph's avatar
      res_pjsip/contacts/statsd: Make contact lifecycle events more consistent · 4be231e8
      George Joseph authored
      It will never be perfect or even pretty, mostly because of the differences
      between static and dynamic contacts.
      
      Created:
      
      Can't use the contact or contact_status alloc functions
      because the objects come and go regardless of the actual state.
      
      Can't use the contact_apply_handler, ast_sip_location_add_contact or
      a sorcery created handler because they only get called for dynamic
      contacts.  Similarly, permanent_uri_handler only gets called for
      static contacts.
      
      So, Matt had it right. :)  ast_res_pjsip_find_or_create_contact_status is
      the only place it can go and not have duplicated code.  Both
      permanent_uri_handler and contact_apply_handler call find_or_create.
      
      Removed:
      
      Can't use the destructors for the same reason as above.  The only
      place to put this is in persistent_endpoint_contact_deleted_observer
      which I believe is the "correct" place but even that will handle only
      dynamic contacts.  This doesn't called on shutdown however.  There is
      no hook to use for static contacts that may be removed because of a
      config change while asterisk is in operation.
      
      I moved the cleanup of contact_status from ast_sip_location_delete_contact
      to the handler as well.
      
      Status Change and RTT:
      
      Although they worked fine where they were (in update_contact_status) I
      moved them to persistent_endpoint_contact_status_observer to make it
      more consistent with removed.  There was logic there already to detect
      a state change.
      
      Finally, fixed a nit in permanent_uri_handler rmudgett reported
      eralier.
      
      ASTERISK-25608 #close
      
      Change-Id: I4b56e7dfc3be3baaaf6f1eac5b2068a0b79e357d
      Reported-by: George Joseph
      Tested-by: George Joseph
      4be231e8
    • Matt Jordan's avatar
Loading