[svn-commits] may: trunk r255199 - in /trunk/addons: ./ ooh323c/src/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Sat Mar 27 18:51:18 CDT 2010


Author: may
Date: Sat Mar 27 18:51:13 2010
New Revision: 255199

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=255199
Log:
corrections in gk interface, small fixes in call clearing.


Modified:
    trunk/addons/chan_ooh323.c
    trunk/addons/ooh323c/src/ooCalls.c
    trunk/addons/ooh323c/src/ooGkClient.c
    trunk/addons/ooh323c/src/ooh323.c
    trunk/addons/ooh323c/src/ooh323.h
    trunk/addons/ooh323c/src/ooq931.c

Modified: trunk/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/chan_ooh323.c?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/chan_ooh323.c (original)
+++ trunk/addons/chan_ooh323.c Sat Mar 27 18:51:13 2010
@@ -609,6 +609,10 @@
 	if (dest) {
 		peer = find_peer(dest, port);
 	} else{
+		ast_mutex_lock(&iflock);
+		ast_mutex_unlock(&p->lock);
+		ooh323_destroy(p);
+		ast_mutex_unlock(&iflock);
 		ast_log(LOG_ERROR, "Destination format is not supported\n");
 		return NULL;
 	}
@@ -642,6 +646,15 @@
 		ast_copy_string(p->accountcode, peer->accountcode, sizeof(p->accountcode));
 		p->amaflags = peer->amaflags;
 	} else {
+		if (gRasGkMode ==  RasNoGatekeeper) {
+			/* no gk and no peer */
+			ast_log(LOG_ERROR, "Call to undefined peer %s", dest);
+			ast_mutex_lock(&iflock);
+			ast_mutex_unlock(&p->lock);
+			ooh323_destroy(p);
+			ast_mutex_unlock(&iflock);
+			return NULL;
+		}
 		p->dtmfmode = gDTMFMode;
 		p->dtmfcodec = gDTMFCodec;
 		p->t38support = gT38Support;
@@ -672,23 +685,22 @@
 		ast_mutex_lock(&iflock);
 		ooh323_destroy(p);
 		ast_mutex_unlock(&iflock);
-   } else {
-      ast_mutex_lock(&p->lock);
-      p->callToken = (char*)ast_malloc(AST_MAX_EXTENSION);
-      if(!p->callToken)
-      {
-       ast_mutex_unlock(&p->lock);
-       ast_mutex_lock(&iflock);
-       ooh323_destroy(p);
-       ast_mutex_unlock(&iflock);
-       ast_log(LOG_ERROR, "Failed to allocate memory for callToken\n");
-       return NULL;
-      }
-
-      ast_mutex_unlock(&p->lock);
-      ast_mutex_lock(&ooh323c_cmd_lock);
-      ooMakeCall(data, p->callToken, AST_MAX_EXTENSION, NULL);
-      ast_mutex_unlock(&ooh323c_cmd_lock);
+   	} else {
+      		ast_mutex_lock(&p->lock);
+      		p->callToken = (char*)ast_malloc(AST_MAX_EXTENSION);
+      		if(!p->callToken) {
+       			ast_mutex_unlock(&p->lock);
+       			ast_mutex_lock(&iflock);
+       			ooh323_destroy(p);
+       			ast_mutex_unlock(&iflock);
+       			ast_log(LOG_ERROR, "Failed to allocate memory for callToken\n");
+       			return NULL;
+      		}
+
+      		ast_mutex_unlock(&p->lock);
+      		ast_mutex_lock(&ooh323c_cmd_lock);
+      		ooMakeCall(data, p->callToken, AST_MAX_EXTENSION, NULL);
+      		ast_mutex_unlock(&ooh323c_cmd_lock);
 	}
 
 	restart_monitor();
@@ -955,17 +967,17 @@
 	else
 		ast_copy_string(destination, dest, sizeof(destination));
 
-   destination[sizeof(destination)-1]='\0';
-
-   opts.transfercap = ast->transfercapability;
-
-   for (i=0;i<480 && !isRunning(p->callToken);i++) usleep(12000);
-
-   if(OO_TESTFLAG(p->flags, H323_DISABLEGK)) {
-      res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, &opts);
-   } else {
-      res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, NULL);
-   }
+	destination[sizeof(destination)-1]='\0';
+
+	opts.transfercap = ast->transfercapability;
+
+	for (i=0;i<480 && !isRunning(p->callToken);i++) usleep(12000);
+
+	if(OO_TESTFLAG(p->flags, H323_DISABLEGK)) {
+		res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, &opts);
+	} else {
+		res = ooRunCall(destination, p->callToken, AST_MAX_EXTENSION, NULL);
+ 	}
 
 	ast_mutex_unlock(&p->lock);
 	if (res != OO_OK) {

Modified: trunk/addons/ooh323c/src/ooCalls.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/ooh323c/src/ooCalls.c?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/ooh323c/src/ooCalls.c (original)
+++ trunk/addons/ooh323c/src/ooCalls.c Sat Mar 27 18:51:13 2010
@@ -217,6 +217,11 @@
 
    if (call->callIdentifier.guid.numocts == 0) call->callState = OO_CALL_CLEARED;
 
+   if(!call->pH225Channel || call->pH225Channel->sock ==0)
+   {
+      call->callState = OO_CALL_CLEARED;
+   }
+
    if(call->callState == OO_CALL_CLEARED || call->callState == OO_CALL_CLEAR_RELEASESENT)
    {
       ooCleanCall(call); 
@@ -242,20 +247,14 @@
    }
 
 
-   if(!call->pH225Channel || call->pH225Channel->sock ==0)
-   {
-      call->callState = OO_CALL_CLEARED;
-   }
-   else{
-      if(!OO_TESTFLAG(call->flags, OO_M_RELEASE_BUILT))   
-      {
-         if(call->callState == OO_CALL_CLEAR || 
-            call->callState == OO_CALL_CLEAR_RELEASERECVD)
-         {
-            ooSendReleaseComplete(call);
-            OO_SETFLAG(call->flags, OO_M_RELEASE_BUILT);
-         }
-      }
+   if(!OO_TESTFLAG(call->flags, OO_M_RELEASE_BUILT))   
+   {
+     if(call->callState == OO_CALL_CLEAR || 
+        call->callState == OO_CALL_CLEAR_RELEASERECVD)
+     {
+        ooSendReleaseComplete(call);
+        OO_SETFLAG(call->flags, OO_M_RELEASE_BUILT);
+     }
    }
       
    return OO_OK;

Modified: trunk/addons/ooh323c/src/ooGkClient.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/ooh323c/src/ooGkClient.c?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/ooh323c/src/ooGkClient.c (original)
+++ trunk/addons/ooh323c/src/ooGkClient.c Sat Mar 27 18:51:13 2010
@@ -686,7 +686,7 @@
 
    pGkReq->m.endpointAliasPresent=TRUE;
    if(OO_OK != ooPopulateAliasList(&pGkClient->msgCtxt, gH323ep.aliases, 
-                                      &pGkReq->endpointAlias))
+                                      &pGkReq->endpointAlias, 0))
    {
       OOTRACEERR1("Error Failed to fill alias information for GRQ message\n");
       memReset(&pGkClient->msgCtxt);
@@ -1010,7 +1010,7 @@
 
    pRegReq->m.terminalAliasPresent=TRUE;
    if(OO_OK != ooPopulateAliasList(pctxt, gH323ep.aliases, 
-                                     &pRegReq->terminalAlias)) {
+                                     &pRegReq->terminalAlias, 0)) {
      OOTRACEERR1("Error filling alias for RRQ\n");
      memReset(pctxt); 
      pGkClient->state = GkClientFailed;
@@ -1457,7 +1457,7 @@
    if(aliases)
    {
       pUnregReq->m.endpointAliasPresent = TRUE;
-      ooPopulateAliasList(pctxt, aliases, &pUnregReq->endpointAlias);
+      ooPopulateAliasList(pctxt, aliases, &pUnregReq->endpointAlias, 0);
    }
 
   
@@ -1716,7 +1716,7 @@
    {
       pAdmReq->m.destinationInfoPresent = 1;
       if(OO_OK != ooPopulateAliasList(&pGkClient->msgCtxt, destAliases,
-                                      &pAdmReq->destinationInfo))
+                      &pAdmReq->destinationInfo, T_H225AliasAddress_dialedDigits))
       {
          OOTRACEERR1("Error:Failed to populate destination aliases - "
                     "ARQ message\n");
@@ -1731,7 +1731,7 @@
    if(srcAliases)
    {
       iRet = ooPopulateAliasList(&pGkClient->msgCtxt, srcAliases,
-                                                          &pAdmReq->srcInfo);
+                              &pAdmReq->srcInfo, 0);
       if(OO_OK != iRet)
       {
          OOTRACEERR1("Error:Failed to populate source aliases -ARQ message\n");
@@ -2027,7 +2027,7 @@
                 "(%s, %s)\n", pAdmissionReject->rejectReason.t, call->callType,
                  call->callToken);
    
-   call->callState = OO_CALL_CLEAR;
+   call->callState = OO_CALL_CLEARED;
 
    switch(pAdmissionReject->rejectReason.t)
    {
@@ -2204,10 +2204,10 @@
    if(srcAliases)
    {
       iRet = ooPopulateAliasList(&pGkClient->msgCtxt, srcAliases,
-                                                          &pIRR->endpointAlias);
+                             &pIRR->endpointAlias, T_H225AliasAddress_h323_ID);
       if(OO_OK != iRet)
       {
-         OOTRACEERR1("Error:Failed to populate source aliases -ARQ message\n");
+         OOTRACEERR1("Error:Failed to populate source aliases -IRR message\n");
          memReset(pctxt);
          pGkClient->state = GkClientFailed;
 	 ast_mutex_unlock(&pGkClient->Lock);

Modified: trunk/addons/ooh323c/src/ooh323.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/ooh323c/src/ooh323.c?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/ooh323c/src/ooh323.c (original)
+++ trunk/addons/ooh323c/src/ooh323.c Sat Mar 27 18:51:13 2010
@@ -2219,7 +2219,7 @@
    return OO_OK;
 }
 int ooPopulateAliasList(OOCTXT *pctxt, OOAliases *pAliases,
-                           H225_SeqOfH225AliasAddress *pAliasList )
+                           H225_SeqOfH225AliasAddress *pAliasList, int pAliasType)
 {
    H225AliasAddress *pAliasEntry=NULL;
    OOAliases * pAlias=NULL;
@@ -2243,23 +2243,27 @@
             OOTRACEERR1("ERROR:Memory - ooPopulateAliasList - pAliasEntry\n");
             return OO_FAILED;
          }
+
+	 if (pAliasType && pAlias->type != pAliasType) {
+		pAlias = pAlias->next;
+		continue;
+	 }
          switch(pAlias->type)
          {
-	 /* Don't populate DialedDigits as alias they populate as prefixes
             case T_H225AliasAddress_dialedDigits:
-            pAliasEntry->t = T_H225AliasAddress_dialedDigits;
-            pAliasEntry->u.dialedDigits = (ASN1IA5String)memAlloc(pctxt,
+             pAliasEntry->t = T_H225AliasAddress_dialedDigits;
+             pAliasEntry->u.dialedDigits = (ASN1IA5String)memAlloc(pctxt,
                                                      strlen(pAlias->value)+1);
-            if(!pAliasEntry->u.dialedDigits)
-            {
+             if(!pAliasEntry->u.dialedDigits)
+             {
                OOTRACEERR1("ERROR:Memory - ooPopulateAliasList - "
                            "dialedDigits\n");
                memFreePtr(pctxt, pAliasEntry);
                return OO_FAILED;
-            }
-            strcpy(*(char**)&pAliasEntry->u.dialedDigits, pAlias->value);
-            bValid = TRUE;
-            break; */
+             }
+             strcpy(*(char**)&pAliasEntry->u.dialedDigits, pAlias->value);
+             bValid = TRUE;
+            break;
          case T_H225AliasAddress_h323_ID:
             pAliasEntry->t = T_H225AliasAddress_h323_ID;
             pAliasEntry->u.h323_ID.nchars = strlen(pAlias->value);

Modified: trunk/addons/ooh323c/src/ooh323.h
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/ooh323c/src/ooh323.h?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/ooh323c/src/ooh323.h (original)
+++ trunk/addons/ooh323c/src/ooh323.h Sat Mar 27 18:51:13 2010
@@ -136,7 +136,7 @@
  * @return           OO_OK, on success. OO_FAILED, otherwise. 
  */
 EXTERN int ooPopulateAliasList(OOCTXT *pctxt, OOAliases *pAliases,
-                               H225_SeqOfH225AliasAddress *pAliasList); 
+                               H225_SeqOfH225AliasAddress *pAliasList, int pAliasType); 
 
 /**
  * This function is used to search a particular alias in the alias list. The

Modified: trunk/addons/ooh323c/src/ooq931.c
URL: http://svnview.digium.com/svn/asterisk/trunk/addons/ooh323c/src/ooq931.c?view=diff&rev=255199&r1=255198&r2=255199
==============================================================================
--- trunk/addons/ooh323c/src/ooq931.c (original)
+++ trunk/addons/ooh323c/src/ooq931.c Sat Mar 27 18:51:13 2010
@@ -1383,10 +1383,10 @@
    alerting->m.alertingAddressPresent = TRUE;
    if(call->ourAliases)
       ret = ooPopulateAliasList(pctxt, call->ourAliases, 
-                                       &alerting->alertingAddress);
+                                       &alerting->alertingAddress, 0);
    else
       ret = ooPopulateAliasList(pctxt, gH323ep.aliases,
-                                       &alerting->alertingAddress);
+                                       &alerting->alertingAddress, 0);
    if(OO_OK != ret)
    {
       OOTRACEERR1("Error:Failed to populate alias list in Alert message\n");
@@ -1889,10 +1889,10 @@
    connect->m.connectedAddressPresent = TRUE;
    if(call->ourAliases)
       ret = ooPopulateAliasList(pctxt, call->ourAliases, 
-                                      &connect->connectedAddress);
+                                      &connect->connectedAddress, 0);
    else
       ret =  ooPopulateAliasList(pctxt, gH323ep.aliases, 
-                                        &connect->connectedAddress);
+                                        &connect->connectedAddress, 0);
    if(OO_OK != ret)
    {
       OOTRACEERR1("Error:Failed to populate alias list in Connect message\n");
@@ -2114,7 +2114,7 @@
 {
    OOCTXT *pctxt;
    OOH323CallData *call;
-   int ret=0, i=0, irand=0;
+   int ret=OO_OK, i=0, irand=0;
    char tmp[30]="\0";
    char *ip=NULL, *port = NULL;
    struct timeval tv;
@@ -2211,14 +2211,15 @@
 
    /* Send as H225 message to calling endpoint */
    ast_mutex_lock(&call->Lock);
-   if (call->callState < OO_CALL_CLEAR) 
+   if (call->callState < OO_CALL_CLEAR) {
     if ((ret = ooH323CallAdmitted (call)) != OO_OK) {
      ast_mutex_unlock(&call->Lock);
      return ret;
     }
+   } else ret = OO_FAILED;
    ast_mutex_unlock(&call->Lock);
 
-   return OO_OK;
+   return ret;
 }
 
 
@@ -2376,10 +2377,10 @@
       setup->m.sourceAddressPresent = TRUE;
       if(call->ourAliases)
          ret = ooPopulateAliasList(pctxt, call->ourAliases, 
-                                                       &setup->sourceAddress);
+                                                       &setup->sourceAddress, 0);
       else if(gH323ep.aliases)
          ret =  ooPopulateAliasList(pctxt, gH323ep.aliases, 
-                                                       &setup->sourceAddress);
+                                                       &setup->sourceAddress, 0);
       if(OO_OK != ret)
       {
          OOTRACEERR1("Error:Failed to populate alias list in SETUP message\n");
@@ -2404,7 +2405,7 @@
    {
       setup->m.destinationAddressPresent = TRUE;
       ret = ooPopulateAliasList(pctxt, call->remoteAliases, 
-                                                 &setup->destinationAddress);
+                                                 &setup->destinationAddress, 0);
       if(OO_OK != ret)
       {
          OOTRACEERR1("Error:Failed to populate destination alias list in SETUP"
@@ -2953,7 +2954,7 @@
    {    
       facility->m.alternativeAliasAddressPresent = TRUE;
       ret = ooPopulateAliasList(pctxt, call->pCallFwdData->aliases, 
-                                        &facility->alternativeAliasAddress);
+                                        &facility->alternativeAliasAddress, 0);
       if(ret != OO_OK)
       {
          OOTRACEERR3("Error:Failed to populate alternate aliases in "




More information about the svn-commits mailing list