mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-12 15:45:18 +00:00
Added fast start and h.245 tunneling options per user and peer.
Added options for faststart/h.245 tunneling per user/peer, properly handle these and global options, correction of handling fs/tunneling fields in signalling responses (closes issue #17972) Reported by: salecha Patches: fs-tunnel-per-point-3.patch uploaded by may213 (license 454) Tested by: may213, salecha git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@291006 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -957,10 +957,8 @@ int ooHandleMasterSlave(OOH323CallData *call, void * pmsg,
|
||||
/*Since Cap exchange and MasterSlave Procedures are done */
|
||||
if(gH323ep.h323Callbacks.openLogicalChannels)
|
||||
gH323ep.h323Callbacks.openLogicalChannels(call);
|
||||
else{
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
}
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
#if 0
|
||||
if(!call->logicalChans){
|
||||
if(!gH323ep.h323Callbacks.openLogicalChannels)
|
||||
@@ -2114,10 +2112,8 @@ int ooOnReceivedTerminalCapabilitySetAck(OOH323CallData* call)
|
||||
{
|
||||
if(gH323ep.h323Callbacks.openLogicalChannels)
|
||||
gH323ep.h323Callbacks.openLogicalChannels(call);
|
||||
else{
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
}
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
#if 0
|
||||
if(!call->logicalChans){
|
||||
if(!gH323ep.h323Callbacks.openLogicalChannels)
|
||||
@@ -3141,10 +3137,8 @@ int ooOnReceivedTerminalCapabilitySet(OOH323CallData *call, H245Message *pmsg)
|
||||
|
||||
if(gH323ep.h323Callbacks.openLogicalChannels)
|
||||
gH323ep.h323Callbacks.openLogicalChannels(call);
|
||||
else{
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
}
|
||||
if(!ooGetTransmitLogicalChannel(call))
|
||||
ooOpenLogicalChannels(call);
|
||||
#if 0
|
||||
if(!call->logicalChans){
|
||||
if(!gH323ep.h323Callbacks.openLogicalChannels)
|
||||
|
@@ -751,9 +751,18 @@ int ooOnReceivedCallProceeding(OOH323CallData *call, Q931Message *q931Msg)
|
||||
|
||||
}
|
||||
|
||||
/* Retrieve the H.245 control channel address from the connect msg */
|
||||
/* Retrieve tunneling info/H.245 control channel address from the connect msg */
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
!q931Msg->userInfo->h323_uu_pdu.h245Tunneling) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
OOTRACEINFO3("Tunneling is disabled for call due to remote reject tunneling"
|
||||
" (%s, %s)\n", call->callType, call->callToken);
|
||||
}
|
||||
}
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
|
||||
OO_TESTFLAG (call->flags, OO_M_TUNNELING) &&
|
||||
callProceeding->m.h245AddressPresent) {
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Using Tunneling for H.245 messages (%s, %s)\n",
|
||||
@@ -801,6 +810,7 @@ int ooOnReceivedCallProceeding(OOH323CallData *call, Q931Message *q931Msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return OO_OK;
|
||||
}
|
||||
|
||||
@@ -970,16 +980,27 @@ int ooOnReceivedAlerting(OOH323CallData *call, Q931Message *q931Msg)
|
||||
|
||||
}
|
||||
|
||||
/* Retrieve the H.245 control channel address from the connect msg */
|
||||
/* Retrieve tunneling info/H.245 control channel address from the connect msg */
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
!q931Msg->userInfo->h323_uu_pdu.h245Tunneling) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
OOTRACEINFO3("Tunneling is disabled for call due to remote reject tunneling"
|
||||
" (%s, %s)\n", call->callType, call->callToken);
|
||||
}
|
||||
}
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
|
||||
alerting->m.h245AddressPresent) {
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Giving preference to Tunneling (%s, %s)\n",
|
||||
call->callType, call->callToken);
|
||||
}
|
||||
else if(alerting->m.h245AddressPresent)
|
||||
{
|
||||
OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
if (alerting->m.h245AddressPresent)
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Giving preference to Tunneling (%s, %s)\n",
|
||||
call->callType, call->callToken);
|
||||
ret =ooSendTCSandMSD(call);
|
||||
if (ret != OO_OK)
|
||||
return ret;
|
||||
|
||||
} else if(alerting->m.h245AddressPresent) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING))
|
||||
{
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
@@ -1019,13 +1040,12 @@ int ooOnReceivedAlerting(OOH323CallData *call, Q931Message *q931Msg)
|
||||
return OO_FAILED;
|
||||
}
|
||||
}
|
||||
} else if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
ret =ooSendTCSandMSD(call);
|
||||
} else if (!call->pH245Channel && !call->h245listener) {
|
||||
ret = ooSendStartH245Facility(call);
|
||||
if (ret != OO_OK)
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
return OO_OK;
|
||||
}
|
||||
|
||||
@@ -1195,15 +1215,26 @@ int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg)
|
||||
}
|
||||
|
||||
/* Retrieve the H.245 control channel address from the connect msg */
|
||||
/* Retrieve tunneling info/H.245 control channel address from the connect msg */
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
!q931Msg->userInfo->h323_uu_pdu.h245Tunneling) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
OOTRACEINFO3("Tunneling is disabled for call due to remote reject tunneling"
|
||||
" (%s, %s)\n", call->callType, call->callToken);
|
||||
}
|
||||
}
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
|
||||
progress->m.h245AddressPresent) {
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Giving preference to Tunneling (%s, %s)\n",
|
||||
call->callType, call->callToken);
|
||||
}
|
||||
else if(progress->m.h245AddressPresent)
|
||||
{
|
||||
OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
if (progress->m.h245AddressPresent)
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Giving preference to Tunneling (%s, %s)\n",
|
||||
call->callType, call->callToken);
|
||||
ret =ooSendTCSandMSD(call);
|
||||
if (ret != OO_OK)
|
||||
return ret;
|
||||
} else if(progress->m.h245AddressPresent) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING))
|
||||
{
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
@@ -1243,8 +1274,8 @@ int ooOnReceivedProgress(OOH323CallData *call, Q931Message *q931Msg)
|
||||
return OO_FAILED;
|
||||
}
|
||||
}
|
||||
} else if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
ret =ooSendTCSandMSD(call);
|
||||
} else if (!call->pH245Channel && !call->h245listener) {
|
||||
ret = ooSendStartH245Facility(call);
|
||||
if (ret != OO_OK)
|
||||
return ret;
|
||||
}
|
||||
@@ -1444,9 +1475,18 @@ int ooOnReceivedSignalConnect(OOH323CallData* call, Q931Message *q931Msg)
|
||||
OO_SETFLAG(call->flags, OO_M_FASTSTARTANSWERED);
|
||||
}
|
||||
|
||||
/* Retrieve the H.245 control channel address from the CONNECT msg */
|
||||
/* Retrieve tunneling info/H.245 control channel address from the connect msg */
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
!q931Msg->userInfo->h323_uu_pdu.h245Tunneling) {
|
||||
if (OO_TESTFLAG (call->flags, OO_M_TUNNELING)) {
|
||||
OO_CLRFLAG (call->flags, OO_M_TUNNELING);
|
||||
OOTRACEINFO3("Tunneling is disabled for call due to remote reject tunneling"
|
||||
" (%s, %s)\n", call->callType, call->callToken);
|
||||
}
|
||||
}
|
||||
if(q931Msg->userInfo->h323_uu_pdu.m.h245TunnelingPresent &&
|
||||
q931Msg->userInfo->h323_uu_pdu.h245Tunneling &&
|
||||
OO_TESTFLAG (call->flags, OO_M_TUNNELING) &&
|
||||
connect->m.h245AddressPresent) {
|
||||
OOTRACEINFO3("Tunneling and h245address provided."
|
||||
"Giving preference to Tunneling (%s, %s)\n",
|
||||
|
Reference in New Issue
Block a user