Skip to content
Snippets Groups Projects
  1. Oct 23, 2015
    • Kevin Harwell's avatar
      res_pjsip_outbound_registration: registration stops due to fatal 4xx response · 691c0e0b
      Kevin Harwell authored
      During outbound registration it is possible to receive a fatal (any permanent/
      non-temporary 4xx, 5xx, 6xx) response from the registrar that is simply due
      to a problem with the registrar itself. Upon receiving the failure response
      Asterisk terminates outbound registration for the given endpoint.
      
      This patch adds an option, 'fatal_retry_interval', that when set continues
      outbound registration at the given interval up to 'max_retries' upon receiving
      a fatal response.
      
      ASTERISK-25485 #close
      
      Change-Id: Ibc2c7b47164ac89cc803433c0bbe7063bfa143a2
      691c0e0b
  2. Oct 20, 2015
    • Matt Jordan's avatar
      contrib/scripts/autosupport: Update for Asterisk 13 · b9bd249a
      Matt Jordan authored
      This patch adds some minor tweaks for autosupport to update it for Asterisk 13.
      This includes:
      * Finally removing most references to Zaptel
      * Adding support for some additional 'core' commands, and fixing nomenclature
        that generally hasn't been used for some time
      * Adding some PJSIP/SIP commands to gather endpoints/peers and active channels
      
      Change-Id: Ic997b418cbd9313588b6608e50f47b0ce6f4f1f1
      (cherry picked from commit 9fc9777f)
      b9bd249a
  3. Oct 17, 2015
  4. Oct 16, 2015
    • Matt Jordan's avatar
      Merge topic 'ASTERISK-25461' · 2581e460
      Matt Jordan authored
      * changes:
        config.c: Fix off-nominal memory leak.
        config.c: Fix potential memory corruption after [section](+).
        config.c: Fix #include after [section](+).
      2581e460
  5. Oct 15, 2015
  6. Oct 14, 2015
    • Richard Mudgett's avatar
      res_config_pgsql.c: Fix deadlock loading realtime configuration. · d799bcf3
      Richard Mudgett authored
      On v13, loading several thousand PJSIP endpoints on Asterisk start causes
      a deadlock most of the time.
      
      Thanks to mdu113 for discovering that there was a call to pgsql_exec() not
      protected by the pgsql_lock reentrancy lock.
      
      {quote}
      I believe a code path exists that attempts to use pgsql connection without
      locking pgsql_lock.  I believe what happens during that deadlock that I
      see is two concurrent threads are both attempting to send query to pgsql,
      one of the thread is using a code path without locking pgsql_lock.  If
      they managed to send queries at the same time, it seems postgres ignores
      one of the queries and replies only to the one of them.  If it happens so
      that the thread holding the lock didn't receive the reply it will wait for
      it (and hold the lock) forever (or at least for very long time), thus
      completely blocking all access to db.
      {quote}
      
      * Added missing reentrancy locking around pgsql_exec() in find_table().
      
      * Moved unlock of pgsql_lock in unload_module() to avoid locking inversion
      between the psql_tables list lock and the pgsql_lock.
      
      ASTERISK-25455 #close
      Reported by:  mdu113
      Patches:
            res_config_pgsql.c-connlock2.diff (license #5543) patch uploaded by mdu113
      
      Change-Id: Id9e7cdf8a3b65ff19964b0cf942ace567938c4e2
      d799bcf3
  7. Oct 13, 2015
  8. Oct 12, 2015
    • Richard Mudgett's avatar
      config.c: Fix off-nominal memory leak. · 984f100d
      Richard Mudgett authored
      Change-Id: I06e346e9a5c63cc5071e7eda537310c4b43bffe0
      984f100d
    • Richard Mudgett's avatar
      config.c: Fix potential memory corruption after [section](+). · 99512557
      Richard Mudgett authored
      The memory corruption could happen if the [section](+) is the last section
      in the file with trailing comments.  In this case process_text_line() has
      left *last_cat is set to newcat and newcat is destroyed.
      
      Change-Id: I0d1d999f553986f591becd000e7cc6ddfb978d93
      99512557
    • Richard Mudgett's avatar
      config.c: Fix #include after [section](+). · c1ed11ee
      Richard Mudgett authored
      An #include right after a [section](+) would associate any variable
      assignments before a new section in the #include with the wrong section.
      
      * Fix section association by setting the current section to the appended
      section.
      
      * Fix '+' and '!' section flag interaction corner case depending upon
      which flag came first.  If the '!' came first then it would be ignored.
      If the '!' came after then it would affect the appended section.  The '!'
      will now no longer be ignored.
      
      ASTERISK-25461 #close
      Reported by: Sean Pimental
      
      Change-Id: Ic9d3191c8758048e2cbce6432f854b32531731c3
      c1ed11ee
  9. Oct 10, 2015
  10. Oct 09, 2015
  11. Oct 08, 2015
  12. Oct 07, 2015
    • Richard Mudgett's avatar
      res_pjsip: Fix deadlock when sending out-of-dialog requests. · 34d7fa6c
      Richard Mudgett authored
      The struct send_request_wrapper has a pjsip lock associated with it that
      is created non-recursive.  There is a code path for the struct
      send_request_wrapper lock that will attempt to lock it recursively.  The
      reporter's deadlock showed that the thread calling endpt_send_request()
      deadlocked itself right after the wrapper object got created.
      
      Out-of-dialog requests such as MESSAGE, qualify OPTIONS, and unsolicited
      MWI NOTIFY messages can hit this deadlock.
      
      * Replaced the struct send_request_wrapper pjsip lock with the mutex lock
      that can come with an ao2 object since all of Asterisk's mutexes are
      recursive.  Benefits include removal of code maintaining the pjsip
      non-recursive lock since ao2 objects already know how to maintain their
      own lock and the lock will show up in the CLI "core show locks" output.
      
      ASTERISK-25435 #close
      Reported by: Dmitriy Serov
      
      Change-Id: I458e131dd1b9816f9e963f796c54136e9e84322d
      34d7fa6c
    • Joshua Colp's avatar
    • StefanEng86's avatar
      res/res_rtp_asterisk.c: Fix incorrect assignment of frame->subclass.frame_ending · cc131832
      StefanEng86 authored
      In ast_rtp_read, the value of the variable 'mark' which we try to assign to a
      frame->subclass.frame_ending may be 0, 1 or (1<<23), but we should translate
      it to 0 or 1.
      
      ASTERISK-25451 #close
      Change-Id: I53bdf5c026041730184a6a809009c028549ce626
      cc131832
    • Ivan Poddubny's avatar
      func_presencestate: Return "not_set" when no data is set in AstDB · c944263e
      Ivan Poddubny authored
      Return AST_PRESENCE_NOT_SET when CustomPresence AstDB key does not
      exist, i.e. when a new CustomPresence is added in the dialplan.
      
      ASTERISK-25400 #close
      Reported by: Andrew Nagy
      
      Change-Id: I6fb17b16591b5a55fbffe96f3994ec26b1b1723a
      c944263e
    • Matt Jordan's avatar
      res/res_rtp_asterisk: Fix assignment after ao2 decrement · 4bf395e8
      Matt Jordan authored
      When we decide we will no longer schedule an RTCP write, we remove the
      reference to the RTP instance, then assign -1 to the stored scheduler ID
      in case something else comes along and wants to see if anything is scheduled.
      
      That scheduler ID is on the RTP instance. After 60a9172d was merged to
      fix the regression introduced by 3cf0f293, this improper assignment on a
      potentially destroyed object started getting tripped on the build agents.
      
      Frankly, this should have been crashing a lot more often earlier. I can only
      assume that the timing was changed just enough by both changes to start
      actually hitting this problem.
      
      As it is, simply moving the assignment prior to the ao2 deference is sufficient
      to keep the RTP instance from being referenced when it is very, truly,
      aboslutely dead.
      
      (Note that it is still good practice to assign -1 to the scheduler ID when we
      know we won't be scheduling it again, as the ao2 deref *may* not always destroy
      the ao2 object.)
      
      ASTERISK-25449
      
      Change-Id: Ie6d3cb4adc7b1a6c078b1c38c19fc84cf787cda7
      4bf395e8
  13. Oct 06, 2015
    • Florian Sauerteig's avatar
      chan_sip: Fix port parsing for IPv6 addresses in SIP Via headers. · 3ec9cf7d
      Florian Sauerteig authored
      If a Via header containes an IPv6 address and a port number is ommitted,
      as it is the standard port, we now leave the port empty and to not set it
      to the value after the first colon of the IPv6 address.
      
      ASTERISK-25443 #close
      
      Change-Id: Ie3c2f05471cd006bf04ed15598589c09577b1e70
      3ec9cf7d
    • Richard Mudgett's avatar
      chan_pjsip: Fix crash on reINVITE before initial INVITE completes. · 8fe9350b
      Richard Mudgett authored
      Apparently some endpoints attempt to send a reINVITE before completing the
      initial INVITE transaction.  In this case PJSIP responds appropriately to
      the reINVITE with a 491 INVITE request pending.  Unfortunately chan_pjsip
      is using the initial INVITE transaction state to determine if an INVITE is
      the initial INVITE or a reINVITE.  Since the initial INVITE transaction
      has not been confirmed yet chan_pjsip thinks the reINVITE is an initial
      INVITE and starts another PBX thread on the channel.  The extra PBX thread
      ensures that hilarity ensues.
      
      * Fix checks for a reINVITE on incoming requests to look for the presence
      of a to-tag instead of the initial INVITE transaction state.
      
      * Made caller_id_incoming_request() determine what to do if there is a
      channel on the session or not.  After a channel is created it is too late
      to just store the new party id on the session because the session's party
      id has already been copied to the channel's caller id.
      
      ASTERISK-25404 #close
      Reported by: Chet Stevens
      
      Change-Id: Ie78201c304a2b13226f3a4ce59908beecc2c68be
      8fe9350b
    • Matt Jordan's avatar
    • Matt Jordan's avatar
      Fix improper usage of scheduler exposed by 5c713fdf · 8cb614fe
      Matt Jordan authored
      When 5c713fdf was merged, it allowed for scheduled items to have an ID of
      '0' returned. While this was valid per the documentation for the API, it was
      apparently never returned previously. As a result, several users of the
      scheduler API viewed the result as being invalid, causing them to reschedule
      already scheduled items or otherwise fail in interesting ways.
      
      This patch corrects the users such that they view '0' as valid, and a returned
      ID of -1 as being invalid.
      
      Note that the failing HEP RTCP tests now pass with this patch. These tests
      failed due to a duplicate scheduling of the RTCP transmissions.
      
      ASTERISK-25449 #close
      
      Change-Id: I019a9aa8b6997584f66876331675981ac9e07e39
      8cb614fe
  14. Oct 05, 2015
    • Debian Amtelco's avatar
      chan_pjsip: Add Referred-By header to the PJSIP REFER packet. · c6b0d602
      Debian Amtelco authored
      Some systems require the REFER packet to include a Referred-By header.
      If the channel variable SIPREFERREDBYHDR is set, it passes that value as the
      Referred-By header value.  Otherwise, it adds the current dialog’s local info.
      
      Reported by: Dan Cropp
      Tested by: Dan Cropp
      
      Change-Id: I3d17912ce548667edf53cb549e88a25475eda245
      c6b0d602
  15. Oct 03, 2015
    • Ivan Poddubny's avatar
      manager: Fix GetConfigJSON returning invalid JSON · 89dec767
      Ivan Poddubny authored
      When GetConfigJSON was introduced back in 1.6, it returned each
      section as an array of strings: ["key=value", "key2=value2"].
      Afterwards, it was changed a few times and became
      ["key": "value", "key2": "value2"], which is not a correct JSON.
      This patch fixes that by constructing a JSON object {} instead of
      an array [].
      
      Also, the keys "istemplate" and "tempates" that are used to
      indicate templates and their inherited categories are now wrapped in
      quotes.
      
      ASTERISK-25391 #close
      Reported by: Bojan Nemčić
      
      Change-Id: Ibbe93c6a227dff14d4a54b0d152341857bcf6ad8
      89dec767
  16. Oct 02, 2015
  17. Oct 01, 2015
    • Richard Mudgett's avatar
      res_sorcery_memory_cache.c: Fix deadlock with scheduler. · 1b80dbeb
      Richard Mudgett authored
      A deadlock can happen when a sorcery object is being expired from the
      memory cache when at the same time another object is being placed into the
      memory cache.  There are a couple other variations on this theme that
      could cause the deadlock.  Basically if an object is being expired from
      the sorcery memory cache at the same time as another thread tries to
      update the next object expiration timer the deadlock can happen.
      
      * Add a deadlock avoidance loop in expire_objects_from_cache() to check if
      someone is trying to remove the scheduler callback from the scheduler.
      
      ASTERISK-25441 #close
      
      Change-Id: Iec7b0bdb81a72b39477727b1535b2539ad0cf4dc
      1b80dbeb
    • Richard Mudgett's avatar
      res_sorcery_memory_cache.c: Replace inline code with function. · 9c1ca287
      Richard Mudgett authored
      Make sorcery_memory_cache_close() call remove_all_from_cache() instead of
      partially inlining it.
      
      ASTERISK-25441
      
      Change-Id: I1aa6cb425b1a4307096f3f914d17af8ec179a74c
      9c1ca287
    • Richard Mudgett's avatar
      res_sorcery_memory_cache.c: Shutdown in a less crash potential order. · 6554a3b2
      Richard Mudgett authored
      Basically you should shutdown in the opposite order of how you setup since
      later setup pieces likely depend on earlier setup pieces.  e.g.,
      Registering your external API with the rest of the system should be the
      last thing setup and the first thing unregistered during shutdown.
      
      Change-Id: I5715765b723100c8d3c2642e9e72cc7ad5ad115e
      6554a3b2
    • Richard Mudgett's avatar
      res_sorcery_memory_cache.c: Misc tweaks. · 359394cc
      Richard Mudgett authored
      Change-Id: I8cd32dffbb4f33bb0c39518d6e4c991e73573160
      359394cc
    • Richard Mudgett's avatar
      res_sorcery_memory_cache.c: Made use OBJ_SEARCH_MASK. · 7942d1c2
      Richard Mudgett authored
      Change-Id: Ibca6574dc3c213b29cc93486e01ccd51f5caa46c
      7942d1c2
  18. Sep 30, 2015
    • Joshua Colp's avatar
      res_rtp_asterisk: Move "Set role" warning to be debug. · 9f229d6a
      Joshua Colp authored
      In practice the set_role API callback can be invoked even
      when no ICE is present on an RTP instance. This can occur
      if ICE has not been enabled on it.
      
      ASTERISK-25438 #close
      
      Change-Id: I0e17e4316f0f0d7f095c78c3d4fd73a913b6ba69
      9f229d6a
Loading