diff options
author | may <may@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-07-15 21:41:46 +0000 |
---|---|---|
committer | may <may@f38db490-d61c-443f-a65b-d21fe96a405b> | 2011-07-15 21:41:46 +0000 |
commit | 7f5a82e677ddd9c75d49dfb62add997316e57ba3 (patch) | |
tree | bbd9b2633ed76d310ee8421d7868abf6c998a427 | |
parent | d44b47240bebcefc202b43c36672e3c2dd563791 (diff) |
Merged revisions 328428-328429 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.10
................
r328428 | may | 2011-07-15 23:31:09 +0400 (Fri, 15 Jul 2011) | 13 lines
Merged revisions 328427 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r328427 | may | 2011-07-15 23:22:24 +0400 (Fri, 15 Jul 2011) | 7 lines
small gk processing fixes:
- decrease for 1 second registration ttl for very low expirations (some
providers expire few earlier than TTL)
- delete rrq and registration expire timers on URQ received as we make
new registration.
........
................
r328429 | may | 2011-07-15 23:35:50 +0400 (Fri, 15 Jul 2011) | 2 lines
delete unproperly changed svn props
................
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@328502 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r-- | addons/ooh323c/src/ooGkClient.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index 04359998a..33d7df019 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -1211,8 +1211,11 @@ int ooGkClientHandleRegistrationConfirm if(pGkClient->regTimeout > DEFAULT_TTL_OFFSET) regTTL = pGkClient->regTimeout - DEFAULT_TTL_OFFSET; - else - regTTL = pGkClient->regTimeout; + else { + regTTL = pGkClient->regTimeout - 1; /* -1 due to some ops expire us few earlier */ + if (regTTL <= 0) + regTTL = 1; + } cbData = (ooGkClientTimerCb*) memAlloc (&pGkClient->ctxt, sizeof(ooGkClientTimerCb)); @@ -1260,7 +1263,6 @@ int ooGkClientHandleRegistrationConfirm memFreePtr(&pGkClient->ctxt, pTimer->cbData); ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer); OOTRACEDBGA1("Deleted RRQ Timer.\n"); - break; } } pGkClient->state = GkClientRegistered; @@ -1505,8 +1507,10 @@ int ooGkClientSendURQ(ooGkClient *pGkClient, ooAliases *aliases) int ooGkClientHandleUnregistrationRequest (ooGkClient *pGkClient, H225UnregistrationRequest * punregistrationRequest) { - int iRet=0; - + int iRet=0, x; + OOTimer *pTimer = NULL; + DListNode *pNode = NULL; + /* Lets first send unregistration confirm message back to gatekeeper*/ ooGkClientSendUnregistrationConfirm(pGkClient, punregistrationRequest->requestSeqNum); @@ -1528,6 +1532,24 @@ int ooGkClientHandleUnregistrationRequest pGkClient->rrqRetries = 0; pGkClient->state = GkClientDiscovered; + + /* delete the corresponding RRQ & REG timers */ + pNode = NULL; + for(x=0; x<pGkClient->timerList.count; x++) { + pNode = dListFindByIndex(&pGkClient->timerList, x); + pTimer = (OOTimer*)pNode->data; + if(((ooGkClientTimerCb*)pTimer->cbData)->timerType & OO_RRQ_TIMER) { + memFreePtr(&pGkClient->ctxt, pTimer->cbData); + ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer); + OOTRACEDBGA1("Deleted RRQ Timer.\n"); + } + if(((ooGkClientTimerCb*)pTimer->cbData)->timerType & OO_REG_TIMER) { + memFreePtr(&pGkClient->ctxt, pTimer->cbData); + ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer); + OOTRACEDBGA1("Deleted REG Timer.\n"); + } + } + iRet = ooGkClientSendRRQ(pGkClient, 0); if(iRet != OO_OK) { |