Hello everyone!
I have my system based on ser 0.9.6. Internal calls work just fine. I am now trying to interop with another system. It has a sort of asterisk functionality, but it is not asterisk, it is a private software company product.
my.phone ---------> my.ser.proxy -------------> external.proxy -------------> external phone 10.111.0.119 10.111.0.50 10.111.0.20 10.111.0.144
There is no firewall or nat in the way.
The problem, i think, is that the external.proxy is buggy. I told that to the company, but who knows when they will fix this.
* Look at the OK (message #9 and #10). My.ser.proxy record-routes all invites. The Record-route headers reach the external.phone, which copies them in the OK message, sends the OK to the external.proxy ... and when this forwards it to my.ser.proxy, they are gone! The OK reaches my.phone, but then it generates my problem: the ACK. It contains NO ROUTE headers and the r-uri is also simply pointing to the external.proxy. If the ACK had the ROUTE headers, my.ser.proxy would loose_route the message and voila! But as loose_route() returns false, my (maybe bad) config file gets confused and treats it like a "new" call ... so it lookup("location") of the ACK r-ruri fails, and the ACK is dropped. Should i modify the config file so that ACK, if not loose_route'd, are simply t_relay'd?
* They also modify the contact field. The reason is because behind the external.proxy could be H323 or SIP phones, so they sort of want to be a termination as far as signalling is concerned.
I attach the message flow, hope it helps ... Thanks!
Cesc