Index: addons/ooh323c/src/oochannels.c =================================================================== --- addons/ooh323c/src/oochannels.c (revision 424712) +++ addons/ooh323c/src/oochannels.c (working copy) @@ -679,9 +679,9 @@ int ooProcessCallFDSETsAndTimers if (0 != call->pH245Channel && 0 != call->pH245Channel->sock) { if(ooPDWrite(pfds, nfds, call->pH245Channel->sock)) { - while (call->pH245Channel->outQueue.count>0) { + if (call->pH245Channel->outQueue.count>0) { if (ooSendMsg(call, OOH245MSG) != OO_OK) - break; + OOTRACEERR1("Error in sending h245 message\n"); } } } @@ -699,26 +699,24 @@ int ooProcessCallFDSETsAndTimers { if(ooPDWrite(pfds, nfds, call->pH225Channel->sock)) { - while (call->pH225Channel->outQueue.count>0) + if (call->pH225Channel->outQueue.count>0) { OOTRACEDBGC3("Sending H225 message (%s, %s)\n", call->callType, call->callToken); if (ooSendMsg(call, OOQ931MSG) != OO_OK) - break; + OOTRACEERR1("Error in sending h225 message\n"); } if(call->pH245Channel && call->pH245Channel->outQueue.count>0 && OO_TESTFLAG (call->flags, OO_M_TUNNELING)) { - while (call->pH245Channel->outQueue.count>0) { OOTRACEDBGC3("H245 message needs to be tunneled. " "(%s, %s)\n", call->callType, call->callToken); if (ooSendMsg(call, OOH245MSG) != OO_OK) - break; + OOTRACEERR1("Error in sending h245 message\n"); } - } - } - } + } + } if(ooTimerNextTimeout(&call->timerList, &toNext)) { Index: addons/ooh323c/src/ooq931.c =================================================================== --- addons/ooh323c/src/ooq931.c (revision 424712) +++ addons/ooh323c/src/ooq931.c (working copy) @@ -1745,9 +1745,10 @@ int ooSendProgress(OOH323CallData *call) if (!OO_TESTFLAG(call->flags, OO_M_TUNNELING) && call->h245listener) ooSendStartH245Facility(call); + /* commented to test ASTERISK-24400 if (call->h225version >= 4) { ooSendTCSandMSD(call); - } + } */ memReset (call->msgctxt); return ret; @@ -2124,9 +2125,6 @@ int ooSendReleaseComplete(OOH323CallData *call) return OO_FAILED; } memset(releaseComplete, 0, sizeof(H225ReleaseComplete_UUIE)); - q931msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent=1; - q931msg->userInfo->h323_uu_pdu.h245Tunneling = OO_TESTFLAG(call->flags, - OO_M_TUNNELING); q931msg->userInfo->h323_uu_pdu.h323_message_body.t = T_H225H323_UU_PDU_h323_message_body_releaseComplete; @@ -2143,8 +2141,6 @@ int ooSendReleaseComplete(OOH323CallData *call) releaseComplete->reason.t = h225ReasonCode; /* Add user-user ie */ - q931msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent=TRUE; - q931msg->userInfo->h323_uu_pdu.h245Tunneling = OO_TESTFLAG (call->flags, OO_M_TUNNELING); q931msg->userInfo->h323_uu_pdu.h323_message_body.t = T_H225H323_UU_PDU_h323_message_body_releaseComplete; Index: addons/ooh323c/src/ooCalls.c =================================================================== --- addons/ooh323c/src/ooCalls.c (revision 424712) +++ addons/ooh323c/src/ooCalls.c (working copy) @@ -223,7 +223,8 @@ int ooEndCall(OOH323CallData *call) call->callState = OO_CALL_CLEARED; } - if(call->callState == OO_CALL_CLEARED || call->callState == OO_CALL_CLEAR_RELEASESENT) + if(call->callState == OO_CALL_CLEARED || ((strcmp(call->callType, "incoming")) && + call->callState == OO_CALL_CLEAR_RELEASESENT)) { ooCleanCall(call); call->callState = OO_CALL_REMOVED;