mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 12:16:00 +00:00
Backport changes of trunk:
1) r43540: Avoid possible deadlock on channel destruction 2) r43590: Disable fastStart if requested by remote side git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@43626 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -2442,34 +2442,36 @@ static void *do_monitor(void *data)
|
||||
h323_do_reload();
|
||||
}
|
||||
/* Check for interfaces needing to be killed */
|
||||
ast_mutex_lock(&iflock);
|
||||
if (!ast_mutex_trylock(&iflock)) {
|
||||
#if 1
|
||||
do {
|
||||
for (oh323 = iflist; oh323; oh323 = oh323->next) {
|
||||
do {
|
||||
for (oh323 = iflist; oh323; oh323 = oh323->next) {
|
||||
if (!ast_mutex_trylock(&oh323->lock)) {
|
||||
if (oh323->needdestroy) {
|
||||
__oh323_destroy(oh323);
|
||||
break;
|
||||
}
|
||||
ast_mutex_unlock(&oh323->lock);
|
||||
}
|
||||
}
|
||||
} while (/*oh323*/ 0);
|
||||
#else
|
||||
restartsearch:
|
||||
oh323 = iflist;
|
||||
while(oh323) {
|
||||
if (!ast_mutex_trylock(&oh323->lock)) {
|
||||
if (oh323->needdestroy) {
|
||||
__oh323_destroy(oh323);
|
||||
break;
|
||||
goto restartsearch;
|
||||
}
|
||||
ast_mutex_unlock(&oh323->lock);
|
||||
oh323 = oh323->next;
|
||||
}
|
||||
}
|
||||
} while (/*oh323*/ 0);
|
||||
#else
|
||||
restartsearch:
|
||||
oh323 = iflist;
|
||||
while(oh323) {
|
||||
if (!ast_mutex_trylock(&oh323->lock)) {
|
||||
if (oh323->needdestroy) {
|
||||
__oh323_destroy(oh323);
|
||||
goto restartsearch;
|
||||
}
|
||||
ast_mutex_unlock(&oh323->lock);
|
||||
oh323 = oh323->next;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
ast_mutex_unlock(&iflock);
|
||||
ast_mutex_unlock(&iflock);
|
||||
} else
|
||||
oh323 = (struct oh323_pvt *)1; /* Force fast loop */
|
||||
pthread_testcancel();
|
||||
/* Wait for sched or io */
|
||||
res = ast_sched_wait(sched);
|
||||
|
@@ -37,6 +37,7 @@
|
||||
#include <ptlib.h>
|
||||
#include <h323.h>
|
||||
#include <h323pdu.h>
|
||||
#include <h323neg.h>
|
||||
#include <mediafmt.h>
|
||||
#include <lid.h>
|
||||
|
||||
@@ -1105,6 +1106,14 @@ BOOL MyH323Connection::OnReceivedSignalSetup(const H323SignalPDU & setupPDU)
|
||||
|
||||
SetCallOptions(res, TRUE);
|
||||
|
||||
/* Disable fastStart if requested by remote side */
|
||||
if (h245Tunneling && !setupPDU.m_h323_uu_pdu.m_h245Tunneling) {
|
||||
masterSlaveDeterminationProcedure->Stop();
|
||||
capabilityExchangeProcedure->Stop();
|
||||
PTRACE(3, "H225\tFast Start DISABLED!");
|
||||
h245Tunneling = FALSE;
|
||||
}
|
||||
|
||||
return H323Connection::OnReceivedSignalSetup(setupPDU);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user