[OpenSER-Users] record_route_preset("x.x.x.x:5060; nat=yes"); and search("^Route:.*; nat=yes")

Halomoan Chow halomoan at gmail.com
Fri Sep 14 11:09:29 CEST 2007


Hi Bodan
I understand your explaination for loose_route(). but you said it will
check all Route hdrs? I thought it should only check 1 line at a time,
so remove only the Route hdrs that belong to it, right?

I think to fully understand openser, you got to have a complete sample
message of SIP in different dialog/session and in different condition
:)

Halomoan

On 9/14/07, Bogdan-Andrei Iancu <bogdan at voice-system.ro> wrote:
> Hi Halomoan,
>
> loose_route() only marks the Route hdr to be deleted when the message is
> sent out (it does not actually delete the hdr). So, the search after
> loose_route() should work, but it look a bit broken to me, as it will
> check all the Route hdrs and not only the one belonging to the server.
>
> regards,
> bogdan
>
> Halomoan Chow wrote:
> > I copy and paste the logic example generated from sipwise below.
> > I can see for first request, it marked the sender is behind nat with
> > record_route(";nat=yes")
> >
> > In the loose route block, it tries to identify sender if they are
> > behind nat with search("^Route:.*;nat=yes").
> >
> > In one sip proxy architecture, after you enter loose_route() function,
> > the Via with ;nat has gone, right? and the search("^Route:.*;nat=yes")
> > test would always return false.
> > Please correct me if i'm wrong. Thank you.
> >
> >
> >         if(!is_method("REGISTER"))
> >         {
> >                 if(nat_uac_test("19"))
> >                 {
> >                         record_route(";nat=yes");
> >                 }
> >                 else
> >                 {
> >                         record_route();
> >                 }
> >         }
> >         if(is_method("CANCEL") || is_method("BYE"))
> >         {
> >                 end_media_session();
> >         }
> >
> >         if(loose_route())
> >         {
> >                 if(!has_totag())
> >                 {
> >
> >                         xlog("L_INFO", "Initial loose-routing rejected
> > - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
> >                         sl_send_reply("403", "Initial Loose-Routing
> > Rejected");
> >                         exit;
> >                 }
> >                 if(nat_uac_test("19") || search("^Route:.*;nat=yes"))
> >                 {
> >                         fix_nated_contact();
> >                         setbflag(6);
> >                 }
> >
> >                 route(3);
> >         }
> >
> >
> > On 9/12/07, *Bogdan-Andrei Iancu* <bogdan at voice-system.ro
> > <mailto:bogdan at voice-system.ro>> wrote:
> >
> >     Hi Halomoan,
> >
> >     Mainly because the NAT detection on SIP replied is very poor - you can
> >     check only if the contact address is a private one or not. The
> >     other nat
> >     test are not applicable for replies (but only for requests).
> >
> >     Anthow, when you process the request, you learn that the calee is
> >     behind
> >     NAT, so you can simple remember this (in RR) than detecting it
> >     each time
> >     when receiving a reply.
> >
> >     regards,
> >     bogdan
> >
> >     Halomoan Chow wrote:
> >     > Dear All
> >     >
> >     > I don't understand why in the Openser+MediaProxy i need
> >     > record_route_preset("x.x.x.x:5060;nat=yes"); and
> >     > search("^Route:.*;nat=yes")
> >     > What is the purpose while I can do client_nat_test to see if the
> >     > request is come from a nat-ed client.
> >     >
> >     > If I remove search("^Route:.*;nat=yes") from below statement, I
> >     can do
> >     > re-INVITE without any problem because it still have
> >     client_nat_test to
> >     > find out the nat in between.
> >     >
> >     > if (client_nat_test("3") || search("^Route:.*;nat=yes")) {
> >     >    setbflag(6);
> >     >    use_media_proxy();
> >     > };
> >     >
> >     >
> >     > Hope someone can give me a clue.
> >     >
> >     > Thank you.
> >     >
> >     > Regards,
> >     >
> >     > Halomoan
> >     >
> >     ------------------------------------------------------------------------
> >     >
> >     > _______________________________________________
> >     > Users mailing list
> >     > Users at openser.org <mailto:Users at openser.org>
> >     > http://openser.org/cgi-bin/mailman/listinfo/users
> >     >
> >
> >
>
>




More information about the Users mailing list