[OpenSIPS-Devel] SF.net SVN: opensips:[8105] trunk/modules/usrloc
Bogdan-Andrei Iancu
bogdan at opensips.org
Fri Jul 1 11:25:52 CEST 2011
Hi Aron,
On 06/30/2011 10:40 PM, Aron Rosenberg wrote:
> Bogdan and Stan,
>
> On Thu, Jun 30, 2011 at 11:14 AM, Bogdan-Andrei Iancu
> <bogdan at opensips.org <mailto:bogdan at opensips.org>> wrote:
>
> Hi Stan,
>
>
> On 06/30/2011 08:48 PM, Stanisław Pitucha wrote:
>
> On 30 June 2011 17:25, Bogdan-Andrei Iancu<bogdan at opensips.org
> <mailto:bogdan at opensips.org>> wrote:
>
> Revision: 8105
> http://opensips.svn.sourceforge.net/opensips/?rev=8105&view=rev
> <http://opensips.svn.sourceforge.net/opensips/?rev=8105&view=rev>
> Author: bogdan_iancu
> Date: 2011-06-30 16:25:18 +0000 (Thu, 30 Jun 2011)
>
> Log Message:
> -----------
> - fixed race between UPDATE and DELETE when using DB_ONLY
> mode (one processe can update a record, while timer proc
> tries to delete it). The result is loosing contacts from
> database. The fix is to use REPLACE (if available on DB
> level) instead of UPDATE (as records may be missing).
> Based on an original idea from patch #2969454; Credits go
> to Stanislaw Pitucha
>
> I think a bit too much stuff was stripped. Now the old db
> schema is
> used without any control from the user.
> That means there's no unique key to generate the conflict
> (update/replace happens only on key collision) on insert
>
> Thanks for reminding me on that - I almost forgot to update the DB
> schema and to add the unique key constraint as you mentioned -
> just did that
>
>
> and no way to
> turn off the "atomic" updates from the config if you want the old
> schema... Unless it's properly documented in the manual it
> might cause
> some really bizarre situations for people using DB_ONLY.
>
> What kind of side effects are you referring at ? My idea was to
> try to automatically fix the problem (when DB_ONLY is used),
> transparent for the user. Of course, it is not a big deal to add
> the config switch for that, but I don't see why you should disable
> it and run a buggy code :D.
>
> Thanks and regards,
> Bogdan
>
>
> --
>
> One major issue with enforcing a unique index on username,contact is
> that if a client comes in and is using a Path: header, the contact
> address is irrelevant and not "fixed up" so two accounts from behind
> NAT's both on the 192.168.1.x range will have conflicts resulting in
> one endpoint being silently dropped. I believe this is also a problem
> with the internal hash table too.
Partially you are right :) - the internal hash is not affected as it is
using the callid also as key (see the match mode in the usrloc module).
But about the DB, you are right - in NATed cases, contacts may overlap.
As fix I suggest adding the callid field in the "unique" key also. This
should cover all the cases (when received or path is used).
Thanks and regards,
Bogdan
--
Bogdan-Andrei Iancu
OpenSIPS eBootcamp - 2nd of May 2011
OpenSIPS solutions and "know-how"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/devel/attachments/20110701/3d73c33a/attachment.htm>
More information about the Devel
mailing list