diff options
author | Richard Mudgett <rmudgett@digium.com> | 2016-03-09 16:32:28 -0600 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2016-03-16 14:53:00 -0500 |
commit | 38c1cdab2ce3f5f00cd5a6a0f561910d9265bea7 (patch) | |
tree | ae69c3b07bbb7255e892bd183b3196efabd28f62 /menuselect | |
parent | e4ad55c888bc6c7e0d382e716d1d8ed4219d6cb2 (diff) |
chan_sip.c: Fix packet retransid deadlock potential.
This patch is part of a series to resolve deadlocks in chan_sip.c.
Stopping a scheduled event can result in a deadlock if the scheduled event
is running when you try to stop the event. If you hold a lock needed by
the scheduled event while trying to stop the scheduled event then a
deadlock can happen. The general strategy for resolving the deadlock
potential is to push the actual starting and stopping of the scheduled
events off onto the scheduler/do_monitor() thread by scheduling an
immediate one shot scheduled event. Some restructuring may be needed
because the code may assume that the start/stop of the scheduled events is
immediate.
* Fix retrans_pkt() to call check_pendings() with both the owner channel
and the private objects locked as required.
* Refactor dialog retransmission packet list to safely remove packet
nodes. The list nodes are now ao2 objects. The list has a ref and the
scheduled entry has a ref.
ASTERISK-25023
Change-Id: I50926d81be53f4cd3d572a3292cd25f563f59641
Diffstat (limited to 'menuselect')
0 files changed, 0 insertions, 0 deletions