summaryrefslogtreecommitdiff
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/chan_iax2.c')
-rw-r--r--channels/chan_iax2.c12
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);