[OpenSIPS-Users] remove function not working for specific contact
jayesh1017 at gmail.com
Tue Nov 17 11:02:24 CET 2015
My idea is to keep one registration per device and hence the fc1 option
wouldn't work for me here. Meaning the account can register from multiple
locations using multiple devices, but if the same device tries to initiate
a new register when there is an existing record in the location, I want to
remove the existing one and save the new one. Moreover, my clients do not
support GRUU and hence thats not the right path for me currently.
So here's the idea:
1) On a REGISTER request, my clients come with an id that is unique to a
2) On successful registration, I store in local-cache the contact and
callid for this particular device-id.
3) For all REGISTER, I check if AOR with callid is registered using the
'registered("location", "AOR", "callid")' function.
4) If registered returns true for the current callid, I consider it to be a
5) If registered for current callid returns false, I fetch the contact for
device_id from local-cache. If the contact exists, meaning the same device
is doing a new REGISTER. In this case, I need to remove the existing
contact for this AoR.
6) This mostly happens when a client is registered and loses connectivity.
The client when restarted creates a new registration with new callid
without un-registering the existing one on the server.
7) The server deletes the device-id from the location on Un-REGISTER. I
identify this when Expires header is 0.
Do let me know if this is do-able in a neater way. Thanks in advance.
On Tue, Nov 17, 2015 at 2:48 PM Răzvan Crainea <razvan at opensips.org> wrote:
> Hi, Jayesh!
> If I understood correctly, you only want to have a single contact in
> memory, right? If so, you can use the save function, with flags c and f.
> Something like:
> save("location", "fc1");
> Best regards,
> Răzvan Crainea
> OpenSIPS Solutionswww.opensips-solutions.com
> On 11/17/2015 08:37 AM, Jayesh Nambiar wrote:
> Hello All,
> Just bumping in to check if there's a better way to remove an existing
> contact from the location. My idea was to remove from the location a record
> with particular callid or particular contact on specific scenarios. So I do
> the following:
> On a successful registration I store the some id that my device has along
> with callid and contact.
> On a subsequent registration, I compare the id and callid, if they are
> different from the current registration, I need to remove the existing
> contact with this callid
> If the id and callid is same, I do nothing.
> - Jayesh
> On Tue, Nov 10, 2015 at 6:59 PM Jayesh Nambiar <jayesh1017 at gmail.com>
>> Forgot to mention. I'm using version 2.1.
>> - Jayesh
>> On Tue, Nov 10, 2015 at 6:01 PM Jayesh Nambiar <jayesh1017 at gmail.com>
>>> I've been trying to delete specific contact for AOR using the remove
>>> function in the registrar module, but somehow it doesn't remove it from the
>>> My db_mode is 0 as I only want to store it in opensips memory. I hav the
>>> "use_domain" param as 1. On register, the contact gets stored in the
>>> following format:
>>> sip:579e08000 at 220.127.116.11:49612;rinstance=477b5477848ba584;transport=tcp
>>> I tried multiple ways to remove this:
>>> 1) remove("location", "sip:579e08000 at abc.com",
>>> "sip:579e08000 at 18.104.22.168:49612;rinstance=477b5477848ba584;transport=tcp"
>>> <sip:579e08000 at 22.214.171.124:49612;rinstance=477b5477848ba584;transport=tcp>
>>> 2) remove("location", "sip:579e08000 at abc.com", "
>>> sip:579e08000 at 126.96.36.199:49612")
>>> Also, I'd like to mention that I have an edge proxy in the middle who
>>> proxies the REGISTER to this Registrar and I use the PATH module to route
>>> back reliably. I'm essentially trying to remove location entry for
>>> particular endpoints based on some conditions.
>>> Any help is appreciated. Thanks,
>>> - Jayesh
> Users mailing listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
> Users mailing list
> Users at lists.opensips.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Users