RTP fixes for In-dialog requests

This commit is contained in:
herlesupreeth
2021-06-09 18:06:13 +02:00
parent 976e57f60a
commit 151be4db88
2 changed files with 51 additions and 37 deletions

View File

@@ -330,6 +330,7 @@ modparam("rr", "append_fromtag", 1)
modparam("rr", "add_username", 1)
# Take User from a custom AVP
modparam("rr", "custom_user_avp", "$avp(RR_CUSTOM_USER_AVP)")
modparam("rr", "force_send_socket", 1)
#!ifdef WITH_XMLRPC
# ----- xmlrpc params -----
@@ -443,6 +444,7 @@ modparam("ims_dialog", "dlg_flag", FLT_DIALOG)
modparam("ims_dialog", "timeout_avp", "$avp(DLG_TIMEOUT_AVP)")
modparam("ims_dialog", "detect_spirals", 0)
modparam("ims_dialog", "profiles_no_value", "orig ; term")
modparam("ims_dialog", "profiles_with_value", "caller ; callee")
#!ifdef DB_URL
#!ifdef DB_URL2
modparam("ims_dialog", "db_url", "cluster://cluster1")
@@ -759,11 +761,11 @@ route[REQINIT] {
send_reply("503", "Server shutting down");
exit;
}
#!ifdef WITH_IPSEC
if (!is_method("REGISTER")) {
ipsec_forward("location");
}
#!endif
# #!ifdef WITH_IPSEC
# if (!is_method("REGISTER")) {
# ipsec_forward("location");
# }
# #!endif
# Ignore Re-Transmits:
if (t_lookup_request()) {
exit;

View File

@@ -1,50 +1,50 @@
# RTPProxy control
route[ENC_SRTP] {
add_rr_param(";rm=1");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=force SRTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force SRTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
}
route[DEC_SRTP] {
add_rr_param(";rm=2");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=force SRTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force SRTP AVP";
}
route[ENC_WS_RTP] {
add_rr_param(";rm=3");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=force RTP AVPF";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force RTP AVPF";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
}
route[DEC_WS_RTP] {
add_rr_param(";rm=4");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=force RTP AVPF";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force RTP AVPF";
}
route[ENC_WSS_RTP] {
add_rr_param(";rm=5");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=force SRTP AVPF DTLS=passive";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force SRTP AVPF DTLS=passive";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
}
route[DEC_WSS_RTP] {
add_rr_param(";rm=6");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=force SRTP AVPF DTLS=passive";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force SRTP AVPF DTLS=passive";
}
route[ENC_RTP] {
add_rr_param(";rm=7");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=force RTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force RTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
}
route[DEC_RTP] {
add_rr_param(";rm=8");
$avp(rtpproxy_offer_flags) = "loop protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "loop protect replace-origin replace-session-connection ICE=force RTP AVP";
$avp(rtpproxy_offer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=remove RTP AVP";
$avp(rtpproxy_answer_flags) = "flags=loop-protect replace-origin replace-session-connection ICE=force RTP AVP";
}
# RTPProxy control
@@ -75,20 +75,20 @@ route[NATMANAGE] {
xlog("L_DBG", "No RM Param\n");
return;
}
if (is_request()) {
if (isflagset(FLT_MOBILE_ORIG) && is_direction("downstream")) {
xlog("L_DBG", "1) add_contact_alias();");
if (($fU != $null && is_in_profile("caller", "$fU")) ||
($tU != $null && is_in_profile("callee", "$tU"))) {
# In-Dialog Request from MO side
if (is_request() && isflagset(FLT_MOBILE_ORIG)) {
add_contact_alias();
} else if (!isflagset(FLT_MOBILE_ORIG) && is_direction("upstream")) {
xlog("L_DBG", "2) add_contact_alias();");
} else if (is_reply() && !isflagset(FLT_MOBILE_ORIG)) {
add_contact_alias();
}
} else {
if (!isflagset(FLT_MOBILE_ORIG) && is_direction("downstream")) {
xlog("L_DBG", "1) ADD_contact_alias();");
} else if (($fU != $null && is_in_profile("callee", "$fU")) ||
($tU != $null && is_in_profile("caller", "$tU"))) {
# In-Dialog Request from MT side
if (is_request() && !isflagset(FLT_MOBILE_ORIG)) {
add_contact_alias();
} else if (isflagset(FLT_MOBILE_ORIG) && is_direction("downstream")) {
xlog("L_DBG", "2) ADD_contact_alias();");
} else if (is_reply() && isflagset(FLT_MOBILE_ORIG)) {
add_contact_alias();
}
}
@@ -131,12 +131,22 @@ route[NATMANAGE] {
#!endif
if ((is_reply() && ($T_req($tt) != $null)) || (is_request() && has_totag())) {
# In-Dialog requests
# Requests originating from MO or MT
if (is_request() && isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
} else if (is_reply() && !isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
if (($fU != $null && is_in_profile("caller", "$fU")) ||
($tU != $null && is_in_profile("callee", "$tU"))) {
# In-Dialog Request from MO side
if (is_request() && isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
} else if (is_reply() && !isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
}
} else if (($fU != $null && is_in_profile("callee", "$fU")) ||
($tU != $null && is_in_profile("caller", "$tU"))) {
# In-Dialog Request from MT side
if (is_request() && !isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
} else if (is_reply() && isflagset(FLT_MOBILE_ORIG)) {
rtpengine_manage();
}
}
} else {
# Initial Requests
@@ -146,8 +156,10 @@ route[NATMANAGE] {
return;
if (is_request() && isflagset(FLT_MOBILE_ORIG)) {
set_dlg_profile("caller", "$fU");
rtpengine_manage($avp(rtpproxy_offer_flags));
} else if (is_reply() && !isflagset(FLT_MOBILE_ORIG)) {
set_dlg_profile("callee", "$tU");
rtpengine_manage($avp(rtpproxy_answer_flags));
}
}