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:[email protected] 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:[email protected];tag=69f53ec5-b56e-4887-911d-5b389ae5ce8d.
To: sip:[email protected].
Contact: <sip:[email protected]: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:/[email protected]: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:[email protected]: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:[email protected];tag=cb46683f-021e-4fac-b60d-e8e23accdfe7.
To: sip:[email protected];tag=461b8ff42168dbf0.
Call-ID: a7869ed1-82fd-4650-a987-f62dd8551b1d.
CSeq: 32765 ACK.
Route: 
<sip:/[email protected]:5070;transport=tcp;lr>.
Route: <sip:/[email protected];transport=tcp;lr>.
Content-Length:  0.

-- juha

_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to