Fix to resend GRQ/RRQ if RRJ (registration reject) is received

(close issue ASTERISK-20094)

Patches:
   ASTERISK-20094.patch
........

Merged revisions 371011 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 371022 from http://svn.asterisk.org/svn/asterisk/branches/10


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371036 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Alexandr Anikin 2012-08-09 19:33:41 +00:00
parent 18d5041981
commit 6153acebe8
1 changed files with 17 additions and 1 deletions

View File

@ -812,6 +812,9 @@ int ooGkClientHandleGatekeeperConfirm
if(pGatekeeperConfirm->m.gatekeeperIdentifierPresent)
{
pGkClient->gkId.nchars = pGatekeeperConfirm->gatekeeperIdentifier.nchars;
if (pGkClient->gkId.data) {
memFreePtr(&pGkClient->ctxt, pGkClient->gkId.data);
}
pGkClient->gkId.data = (ASN116BITCHAR*)memAlloc(&pGkClient->ctxt,
sizeof(ASN116BITCHAR)*pGkClient->gkId.nchars);
if(!pGkClient->gkId.data)
@ -1371,7 +1374,20 @@ int ooGkClientHandleRegistrationReject
default:
OOTRACEINFO1("RRQ Rejected - Invalid Reason\n");
}
pGkClient->state = GkClientGkErr;
/* send again GRQ/RRQ's */
ast_mutex_lock(&pGkClient->Lock);
pGkClient->state = GkClientUnregistered;
pGkClient->rrqRetries = 0;
pGkClient->grqRetries = 0;
pGkClient->discoveryComplete = FALSE;
ast_mutex_unlock(&pGkClient->Lock);
iRet = ooGkClientSendGRQ(pGkClient);
if(iRet != OO_OK){
OOTRACEERR1("\nError: Transmission of rediscovery of GK failed\n");
return OO_FAILED;
}
return OO_OK;
}