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
Show replies by date