From bcc1a0142fa434bc1f7fbd79baafa4f2ec7fa624 Mon Sep 17 00:00:00 2001 From: Alexandr Anikin Date: Fri, 10 Aug 2012 15:24:03 +0000 Subject: Send re-register packets by GRQ (gatekeeper request) interval (close issue ASTERISK-20094) Patches: ASTERISK-20094-2.patch ........ Merged revisions 371060 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 371061 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@371081 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- addons/ooh323c/src/ooGkClient.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'addons/ooh323c/src') diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index e149abadc..3aaaba774 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -1285,6 +1285,8 @@ int ooGkClientHandleRegistrationReject unsigned int x=0; DListNode *pNode = NULL; OOTimer *pTimer = NULL; + ooGkClientTimerCb *cbData=NULL; + /* First delete the corresponding RRQ timer */ for(x=0; xtimerList.count; x++) { @@ -1381,14 +1383,33 @@ int ooGkClientHandleRegistrationReject 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"); + cbData = (ooGkClientTimerCb*) memAlloc + (&pGkClient->ctxt, sizeof(ooGkClientTimerCb)); + if(!cbData) + { + OOTRACEERR1("Error:Failed to allocate memory to GRQ timer callback\n"); + pGkClient->state = GkClientFailed; + ast_mutex_unlock(&pGkClient->Lock); return OO_FAILED; } + cbData->timerType = OO_GRQ_TIMER; + cbData->pGkClient = pGkClient; + if(!ooTimerCreate(&pGkClient->ctxt, &pGkClient->timerList, + &ooGkClientGRQTimerExpired, pGkClient->grqTimeout, + cbData, FALSE)) + { + OOTRACEERR1("Error:Unable to create GRQ timer.\n "); + memFreePtr(&pGkClient->ctxt, cbData); + pGkClient->state = GkClientFailed; + ast_mutex_unlock(&pGkClient->Lock); + return OO_FAILED; + } + + ast_mutex_unlock(&pGkClient->Lock); + return OO_OK; + } -- cgit v1.2.3