El Saturday 23 August 2008 16:57:42 Stagg Shelton escribió:
Thanks again Iñaki. I am attaching siptrace.txt file. I can see that there appears to be something odd with the ACKs in that they appear to be sent from my openser back to my openser in a loop until the max forwards is reached.
Hi, just to clarify: is it your nre carrier an Asterisk? It's not the problem anyway.
The problem is in your OpenSer ACK handling. Note that:
-------------------- U +0.072541 phone:5060 -> OpenSer:5060 ACK sip:+16783832765@OpenSer SIP/2.0* Via: SIP/2.0/UDP phone:5060;branch=z9hG4bK-8922-48b022e5-dcaa5757-3884948f* Contact: sip:restricted@phone:5060;transport=udp* Route: sip:OpenSer;lr;did=952.4d684275*
# U +0.002367 OpenSer:5060 -> OpenSer:5060 ACK sip:OpenSer;lr;did=952.4d684275 SIP/2.0* Via: SIP/2.0/UDP OpenSer;branch=z9hG4bKc29c.498b5a5.2* Via: SIP/2.0/UDP phone:5060;branch=z9hG4bK-8922-48b022e5-dcaa5757-3884948f* Contact: sip:restricted@phone:5060;transport=udp*
# U +0.000072 OpenSer:5060 -> OpenSer:5060 ACK sip:OpenSer;lr;did=952.4d684275 SIP/2.0* Via: SIP/2.0/UDP OpenSer;branch=z9hG4bKc29c.498b5a5.2* Via: SIP/2.0/UDP OpenSer;branch=z9hG4bKc29c.498b5a5.2* Via: SIP/2.0/UDP phone:5060;branch=z9hG4bK-8922-48b022e5-dcaa5757-3884948f* Contact: sip:restricted@phone:5060;transport=udp* --------------------
The problem is that your OpenSer receives an ACK (a new request in-dialog since it's an ACK for a 200 OK) with a "Route: sip:OpenSer". This is correct of course. So your OpenSer should do loose_route() and detect "OpenSer" IP as an own ip/domain so it would remove the Route and route the ACK to the RURI (Asterisk IP). But OpenSer doesn't realiza the OpenSer IP is itself so it doesn't remove the Route and routes the ACK according to that Route, this is, doing INFINITE loops to itself.
So you must fix it by adding you OpenSer IP as an alias in the top of your OpenSer script:
alias = OpenSer_IP:5060
or maybe it's enough with:
auto_aliases=yes
Hope you understood me. If not see me.