Hi Klaus,
If Kamailio founds out that the topmost Router header is itself, then it will remove it and use the nexxt Route header or the Request-URI.
Then, this case, the topmost Route: header is itself, then removes it (no more Route: headers) and finally must decides to route the request to the R-URI which is itself but at different port. However, it is not using that port (7080), but 5060. Why?
In logs, after loose_route() is called, it writes:
ERROR: <script>: WITHINDLG: method BYE with sip:321456@<sip-router_ip>:7080 _ DEBUG: siputils [checks.c:107]: totag found_ DEBUG: rr [loose.c:85]: is_preloaded: No_ DEBUG: <core> [socket_info.c:502]: grep_sock_info - checking if host==us: 13==13 && [<sip-router_ip>] == [<sip-router_ip>]_ DEBUG: <core> [socket_info.c:505]: grep_sock_info - checking if port 5060 matches port 7080_ DEBUG: <core> [forward.c:448]: check_self: host != me_
DEBUG: rr [loose.c:594]: Next hop: 'sip:<sip-router_ip>;lr=on' is loose router_ DEBUG: rr [loose.c:644]: The last route URI: 'sip:<sip-router_ip>;lr=on'_
ERROR: <script>: RELAY: method BYE with sip:<sip-router_ip>;lr=on _ ERROR: <script>: RELAY: calling t_relay() to sip:<sip-router_ip>;lr=on Message buffer: BYE sip:321456@<sip-router_ip>:7080 SIP/2.0__Via: SIP/2.0/UDP <remote_uac_ip>:5060;branch=z9hG4bKb111e6a26E0306F7__From: <sip:445566@<sip-router_ip>:5060>;tag=4DB62C24-2C3E0621__To: "321456" <sip:321456@<sip-router_ip>:7080>;tag=as369d9f82__Route: <sip:<sip-router_ip>;lr=on>__CSeq: 1 BYE__Call-ID: 15cbe04c69ede18c2e1f5a9221eea388@<sip-router_ip>:7080__Contact: <sip:445566@<remote_uac_ip>:5060>__User-Agent: UAc__Max-Forwards: 69__Content-Length: 0
loose.c finds it as "Next hop" and not as "Topmost route uri".
Claudio
If Kamailio fails to recognize that the Route header is itself, then it will forward the request to the address in the Route header (loop).
(considering that you use the default config file with loose_route()).
thus, make sure that the URI in the Route header is recognized by Kamailio as itself. (it should be if you use record_route() function).
Set debug=4 and grep for "myself" when the loose_route() function is called. Then you will see if Kamailio matches the topmost Route URI.
regards Klaus
On 24.10.2011 14:55, Claudio Furrer wrote:
Hello,
How does sip-router process this BYE?
BYE sip:321456@<sip-router_ip>:7080 SIP/2.0 Via: SIP/2.0/UDP<remote_uac_ip>:5060;branch=z9hG4bK7fb4c2325A0617FF From:sip:445566@mydomain.com:5060;tag=19C8FD8-72B75A25 To: "321456"<sip:321456@<sip-router_ip>:7080>;tag=as28777464 Route:<sip:<sip-router_ip>;lr=on> CSeq: 1 BYE Call-ID: 2b9512ef7ea290f07c54db1808e32211@<asterisk_ip>:7080 Contact:<sip:445566@<remote_uac_ip>:5060> User-Agent: UAc Max-Forwards: 70 Content-Length: 0
Does it routes the BYE, reading first the RURI or the Route header field? What if<sip-router_ip>:7080 is not itself (myself variable), because currently the proxy is listening at different port (5060)?
Note: proxy working in stateful mode.
Regards, Claudio
pd: I've read section "16.4 Route Information Preprocessing" of rfc but it's not clear for me in this case.
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users