[Serusers] LCR Backport Example For ser-0.9

Zeus Ng zeus.ng at isquare.com.au
Wed Mar 16 05:37:32 CET 2005


Well, legal or not, I can't say. I agree that we shall not touch the From,
To header. But, I try to fool myself to interpret it like this. The URI part
CANNOT be changed. Adding a tag should do little harm.

>From my understanding, you can't change record route header because SER use
it to do comparison. That's why I try to hack the From, To header. BUT, a
big BUT, don't use this method unless necessary. I've seem UA doing strict
on the rule and refuse to treat <xx at yy.com>;tag=1234 the same as
<xx at yy.com>;tag=1234;nat=yes and break the call. This is no fault to the UA.
It's just following the rule. However, it breaks my NAT handling for
re-INVITE in loose route which change media IP or port. For on hold call (IP
0.0.0.0) and re-INVITE that just change codec and not touching IP or port, I
just ignore them.



> -----Original Message-----
> From: Java Rockx [mailto:javarockx at gmail.com] 
> Sent: Wednesday, 16 March 2005 2:22 PM
> To: Zeus Ng
> Cc: serusers at lists.iptel.org
> Subject: Re: [Serusers] LCR Backport Example For ser-0.9
> 
> 
> I did not think altering the From: header in anyway was legal.
> 
> If it is not legal, could the ;nat=yes tag be added to a 
> Record-Route header?
> 
> Regards,
> Paul
> 
> 
> On Wed, 16 Mar 2005 14:18:46 +1100, Zeus Ng 
> <zeus.ng at isquare.com.au> wrote:
> > How about something like this.
> > 
> > With the initial INVITE,
> > 
> > ... Route processing ...
> >  if (caller is natted) {
> >     subst('/From:(.*)<(.*)>(.*)/From:\1<\2>;nat=yes\3/');
> >  }
> > 
> >  call nathelper or mediaproxy
> > 
> >  t_on_reply(nat reply route);
> >  t_relay();
> > 
> > In your reply route,
> > 
> >  if (callee is natted) {
> >     subst('/From:(.*)<(.*)>(.*)/From:\1<\2>;nat=yes\3/');
> >     call nathelper or mediaproxy
> >     ... Other processing ...
> > 
> > In your loose route,
> > 
> >  if (loose_route()) {
> >     if (method=="INVITE") {
> >       if (search("my_ser_detect_nat=yes") || (sdp in 
> private address  )) {
> >         call nathelper or mediaproxy
> >       }
> >     }
> >     on reply route
> >     t_relay()
> >  }
> > 
> > This does work for me most of the time. However, there are odd 
> > situation that this does not work.
> > 
> > Zeus
> > 
> > > -----Original Message-----
> > > From: Java Rockx [mailto:javarockx at gmail.com]
> > > Sent: Wednesday, 16 March 2005 12:01 PM
> > > To: Zeus Ng
> > > Cc: serusers at lists.iptel.org
> > > Subject: Re: [Serusers] LCR Backport Example For ser-0.9
> > >
> > >
> > > OK, but there are two sides of the conversation to test here for 
> > > NAT.
> > >
> > > Should nat_uac_test("8") be used in a reply_route or something? 
> > > (Actually this won't work because the re-INIVITE would 
> need to have 
> > > the c= field in the SDP rewritten if the destination is NATed).
> > >
> > > Anyhow, I mean if the original INVITE is from a NATed 
> client, then I 
> > > can use client_nat_test() but on the destination side, I 
> still need 
> > > to know if RTP proxying is needed.
> > >
> > > How do I do this?
> > >
> > > Regards,
> > > Paul
> > >
> > >
 




More information about the sr-users mailing list