[SR-Users] Registrar, usrloc and duplicate keys

Daniel-Constantin Mierla miconda at gmail.com
Tue Jul 16 15:14:19 CEST 2013


Hello,

to fix such cases, we added the option to use ruid for updates to database:

http://kamailio.org/docs/modules/stable/modules/usrloc.html#usrloc.p.db_obs_ruid

There were couple of items opened to the tracker at some point, also a 
discussion on the mailing list, this being the solution that seemed most 
optimal.

Cheers,
Daniel

On 7/16/13 2:47 PM, Alex Hermann wrote:
> Hello,
>
> I'm upgrading a 1.5 install to 4.0 and encounter a problem with registrations
> from a phone. The phone lost power and after rebooting it starts a new
> registration while the old registration hasn't expired yet. The phone uses the
> same aor and contact but a different call-id (and cseq) which all seems ok and
> used to work with 1.5.x.
>
> Problem 1) When receiving this new registration, kamailio is trying to update
> the old registration even though the new registration doesn't match the old
> one. The database responds with 0 rows updated because the call-id is
> different.
>
> Problem 2) To try to circumvent problem 1, i have usrloc configured to try an
> insert instead when the update fails. That insert fails because kamailio is
> trying to insert with the same ruid as the old registration.
>
> Combining those, the real problem seems to be that kamailio is assigning the
> same ruid to both registrations. How could that be prevented?
>
> The config parameters are set so that it matches my old 1.5 config as much as
> possible. No need for outbound, gruu, etc.
>
> (Phone does send an +sip.instance, which happens to be identical in both
> registrations. I have gruu_enabled set to 0, so i would expect kamailio to
> ignore it as it did in 1.5. The outbound module is not loaded).
>
> modparam("registrar", "min_expires", 60)
> modparam("registrar", "default_expires", 1800)
> modparam("registrar", "default_q", 0)
> modparam("registrar", "path_mode", 0)
> modparam("registrar", "use_path", 1)
> modparam("registrar", "path_use_received", 1)
> modparam("registrar", "gruu_enabled", 0)
>
> modparam("usrloc", "db_mode", 2)
> modparam("usrloc", "timer_interval", 20)
> #modparam("usrloc", "db_obs_ruid", 0) # param does not really exist
> modparam("usrloc", "db_check_update", 1)
> modparam("usrloc", "timer_procs", 2)
> modparam("usrloc", "hash_size", 14)
> modparam("usrloc", "matching_mode", 0)
>

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda




More information about the sr-users mailing list