[Freeswitch-users] Cancel X-Reason between servers

Jon Schøpzinsky jos at teleguys.com
Tue Oct 15 08:47:47 UTC 2019

We have the following setup, with a queue server, running our own queue software, a main switch and a SBC.
Queue FreeSWITCH -> Master FreeSWITCH -> OpenSIPS -> UA
When a queue dials multiple UA’s, an one of them answers, the rest is correctly sent a CANCEL with the LOOSE_RACE as X-Reason header.
This is sent from the Queue FreeSWITCH to the Master FreeSWITCH, but when the Master FreeSWITCH sends this on to the OpenSIPS, the X-Reason header gets changed to ORIGINATOR_CANCEL.
I found the code that does this, and it seems to be this block in switch_ivr_originate:
https://github.com/signalwire/freeswitch/blob/f9990221e6094886066ec2bf9685648135bd405a/src/switch_ivr_originate.c#L3664 <https://github.com/signalwire/freeswitch/blob/f9990221e6094886066ec2bf9685648135bd405a/src/switch_ivr_originate.c#L3664>
This always sets the reason to be ORIGINATOR_CANCEL, no matter what was set by the upstream server.
I know FreeSWITCH is not supposed behave like a proxy, and even OpenSIPS overwrites CANCEL reasons in its standard configuration, but would there be interest in us implementing proxying functionality, using a configuration item or channel variable, enabling this reason to be proxied through?

Kind Regards
Jon Schøpzinsky

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20191015/423466cf/attachment-0001.html>

More information about the FreeSWITCH-users mailing list