I think the README needs some refurbishment. How about this? Corrections
welcome.
1.5.1. loose_route()
The function performs routing of SIP requests which contain a route set.
The name is a little bit confusing, as this function also routes
requests which are in the "strict router" format.
This function is usually used to route in-dialog requests (like ACK,
BYE, reINVITE). Nevertheless also out-of-dialog requests can have a
"pre-loaded route set" and my be routed with loose_route. It also takes
care of translating between strict-routers and loose-router.
The loose_route function analyzes the Route: headers in the requests. If
there is no Route: header, the function returns 0 and routing should be
done with normal lookup functions. If a Route: header is found, the
function returns 1 and behaves as described in section 16.12 of RFC
3261. There is only one exception: If the request is out-of-dialog (no
to-tag) and there is only one Route: header indicating the local proxy,
then the Route: header is removed and the function returns 0.
Make sure your loose_routing function can't be used by attackers to
bypass proxy authorization.
The loose_routing topic is very complex. See the RFC3261 for more
details (grep for "route set" is a good starting point in this
comprehensive RFC)
This function can be used from REQUEST_ROUTE
regards
klaus
Christian Schlatter wrote:
Quoting Gregoire <mlgg(a)hispeed.ch>ch>:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi!
I am wondering where I can find more information about the
loose_route() function. On Wiki, I can see that it is RFC 3261
compliant and understand what it's the difference between loose
routing and strict routing, but in my conf. file I have a test like:
if(loose_route()){...}
and I 'd like to know what kind of value this function can return or
when can it return something else than true?
To my knowledge, loose_route() returns a negative value in case of
invalid headers in the sip message or other "internal" errors. It
returns 1 (or TRUE) in case it finds a Route: header including the
proxy's domain. In this case, the function will also remove the proxy's
domain from the Route: header and sets the destination URI to the next
hop address found in the Route: header.
The function returns 0 (FALSE) if there is no Route: header present in
the message.
Also have a look at the source file /modules/rr/loose.c, in particular
functions loose_route() and after_loose().
Christian
Does someone have some information about that?
Thanks
Greg
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla -
http://enigmail.mozdev.org
iD8DBQFFZv/iI8gmGeMTr0sRAgg8AKCA9CGb6hI9FEhdE8BMm5nlnXDKkACgjZBA
NFrRWixi2BtEE6e2YrAfg9g=
=ucXk
-----END PGP SIGNATURE-----
_______________________________________________
Users mailing list
Users(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users
_______________________________________________
Users mailing list
Users(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users
--
Klaus Darilion
nic.at