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
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@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
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@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@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
Sorry, I'm typed wrong, not Via line but Route line :P
Regards,
Halomoan
On 9/12/07, Halomoan Chow halomoan@gmail.com 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@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@openser.org http://openser.org/cgi-bin/mailman/listinfo/users
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@voice-system.ro mailto:bogdan@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@openser.org <mailto:Users@openser.org> > http://openser.org/cgi-bin/mailman/listinfo/users >
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@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@voice-system.ro mailto:bogdan@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@openser.org <mailto:Users@openser.org> > http://openser.org/cgi-bin/mailman/listinfo/users >