Skip to content
Snippets Groups Projects
  1. Oct 21, 2019
  2. Oct 18, 2019
  3. Oct 17, 2019
  4. Oct 16, 2019
  5. Oct 14, 2019
  6. Oct 11, 2019
  7. Oct 10, 2019
  8. Oct 09, 2019
    • Kevin Harwell's avatar
      pbx: deadlock when outgoing dialed channel hangs up too quickly · bf6f2738
      Kevin Harwell authored
      Here's the basic scenario that occurred when executing an AMI fast originate
      while at the same time something else locks the channels container, and also
      wants a lock on the dialed channel:
      
      1. pbx_outgoing_attempt obtains a lock on a dialed channel
      2. concurrently another thread obtains a lock on the channels container, and
         subsequently requests a lock on the dialed channel. It waits on #1. For
         instance, "core show channel <dialed channel"
      3. the outgoing call does not fail, but ends before the pbx_outgoing_attempt
         function exits
      4. pbx_outgoing_attempt function exits, the outgoing structure destructs, and
         attempts to hang up the dialed channel
      5. hang up tries to obtain the channels container lock, but can't due to #2.
      6. Asterisk is deadlocked.
      
      The solution was to allow the pbx_outgoing_exec function to "steal" ownership
      of the dialed channel, and handle hanging it up. The channel now is either hung
      up prior to it being potentially locked by the initiating thread, or if locked
      the hang up takes place in a different thread, thus alleviating the deadlock.
      
      ASTERISK-28561
      patches:
        iliketrains.diff submitted by Joshua Colp (license 5000)
      
      Change-Id: I51b42b92dde8f2215b69bb509e28667ee3a3853a
      bf6f2738
  9. Oct 08, 2019
  10. Oct 07, 2019
    • Kevin Harwell's avatar
      res_pjsip_mwi: use an ao2_global object for mwi containers · 12dbeb69
      Kevin Harwell authored
      On shutdown it's possible for the unsolicited mwi container to be freed before
      other dependent threads are done using it. This patch ensures this can no
      longer happen by wrapping the container in an ao2_global object. The solicited
      container was also changed too.
      
      ASTERISK-28552
      
      Change-Id: I8f812286dc19a34916acacd71ce2ec26e1042047
      12dbeb69
    • Kevin Harwell's avatar
      serializer: move/add asterisk serializer pool functionality · c0efe19c
      Kevin Harwell authored
      Serializer pools have previously existed in Asterisk. However, for the most
      part the code has been duplicated across modules. This patch abstracts the
      code into an 'ast_serializer_pool' object. As well the code is now centralized
      in serializer.c/h.
      
      In addition serializer pools can now optionally be monitored by a shutdown
      group. This will prevent the pool from being destroyed until all serializers
      have completed.
      
      Change-Id: Ib1e906144b90ffd4d5ed9826f0b719ca9c6d2971
      c0efe19c
    • Kevin Harwell's avatar
      res_pjsip/res_pjsip_mwi: use centralized serializer pools · 2970a13f
      Kevin Harwell authored
      Both res_pjsip and res_pjsip_mwi made use of serializer pools. However, they
      both implemented their own serializer pool functionality that was pretty much
      identical in each of the source files. This patch removes the duplicated code,
      and uses the new 'ast_serializer_pool' object instead.
      
      Additionally res_pjsip_mwi enables a shutdown group on the pool since if the
      timing was right the module could be unloaded while taskprocessor threads still
      needed to execute, thus causing a crash.
      
      Change-Id: I959b0805ad024585bbb6276593118be34fbf6e1d
      2970a13f
    • Friendly Automation's avatar
  11. Oct 04, 2019
  12. Oct 01, 2019
  13. Sep 27, 2019
Loading