Hello and thank you for the reply.

 

The thing is that in register block I use fix_nated_register but when SER is sending back the 200 OK reply the routeblock for replies uses fix_nated_contact  (I took this out of the getting started  05a configuration for NAT handling).

 

 

 

route[2] {

 

  # -----------------------------------------------------------------

  # REGISTER Message Handler

  # ----------------------------------------------------------------

   log (1,"route[2]:Register detected \n");

  sl_send_reply("100", "Trying");

 

  if (!search("^Contact:[ ]*\*") && client_nat_test("7")) {

     log (1,"route[2]:Caller is nated \n");

    setflag(6);

    fix_nated_register();

    force_rport();

  };

 

  if (!www_authorize("","subscriber")) {

    log (1,"route[2]:Requesting credentials \n");

    www_challenge("","0");

    break;

  };

 

  if (!check_to()) {

    sl_send_reply("401", "Unauthorized");

    break;

  };

 

  consume_credentials();

 

  if (!save("location")) {

    sl_reply_error();

  };

}

 

 

 

onreply_route[1] {

 

  log (1,"onreply route\n");

  if ((isflagset(6) || isflagset(7)) && (status=~"(180)|(183)|2[0-9][0-9]")) {

 

    if (!search("^Content-Length:[ ]*0")) {

     

     log (1,"onreply route:using media proxy\n");

     use_media_proxy();

    };

  };

 

  if (client_nat_test("1")) {

    log (1,"onreply route:fixing nat contact\n");

   fix_nated_contact();

  };

 

 

 

KM


From: Greger V. Teigre [mailto:greger@teigre.com]
Sent: Wednesday, June 28, 2006 12:20 PM
To: Kyriakos
Cc: serusers@lists.iptel.org
Subject: Re: [Serusers] 2 questions regarding user location

 



Kyriakos wrote:

Hi,

   I have two questions regarding  user location.

 

1) Is there a way of getting the user location info for manipulating it in ser.cfg ? Something like lookup but without rewriting anything. Basically what I want to do is check if the caller and the caller are NATed and belong to a certain same network then I should not use media proxy. The criterion for the same network would be that both sides are originating from the same  public ip.  Thus I would have to retrieve the “received” field value for the calee  and compare it with the ip contained in the contact header field of the caller in the INVITE .    Perhaps there is also another way to do this?

Not that I know of. However, cvs head has a new type of route where you can access the actual destination ip and port.

 

2) What happens when I have multiple phones registered under one user? How lookup(location) works when I have more than one ips in location table for the user? During tests I had a UA  behind NAT  registering to SER with an ip assigned from the dhcp. After a while I had the UA assigned a different ip from the dhcp and the Register on SER under the same user name. The problem was that during registration SER would respond back to the UA for requesting authorisation credentials but when it was time to send the 200 OK message for registration , it would send it only to the previous location of the UA and not the one it sent the REGISTER message from with of course failure to register because UA would not get the OK from SER. I noticed that in Contact header of the 200 message there were more than one return ips (the old one and the new one), Of course as soon as the old location timed out the registration would go ok.

 

This has nothing to do with how location works. A new REGISTER should not NOT hit lookup(location), so you have an error in your script. You should run fix_nated_register() on the message. By default, SER will respond to the rcvd address and not Contact if they are different.
g-)

 

 

 

Thanks

KM

 

 

 

 



 
_______________________________________________
Serusers mailing list
Serusers@lists.iptel.org
http://lists.iptel.org/mailman/listinfo/serusers