Hello all,
UAC -------------- SER ----------------- UAS
INVITE ---------->INVITE------------>INVITE
<----------TRYING
CANCEL------------>
<-----------TRYING
If UAC sends an INVITE and then sends a CANCEL, this CANCEL doesn't stop SER. SER is still processing the INVITE to UAS, why? This is my ser.cfg:
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("16")) { sl_send_reply("483","Too Many Hops"); }; if (msg:len > max_len) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); break; };
if (!uri==myself) { # mark routing logic in request append_hf("P-hint: outbound\r\n"); route(1); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) # if (uri==myself) { # if (uri=~"^sip:(.+@)?(10.22.1.[0-9]+|(.+@)?(10.22.2.[0-9]+|(.+.)?T.local)([:;?].*)?$"){ # if (uri=~"^sip:(.+@)?([0-9]+.[0-9]+.[0-9]+.[0-9]+|(.+.)?T.local)([:;?].*)?$"){ if (uri=~"^sip:(.+@)?(.+)([:;?].*)?$"){
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication # if ((!www_authorize("10.22.1.249", "subscriber"))) { # www_challenge("10.22.1.249", "0"); # break; # };
save("location"); break; };
if (method=="BYE") { t_relay(); sl_send_reply("200", "OK"); break; }; if (method=="ACK") { t_relay(); break; }; if (method=="CANCEL") { t_relay(); sl_send_reply("200", "OK"); break; }; if ((method=="INVITE")&&(!lookup("location"))) { exec_msg("printenv SRCIP; /bin/bash /usr/local/ser/sbin/sms"); sl_send_reply("100", "Trying"); exec_msg("sleep 10");
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("404", "Not on-line"); break; } else { t_relay(); break; } };
if (method=="SUBSCRIBE") { if (!t_newtran()) { # log(1, "newtran error\n"); sl_reply_error(); }; handle_subscription("registrar"); break; };
if (method=="PUBLISH") { if (!t_newtran()) { # log(1, "newtran error\n"); sl_reply_error(); }; handle_publish("registrar"); break; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; };
}
append_hf("P-hint: usrloc applied\r\n"); route(1); }
route[1] { # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; }
Help me please. Thank you.
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
To be honest, I wouldn't continue using your config. SER has a lot of internal behavior that cannot be controlled by the config. Sending stateless OKs for example, is very much at your own responsibility. Get a well-proven config as starting point. g-)
----- Original Message ----- From: "Benito Caracuel" becasi@hotmail.com To: serusers@lists.iptel.org Sent: Monday, February 13, 2006 1:58 PM Subject: [Serusers] Problem with CANCEL and INVITE (2)
Hello all,
UAC -------------- SER ----------------- UAS
INVITE ---------->INVITE------------>INVITE
<----------TRYING
CANCEL------------>
<-----------TRYING
If UAC sends an INVITE and then sends a CANCEL, this CANCEL doesn't stop SER. SER is still processing the INVITE to UAS, why? This is my ser.cfg:
route{ # initial sanity checks -- messages with # max_forwards==0, or excessively long requests if (!mf_process_maxfwd_header("16")) { sl_send_reply("483","Too Many Hops"); }; if (msg:len > max_len) { sl_send_reply("513", "Message too big"); break; };
# we record-route all messages -- to make sure that # subsequent messages will go through our proxy; that's # particularly good if upstream and downstream entities # use different transport protocol if (!method=="REGISTER") record_route();
# subsequent messages withing a dialog should take the # path determined by record-routing if (loose_route()) { # mark routing logic in request append_hf("P-hint: rr-enforced\r\n"); route(1); break; };
if (!uri==myself) { # mark routing logic in request append_hf("P-hint: outbound\r\n"); route(1); break; };
# if the request is for other domain use UsrLoc # (in case, it does not work, use the following command # with proper names and addresses in it) # if (uri==myself) { # if (uri=~"^sip:(.+@)?(10.22.1.[0-9]+|(.+@)?(10.22.2.[0-9]+|(.+.)?T.local)([:;?].*)?$"){ # if (uri=~"^sip:(.+@)?([0-9]+.[0-9]+.[0-9]+.[0-9]+|(.+.)?T.local)([:;?].*)?$"){ if (uri=~"^sip:(.+@)?(.+)([:;?].*)?$"){
if (method=="REGISTER") {
# Uncomment this if you want to use digest authentication # if ((!www_authorize("10.22.1.249", "subscriber"))) { # www_challenge("10.22.1.249", "0"); # break; # };
save("location"); break; };
if (method=="BYE") { t_relay(); sl_send_reply("200", "OK"); break; }; if (method=="ACK") { t_relay(); break; }; if (method=="CANCEL") { t_relay(); sl_send_reply("200", "OK"); break; }; if ((method=="INVITE")&&(!lookup("location"))) { exec_msg("printenv SRCIP; /bin/bash /usr/local/ser/sbin/sms"); sl_send_reply("100", "Trying"); exec_msg("sleep 10");
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("100", "Trying"); exec_msg("sleep 10"); } else { t_relay(); break; }
if (!lookup("location")){ sl_send_reply("404", "Not on-line"); break; } else { t_relay(); break; } };
if (method=="SUBSCRIBE") { if (!t_newtran()) { # log(1, "newtran error\n"); sl_reply_error(); }; handle_subscription("registrar"); break; };
if (method=="PUBLISH") { if (!t_newtran()) { # log(1, "newtran error\n"); sl_reply_error(); }; handle_publish("registrar"); break; };
lookup("aliases"); if (!uri==myself) { append_hf("P-hint: outbound alias\r\n"); route(1); break; };
# native SIP destinations are handled using our USRLOC DB if (!lookup("location")) { sl_send_reply("404", "Not Found"); break; };
}
append_hf("P-hint: usrloc applied\r\n"); route(1); }
route[1] { # send it out now; use stateful forwarding as it works reliably # even for UDP2TCP if (!t_relay()) { sl_reply_error(); }; }
Help me please. Thank you.
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers
Serusers mailing list serusers@lists.iptel.org http://lists.iptel.org/mailman/listinfo/serusers