[Serusers] loose_route behaviour, detecting single Route with myself

JF jfkavaka at gmail.com
Fri Jun 22 11:11:15 CEST 2007


Thanks Greger,

The problem is related to the fact that the Req-URI is a tel-URI.
I had to work around it in the script by not letting loose_route get
called when the URI is a tel URI.

In loose.c, loose_route() says (by looking at the log):
DBG("loose_route: RURI is NOT myself\n");
because Req-URI doesn't have a host part.

Then after_loose(_m, &puri, 1, 0) is called because the single
existing Route header has our SIP URI.
And then:
DBG("after_loose: Topmost route URI: '%.*s' is me\n", uri->len, ZSW(uri->s));
and
DBG("after_loose: No next URI found\n");
An since _ruri_myself == 0, return RR_DRIVEN;

IMO the fact that the Req-URI is a tel URI shouldn't make loose_route
return true in this case...

JF


On 6/21/07, Greger V. Teigre <greger at teigre.com> wrote:
> If there's a single Route header pointing to itself, then this is a good
> indication that a UA added a Route to your proxy as an outbound proxy.
> If SER correctly identities the uri as itself, it should AFAIK return false.
> Could you please turn on debugging and then look for loose_route and
> after_loose debug messages in the logs and post them?
> g-)
>
> JF wrote:
> > Hi all,
> >
> > When SER receives an INVITE with a single Route header pointing to
> > itself, it's supposed to delete it and process the message as if no
> > Route header was there in the first place. This is what RFC3261
> > mandates, right?
> >
> > But currently the loose_route function returns true to the script in
> > this case, just like when more Route headers are present.
> >
> > So I have some routing logic for when no Route headers are present,
> > and if I want to apply the same routing logic to the case when there
> > is a single Route header pointing to myself (naturally, as it's the
> > same as if no Route header was present), I currently have to replicate
> > the same routing logic inside the if (loose_route())...
> >
> > Or is there an other way? Do I have to develop my own module function
> > or use some regexp search from the script to detect if there are more
> > Routes besides myself before I call loose_route?
> >
> > The best would be to change loose_route to return false and just
> > remove the Route header pointing to myself when there are no more
> > Route headers in the message... what do you think?
> >
> > JF
> > _______________________________________________
> > Serusers mailing list
> > Serusers at lists.iptel.org
> > http://lists.iptel.org/mailman/listinfo/serusers
> >
> >
> >
>



More information about the sr-users mailing list