diff options
author | Alexandr Anikin <may@telecom-service.ru> | 2012-08-10 15:24:03 +0000 |
---|---|---|
committer | Alexandr Anikin <may@telecom-service.ru> | 2012-08-10 15:24:03 +0000 |
commit | bcc1a0142fa434bc1f7fbd79baafa4f2ec7fa624 (patch) | |
tree | a809b3083993919e592961ddb60b4361485bf2ad /addons/ooh323c/src | |
parent | c7b2858322f3e316c010290e8316a4de77a8fa48 (diff) |
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
Diffstat (limited to 'addons/ooh323c/src')
-rw-r--r-- | addons/ooh323c/src/ooGkClient.c | 29 |
1 files changed, 25 insertions, 4 deletions
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; x<pGkClient->timerList.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; + } |