From: Alexandr Anikin Date: Fri, 10 Aug 2012 15:13:10 +0000 (+0000) Subject: Send re-register packets by GRQ (gatekeeper request) interval X-Git-Tag: 10.9.0-rc1~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=661dd815a010f90b982bd90ab6f7abd7d1f3f919;p=thirdparty%2Fasterisk.git 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 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@371061 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index 1df3ee5649..c114c82569 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -1283,6 +1283,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++) { @@ -1379,14 +1381,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; + }