diff options
Diffstat (limited to 'addons/ooh323c/src/ooq931.c')
-rw-r--r-- | addons/ooh323c/src/ooq931.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/addons/ooh323c/src/ooq931.c b/addons/ooh323c/src/ooq931.c index d0233f363..dddcf15ec 100644 --- a/addons/ooh323c/src/ooq931.c +++ b/addons/ooh323c/src/ooq931.c @@ -53,6 +53,7 @@ EXTERN int ooQ931Decode int offset, x; int rv = ASN_OK; char number[128]; + char *display = NULL; /* OOCTXT *pctxt = &gH323ep.msgctxt; */ OOCTXT *pctxt = call->msgctxt; @@ -164,9 +165,15 @@ EXTERN int ooQ931Decode } if(ie->discriminator == Q931DisplayIE) { - OOTRACEDBGB1(" Display IE = {\n"); - OOTRACEDBGB2(" %s\n", ie->data); - OOTRACEDBGB1(" }\n"); + if (!(display = memAllocZ(pctxt, ie->length + 1))) { + OOTRACEERR4("Can't alloc DisplayIE buffer for %n bytes, (%s, %s)\n", ie->length, + call->callType, call->callToken); + } else { + memcpy(display, ie->data,ie->length); + OOTRACEDBGB1(" Display IE = {\n"); + OOTRACEDBGB2(" %s\n", display); + OOTRACEDBGB1(" }\n"); + } } if(ie->discriminator == Q931KeypadIE) @@ -1451,7 +1458,9 @@ int ooSendAlerting(OOH323CallData *call) OOTRACEERR3("Error: Failed to enqueue Alerting message to outbound queue. (%s, %s)\n", call->callType, call->callToken); } - ooSendTCSandMSD(call); + if (call->h225version >= 4) { + ooSendTCSandMSD(call); + } memReset (call->msgctxt); return ret; @@ -1588,7 +1597,9 @@ int ooSendProgress(OOH323CallData *call) if (!OO_TESTFLAG(call->flags, OO_M_TUNNELING) && call->h245listener) ooSendStartH245Facility(call); - ooSendTCSandMSD(call); + if (call->h225version >= 4) { + ooSendTCSandMSD(call); + } memReset (call->msgctxt); return ret; @@ -1957,12 +1968,16 @@ int ooAcceptCall(OOH323CallData *call) } - /* Add h245 listener address. Do not add H245 listener address in case - of fast-start. */ + /* Add h245 listener address. */ + /* Do not add H245 listener address in case + of fast-start. why? */ + /* May 20110205 */ + /* Send h245 listener addr any case if H245 connection isn't established */ if (/* (!OO_TESTFLAG(call->flags, OO_M_FASTSTART) || call->remoteFastStartOLCs.count == 0) && */ !OO_TESTFLAG (call->flags, OO_M_TUNNELING) && - !call->h245listener && ooCreateH245Listener(call) == OO_OK) + ( (!call->h245listener && ooCreateH245Listener(call) == OO_OK) || + !call->pH245Channel)) { connect->m.h245AddressPresent = TRUE; connect->h245Address.t = T_H225TransportAddress_ipAddress; @@ -1997,6 +2012,7 @@ int ooAcceptCall(OOH323CallData *call) return OO_FAILED; } /* memReset(&gH323ep.msgctxt); */ + ooSendTCSandMSD(call); memReset(call->msgctxt); call->callState = OO_CALL_CONNECTED; @@ -2721,11 +2737,8 @@ int ooH323MakeCall_helper(OOH323CallData *call) /* For H.323 version 4 and higher, if fast connect, tunneling should be supported. + why? */ - if(OO_TESTFLAG(call->flags, OO_M_FASTSTART)) { - q931msg->userInfo->h323_uu_pdu.h245Tunneling = TRUE; - OO_SETFLAG(call->flags, OO_M_TUNNELING); - } OOTRACEDBGA3("Built SETUP message (%s, %s)\n", call->callType, call->callToken); |