diff options
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r-- | channels/chan_iax2.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 6f1aec018..8fe51b457 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -11215,6 +11215,15 @@ immediatedial: } break; case IAX_COMMAND_TXREADY: + if (iaxs[fr->callno]->bridgecallno) { + while (ast_mutex_trylock(&iaxsl[iaxs[fr->callno]->bridgecallno])) { + DEADLOCK_AVOIDANCE(&iaxsl[fr->callno]); + } + if (!iaxs[fr->callno]) { + break; + } + } + if ((iaxs[fr->callno]->transferring == TRANSFER_BEGIN) || (iaxs[fr->callno]->transferring == TRANSFER_MBEGIN)) { if (iaxs[fr->callno]->transferring == TRANSFER_MBEGIN) @@ -11263,6 +11272,9 @@ immediatedial: } } } + if (iaxs[fr->callno]->bridgecallno) { + ast_mutex_unlock(&iaxsl[iaxs[fr->callno]->bridgecallno]); + } break; case IAX_COMMAND_TXREQ: try_transfer(iaxs[fr->callno], &ies); |