I'm running kamailio 3.X with the following patch for years, works fine to me with distributed servers and replication:
diff --git a/modules_k/usrloc/udomain.c b/modules_k/usrloc/udomain.c index b52bb76..e457cc5 100644 --- a/modules_k/usrloc/udomain.c +++ b/modules_k/usrloc/udomain.c @@ -318,6 +318,7 @@ static inline ucontact_info_t* dbrow2info( db_val_t *vals, str *contact) ci.sock = grep_sock_info( &host, (unsigned short)port, proto); if (ci.sock==0) { LM_WARN("non-local socket <%s>...ignoring\n", p); + return 0; } }
On Monday 08 April 2013 04:52:35 Alex Balashov wrote:
I know I'm revisiting a problem that has been discussed in multiple threads from various angles, so I might be rightly accused of laziness in neglecting to research them all. All the same:
I have proxy1 and proxy2 writing to database A and database B, respectively. Database A and database B are active-active masters, synchronised via some replication system attached to the underlying DB technology.
The 'location' table is also replicated this way. We know that 'usrloc' doesn't work so well with this: one instance of Kamailio will periodically delete the other's contacts, even if they have a nonlocal SIP domain.
Is there any db_mode that can be used (other than 0/purely in-memory) to make this work right? Or is that the essential problem that p_usrloc is written to solve?
Thanks,
-- Alex