This patch has a bug which leads to
false contact removal.
This happens when UA reconnects to a proxy from the same src port
and sends new REGISTER with the same Contact. In that case
kamailio updates an existing contact and I forgot to update tcp
connection id in the ucontact_t object.
I've fixed this bug in my production system (kamailio-3.2) and it
works well.
The patch for 4.0.3 will be ready tonight.
Hello,
I applied your patches with some changes. There is no need to
store tcp connection id in other structure in the core, it is
stored in msg->rcv.proto_reserved1.
You have to add the documentation for the new usrloc parameter, in
xml files from modules/usrloc/doc/ - send over the patch and I
will commit it as well.
Cheers,
Daniel
On 8/29/13 12:47 PM, Vitaliy
Aleksandrov wrote:
Thanks
community for all replies.
I did the second try. Result is in the attachment.
This time a did it in the way proposed by Daniel-Constantin
Mierla.
All job is done in timer process when it iterates through all
registrations looking for expired ones.
It works for all database modes except DB_ONLY.
I'm not sure about tcpconn_get() / tcpconn_put() functions.
tcpconn_get() increments ref counter, but there are several
function to decrement it: tcpconn_put(), tcpconn_chld_put() and
atomic_dec_and_test(). When I was looking for examples in other
modules I saw that tcp_read.c uses tcpconn_chld_put(), but
forward.h and msg_translator.c uses only tcpconn_get() without
decrementing ref counter at all.
It would be great if somebody more experienced shed some light
on this.
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
--
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Trainings - Berlin, Oct 21-24; Miami, Nov 11-13, 2013
- more details about Kamailio trainings at http://www.asipto.com -