Hello,

if one side of the call is breaking the contact, then a workaround in kamailio is to use htable to store the contact address per callid+from/to tag. I encountered couple of times such situation and the condition in the config file is like:

  - if the r-uri of ACK (BYE, etc...) matches "myself", then check to see if there is a record in an htable corresponding to callid and to-tag, if yes, use it

Contact for caller is set in htable as INVITE is received and for callee when then 200ok is received.

If dialog module is used, then the contact from the dialog structure can be used. With 5.1 or newer, dialog offers a dedicated function for this:

  - https://www.kamailio.org/docs/modules/stable/modules/dialog.html#dialog.f.dlg_set_ruri

For older versions, the address has to be taken from $dlg(...) variable, with some conditions to detect if it is the caller or callee side.

Cheers,
Daniel


On 03.01.18 16:16, Sebastian Damm wrote:
Hi Jean,

as pointed out earlier, the ACK is probably broken. Every packet after the 200 OK should have the contact of the 200 OK in the Request URI. Your example packet carries probably the original request URI, which is most certainly wrong, exept if you use some topology hiding.

This is something you can't fix but the voip provider has to fix. They apparently can't handle proxied SIP connections.

Regards,
Sebastian




_______________________________________________
Kamailio (SER) - Users Mailing List
sr-users@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
www.twitter.com/miconda -- www.linkedin.com/in/miconda
Kamailio Advanced Training - www.asipto.com
Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com