mirror of
https://github.com/asterisk/asterisk.git
synced 2026-06-25 18:06:40 -07:00
More deadlock avoidance code (this time between sip_monitor and sip_hangup)
Reported by: apsaras Patch by: tilghman (Closes issue #11413) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@94765 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
+8
-1
@@ -15497,7 +15497,14 @@ restartsearch:
|
||||
get back to this point every millisecond or less)
|
||||
*/
|
||||
for (sip = iflist; !fastrestart && sip; sip = sip->next) {
|
||||
ast_mutex_lock(&sip->lock);
|
||||
/*! \note If we can't get a lock on an interface, skip it and come
|
||||
* back later. Note that there is the possibility of a deadlock with
|
||||
* sip_hangup otherwise, because sip_hangup is called with the channel
|
||||
* locked first, and the iface lock is attempted second.
|
||||
*/
|
||||
if (ast_mutex_trylock(&sip->lock))
|
||||
continue;
|
||||
|
||||
/* Check RTP timeouts and kill calls if we have a timeout set and do not get RTP */
|
||||
if (sip->rtp && sip->owner &&
|
||||
(sip->owner->_state == AST_STATE_UP) &&
|
||||
|
||||
Reference in New Issue
Block a user