On 29-04-2005 14:15, reticent wrote:
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.
Could you send me SIP message dumps, including INVITE, 200 OK and the
ACK which does not work properly with SER ? Feel free to send it
privately to jan(a)iptel.org.
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.
It is not gone, it is included in loose_route. Loose_route performs
the same steps as strict_route if needed. I am still not sure I
understand the problem, SIP messages dumps would help.
Jan.
According to the documentation that comes with the
"ddddddddrr" 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.