[OpenSIPS-Users] Can not CANCEL the call

HUYNH Hoang Huy huy.huynh at southtelecom.vn
Tue Aug 31 04:33:07 CEST 2010


Hello friends,
I have problem with CANCEL request because of t_check_trans() is always failed. 
Here is my config file

  # --- main routing logic
  ########################################################################
  # Request route generic
  ########################################################################
  route[0]
  {
   #Flood detection
   if (!pike_check_req()) {
    #xlog("L_INFO", ">>>>>> Flood detection \n - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci (R00-02)\n");
    drop();
    #sl_send_reply("403", "Forbidden");
    exit;
   }
   
   xlog("L_INFO", "OPENSIPS: New request; M=$rm ; F=$fu ; T=$tu ; IP=$si ; ID=$ci\n");
   if (!mf_process_maxfwd_header("10")) 
   {
    sl_send_reply("483","Too Many Hops");
    exit;
   };
   
   if (msg:len >=  2048 ) 
   {
    
    sl_send_reply("513", "Message too big");
    exit;
   };


   
   if(is_method("SUBSCRIBE") || is_method("NOTIFY") || is_method("OPTIONS"))
      {
          drop();
      };

   #NAT detection
   route(7);

   if (!is_method("REGISTER")) 
   {
    record_route();
   };

   if(is_method("CANCEL") || is_method("BYE"))
   {
    
    unforce_rtp_proxy();
    #end_media_session();
   
   }
    
   if(loose_route())
   {
    if(!has_totag())
    {
     
     sl_send_reply("403", "Initial Loose-Routing Rejected");
     exit;
    }
      
   }

   if (is_method("REGISTER")) 
   {
     
    route(2);
   }

   if(is_method("INVITE"))
   {
    
    route(3);
   }

   if(is_method("CANCEL") || is_method("ACK"))
   {
    route(6);
   }

   append_hf("P-hint: usrloc applied\r\n"); 
   route(1);
  }
  ########################################################################
  # Request route generic
  ########################################################################

  route[1] 
  {
   
   if (subst_uri('/(sip:.*);nat=yes/\1/'))
   {
    setbflag(6);
   }; 
   if(isbflagset(6)) 
   {
    
    t_on_reply("1");
    t_on_failure("2");

   }
   
   if (!t_relay("0x05")) 
   {
    if ((is_method("INVITE") || is_method("BYE")) && isbflagset(6)) 
    {
         unforce_rtp_proxy();
         #end_media_session();
         
    };

    sl_reply_error();
   }
   exit;
  }


  ############################################`############################
  # Request route 'REGISTER'
  ########################################################################
  route[2]
  {
   sl_send_reply("100", "Trying");
   
   if(!aaa_www_authorize("sip.worldfone.com.vn")) 
   {
    xlog("L_INFO", "aaa_www_authorize failed, challenging M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci .. \n");
    
    www_challenge("sip.worldfone.com.vn", "0");
    exit;
   }
   
   if(!db_check_to()) 
   {
    sl_send_reply("401","Unauthorized");
       exit;
     }

   consume_credentials();

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

  ########################################################################
  # Request route 'INVITE'
  ########################################################################
  route[3]
  {

   sl_send_reply("100", "Trying");

   /* Don't authen if INVITE from these IPs */
   if( ($si=="210.211.108.102")||($si=="222.255.236.131")||($si=="222.255.236.132") )
      {
    route(5);
    route(1);
    exit;
      } 
      else
      {
    if(!aaa_proxy_authorize("sip.worldfone.com.vn"))
    {
     xlog("L_INFO", "aaa_proxy_authorize ; M=$rm ; F=$fu ; T=$tu ; IP=$si ; ID=$ci\n");
     proxy_challenge("sip.worldfone.com.vn","0");
     exit;
    
    }
    
    if (!db_check_from()) 
    {
     sl_send_reply("403","Forbidden");
     exit;
    }
    consume_credentials();
    
    route(4);
    
    route(1);
    exit;
      };
  }


  ########################################################################
  # Request route 'invite-to-external/PC2Phone'
  ########################################################################
  route[4]
  {

   if(isbflagset(6))
   {
     #force_rtp_proxy();
     fix_nated_sdp("3");
   #xlog("L_INFO", "*-*-* fix_nated_sdp *-*-*\n");
   }
   setbflag(11);

   rewritehostport("210.211.108.102:5060");

   append_hf("Service: PC2PHONE\r\n"); 


  }

  ########################################################################
  # Request route 'invite-to-internal'/PC2PC
  ########################################################################
  route[5]
  {
   if(!lookup("location")) 
   {
    sl_send_reply("404","User is offline");
    exit;
   }
   else
   {
    xlog("L_INFO", "OPENSIPS: PC2PC found user\n");
    
    #if(isbflagset(6))
    #{
    # force_rtp_proxy();
    #}
    append_hf("Service: PC2PC\r\n");
   }
  }

  ########################################################################
  # Request route 'base-route-local'
  ########################################################################
  route[6]
  {

   t_on_reply("2");
   t_on_failure("2");
   if(t_check_trans())
   {
    
    if(!t_relay())
    {
     xlog("L_INFO", "Reply error for CANCEL request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");
     sl_reply_error();
    }
   }
   else
   {
    
    xlog("L_INFO", "Dropping mis-routed request - M=$rm RURI=$ru F=$fu T=$tu IP=$si ID=$ci\n");

   }
   exit;
   
  }


  ########################################################################
  # Fix NATed contact
  ########################################################################
  route[7]
  {
    force_rport();
   if (nat_uac_test("19"))
   {
    if (method=="REGISTER")
    {
     fix_nated_register();
    }
    else
    {
     fix_nated_contact();
    };
    setbflag(6);
   };
   

  }

  ########################################################################
  # Check for failure cases from AVP
  ########################################################################
  route[8]
  {

    avp_print();
    switch($avp(s:h323-credit-time))

     {

        case "-100":
      sl_send_reply("401","UnAuthorised");
          break;

        case "-101":
          sl_send_reply("401","User not found");
      break;
      
        case "-102":
      sl_send_reply("409","Conflict");
      break;

        case "-103":
      sl_send_reply("402","Payment Required");
      break;

    case "-104":
      sl_send_reply("407","User not active");
      break;

    case "-105":
      sl_send_reply("604","Does not match dial plan");
      break;
      
    case "-107":
      sl_send_reply("604","Dial plan is diable");
      break;
    case "-108":
      sl_send_reply("484","Address Incomplete");
      break;
      
    default:
      sl_send_reply("403","UnAuthorised");
    
   }
  }

  ########################################################################
  # Failure route
  ########################################################################
  failure_route[2]
  {

          if(isbflagset(6))
          {
                 unforce_rtp_proxy();
          
          }
  }

  ########################################################################
  # Reply route generic
  ########################################################################
  onreply_route[1] 
  {


   if ((isbflagset(6) || isbflagset(3)) && status=~"183||(2[0-9][0-9])") 
   {
    if(!search("^Content-Length:[ ]*0"))
    {

     if(isbflagset(11))
            {
      fix_nated_sdp("3");
      #force_rtp_proxy();

            }
     else 
     {

      force_rtp_proxy();

     }
        
    }
   }
   search_append('Contact:.*sip:[^>[:cntrl:]]*', ';nat=yes');
   if (isbflagset(6)) 
   {

    fix_nated_contact();
   }
   
   if (status=~"180||183||(2[0-9][0-9])")
   {
    # Add AVP into headers
    #route(10);
   }
   exit;
  }



  ########################################################################
  # Reply route 'base-standard-reply'
  ########################################################################
  onreply_route[2]
  {
   xlog("L_INFO", "Reply - S=$rs D=$rr F=$fu T=$tu IP=$si ID=$ci (RR1-01)\n");
   exit;

  }
I take long time for this but can not find out where is problem.
Please everyone help me solve where is problem and how to fix it.

Best regards,
Thank you,

Huy Huynh (Mr.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.opensips.org/pipermail/users/attachments/20100831/dd38b5ba/attachment-0001.htm 


More information about the Users mailing list