summaryrefslogtreecommitdiff
path: root/addons/ooh323c
diff options
context:
space:
mode:
authorAlexandr Anikin <may@telecom-service.ru>2012-08-09 19:33:41 +0000
committerAlexandr Anikin <may@telecom-service.ru>2012-08-09 19:33:41 +0000
commit6153acebe80333e2de051b7cdb5a061cf86f5a06 (patch)
tree55bc66b8e638c69d2af263c257ee52a484022f10 /addons/ooh323c
parent18d504198139bac964bb24604ff0ef58bba5c722 (diff)
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
Diffstat (limited to 'addons/ooh323c')
-rw-r--r--addons/ooh323c/src/ooGkClient.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c
index c91b9ed95..e149abadc 100644
--- a/addons/ooh323c/src/ooGkClient.c
+++ b/addons/ooh323c/src/ooGkClient.c
@@ -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;
}