Cameron,

The problem is that the c= field in the SDP payload is always pointing to 127.0.0.1 (aka, your loopback interface). This is not going to work since neither Sipura or X-lite client can connect to your loopback interface.

More specifically, the INVITE message that is sent from the Sipura to the SER proxy is then rewritten and then relayed to the X-lite SIP UA. This relayed INVITE has the incorrect c= field in the SDP.

Likewise, the 200OK that X-lite replies with is then rewritten by SER and relayed to the Sipura UA. This 200OK also has a c= of 127.0.0.1

I suspect that your call to use_media_proxy() is correct, but media proxy is running on the wrong interface.

If you look at the onsip.org documentation you will find a mediaproxy init.d start script in the appendix. In this start script you will see the following line:

PROXY_OPTIONS="--ip=71.16.1.15 --listen=127.0.0.1"

The --ip option must be an IP that is available to all SIP clients (NATed an non-NATed). Therefore you should specify a public ip address. This then is the ip that will be used in the c= field in the SDP payload. The --listen parameter can be 127.0.0.1 if you are running mediaproxy on your SIP router. If not, then you will need to change this as well.

NOTE: If you're mediaproxy is behind an ALG enabled router, such as a Cisco 3600, then the router will rewrite the RFC1918 IPs with the public ones, so in this case you would use the --ip option as an RFC1918 address.

Regards,
Paul