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
This commit is contained in:
Alexandr Anikin
2011-08-30 22:16:13 +00:00
parent cae7253575
commit 7914527929
6 changed files with 55 additions and 27 deletions

View File

@@ -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;
}
}