Hi,
 
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
 
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