]> git.ipfire.org Git - thirdparty/asterisk.git/commit
chan_sip: Destroy peers without holding peers container lock. 73/673/1
authorJoshua Colp <jcolp@digium.com>
Sun, 21 Jun 2015 00:38:02 +0000 (21:38 -0300)
committerJoshua Colp <jcolp@digium.com>
Sun, 21 Jun 2015 00:44:48 +0000 (21:44 -0300)
commit74616ae43d4e24e914ee612846a464da5b241b9b
tree588c3cfcb3113370d8cd6ec04a45791707d4ac45
parent9015bb4c8c9882de35066c6586189ab78268a12f
chan_sip: Destroy peers without holding peers container lock.

Due to the use of stasis_unsubscribe_and_join in the peer destructor
it is possible for a deadlock to occur when an event callback is
occurring at the same time.

This happens because the peer may be destroyed while holding the
peers container lock. If this occurs the event callback will never
be able to acquire the container lock and the unsubscribe will
never complete.

This change makes it so the peers that have been removed from the
peers container are not destroyed with the container lock held.

ASTERISK-25163 #close

Change-Id: Ic6bf1d9da4310142a4d196c45ddefb99317d9a33
channels/chan_sip.c