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.
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?
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.
tavis
On 27-04-2005 15:59, reticent wrote:
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).
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.
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.
Jan Janak wrote:
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.
Hi guys...
I have this piece of code in my record route section...
if (method=="INVITE" && client_nat_test("19")) { record_route_preset("some_internal_ip:5060;nat=yes"); # insert IP a$ } else if (method!="REGISTER") { record_route(); };
And the problem is...
It works perfect for... lan to lan client...
But it doesn't for lan to external side, If I change the "some_internal_ip:5060;nat=yes"
To
"some_externel_ip:5060;nat=yes"
It works for lan to external, but not lan to lan... how to turn around it ?
How is the best aprouch to have my re invites working ok, and how to be shure that my external clients will use my mediaproxy that is behind a nat also? It is a full port forward nat
Clients - SER - - Mediaproxy - router - internet < - >
Regards,
On 29-04-2005 14:15, reticent wrote:
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@iptel.org.
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.