I think I see the problem.
The SIP request comes into the edge proxy on port 5060 and leaves on port 5070.
When outbound is enabled Kamailio doesn't do double-record-routing. When I implemented outbound I thought that because the same information as is in the double-RR is embedded in the flow-token it wouldn't be needed. It looks like it still is needed in order for the devices surrounding the edge-proxy to be able to correctly route.
I think the fix is to re-instate double-RR for outbound and make sure that, when double-RR is used, the flow-token is added it goes into the record-route that contains the address/port/protocol that the SIP request arrived on (which I believe is the second to top one, the top one being the RR that indicates the address/port/protocol the SIP request leaves on).
This means record.c needs to be changed to add the double-RR correctly for outbound, and loose.c needs to be changed to correctly eat the two routes instead of just one. The only flow-token that should be used in loose.c is the one in the LAST route that points to the edge-proxy.
Regards,
Peter
On 19/04/13 15:00, Juha Heinanen wrote:
Peter Dunkley writes:
That fix looks OK. I'd have done it slightly differently, moving the "return 1" into the last "else if" and then having the "return 0" as the catch-all at the end of the function instead of adding an "else" case.
peter,
feel free to improve to your liking.
once i got that solved, i'm next havind trouble with record-route added by edge proxy (as i already mentioned in previous message).
here is invite that comes to edge proxy:
T 2013/04/19 16:50:00.043131 192.98.102.10:48018 -> 192.98.102.10:5060 [AP] INVITE sip:test@test.fi SIP/2.0. Via: SIP/2.0/TCP 192.98.102.10:48018;rport;branch=z9hG4bKPj19602c3d-c72f-4a4c-830d-400175af5366. Max-Forwards: 70. From: sip:jh@test.fi;tag=69f53ec5-b56e-4887-911d-5b389ae5ce8d. To: sip:test@test.fi. Contact: sip:jh@192.98.102.10:5068;transport=TCP;ob. Call-ID: 4529a8ec-bee6-4205-942f-be567e41a52e. CSeq: 22685 INVITE. Route: sip:192.98.102.10;transport=tcp;lr. Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS. Supported: replaces, 100rel, timer, norefersub. Session-Expires: 1800. Min-SE: 90. User-Agent: PJSUA v2.1 Linux-3.2.0.4/x86_64/glibc-2.13. Content-Type: application/sdp. Content-Length: 476.
it does not have Supported: outbound, but there is ;ob param in contact.
edge proxy then adds to the request this kind of R-R header:
Record-Route: sip:/RhTFGTFRK1L8wLAYmYKE8TAYmYKu5I=@192.98.102.10:5070;transport=tcp;lr
is this correct, because based on it, the ua that sent the invite above, sends ack to incorrectly to 192.98.102.10:5070:
T 2013/04/19 16:56:33.521310 192.98.102.10:41051 -> 192.98.102.10:5070 [AP] ACK sip:0x179a610@192.98.102.10:55798;transport=tcp SIP/2.0. Via: SIP/2.0/TCP 192.98.102.10:41051;rport;branch=z9hG4bKPj9b826086-ba81-4798-9887-8e72e094276d. Max-Forwards: 70. From: sip:jh@test.fi;tag=cb46683f-021e-4fac-b60d-e8e23accdfe7. To: sip:test@test.fi;tag=461b8ff42168dbf0. Call-ID: a7869ed1-82fd-4650-a987-f62dd8551b1d. CSeq: 32765 ACK. Route: sip:/RhTFGTFRK1L8wLAYmYKE8TAYmYKu5I=@192.98.102.10:5070;transport=tcp;lr. Route: sip:/eWzbwNo9LE2pQLAYmYUE8TAYmYK2fY=@192.98.102.20;transport=tcp;lr. Content-Length: 0.
-- juha
sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev