diff options
Diffstat (limited to 'addons')
-rw-r--r-- | addons/chan_ooh323.c | 32 | ||||
-rw-r--r-- | addons/ooh323c/src/context.c | 1 | ||||
-rw-r--r-- | addons/ooh323c/src/memheap.c | 11 | ||||
-rw-r--r-- | addons/ooh323c/src/ooCalls.c | 3 | ||||
-rw-r--r-- | addons/ooh323c/src/ooCapability.c | 8 | ||||
-rw-r--r-- | addons/ooh323c/src/ooGkClient.c | 13 | ||||
-rw-r--r-- | addons/ooh323c/src/ooGkClient.h | 2 | ||||
-rw-r--r-- | addons/ooh323c/src/ooh245.c | 2 | ||||
-rw-r--r-- | addons/ooh323c/src/ooq931.c | 6 |
9 files changed, 39 insertions, 39 deletions
diff --git a/addons/chan_ooh323.c b/addons/chan_ooh323.c index ffdbf6721..4ab90be3a 100644 --- a/addons/chan_ooh323.c +++ b/addons/chan_ooh323.c @@ -355,6 +355,7 @@ static int gDTMFCodec = 101; static int gFAXdetect = FAXDETECT_CNG; static int gT38Support = T38_FAXGW; static char gGatekeeper[100]; +static char gRASIP[2+8*4+7]; /* Max for IPv6 addr */ static enum RasGatekeeperMode gRasGkMode = RasNoGatekeeper; static int gIsGateway = 0; @@ -1281,7 +1282,7 @@ static int ooh323_indicate(struct ast_channel *ast, int condition, const void *d struct ooh323_pvt *p = (struct ooh323_pvt *) ast_channel_tech_pvt(ast); char *callToken = (char *)NULL; - int res = -1; + int res = -1, rres; if (!p) return -1; @@ -1328,11 +1329,9 @@ static int ooh323_indicate(struct ast_channel *ast, int condition, const void *d case AST_CONTROL_PROGRESS: if (ast_channel_state(ast) != AST_STATE_UP) { if (!p->progsent) { + rres = ooManualProgress(callToken); if (gH323Debug) { - ast_debug(1, "Sending manual progress for %s, res = %u\n", callToken, - ooManualProgress(callToken)); - } else { - ooManualProgress(callToken); + ast_debug(1, "Sending manual progress for %s, res = %u\n", callToken, rres); } p->progsent = 1; } @@ -1341,12 +1340,9 @@ static int ooh323_indicate(struct ast_channel *ast, int condition, const void *d case AST_CONTROL_RINGING: if (ast_channel_state(ast) == AST_STATE_RING || ast_channel_state(ast) == AST_STATE_RINGING) { if (!p->alertsent) { + rres = ooManualRingback(callToken); if (gH323Debug) { - ast_debug(1, "Sending manual ringback for %s, res = %u\n", - callToken, - ooManualRingback(callToken)); - } else { - ooManualRingback(callToken); + ast_debug(1, "Sending manual ringback for %s, res = %u\n", callToken, rres); } p->alertsent = 1; } @@ -2726,7 +2722,7 @@ static int ooh323_do_reload(void) if (gRasGkMode == RasUseSpecificGatekeeper || gRasGkMode == RasDiscoverGatekeeper) { ooGkClientInit(gRasGkMode, (gRasGkMode == RasUseSpecificGatekeeper) ? - gGatekeeper : 0, 0); + gGatekeeper : 0, gRASIP, 0); ooGkClientStart(gH323ep.gkClient); } @@ -2869,6 +2865,7 @@ int reload_config(int reload) gTRCLVL = OOTRCLVLERR; gRasGkMode = RasNoGatekeeper; gGatekeeper[0] = '\0'; + gRASIP[0] = '\0'; gRTPTimeout = 60; gNat = FALSE; gRTDRInterval = 0; @@ -3029,6 +3026,9 @@ int reload_config(int reload) gRasGkMode = RasUseSpecificGatekeeper; ast_copy_string(gGatekeeper, v->value, sizeof(gGatekeeper)); } + } else if (!strcasecmp(v->name, "localras")) { + ast_copy_string(gRASIP, v->value, sizeof(gRASIP)); + ast_verb(3, " == Setting RAS IP to %s\n", gRASIP); } else if (!strcasecmp(v->name, "logfile")) { ast_copy_string(gLogFile, v->value, sizeof(gLogFile)); } else if (!strcasecmp(v->name, "context")) { @@ -3924,9 +3924,9 @@ static int load_module(void) /* Gatekeeper */ if (gRasGkMode == RasUseSpecificGatekeeper) - ooGkClientInit(gRasGkMode, gGatekeeper, 0); + ooGkClientInit(gRasGkMode, gGatekeeper, gRASIP, 0); else if (gRasGkMode == RasDiscoverGatekeeper) - ooGkClientInit(gRasGkMode, 0, 0); + ooGkClientInit(gRasGkMode, 0, gRASIP, 0); /* Register callbacks */ ooH323EpSetH323Callbacks(h323Callbacks); @@ -4013,7 +4013,7 @@ static void *do_monitor(void *data) ooGkClientDestroy(); ast_verb(0, "Restart stopped gatekeeper client\n"); ooGkClientInit(gRasGkMode, (gRasGkMode == RasUseSpecificGatekeeper) ? - gGatekeeper : 0, 0); + gGatekeeper : 0, gRASIP, 0); ooGkClientStart(gH323ep.gkClient); } @@ -5053,9 +5053,7 @@ struct ast_frame *ooh323_rtp_read(struct ast_channel *ast, struct ooh323_pvt *p) ast_log(LOG_NOTICE, "Failed to async goto '%s' into fax of '%s'\n", ast_channel_name(p->owner),target_context); } p->faxdetected = 1; - if (dfr) { - ast_frfree(dfr); - } + ast_frfree(dfr); return &ast_null_frame; } } diff --git a/addons/ooh323c/src/context.c b/addons/ooh323c/src/context.c index bc3db4387..c1e2003a2 100644 --- a/addons/ooh323c/src/context.c +++ b/addons/ooh323c/src/context.c @@ -164,6 +164,7 @@ OOCTXT* newContext () /* ASN1CRTFREE0 (pctxt); */ ast_free(pctxt); pctxt = 0; + return (pctxt); } pctxt->flags |= ASN1DYNCTXT; } diff --git a/addons/ooh323c/src/memheap.c b/addons/ooh323c/src/memheap.c index 4bcbd7a3d..4020261bb 100644 --- a/addons/ooh323c/src/memheap.c +++ b/addons/ooh323c/src/memheap.c @@ -623,7 +623,7 @@ void memHeapFreePtr (void** ppvMemHeap, void* mem_p) } } } - if (!ISLAST (pElem) && ISFREE (GETNEXT (pElem))) { + if (pElem && !ISLAST (pElem) && ISFREE (GETNEXT (pElem))) { OSMemElemDescr* nextelem_p = GETNEXT (pElem); /* +1 because the OSMemElemDescr has size ONE unit (8 bytes) */ @@ -638,7 +638,7 @@ void memHeapFreePtr (void** ppvMemHeap, void* mem_p) } /* correct the prevOff field of next element */ - if (!ISLAST (pElem)) { + if (pElem && !ISLAST (pElem)) { OSMemElemDescr* nextelem_p = GETNEXT (pElem); pElem_prevOff (nextelem_p) = QOFFSETOF (nextelem_p, pElem); } @@ -686,7 +686,7 @@ static void initNewFreeElement (OSMemBlk* pMemBlk, } pNextElem = GETNEXT (pNewElem); - if (ISFREE (pNextElem)) { + if (pNextElem && ISFREE (pNextElem)) { /* if the next elem is free, then unite them together */ @@ -820,7 +820,7 @@ void* memHeapRealloc (void** ppvMemHeap, void* mem_p, int nbytes_) /* look for free element after pElem */ pNextElem = GETNEXT (pElem); - if (ISFREE (pNextElem)) { + if (pNextElem && ISFREE (pNextElem)) { /* +1 'cos sizeof (OSMemElemDescr) == 1 unit */ sumSize += pElem_nunits (pNextElem) + 1; freeMem++; @@ -1062,7 +1062,7 @@ void memHeapAddRef (void** ppvMemHeap) void memHeapRelease (void** ppvMemHeap) { OSMemHeap** ppMemHeap = (OSMemHeap**)ppvMemHeap; - OSMemHeap* pMemHeap = *ppMemHeap; + OSMemHeap* pMemHeap; if (ppMemHeap != 0 && *ppMemHeap != 0 && --(*ppMemHeap)->refCnt == 0) { OSMemLink* pMemLink, *pMemLink2; @@ -1080,6 +1080,7 @@ void memHeapRelease (void** ppvMemHeap) } if ((*ppMemHeap)->flags & RT_MH_FREEHEAPDESC) { + pMemHeap = *ppMemHeap; ast_mutex_destroy(&pMemHeap->pLock); ast_free(*ppMemHeap); } diff --git a/addons/ooh323c/src/ooCalls.c b/addons/ooh323c/src/ooCalls.c index 3097c6d28..15ab3258f 100644 --- a/addons/ooh323c/src/ooCalls.c +++ b/addons/ooh323c/src/ooCalls.c @@ -805,8 +805,7 @@ int ooAddMediaInfo(OOH323CallData *call, OOMediaInfo mediaInfo) if(!call) { - OOTRACEERR3("Error:Invalid 'call' param for ooAddMediaInfo.(%s, %s)\n", - call->callType, call->callToken); + OOTRACEERR1("Error:Invalid 'call' param for ooAddMediaInfo.\n"); return OO_FAILED; } newMediaInfo = (OOMediaInfo*) memAlloc(call->pctxt, sizeof(OOMediaInfo)); diff --git a/addons/ooh323c/src/ooCapability.c b/addons/ooh323c/src/ooCapability.c index 731478346..0796c46bf 100644 --- a/addons/ooh323c/src/ooCapability.c +++ b/addons/ooh323c/src/ooCapability.c @@ -62,8 +62,6 @@ int ooCapabilityEnableDTMFCISCO /*Dynamic RTP payload type range is from 96 - 127 */ if(dynamicRTPPayloadType >= 96 && dynamicRTPPayloadType <= 127) gcDynamicRTPPayloadType = dynamicRTPPayloadType; - else - call->dtmfcodec = dynamicRTPPayloadType; } else{ call->dtmfmode |= OO_CAP_DTMF_CISCO; @@ -623,8 +621,7 @@ int ooCapabilityAddT38Capability else pctxt = call->pctxt; epCap = (ooH323EpCapability*)memAllocZ(pctxt, sizeof(ooH323EpCapability)); - params = (OOCapParams*) memAlloc(pctxt, sizeof(OOCapParams)); - memset(params, 0 , sizeof(OOCapParams)); + params = (OOCapParams*) memAllocZ(pctxt, sizeof(OOCapParams)); if(!epCap || !params) { OOTRACEERR1("ERROR: Memory - ooCapabilityAddT38Capability - " @@ -808,8 +805,7 @@ void* ooCapabilityCreateDTMFCapability(int cap, int dtmfcodec, OOCTXT *pctxt) } memset(pATECap, 0, sizeof(H245AudioTelephonyEventCapability)); pATECap->dynamicRTPPayloadType = dtmfcodec; - events = (char*)memAlloc(pctxt, strlen("0-16")+1); - memset(events, 0, strlen("0-16")+1); + events = (char*)memAllocZ(pctxt, strlen("0-16")+1); if(!events) { OOTRACEERR1("Error:Memory - ooCapabilityCreateDTMFCapability - events\n"); diff --git a/addons/ooh323c/src/ooGkClient.c b/addons/ooh323c/src/ooGkClient.c index a307f4eef..5ec33eef9 100644 --- a/addons/ooh323c/src/ooGkClient.c +++ b/addons/ooh323c/src/ooGkClient.c @@ -49,7 +49,7 @@ static ASN1OBJID gProtocolID = { }; int ooGkClientInit(enum RasGatekeeperMode eGkMode, - char *szGkAddr, int iGkPort ) + char *szGkAddr, char *szRasAddr, int iGkPort ) { ooGkClient *pGkClient=NULL; OOInterface *cur=NULL; @@ -69,7 +69,11 @@ int ooGkClientInit(enum RasGatekeeperMode eGkMode, pGkClient->rrqRetries = 0; pGkClient->grqRetries = 0; - strcpy(pGkClient->localRASIP, gH323ep.signallingIP); + if (szRasAddr && *szRasAddr) { + strcpy(pGkClient->localRASIP, szRasAddr); + } else { + strcpy(pGkClient->localRASIP, gH323ep.signallingIP); + } #ifndef _WIN32 if(!strcmp(pGkClient->localRASIP, "0.0.0.0") || !strcmp(pGkClient->localRASIP, "127.0.0.1")) @@ -90,7 +94,6 @@ int ooGkClientInit(enum RasGatekeeperMode eGkMode, } if(cur) { - OOTRACEINFO2("Using local RAS Ip address %s\n", cur->addr); strcpy(pGkClient->localRASIP, cur->addr); } else{ @@ -98,6 +101,7 @@ int ooGkClientInit(enum RasGatekeeperMode eGkMode, return OO_FAILED; } } + OOTRACEINFO2("Using local RAS Ip address %s\n", pGkClient->localRASIP); #endif if(OO_OK != ooGkClientSetGkMode(pGkClient, eGkMode, szGkAddr, iGkPort)) { @@ -2332,9 +2336,8 @@ int ooGkClientSendIRR pIRR->m.perCallInfoPresent = TRUE; perCallInfo = - (H225InfoRequestResponse_perCallInfo_element *)memAlloc(pctxt, + (H225InfoRequestResponse_perCallInfo_element *)memAllocZ(pctxt, sizeof(H225InfoRequestResponse_perCallInfo_element)); - memset(perCallInfo, 0, sizeof(H225InfoRequestResponse_perCallInfo_element)); if(!perCallInfo) { diff --git a/addons/ooh323c/src/ooGkClient.h b/addons/ooh323c/src/ooGkClient.h index 017380b5f..e529b4a98 100644 --- a/addons/ooh323c/src/ooGkClient.h +++ b/addons/ooh323c/src/ooGkClient.h @@ -223,7 +223,7 @@ struct OOH323CallData; * */ EXTERN int ooGkClientInit - (enum RasGatekeeperMode eGkMode, char *szGkAddr, int iGkPort ); + (enum RasGatekeeperMode eGkMode, char *szGkAddr, char *szRasAddr, int iGkPort ); /** * This function is used to print the gatekeeper client configuration diff --git a/addons/ooh323c/src/ooh245.c b/addons/ooh323c/src/ooh245.c index adff91790..fe8ff28e0 100644 --- a/addons/ooh323c/src/ooh245.c +++ b/addons/ooh323c/src/ooh245.c @@ -356,7 +356,6 @@ int ooSendTermCapMsg(OOH323CallData *call) /* pctxt = &gH323ep.msgctxt; */ pctxt = call->msgctxt; ph245msg->msgType = OOTerminalCapabilitySet; - memset(request, 0, sizeof(H245RequestMessage)); if(request == NULL) { OOTRACEERR3("ERROR: No memory allocated for request message (%s, %s)\n", @@ -364,6 +363,7 @@ int ooSendTermCapMsg(OOH323CallData *call) return OO_FAILED; } + memset(request, 0, sizeof(H245RequestMessage)); request->t = T_H245RequestMessage_terminalCapabilitySet; request->u.terminalCapabilitySet = (H245TerminalCapabilitySet*) memAlloc(pctxt, sizeof(H245TerminalCapabilitySet)); diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c index 1ca361c2c..01a8e4aaf 100644 --- a/addons/ooh323c/src/ooq931.c +++ b/addons/ooh323c/src/ooq931.c @@ -2439,8 +2439,10 @@ int ooH323HandleCallFwdRequest(OOH323CallData *call) alias = call->pCallFwdData->aliases; while(alias) { - pNewAlias = (ooAliases*) memAlloc(pctxt, sizeof(ooAliases)); - pNewAlias->value = (char*) memAlloc(pctxt, strlen(alias->value)+1); + pNewAlias = (ooAliases*) memAllocZ(pctxt, sizeof(ooAliases)); + if (pNewAlias) { + pNewAlias->value = (char*) memAllocZ(pctxt, strlen(alias->value)+1); + } if(!pNewAlias || !pNewAlias->value) { OOTRACEERR3("Error:Memory - ooH323HandleCallFwdRequest - " |