diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 6f1aec018bd8d171adf4d8ab2f3a8bc000bacb2d..8fe51b457c8cf072e09898dadb38b554dcbf471e 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);