On 15/09/14 16:03, Federico Cabiddu wrote:
What happens if you call t_relay() after setting $du?Same result. Kamailio sends 407 to caller, which then creates a new INVITE.
I suspect my configuration doesn't reflect the intent, so I'm adding it below along with other particulars of the test environment.
Is there a specific way to cause kamailio to relay the INVITE to a particular server based on a dynamic variable?
Cheers,
-nick
192.168.20.215 - Caller
192.168.20.214:5060 Kamailio (node1.etellicom.com)
192.168.20.214:5080 FS1 (node1.etellicom.com)
192.168.20.198:5080 FS2 (node2.etellicom.com)
Kamailio:
version: kamailio 4.1.5 (x86_64/linux) 2b3d4b
Configuration diff from default:
*** kamailio.cfg.default 2014-08-29 15:07:42.336496172 +1000
--- kamailio.cfg 2014-09-16 10:43:50.199400261 +1000
*************** loadmodule "xmlrpc.so"
*** 283,288 ****
--- 283,296 ----
loadmodule "debugger.so"
#!endif
+ loadmodule "dispatcher.so"
+ modparam("dispatcher", "flags", 2)
+ modparam("dispatcher", "list_file", "/root/dispatcher.list")
+ modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")
+ modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")
+ modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")
+ #modparam("dispatcher", "ds_ping_interval", 60)
+
# ----------------- setting module-specific parameters ---------------
*************** request_route {
*** 491,496 ****
--- 499,509 ----
setflag(FLT_ACC); # do accounting
}
+ if(!ds_is_from_list("1"))
+ {
+ route(DISPATCH);
+ }
+
# dispatch requests to foreign domains
route(SIPOUT);
*************** request_route {
*** 516,521 ****
--- 529,576 ----
route(LOCATION);
}
+ # Dispatch requests
+ route[DISPATCH] {
+
+ # Hash over to uri for test purposes
+ if(!ds_select_dst("1", "2"))
+ {
+ send_reply("404", "No destination");
+ exit;
+ }
+ xlog("L_DBG", "--- SCRIPT: going to <$ru> via <$du>\n");
+ t_on_failure("RTF_DISPATCH");
+ route(RELAY);
+ exit;
+ }
+
+ # Dispatch failure route
+ failure_route[RTF_DISPATCH] {
+ if (t_is_canceled()) {
+ exit;
+ }
+ # next DST - only for 500 or local timeout
+ if (t_check_status("500")
+ or (t_branch_timeout() and !t_branch_replied()))
+ {
+ if(ds_next_dst())
+ {
+ t_on_failure("RTF_DISPATCH");
+ route(RELAY);
+ exit;
+ }
+ }
+
+ if ($avp(imx-redirect) != $null)
+ {
+ $du = $avp(imx-redirect);
+ xlog("SCRIPT: REDIRECT: going to <$ru> via <$du>\n");
+ # route(RELAY);
+ t_relay();
+ exit;
+ }
+
+ }
route[RELAY] {
*************** onreply_route[MANAGE_REPLY] {
*** 911,916 ****
--- 966,977 ----
xdbg("incoming reply\n");
if(status=~"[12][0-9][0-9]")
route(NATMANAGE);
+
+ if (t_check_status("3[0-9][0-9]") and is_present_hf("X-imx-redirect"))
+ {
+ $avp(imx-redirect) = $hdr(X-imx-redirect);
+ xlog("SCRIPT: REDIRECT, Store avp for redirect: $avp(imx-redirect)\n");
+ }
}
# manage failure routing cases
SIP trace of call intended to be redirected to a specific server.
Scenario starts with normal INVITE, 100, proxy auth from backend server, INVITE with auth.
When FS2 receives the authenticated invite, it responds with 302 and indicates via the X-imx-redirect header to redirect the request to FS1.
Then I want to send the INVITE to the given server by setting $du and calling t_relay() but my current configuration seems to cause kamailio to respond to the caller with 407 instead.
10:46:27.361991 IP 192.168.20.215.5062 > 192.168.20.214.5060
INVITE sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
10:46:27.362567 IP 192.168.20.214.5060 > 192.168.20.215.5062
SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
Server: kamailio (4.1.5 (x86_64/linux))
Content-Length: 0
10:46:27.362745 IP 192.168.20.214.5060 > 192.168.20.198.5080
INVITE sip:*591000@test.etellicom.com SIP/2.0
Record-Route: <sip:192.168.20.214;lr=on>
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bKa4a8.9a165b4901cf1602b3146c7f0bf0a191.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 69
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
10:46:27.383907 IP 192.168.20.198.5080 > 192.168.20.214.5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bKa4a8.9a165b4901cf1602b3146c7f0bf0a191.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
Record-Route: <sip:192.168.20.214;lr=on>
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
User-Agent: IMX
Content-Length: 0
10:46:27.553363 IP 192.168.20.198.5080 > 192.168.20.214.5060
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bKa4a8.9a165b4901cf1602b3146c7f0bf0a191.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=Ke2rvve07SK3N
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
User-Agent: IMX
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Proxy-Authenticate: Digest realm="test.etellicom.com", nonce="xxx", algorithm=MD5, qop="auth"
Content-Length: 0
10:46:27.553574 IP 192.168.20.214.5060 > 192.168.20.198.5080
ACK sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bKa4a8.9a165b4901cf1602b3146c7f0bf0a191.0
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=Ke2rvve07SK3N
Call-ID: 1766438446@192.168.20.215
CSeq: 1 ACK
Max-Forwards: 69
Content-Length: 0
10:46:27.553718 IP 192.168.20.214.5060 > 192.168.20.215.5062
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=Ke2rvve07SK3N
Call-ID: 1766438446@192.168.20.215
CSeq: 1 INVITE
User-Agent: IMX
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Proxy-Authenticate: Digest realm="test.etellicom.com", nonce="xxx", algorithm=MD5, qop="auth"
Content-Length: 0
10:46:27.592662 IP 192.168.20.215.5062 > 192.168.20.214.5060
ACK sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK1598556947
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=Ke2rvve07SK3N
Call-ID: 1766438446@192.168.20.215
CSeq: 1 ACK
Content-Length: 0
10:46:27.630142 IP 192.168.20.215.5062 > 192.168.20.214.5060
INVITE sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Proxy-Authorization: Digest username="1001", realm="test.etellicom.com", nonce="xxx", uri="sip:*591000@test.etellicom.com", response="xxx", algorithm=MD5, cnonce="xxx", qop=auth, nc=00000001
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
10:46:27.630721 IP 192.168.20.214.5060 > 192.168.20.215.5062
SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
Server: kamailio (4.1.5 (x86_64/linux))
Content-Length: 0
10:46:27.630896 IP 192.168.20.214.5060 > 192.168.20.198.5080
INVITE sip:*591000@test.etellicom.com SIP/2.0
Record-Route: <sip:192.168.20.214;lr=on>
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bK74a8.d3d3ad8bb9b1c73c12e16cdab447472e.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Proxy-Authorization: Digest username="1001", realm="test.etellicom.com", nonce="xxx", uri="sip:*591000@test.etellicom.com", response="xxx", algorithm=MD5, cnonce="xxx", qop=auth, nc=00000001
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 69
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
10:46:27.631731 IP 192.168.20.198.5080 > 192.168.20.214.5060
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bK74a8.d3d3ad8bb9b1c73c12e16cdab447472e.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
Record-Route: <sip:192.168.20.214;lr=on>
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
User-Agent: IMX
Content-Length: 0
10:46:29.187901 IP 192.168.20.198.5080 > 192.168.20.214.5060
SIP/2.0 302 Moved Temporarily
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bK74a8.d3d3ad8bb9b1c73c12e16cdab447472e.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
Max-Forwards: 69
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=mQUHyQZ3429NH
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
Contact: "unknown" <sip:node1.etellicom.com>
User-Agent: IMX
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Reason: Q.850;cause=31;text="NORMAL_UNSPECIFIED"
Content-Length: 0
X-imx-redirect: sip:192.168.20.214:5080
10:46:29.188327 IP 192.168.20.214.5060 > 192.168.20.198.5080
ACK sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bK74a8.d3d3ad8bb9b1c73c12e16cdab447472e.0
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=mQUHyQZ3429NH
Call-ID: 1766438446@192.168.20.215
CSeq: 2 ACK
Max-Forwards: 69
Content-Length: 0
7(17488) ERROR: <script>: SCRIPT: REDIRECT, Store avp for redirect: sip:192.168.20.214:5080
7(17488) ERROR: <script>: SCRIPT: REDIRECT: going to <sip:*591000@test.etellicom.com> via <sip:192.168.20.214:5080>
10:46:29.432573 IP 192.168.20.214.5060 > 192.168.20.215.5062
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=ZS5Q6Xem0Umaj
Call-ID: 1766438446@192.168.20.215
CSeq: 2 INVITE
User-Agent: IMX
Accept: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, INFO, UPDATE, REGISTER, REFER, NOTIFY, PUBLISH, SUBSCRIBE
Supported: timer, path, replaces
Allow-Events: talk, hold, conference, presence, as-feature-event, dialog, line-seize, call-info, sla, include-session-description, presence.winfo, message-summary, refer
Proxy-Authenticate: Digest realm="test.etellicom.com", nonce="eac7076b-4c13-4492-838c-14039cc2beb6", stale=true, algorithm=MD5, qop="auth"
Content-Length: 0
10:46:29.452446 IP 192.168.20.215.5062 > 192.168.20.214.5060
ACK sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK416062902
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>;tag=ZS5Q6Xem0Umaj
Call-ID: 1766438446@192.168.20.215
CSeq: 2 ACK
Content-Length: 0
10:46:29.490390 IP 192.168.20.215.5062 > 192.168.20.214.5060
INVITE sip:*591000@test.etellicom.com SIP/2.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK2079130033
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 3 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Proxy-Authorization: Digest username="1001", realm="test.etellicom.com", nonce="xxx", uri="sip:*591000@test.etellicom.com", response="xxx", algorithm=MD5, cnonce="xxx", qop=auth, nc=00000001
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 70
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
10:46:29.490694 IP 192.168.20.214.5060 > 192.168.20.215.5062
SIP/2.0 100 trying -- your call is important to us
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK2079130033
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 3 INVITE
Server: kamailio (4.1.5 (x86_64/linux))
Content-Length: 0
10:46:29.490782 IP 192.168.20.214.5060 > 192.168.20.198.5080
INVITE sip:*591000@test.etellicom.com SIP/2.0
Record-Route: <sip:192.168.20.214;lr=on>
Via: SIP/2.0/UDP 192.168.20.214;branch=z9hG4bK84a8.289b7cd802ed6efd2f25721d6b8f29d6.0
Via: SIP/2.0/UDP 192.168.20.215:5062;branch=z9hG4bK2079130033
From: "1001" <sip:1001@test.etellicom.com>;tag=1860002040
To: <sip:*591000@test.etellicom.com>
Call-ID: 1766438446@192.168.20.215
CSeq: 3 INVITE
Contact: <sip:1001@192.168.20.215:5062>
Proxy-Authorization: Digest username="1001", realm="test.etellicom.com", nonce="xxx", uri="sip:*591000@test.etellicom.com", response="xxx", algorithm=MD5, cnonce="xxx", qop=auth, nc=00000001
Content-Type: application/sdp
Allow: INVITE, INFO, PRACK, ACK, BYE, CANCEL, OPTIONS, NOTIFY, REGISTER, SUBSCRIBE, REFER, PUBLISH, UPDATE, MESSAGE
Max-Forwards: 69
User-Agent: Yealink SIP-T38G 38.70.0.115
Supported: replaces
Allow-Events: talk,hold,conference,refer,check-sync
Content-Length: 310
SDP
_______________________________________________
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