|
|
@ -345,7 +345,7 @@ route |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
route(NAT_INITIAL_TEST); |
|
|
|
|
|
|
|
|
route(NAT_DETECT); |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
route(HANDLE_OPTIONS); |
|
|
route(HANDLE_OPTIONS); |
|
|
@ -548,11 +548,20 @@ route[HANDLE_IN_DIALOG_REQUESTS] |
|
|
|
|
|
|
|
|
if (is_method("INVITE")) { |
|
|
if (is_method("INVITE")) { |
|
|
setflag(FLAG_SESSION_PROGRESS); |
|
|
setflag(FLAG_SESSION_PROGRESS); |
|
|
# record_route(); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (loose_route()) { |
|
|
if (loose_route()) { |
|
|
|
|
|
|
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
|
|
|
if(!isdsturiset()) { |
|
|
|
|
|
handle_ruri_alias(); |
|
|
|
|
|
} |
|
|
|
|
|
if ( is_method("ACK") ) { |
|
|
|
|
|
# ACK is forwarded statelessly |
|
|
|
|
|
route(NAT_MANAGE); |
|
|
|
|
|
} |
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifdef ACCOUNTING_ROLE |
|
|
#!ifdef ACCOUNTING_ROLE |
|
|
if (is_method("BYE")) { |
|
|
if (is_method("BYE")) { |
|
|
setflag(FLAG_ACC); |
|
|
setflag(FLAG_ACC); |
|
|
@ -560,12 +569,6 @@ route[HANDLE_IN_DIALOG_REQUESTS] |
|
|
} |
|
|
} |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
|
|
|
if(!isdsturiset()) { |
|
|
|
|
|
handle_ruri_alias(); |
|
|
|
|
|
} |
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
|
|
|
|
xlog("L_INFO", "$ci|log|loose_route in-dialog message\n"); |
|
|
xlog("L_INFO", "$ci|log|loose_route in-dialog message\n"); |
|
|
# Called on in-dialog requests |
|
|
# Called on in-dialog requests |
|
|
# If the request in an Invite for on hold from external to internal, |
|
|
# If the request in an Invite for on hold from external to internal, |
|
|
@ -576,10 +579,10 @@ route[HANDLE_IN_DIALOG_REQUESTS] |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
# If the request in an Invite for t38 from internal, |
|
|
# If the request in an Invite for t38 from internal, |
|
|
# mark the request with FLAG_T38 |
|
|
|
|
|
|
|
|
# mark the request with FLT_T38 |
|
|
if (is_method("INVITE") && isflagset(FLAG_INTERNALLY_SOURCED) && sdp_with_media("image")) { |
|
|
if (is_method("INVITE") && isflagset(FLAG_INTERNALLY_SOURCED) && sdp_with_media("image")) { |
|
|
xlog("L_DEBUG", "$ci|log|T38 RE-INVITE\n"); |
|
|
xlog("L_DEBUG", "$ci|log|T38 RE-INVITE\n"); |
|
|
setflag(FLAG_T38); |
|
|
|
|
|
|
|
|
setflag(FLT_T38); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if ( is_method("NOTIFY") ) { |
|
|
if ( is_method("NOTIFY") ) { |
|
|
@ -646,12 +649,24 @@ route[PREPARE_INITIAL_REQUESTS] |
|
|
record_route(); |
|
|
record_route(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# Manage outgoing branches |
|
|
|
|
|
branch_route[MANAGE_BRANCH] { |
|
|
|
|
|
xlog("L_DEBUG", "$ci|branch|new branch [$T_branch_idx] to $ru\n"); |
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
|
|
|
route(NAT_MANAGE); |
|
|
|
|
|
#!endif |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
route[RELAY] |
|
|
route[RELAY] |
|
|
{ |
|
|
{ |
|
|
#!ifdef SIP_TRACE_ROLE |
|
|
#!ifdef SIP_TRACE_ROLE |
|
|
route(SEND_SIP_TRACE); |
|
|
route(SEND_SIP_TRACE); |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (is_method("INVITE|BYE|SUBSCRIBE|UPDATE")) { |
|
|
|
|
|
if(!t_is_set("branch_route")) t_on_branch("MANAGE_BRANCH"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (isflagset(FLAG_INTERNALLY_SOURCED)) { |
|
|
if (isflagset(FLAG_INTERNALLY_SOURCED)) { |
|
|
route(INTERNAL_TO_EXTERNAL_RELAY); |
|
|
route(INTERNAL_TO_EXTERNAL_RELAY); |
|
|
#!ifdef MESSAGE_ROLE |
|
|
#!ifdef MESSAGE_ROLE |
|
|
@ -717,12 +732,10 @@ onreply_route[EXTERNAL_REPLY] |
|
|
{ |
|
|
{ |
|
|
xlog("L_INFO", "$ci|log|external reply $T_reply_code\n"); |
|
|
xlog("L_INFO", "$ci|log|external reply $T_reply_code\n"); |
|
|
|
|
|
|
|
|
#!ifdef WEBSOCKETS_ROLE |
|
|
|
|
|
route(NAT_WEBSOCKETS_CORRECT); |
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
route(NAT_REPLY_TEST); |
|
|
|
|
|
|
|
|
if(status=~"[12][0-9][0-9]") { |
|
|
|
|
|
route(NAT_MANAGE); |
|
|
|
|
|
} |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifdef ACL_ROLE |
|
|
#!ifdef ACL_ROLE |
|
|
@ -748,12 +761,10 @@ onreply_route[INTERNAL_REPLY] |
|
|
xlog("L_INFO", "$ci|start|received internal reply $T_reply_code $T_reply_reason\n"); |
|
|
xlog("L_INFO", "$ci|start|received internal reply $T_reply_code $T_reply_reason\n"); |
|
|
xlog("L_INFO", "$ci|log|source $si:$sp\n"); |
|
|
xlog("L_INFO", "$ci|log|source $si:$sp\n"); |
|
|
|
|
|
|
|
|
#!ifdef WEBSOCKETS_ROLE |
|
|
|
|
|
route(NAT_WEBSOCKETS_CORRECT); |
|
|
|
|
|
#!endif |
|
|
|
|
|
|
|
|
|
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
#!ifdef NAT_TRAVERSAL_ROLE |
|
|
route(NAT_REPLY_TEST); |
|
|
|
|
|
|
|
|
if(status=~"[12][0-9][0-9]") { |
|
|
|
|
|
route(NAT_MANAGE); |
|
|
|
|
|
} |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifdef ACL_ROLE |
|
|
#!ifdef ACL_ROLE |
|
|
|