diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 4239a28..c42acf8 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -748,7 +748,7 @@ failure_route[INTERNAL_FAULT] $sht(redirects=>$var(redirect)) = $T_rpl($hdr(X-Redirect-Server)); xlog("L_INFO", "$ci|log|stored redirect mapping $var(redirect) to $T_rpl($hdr(X-Redirect-Server))\n"); } - route(DISPATCHER_REDIRECT); + route(INTERNAL_REDIRECT); } else if (!t_check_status("407") && $avp(AVP_REDIRECT_KEY) != $null && $sht(redirects=>$avp(AVP_REDIRECT_KEY)) != $null @@ -790,6 +790,26 @@ failure_route[INTERNAL_FAULT] xlog("L_INFO", "$ci|pass|$si:$sp\n"); } + +route[INTERNAL_REDIRECT] +{ + $var(ds_group) = 1; + $var(contact_uri) = $(ct{tobody.user}) + "@" + $(ct{tobody.host}); + $var(redirect) = @from.uri.user + "@" + @from.uri.host + "->" + + @ruri.user + "@" + @ruri.host; + if ($sht(redirects=>$var(redirect)) != $null) { + $var(prefered_route) = $sht(redirects=>$var(redirect)); + xlog("L_INFO", "$ci|log|found redirect for $var(redirect) : $var(prefered_route)\n"); + $du = $var(prefered_route); + $avp(AVP_REDIRECT_KEY) = $var(redirect); + t_on_reply("INTERNAL_REPLY"); + t_on_failure("INTERNAL_FAULT"); + t_set_fr(0, 1000); + t_relay(); + exit(); + } +} + onsend_route { if (isflagset(FLAG_ASSOCIATE_USER)) { $var(contact_uri) = $(ct{tobody.user}) + "@" + $(ct{tobody.host}); diff --git a/kamailio/dispatcher-role.cfg b/kamailio/dispatcher-role.cfg index 68d2670..a28f34e 100644 --- a/kamailio/dispatcher-role.cfg +++ b/kamailio/dispatcher-role.cfg @@ -112,22 +112,6 @@ route[DISPATCHER_FIND_ROUTES] } } -route[DISPATCHER_REDIRECT] -{ - $var(ds_group) = 1; - $var(contact_uri) = $(ct{tobody.user}) + "@" + $(ct{tobody.host}); - $var(redirect) = @from.uri.user + "@" + @from.uri.host + "->" - + @ruri.user + "@" + @ruri.host; - if ($sht(redirects=>$var(redirect)) != $null) { - $var(prefered_route) = $sht(redirects=>$var(redirect)); - xlog("L_INFO", "$ci|log|found redirect for $var(redirect) : $var(prefered_route)\n"); - $du = $var(prefered_route); - $avp(AVP_REDIRECT_KEY) = $var(redirect); - route(EXTERNAL_TO_INTERNAL_RELAY); - exit(); - } -} - route[DISPATCHER_REORDER_ROUTES] { $var(i) = 0;