Nathan --
So this is a know issue? We are using SIP.js on the web side and Libre SIP stack for iOS and Android, both have issues with this bug
I am not sure whether the observed behaviour is an issue per se; FreeSWITCH itself considers the presented endpoint (the UDP one) as legitimate as it definitely listens to requests, it could eventually honour, on the provided host:port combination. This is likely a matter of semantics, but I think the RFC might favour the current behaviour since the Contact endpoint is expected to be global (i.e. function outside of the current dialog). Back to the matter at hand, when terminating call that's ringing, the CANCEL is properly handled by the server when dispatched over the existing websocket connection; I've tested this with a default FS install and a slightly modified version of the sip.js demo here: https://sipjs.com/guides/full-demo-app/ -C