[SR-Users] Dropped registrar bindings with 1.5.3

Andres andres at telesip.net
Fri Nov 18 21:16:29 CET 2011


On 11/17/2011 10:28 PM, Alex Balashov wrote:
> I have a 1.5.3 installation functioning as a registrar that is 
> exhibiting a very curious, if only infrequent set of behaviours.
> The host is CentOS 5.x, with PostgreSQL 9.0 backing usrloc, and 
> db_mode = 1 (immediate write-through).
>
> I have a registration handler in my initial request route that begins 
> with a log message:
>
>    ...
>
>    else if(is_method("REGISTER")) {
>            xlog("L_INFO", "... Processing REGISTER from $si:$sp for 
> AOR $tu\n");
>            route(2);
>            exit;
>    }
>
> I've got a registrant who consistently re-registers with an expiration 
> time of 120, so in theory they ought to be re-registering every two 
> minutes or so.  Most of the time they do.  But, occasionally, I'll see 
> a gap of 5-8 minutes go by, in which the above log message does not 
> appear, and their registration expires so that they can't receive calls.
>
> That's not what's interesting.  What's interesting is that I did a 
> packet capture on the proxy and caught one of these scenarios.  Within 
> that ~8 minute window when the registration expired and calls were 
> failing, the UAC actually re-registered several times, on normal ~2 
> minute boundaries, AND the proxy successfully challenged the request 
> and sent a 200 OK indicating that the binding was stored!
>
> I double-checked all the parameters to ensure that the 401s and 200 
> OKs corresponded to the right REGISTER flow, etc. - yes, it's all 
> correct.
>
> Is there any imaginable set of circumstances or a known bug that would 
> cause Kamailio to successfully authenticate and affirm a registration 
> request, while neither logging its receipt, nor, evidently, storing it 
> to the database?  I can envision a number of database failure modes 
> that would account for the binding not actually being in the 
> 'location' table, but that doesn't explain why the request wouldn't 
> even be logged.  That's what has me baffled.
>
My logic tells me:
1)  If its not hitting your xlog in your register section then its not 
registering to this server
2)  If your packet capture is showing a successful registration and you 
cannot see it registered in this server then its registering somewhere else.
3)  Is it possible that your server is simply re-routing the packet to 
another server before it hits your xlog statement and thus the client is 
registering there?  A full packet capture in and out of the server might 
give you a hint, but if you have thousands of customers that might be 
tough.   On the other hand, if you have thousands of customers, I would 
venture to guess that you have more than one server where users can 
register and that might explain why the trace shows a successful 
registration.
>
>
Cheers.

-- 
Technical Support
http://www.telesip.net




More information about the sr-users mailing list