Jan Janak wrote:
On 27-04-2005 15:59, reticent wrote:
I have several different UAC's that insist on doing strict routing and this is causing me some moderate issues as i can find no way to deal with the situation on SER.
What exactly is the isssue ? loose_routing is backwards compatible in vast majority of cases (it is not backwards compatible when user agents use pre-loaded route sets).
According to the rr module documentation: -- 1.4.2. strict_route() -- deprecated
If there are any Route HFs in the message, the function takes the first one, rewrites Request-URI with it's value and removes the first URI from Route HFs. --
This is all in relation to the message looping problem i reported previously where an ACK comes to ser with an RURI of SER and a route pointing to a nexthop, but instead of routing to the nexthop (loose_route does not match because the UAC does not properly use the Record-Route header, and generates a "Route" header using the information from the contact) SER sends the message to itself over and over again.
With the "strict_route()" function (according to the documentation for it), i should be able to detect this situation and route the message properly, the reason i mentioned the bit inside the source code was because it mentions "if you really need strict routing then you can replace the last zeroes with REQUEST_ROUTE to enable strict_route ...", adding REQUEST_ROUTE properly enables record_route_strict (which i do not need) but cannot (from what i can tell look at the code) enable strict_route because the function is simply gone.
According to the documentation that comes with the "rr" module there is supposed to be a function called "strict_route()" that does exactly what i want (move the value from the "Route:" header into the RURI), however the module does not provide this function. I'm curious if this functionality has been folded into loose_route or if it has simply dissappeared?
It has not dissappeared, it is in loose_route. The function can detect whether the next hop is strict or loose router and behave accordingly.
There is a section in the source code of rr_mod.c that allows you to enable the function "record_route_strict()" and it also talks about enabling "strict_route()" however i have had no success with it.
The function is called record_route_strict and it is a replacement for record_route. If you want SER to be a strict router, then replace the last zero in record_route_strict row of cmds[] in rr_mod.c with REQUEST_ROUTE. That would enable the function and you can use it in the script. In the script you then need to replace record_route with record_route_strict.
The difference is that record_route_strict will not add ;lr parameter to the Record-Route haader fields generated by SER.
Jan.