Index: addons/ooh323c/src/ooh323.c =================================================================== --- addons/ooh323c/src/ooh323.c (revision 410536) +++ addons/ooh323c/src/ooh323.c (working copy) @@ -1719,12 +1719,12 @@ int ooHandleH2250Message(OOH323CallData *call, Q93 if(gH323ep.gkClient->state == GkClientRegistered) { call->callState = OO_CALL_WAITING_ADMISSION; + ast_mutex_lock(&call->GkLock); ret = ooGkClientSendAdmissionRequest(gH323ep.gkClient, call, FALSE); tv = ast_tvnow(); ts.tv_sec = tv.tv_sec + 24; ts.tv_nsec = tv.tv_usec * 1000; - ast_mutex_lock(&call->GkLock); if (call->callState == OO_CALL_WAITING_ADMISSION) ast_cond_timedwait(&call->gkWait, &call->GkLock, &ts); if (call->callState == OO_CALL_WAITING_ADMISSION) Index: addons/ooh323c/src/ooCmdChannel.c =================================================================== --- addons/ooh323c/src/ooCmdChannel.c (revision 410536) +++ addons/ooh323c/src/ooCmdChannel.c (working copy) @@ -172,11 +172,6 @@ int ooReadAndProcessStackCommand() if(cmd.type == OO_CMD_NOOP) continue; - if(gH323ep.gkClient && gH323ep.gkClient->state != GkClientRegistered && cmd.type != OO_CMD_STOPMONITOR) - { - OOTRACEINFO1("Ignoring stack command as Gk Client is not registered" - " yet\n"); - } else { switch(cmd.type) { case OO_CMD_MAKECALL: @@ -336,11 +331,6 @@ int ooReadAndProcessCallStackCommand(OOH323CallDat if(cmd.type == OO_CMD_NOOP) continue; - if(gH323ep.gkClient && gH323ep.gkClient->state != GkClientRegistered) - { - OOTRACEINFO1("Ignoring stack command as Gk Client is not registered" - " yet\n"); - } else { switch(cmd.type) { case OO_CMD_MAKECALL: Index: addons/ooh323c/src/ooq931.c =================================================================== --- addons/ooh323c/src/ooq931.c (revision 410536) +++ addons/ooh323c/src/ooq931.c (working copy) @@ -2604,11 +2604,11 @@ int ooH323MakeCall(char *dest, char *callToken, oo { if(gH323ep.gkClient->state == GkClientRegistered) { call->callState = OO_CALL_WAITING_ADMISSION; + ast_mutex_lock(&call->GkLock); ret = ooGkClientSendAdmissionRequest(gH323ep.gkClient, call, FALSE); tv = ast_tvnow(); ts.tv_sec = tv.tv_sec + 24; ts.tv_nsec = tv.tv_usec * 1000; - ast_mutex_lock(&call->GkLock); if (call->callState == OO_CALL_WAITING_ADMISSION) ast_cond_timedwait(&call->gkWait, &call->GkLock, &ts); if (call->callState == OO_CALL_WAITING_ADMISSION) Index: addons/chan_ooh323.c =================================================================== --- addons/chan_ooh323.c (revision 410536) +++ addons/chan_ooh323.c (working copy) @@ -2205,6 +2205,10 @@ int onCallCleared(ooCallData *call) ast_module_unref(myself); } + if (!p->rtp) { + ast_cond_signal(&p->rtpcond); + } + ast_set_flag(p, H323_NEEDDESTROY); ooh323c_stop_call_thread(call);