On Thu, Sep 29, 2016 at 01:53:14PM +0530, Infinicalls Infinicalls wrote: > > You can either figure out which host was used to register by looking at > > the socket value in the location table (using sqlops/avp_db_query) and > > send the INVITE to the other host if socket doesn't contain a local > > ipadress (by simply setting $rd to the other host and setting $du to > > null) > > The socket value I get here is the internal IP only. For eg. > 10.0.0.4:5060. Can you tell me how do I get the static IP here? I am > behind NAT and use rtpproxy and advertised it.
In that case there is no direct way to get the external ip as far as I know. As far as location is concerned that information is lost. You might want to look into the Path module to store information about the REGISTER (you might have to fake a Path header before save from available info during the REGISTER). > >or just wait for a failure route (which adds a delay) to trigger > > and send the invite to the other host (again setting $du to null and $rd > > to the other host). > > # uncomment the following lines if you want to redirect the failed > # calls to a different new destination > ## if (t_check_status("486|408")) { > ## sethostport("MySecondIP:5061"); > ## append_branch(); > ## # do not set the missed call flag again > ## t_relay(); > ##} > > Is this sufficient? In my case, if calls are only sent to the second > IP, how do I add a mesh of servers (I have 5 of them now). Will that > add more delay time? Any idea? Thanks. It is the correct idea, but it might be a little bit fragile. There might be no response (in which case you get a local generated 408), but if a device is listening it might decide to send any 4/5/6xx code. You might want to take a look at you solution though. For example you might want to introduce edge proxies, clients connect with those directly, but they forward the requests to a (specific or loadbalanced) registrar (essentially the machines you have up and running now). These proxies insert Path information about themselves in any messages coming from the outside world (add_path_received()) , the registrar saves the Path info: modparam("registrar", "use_path", 1) modparam("registrar", "path_use_received", 1) Now any registrar looking at the shared location data knows which edge proxy to sent the request for the enduser to directly. _______________________________________________ SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users