[Users] UA not receiving BYE from SPA 3000

Kenny Chua strain15 at yahoo.com
Tue Jun 27 07:32:57 CEST 2006


Hi Bogdan,
   Thanks for the reply. I'm still somewhat lost on the second point you told me.
 
 
>Second, BYE is an within the dialog request so you need to do 
>loose_route() for it, Just relaying it based on RURI is not correct at 
>all.


Does that mean in my loose route I have to have something like this:

If(method=="BYE")
{
 route(1);
 exit;
}

Here is my updated openser.cfg. Also, am I suppose to exit after
a forbidden meesage or error messages? 
Or should I return? Please advise me. Thank you.

debug=3
fork=yes
log_stderror=no

listen=192.168.1.5        # INSERT YOUR IP ADDRESS HERE
alias=test.com
port=5060
children=4

dns=no
rev_dns=no
fifo="/tmp/openser_fifo"
fifo_db_url="mysql://openser:openserrw@localhost/openser"

loadmodule "/usr/local/lib/openser/modules/mysql.so"
loadmodule "/usr/local/lib/openser/modules/sl.so"
loadmodule "/usr/local/lib/openser/modules/tm.so"
loadmodule "/usr/local/lib/openser/modules/rr.so"
loadmodule "/usr/local/lib/openser/modules/maxfwd.so"
loadmodule "/usr/local/lib/openser/modules/usrloc.so"
loadmodule "/usr/local/lib/openser/modules/registrar.so"
loadmodule "/usr/local/lib/openser/modules/auth.so"
loadmodule "/usr/local/lib/openser/modules/auth_db.so"
loadmodule "/usr/local/lib/openser/modules/uri.so"
loadmodule "/usr/local/lib/openser/modules/uri_db.so"
loadmodule "/usr/local/lib/openser/modules/nathelper.so"
loadmodule "/usr/local/lib/openser/modules/avpops.so"
loadmodule "/usr/local/lib/openser/modules/textops.so"
loadmodule "/usr/local/lib/openser/modules/xlog.so"

modparam("auth_db|uri_db|usrloc", "db_url",
 "mysql://openser:openserrw@localhost/openser")
modparam("auth_db", "calculate_ha1", 1)
modparam("auth_db", "password_column", "password")

modparam("nathelper", "natping_interval", 30) 
modparam("nathelper", "ping_nated_only", 1)   
modparam("nathelper", "rtpproxy_sock", "/var/run/rtpproxy.sock")

modparam("usrloc", "db_mode", 2)

modparam("registrar", "nat_flag", 6)

modparam("rr", "enable_full_lr", 1)

modparam("tm", "fr_inv_timer", 27)
modparam("tm", "fr_inv_timer_avp", "inv_timeout")

route {

 # -----------------------------------------------------------------
 # Sanity Check Section
 # -----------------------------------------------------------------
 if (!mf_process_maxfwd_header("10")) {
  sl_send_reply("483", "Too Many Hops");
  exit;
 };

 if (msg:len > max_len) {
  sl_send_reply("513", "Message Overflow");
  exit;
 };

 # -----------------------------------------------------------------
 # Record Route Section
 # -----------------------------------------------------------------
 if (method!="REGISTER") {
  record_route();
 };

 if (method=="BYE" || method=="CANCEL") {
  unforce_rtp_proxy();
  t_relay();
  exit;
 } 

 # -----------------------------------------------------------------
 # Loose Route Section
 # -----------------------------------------------------------------
 if (loose_route()) {

  if ((method=="INVITE" || method=="REFER") && !has_totag()) {
   sl_send_reply("403", "Forbidden");
   return;
  };

  if (method=="INVITE") {

   if (!proxy_authorize("","subscriber")) {
    proxy_challenge("","0");
    exit;
   } else if (!check_from()) {
    sl_send_reply("403", "Use From=ID");
    return;
   };
   consume_credentials();

   if (nat_uac_test("19")) {
    setflag(6);
    force_rport();
    fix_nated_contact();
   };
   force_rtp_proxy("l");
  };
  route(1);
  return;
 };

 # -----------------------------------------------------------------
 # Call Type Processing Section
 # -----------------------------------------------------------------
 if (uri!=myself) {
  route(4);
  route(1);
  return;
 };

 if (method=="ACK") {
  route(1);
  return;
 } else if (method=="CANCEL") {
  route(1);
  return;
 } else if (method=="INVITE") {
  route(3);
  return;
 } else  if (method=="REGISTER") {
  route(2);
  return;
 };

 lookup("aliases");
 if (uri!=myself) {
  route(4);
  route(1);
  return;
 };

 if (!lookup("location")) {
  sl_send_reply("404", "User Not Found");
  return;
 };

 route(1);
}

route[1] {

 # -----------------------------------------------------------------
 # Default Message Handler
 # -----------------------------------------------------------------

 t_on_reply("1");

 if (!t_relay()) {
  if (method=="INVITE" && isflagset(6)) {
   unforce_rtp_proxy();
  };
  sl_reply_error();
  
 };
}

route[2] {

 # -----------------------------------------------------------------
 # REGISTER Message Handler
 # ----------------------------------------------------------------

 if (!search("^Contact:[ ]*\*") && nat_uac_test("19")) {
  setflag(6);
  fix_nated_register();
  force_rport();
 };

 sl_send_reply("100", "Trying");

 if (!www_authorize("","subscriber")) {
  www_challenge("","0");
  exit;
 };

 if (!check_to()) {
  sl_send_reply("401", "Unauthorized");
  return;
 };

 consume_credentials();

 if (!save("location")) {
  sl_reply_error();
 };
}

route[3] {

 # -----------------------------------------------------------------
 # INVITE Message Handler
 # -----------------------------------------------------------------

 if (!proxy_authorize("","subscriber")) {
  proxy_challenge("","0");
  exit;
 } else if (!check_from()) {
  sl_send_reply("403", "Use From=ID");
  return;
 };

 consume_credentials();

 if (nat_uac_test("19")) {
  setflag(6);
  xlog("Setflag cos behind NAT\n");
 }
 
 
 
 lookup("aliases");
 if (uri!=myself) {
  route(4);
  route(1);
  return;
 };
 
 if (uri=~"^sip:00[0-9]*@") {  # International PSTN
  xlog("International PSTN\n");
  strip(2);
  route(4);
  route(5);
  return;
 };
 

 if (!lookup("location")) {
  sl_send_reply("404", "User Not Found");
  return;
 };

 route(4);
 route(1);
}

route[4] {

 # -----------------------------------------------------------------
 # NAT Traversal Section
 # -----------------------------------------------------------------

 if (isflagset(6)) {
  force_rport();
  fix_nated_contact();
  force_rtp_proxy();
  xlog("NAT Traversal Section\n");
 }
}

route[5] {

 # -----------------------------------------------------------------
 # PSTN Handler
 # -----------------------------------------------------------------
 xlog("Routing to PSTN gateway\n");
 rewritehostport("psnt.com:5060"); 

 avp_write("i:45", "inv_timeout");

 route(1);
}


onreply_route[1] {

 if (isflagset(6) && status=~"(180)|(183)|2[0-9][0-9]") {
  if (!search("^Content-Length:[ ]*0")) {
   force_rtp_proxy();
  };
 };

 if (nat_uac_test("1")) {
  fix_nated_contact();
 };
}



 
 
 __________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kamailio.org/pipermail/users/attachments/20060626/4be7b52a/attachment.htm 


More information about the Users mailing list