[asterisk-commits] may: branch 1.8 r328427 - /branches/1.8/addons/ooh323c/src/ooGkClient.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 15 14:22:28 CDT 2011


Author: may
Date: Fri Jul 15 14:22:24 2011
New Revision: 328427

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=328427
Log:
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.


Modified:
    branches/1.8/addons/ooh323c/src/ooGkClient.c

Modified: branches/1.8/addons/ooh323c/src/ooGkClient.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/addons/ooh323c/src/ooGkClient.c?view=diff&rev=328427&r1=328426&r2=328427
==============================================================================
--- branches/1.8/addons/ooh323c/src/ooGkClient.c (original)
+++ branches/1.8/addons/ooh323c/src/ooGkClient.c Fri Jul 15 14:22:24 2011
@@ -1210,8 +1210,11 @@
 
       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));
@@ -1259,7 +1262,6 @@
          memFreePtr(&pGkClient->ctxt, pTimer->cbData);
          ooTimerDelete(&pGkClient->ctxt, &pGkClient->timerList, pTimer);
          OOTRACEDBGA1("Deleted RRQ Timer.\n");
-         break;
       }
    }
    pGkClient->state = GkClientRegistered;
@@ -1504,8 +1506,10 @@
 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);
@@ -1526,6 +1530,24 @@
       OOTRACEINFO1("Sending fresh RRQ - as unregistration request received\n");
       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)




More information about the asterisk-commits mailing list