diff options
author | Alexandr Anikin <may@telecom-service.ru> | 2011-08-30 22:16:13 +0000 |
---|---|---|
committer | Alexandr Anikin <may@telecom-service.ru> | 2011-08-30 22:16:13 +0000 |
commit | 7914527929b5d87d18465b4c35ab93bec33f346a (patch) | |
tree | 0bc372aa38c7292b5f60821cb1400493f243b83f /addons/ooh323c/src/ooq931.c | |
parent | cae7253575fa19c280cc0211e95c0c964b17ceea (diff) |
Merged revisions 333961-333962 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/10
................
r333961 | may | 2011-08-31 01:21:53 +0400 (Wed, 31 Aug 2011) | 11 lines
Merged revisions 333947 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r333947 | may | 2011-08-31 01:16:30 +0400 (Wed, 31 Aug 2011) | 5 lines
cleanups in ACF/ARJ GK replies processing
fixed long (24 sec) pause if acf/arj proccessed
before ast_cond_wait called to wait this
........
................
r333962 | may | 2011-08-31 01:53:42 +0400 (Wed, 31 Aug 2011) | 3 lines
security fix. really drop call if signalling addr is not same as socket
addr
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@333963 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'addons/ooh323c/src/ooq931.c')
-rw-r--r-- | addons/ooh323c/src/ooq931.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c index efef2747c..9fe66124b 100644 --- a/addons/ooh323c/src/ooq931.c +++ b/addons/ooh323c/src/ooq931.c @@ -2266,19 +2266,24 @@ int ooH323MakeCall(char *dest, char *callToken, ooCallOptions *opts) if(gH323ep.gkClient && !OO_TESTFLAG(call->flags, OO_M_DISABLEGK)) { - /* No need to check registration status here as it is already checked for - MakeCall command */ - - call->callState = OO_CALL_WAITING_ADMISSION; - ast_mutex_lock(&call->Lock); - ret = ooGkClientSendAdmissionRequest(gH323ep.gkClient, call, FALSE); - tv = ast_tvnow(); - ts.tv_sec = tv.tv_sec + 24; - ts.tv_nsec = tv.tv_usec * 1000; - ast_cond_timedwait(&call->gkWait, &call->Lock, &ts); - if (call->callState == OO_CALL_WAITING_ADMISSION) + if(gH323ep.gkClient->state == GkClientRegistered) { + call->callState = OO_CALL_WAITING_ADMISSION; + 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) call->callState = OO_CALL_CLEAR; - ast_mutex_unlock(&call->Lock); + ast_mutex_unlock(&call->GkLock); + } else { + OOTRACEERR1("Error:Aborting outgoing call as not yet" + "registered with Gk\n"); + call->callState = OO_CALL_CLEAR; + call->callEndReason = OO_REASON_GK_UNREACHABLE; + } } |