SOLVED CANCEL and BYE ignored by carrier

Hi everybody,

I'm routing my SIP traffic over a SIP trunk from http://www.colt.net. This trunk is only protected by an ACL, no authentication is required.

Incoming calls from Colt are working fine and without any issues. Outgoing calls do also work with bidirectional audio, but BYE and CANCEL requests are not being picked up by the trunk. The call is being left open / ringing if not picked up, until the timeout is reached on the end of the trunk.

My setup is as following:
desk phone (NAT IP) -> opensips (Public IP) -> freeswitch (Public IP) -> opensips (Public IP) -> carrier (Public IP)

So OpenSIPS is in front of a FreeSWITCH which uses OpenSIPS for in - and outbound routing to the carrier. The phone registers and signals through OpenSIPS with the FreeSWITCH system.

I took a trace of a call which I cancelled prior the other end (a cell phone) picked it up. So the cell phone kept ringing even though I already hanup the call.

The dialog is uploaded here: https://pastebin.com/gK7WYB6i

From my understanding the carrier does not properly answer my CANCEL request. Could anyone tell if I am missing something on my end / if the carrier does not behave correct? All of my system (except the desk phone) are directly in the wild internet with just a host firewall enabled, so there's no nat or external firewall involved on my end.

Thanks in advance
 
Just a quick feedback based on the outcome of a support ticket that I assigned to my provider:

They are not properly handling the via headers. So since my call passes an internal proxy there's a second via header which has, of course, not the IP of the final outgoing proxy. They now allowed this 2nd via header and it got working. Not sure if this is really how things should work on their end, since other carriers handle this properly, but the issue is now resolved and seems to be caused by their call handling.