From: Alexandr Anikin Date: Tue, 9 Aug 2011 16:16:55 +0000 (+0000) Subject: Merged revisions 331146 via svnmerge from X-Git-Tag: 10.0.0-beta2~147 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cabe2172c73b823fb3b930ba387351a5916270ad;p=thirdparty%2Fasterisk.git Merged revisions 331146 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.8 ........ r331146 | may | 2011-08-09 20:13:09 +0400 (Tue, 09 Aug 2011) | 4 lines move ast_cond_signal for admitted call after all data filled/freed clear all log channels by pointed number not only first free allocated callToken in ooh323_answer ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@331147 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index 32d1cf7d4f..1a5f1eea01 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -1123,6 +1123,9 @@ static int ooh323_answer(struct ast_channel *ast) ast_channel_unlock(ast); ooAnswerCall(p->callToken); } + if (callToken) { + free(callToken); + } ast_mutex_unlock(&p->lock); } diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index e1c57cb5b2..7252195b57 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -1997,13 +1997,13 @@ int ooGkClientHandleAdmissionConfirm pCallAdmInfo->call->callToken); pCallAdmInfo->call->callState = OO_CALL_CONNECTING; - ast_cond_signal(&pCallAdmInfo->call->gkWait); /* ooH323CallAdmitted( pCallAdmInfo->call); */ dListRemove(&pGkClient->callsPendingList, pNode); dListAppend(&pGkClient->ctxt, &pGkClient->callsAdmittedList, pNode->data); memFreePtr(&pGkClient->ctxt, pNode); + ast_cond_signal(&pCallAdmInfo->call->gkWait); return OO_OK; break; } diff --git a/addons/ooh323c/src/ooLogChan.c b/addons/ooh323c/src/ooLogChan.c index 63c8fc6f78..d5e8db1780 100644 --- a/addons/ooh323c/src/ooLogChan.c +++ b/addons/ooh323c/src/ooLogChan.c @@ -284,7 +284,7 @@ int ooClearLogicalChannel(OOH323CallData *call, int channelNo) call->callType, call->callToken); pLogicalChannel = ooFindLogicalChannelByLogicalChannelNo(call,channelNo); - if(!pLogicalChannel) + do { if(!pLogicalChannel) { OOTRACEWARN4("Logical Channel %d doesn't exist, in clearLogicalChannel." " (%s, %s)\n", @@ -326,6 +326,7 @@ int ooClearLogicalChannel(OOH323CallData *call, int channelNo) ooRemoveLogicalChannel(call, channelNo);/* TODO: efficiency - This causes re-search of of logical channel in the list. Can be easily improved.*/ + } while ((pLogicalChannel = ooFindLogicalChannelByLogicalChannelNo(call,channelNo))); return OO_OK; }