diff options
-rw-r--r-- | addons/chan_ooh323.c | 4 | ||||
-rw-r--r-- | addons/ooh323c/src/ooCmdChannel.c | 10 | ||||
-rw-r--r-- | addons/ooh323c/src/ooGkClient.c | 16 | ||||
-rw-r--r-- | addons/ooh323c/src/oochannels.c | 3 | ||||
-rw-r--r-- | addons/ooh323c/src/ooh323.c | 2 | ||||
-rw-r--r-- | addons/ooh323c/src/ooq931.c | 2 |
6 files changed, 16 insertions, 21 deletions
diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index bf465e20e..fd22cd497 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -2204,6 +2204,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); diff --git a/addons/ooh323c/src/ooCmdChannel.c b/addons/ooh323c/src/ooCmdChannel.c index 245fba5b9..50a75c2cf 100644 --- a/addons/ooh323c/src/ooCmdChannel.c +++ b/addons/ooh323c/src/ooCmdChannel.c @@ -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(OOH323CallData* call) 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: diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index af6a10bbd..c090796b6 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -210,7 +210,7 @@ int ooGkClientStart(ooGkClient *pGkClient) if(iRet != OO_OK) { OOTRACEERR1("Error:Failed to send GRQ message\n"); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } @@ -433,7 +433,7 @@ int ooGkClientReceive(ooGkClient *pGkClient) if(iRet != OO_OK) { OOTRACEERR1("Error: Failed to handle received RAS message\n"); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; } memReset(pctxt); } @@ -702,7 +702,7 @@ int ooGkClientSendGRQ(ooGkClient *pGkClient) { OOTRACEERR1("Error: Failed to send GRQ message\n"); memReset(&pGkClient->msgCtxt); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } @@ -1530,7 +1530,7 @@ int ooGkClientSendURQ(ooGkClient *pGkClient, ooAliases *aliases) { OOTRACEERR1("Error:Failed to send UnregistrationRequest message\n"); memReset(pctxt); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } @@ -1909,7 +1909,7 @@ int ooGkClientSendAdmissionRequest { OOTRACEERR1("Error:Failed to send AdmissionRequest message\n"); memReset(pctxt); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } @@ -2423,7 +2423,7 @@ int ooGkClientSendIRR { OOTRACEERR1("Error:Failed to send IRR message\n"); memReset(pctxt); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } @@ -2576,7 +2576,7 @@ int ooGkClientSendDisengageRequest(ooGkClient *pGkClient, OOH323CallData *call) if(iRet != OO_OK) { OOTRACEERR1("Error: Failed to send DRQ message\n"); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; } @@ -2736,7 +2736,7 @@ int ooGkClientREGTimerExpired(void *pdata) if(ret != OO_OK) { OOTRACEERR1("Error:Failed to send Additive RRQ message\n"); - pGkClient->state = GkClientFailed; + pGkClient->state = GkClientGkErr; return OO_FAILED; } return OO_OK; diff --git a/addons/ooh323c/src/oochannels.c b/addons/ooh323c/src/oochannels.c index de8538910..ddc6bf622 100644 --- a/addons/ooh323c/src/oochannels.c +++ b/addons/ooh323c/src/oochannels.c @@ -822,7 +822,8 @@ int ooMonitorChannels() if(OO_OK != ooGkClientStart(gH323ep.gkClient)) { OOTRACEERR1("Error:Failed to start Gatekeeper client\n"); - ooGkClientDestroy(); + // not need more, now it can be restarted correctly + // ooGkClientDestroy(); } } diff --git a/addons/ooh323c/src/ooh323.c b/addons/ooh323c/src/ooh323.c index d91c64942..b04a954ed 100644 --- a/addons/ooh323c/src/ooh323.c +++ b/addons/ooh323c/src/ooh323.c @@ -1719,12 +1719,12 @@ int ooHandleH2250Message(OOH323CallData *call, Q931Message *q931Msg) 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) diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c index 69d1414a0..a6bdea431 100644 --- a/addons/ooh323c/src/ooq931.c +++ b/addons/ooh323c/src/ooq931.c @@ -2604,11 +2604,11 @@ int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts) { 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) |