[sr-dev] strict routing and sip spirals

Jasmin Schnatterbeck js at data-cmr.net
Thu Jan 29 00:35:34 CET 2015


Hi,

may there is a routing-issue in rr-module, that causes some problems
with sip-spirals:

If is_myself("$ru") is true (in-dialog), kamailio rewrites the $ru to
the $route_uri (strict routing). That is usually correct.

loose.c
944		if (is_myself(&_m->parsed_uri)) {
945			return after_strict(_m);

This includes the case if is_myself("$route_uri") is also true - but(!)
$route_uri and $ru can still be different, and this can be very
relevant. rfc3261 says:


16.4 Route Information Preprocessing

   The proxy MUST inspect the Request-URI of the request.  If the
   Request-URI of the request contains a value this proxy previously
   placed into a Record-Route header field (see Section 16.6 item 4),
   the proxy MUST replace the Request-URI in the request with the last
   value from the Route header field, and remove that value from the
   Route header field.  The proxy MUST then proceed as if it received
   this modified request.


It says " If the Request-URI of the request contains a value this proxy
previously placed into a Record-Route header field ". This means
$route_uri == $ru
Then - indeed - it does not matter to replace the $ru (even: does it
really change something?)

I do not see a sign to decide for strict routing instead of loose
routing, if (in-dialog) is_myself("$ru") AND is_myself("$route_uri") in
general, and especially not if $ru == $route_uri

Or is there any reason to process the request like it is now?

Cheers
Jasmin





More information about the sr-dev mailing list