Hello Bogdan, Here is the code I used to check $(branch(socket)[N]):
if (lookup("location")) { set_count("$branch(uri)", "$var(brcnt)"); if ($var(brcnt) > 0) { # More than one contact - not possible to check socket data xlog("L_WARN", " R3 IN: Req.type=$rm R-URI=$ru Br.cnt=$var(brcnt) Sock[0]=$(branch(socket)[0]) Sock[1]=$(branch(socket)[1]) Call-ID=$ci\n"); } else ... And here is the log file output when I have two registrations on the same username R3 IN: Req.type=INVITE R-URI=sip:01NNNNNN@12.34.56.245:5060 Br.cnt=1 Sock[0]=<null> Sock[1]=<null> Call-ID=41d17a02...@sip1.mysipdomain.com The records in the location table both have data in the socket field. This is running on version 2.2.4 of OpenSIPS John Quick Smartvox Limited Tel: 01727-221221 -----Original Message----- From: Bogdan-Andrei Iancu [mailto:bog...@opensips.org] Sent: 29 May 2017 11:32 To: john.qu...@smartvox.co.uk; 'OpenSIPS users mailling list' <users@lists.opensips.org> Subject: Re: [OpenSIPS-Users] Location table - how to use socket Hi John, the only way to share records via DB is to use DB only - the other modes are using the DB just for restart persistence reason (they do not read from DB at runtime, only once, at startup). In DB-only mode, all reads and writes (related to contacts) are done against the DB. In regards to $(branch(socket)[N]) - do you use it after a lookup(location) ? are you sure that the N'th branch exists and have a socket ? You may consider saving some extra attributes next to the contact ( see http://www.opensips.org/html/docs/modules/2.2.x/registrar.html#idp5568288) to identify the pop/host which produced that record. Best regards, Bogdan-Andrei Iancu OpenSIPS Founder and Developer http://www.opensips-solutions.com OpenSIPS Bootcamp 2017, Huston, US http://opensips.org/training/OpenSIPS_Bootcamp_2017.html On 05/26/2017 07:38 PM, John Quick wrote: > Hi Bogdan, > > Yes. I tried with db_mode=1 and it behaved very strangely so I changed it to > db_mode=3 (DB only). > > Also tried $(branch(socket)[N]) to read the socket data within my script, but > it always returns <null>. > > I am now thinking it will be necessary to have one location table per site, > but perhaps you could consider adding options in future releases to allow the > lookup function to only select contacts where the socket matches one that > this server is listening on. > > John Quick > Smartvox Limited > > > -----Original Message----- > From: Bogdan-Andrei Iancu [mailto:bog...@opensips.org] > Sent: 26 May 2017 17:30 > To: john.qu...@smartvox.co.uk; OpenSIPS users mailling list > <users@lists.opensips.org> > Subject: Re: [OpenSIPS-Users] Location table - how to use socket > > Hi John, > > I suppose you are using usrloc with DB-only to share registrations between > multiples sites, otherwise the socket filter will not make sense, right ? > > Best regards, > > Bogdan-Andrei Iancu > OpenSIPS Founder and Developer > http://www.opensips-solutions.com > > OpenSIPS Bootcamp 2017, Huston, US > http://opensips.org/training/OpenSIPS_Bootcamp_2017.html > > On 05/25/2017 06:16 PM, John Quick wrote: >> The socket field in the location table sometimes contains very useful >> information such as: >> - to see which server received the Registration in a dual site >> scenario >> - to see if the UA registered over UDP, TCP or TLS >> >> However, there does not seem to be any mechanism for using the socket >> information in the USRLOC or REGISTRAR modules. >> For example, it is not possible to call lookup and filter for >> contacts made on the local server's socket or for contacts that used TLS. >> >> Please could the developers look at options to leverage this useful >> data, especially for the lookup function. >> >> Are there any tricks I could employ to achieve the same result. For >> example, if I set a branch flag to indicate which site received this >> registration would it then be possible to filter the results returned >> by lookup and extract the registrations received at site A while >> discarding those received at site B? >> >> To give a practical example: Dual site; Shared location table; User's >> device is registered at site B; Call arrives at site A so I want to >> use 302 redirect to send it over to site B, but I cannot tell from >> the results of a lookup whether the registration was made at A or B >> even though the data is there in the socket field. >> >> John Quick >> Smartvox Limited >> >> >> >> _______________________________________________ >> Users mailing list >> Users@lists.opensips.org >> http://lists.opensips.org/cgi-bin/mailman/listinfo/users _______________________________________________ Users mailing list Users@lists.opensips.org http://lists.opensips.org/cgi-bin/mailman/listinfo/users