summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/chan_ooh323.c4
-rw-r--r--addons/ooh323c/src/ooCmdChannel.c10
-rw-r--r--addons/ooh323c/src/ooGkClient.c16
-rw-r--r--addons/ooh323c/src/oochannels.c3
-rw-r--r--addons/ooh323c/src/ooh323.c2
-rw-r--r--addons/ooh323c/src/ooq931.c2
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)