Hi Group,
I stumbled upon a possible bug in Kamailios (4.0.0) Path module.
Setup: Proxy server is behind another Kamailio Load Balancer and both (Proxy & LB) are configured to use Path module.
When client registers for the first time path is inserted into Location table successfully however when client switches from currently Access Point to another AP (which are both behind a NAT), Path attribute in Location table is not updated with newer <ip>:<port>
When client switched from one AP to another, IP remained same however port changed from 48238 to 33038 and subsequent update query issued by Kamailio is as follows:
update location set expires='2014-07-11 19:27:32',q=-1.00 ,cseq=1805331004,flags=0,cflags=64,user_agent='xxxxxxxxxx',received='sip:xx5.xx1.xx1.219:
33038;transport=tcp',path='<sip:xx3.xx1.xx9.53;transport=tcp;lr;received=\'sip:xx5.xx1.xx1.219:33038;transport=tcp\'>',socket='tcp:xx3.xx1.xx9.28:5060',methods=16351,last_modified='2014-07-11 18:27:32',ruid='uloc-53bf7f9c-4254-e',instance='<urn:imei:911304251588897>',reg_id=1 where username='testuser'
AND contact='sip:testuser@xx5.xx1.xx1.219:33038;transport=tcp' AND callid='7983ce39-2ffd3a92-8f82f477-e6313128-84b64128' AND domain='
vvoip.xxxxxxxx.com'
In the where clause contact should have been old value taken from initial registration, however contact from new registration is used, so where condition always fails and entry is never updated. as a result no further calls or messages could be received by the client.
is there any workaround for this issue?
PS: Here is the configuration of path module.
# set path to lazy mode
modparam("registrar", "path_mode", 1)
# set to 1 to use path header
modparam("registrar", "use_path", 1)
# set to 1 to use path received parameter
modparam("registrar", "path_use_received", 1)
modparam("path", "use_received", 1)
Thanks & Regards,
Prasun