[Serusers] loose routing problem
Klaus Darilion
klaus.mailinglists at pernau.at
Wed Feb 25 18:56:46 CET 2004
I'm still confused. I try to write it down in my own words as far as I
understand it and hope that somebody will confirm or correct my statements:
So, loose_route does the rewritting of the req-URI (strict routing) and
removing of route headers if there are Route: headers in the request.
After that, the request should be routable by t_relay.
The loose_route function will rewrite the req-URI of "strict_routing"
messages. So the if(uri==myself) statement shouldn't be TRUE anymore, or
does this statement checks the original req-URI?
What is the reason why the BYE message from xlite (loose route) does not
trigger the execution of the (loose_route()){...} block. This would be
nice, so I could do the security checks before forwarding to the PSTN
gateway for both UAs at the same place. Otherwise I would have to do it
2 times (1x for Messenger in the loose_route{ } block, and 1x for xlite
after the loose_route{ } block.
regards,
klaus
Jan Janak wrote:
> On 25-02 17:26, Klaus Darilion wrote:
>
>>Hi!
>>
>>Once again I'm stucked in the loose routing topic, maybe some can answer
>>my question!
>>
>>I have ser configured to use RR. At the top of my ser.cfg I have:
>>
>> # loose-route processing
>> log(1, "check loose_route ...");
>> if (loose_route()) {
>> log(1, "loose_route processing, finished routing!\n");
>> t_relay();
>> break;
>> };
>> log(1, "no loose_route processing\n");
>>
>> ...
>>
>>Client A is xlite, which is a loose router, and Client B is Windows
>>Messenger 4.7, which is a strict router. One client calls the other
>>client, which accepts the call. Then the client hangs up.
>>
>>If client A hangs up (xlite, loose router) the loose_route(){...} block
>>will not be processed and the BYE is handled by the following routing
>>logic. If client B (strict router) hangs up, the loose_route(){...}
>>block will be executed.
>>
>>So, why is the request from xlite (loose router) not treated in the
>>loose_route block?
>>
>>IMHO, I would suggest that both requests (loose and strict) should be
>>handled be the loose_route block. Also RFC3261 (16.4) says that "strict
>>router" request should be transformed into a loose routing request
>>(writing the last Route header field into the req-URI and remove this
>>route header field) and than be handled like all other requests.
>
>
> First of all loose routing or strict routing (depends on the Route
> header fields) is performed even if loose_route function returns 0.
>
> There are some situations in which the message will have the IP
> address of the server in the Request-URI and the message, in fact,
> will be routed elsewhere (to the IP in the topmost Route header
> field).
>
> In this case subsequent if (uri==myself) would match which is wrong.
> Therefore loose_route will return 1 in this situation. Note well that
> inside the if (loose_route()) condition the message will be not sent
> to the host from Request-URI (!).
>
> loose_route function is RFC3261 compliant, it performs both loose and
> strict routing, depending on the routeset.
>
> Please speak up if I did not explain it clearly enough and I will try to
> make some examples. I am aware that this is hard to understand but you
> should understand it well otherwise you might introduce some security
> holes to your config (especially when routing to a PSTN gateway).
>
> Jan.
>
>
More information about the sr-users
mailing list