Hello ,
On Mon, Sep 14, 2020 at 4:16 AM Alex Balashov <abalashov(a)evaristesys.com>
wrote:
Hi,
On 2020-09-11 08:19, sagar malam wrote:
Hello ,
I am using the usrloc module to store registrations. I could not find
any way to remove stale registrations before expires time. Most of the
registrations are mobile app so they wont run in background to save
battery of phone hence we end up having lots of registrations in
usrloc which were not removed because app was killed in background by OS
without letting it send unregister request.
Are you sure that removing such registrations is the best thing to do?
You don't know what the user is going to do; maybe they will be using it
continuously, or maybe it'll be backgrounded. It's impossible to
determine, so you can't assume any given registration is stale, and it
is reasonable to attempt to contact the registrant for any given inbound
call, even if the attempt is futile because it has gone unreachable.
I am using the Keepalive to identify if any registration is stale. If KA
OPTION does not get a reply then that registration is considered as stale.
There is no point of keeping unreachable registration in usrloc
irrespective of whether the app is in background or foreground because it
will only add overhead to generate an invite which will ultimately timeout
without any response.
Meanwhile, the moment the endpoint is "woken up"[1] via a push
notification, it will re-register and overwrite the stale contact
binding instead of adding an additional one, provided that the match
mode[2] is set correctly.
This is true for hard phones or any endpoint which has a stable internet.
Here I am dealing with cellular networks so we cannot be sure if the app
will be provided the same public IP and port(IP is same most of the time
but not port) each time it will register with the server. So the same APP
can register with the same call ID but different contact address which will
create duplicate registration entries for the same APP.
--
Thanks,
Sagar