[OpenSIPS-Users] BYE - 404 not here

ahmeddd lamiriahmedamin at gmail.com
Thu Aug 17 05:10:24 EDT 2017


Hi, 

I'm trying to establish a voice call between two IP phones over opensips 2.2
as a server. 

I have two IP phones and I have already installed opensips in my VM, and I
want to route calls between those two IP phones. 
that mean how to enable the trunk between two different IP 
phones and a simple softphone which should be registered to my opensips
proxy !! should I do 
somethig special to register them ! or should I specify the domain :( VM1 : 
x.x.13.87 and VM2 x.x.13.82 ) and for my opensips server (x.x.15.18) ! or 
it's the same domain as x.x.15.18 !! 
I have defined one domain which is the opensips server domain (x.x.15.18) 
and I created the two local users ( VM1: test1 at 10.42.15.18 ==> 666, VM2 :
test2 at 10.42.15.18 ==>9000 ) 
When I try to call from a softphone one of the ip phones, it doesn't work.. 

can any one help me ! 
I got always 404 user not found and even not reachable!! 
below the routing config : 


route{ 


                setflag(22); 
                sip_trace(); 

        if (!mf_process_maxfwd_header("10")) { 
                sl_send_reply("483","Too Many Hops"); 
                exit; 
        } 


        if (has_totag()) { 

                # sequential request withing a dialog should 
                # take the path determined by record-routing 
                if (loose_route()) { 
                        # validate the sequential request against dialog 
                        if ( $DLG_status!=NULL && !validate_dialog() ) { 
                                xlog("In-Dialog $rm from $si (callid=$ci) is
not valid according to dialog\n"); 
                                xlog("this is the source IP $si and this is
the  SIP request's method $rm : \n " ); 
                                ## exit; 
                        } 

                      if (is_method("BYE")) { 
                               setflag(ACC_DO); # do accounting ... 
                               setflag(ACC_FAILED); # ... even if the
transaction fails 
                       } else if (is_method("INVITE")) { 
                              # even if in most of the cases is useless, do
RR for 
                               # re-INVITEs alos, as some buggy clients do
change route set 
                               # during the dialog. 
                                record_route(); 
                        } 


                     # route it out to whatever destination was set by
loose_route() 
                     # in $du (destination URI). 
                     route(relay); 
              }  else if ( is_method("ACK") ) { 
                                if ( t_check_trans() ) { 
                                      # non loose-route, but stateful ACK;
must be an ACK after 
                                      # a 487 or e.g. 404 from upstream
server 
                                      t_relay(); 
                                      exit; 
                               } else { 
                                       # ACK without matching transaction -> 
                                       # ignore and discard 
                                       exit; 
                               } 

                        sl_send_reply("404","Not here"); 
               } 
                exit; 
      } 


 # preloaded route checking 
        if (loose_route()) { 
                xlog("L_ERR", 
                "Attempt to route with preloaded Route's
[$fu/$tu/$ru/$ci]"); 
                if (!is_method("ACK")) 
                        sl_send_reply("403","Preload Route denied"); 
                exit; 
        } 


        if (!uri==myself) { 
                append_hf("P-hint: outbound\r\n"); 

                route(1); 
        } 

        # requests for my domain 

        if (is_method("PUBLISH|SUBSCRIBE")) 
        { 
                sl_send_reply("503", "Service Unavailable"); 
                exit; 
        } 



      #Register Method 
        if (is_method("REGISTER")) 
           xlog("**'********  REGISTER  ********************"); 
                xlog("request URI ===> $ruri"); 
                xlog("source IP $si  \n " ); 
                xlog("destination URI = $du  \n"); 
                xlog("calling user:   $tU \n"); 
                xlog("reference to  URI of 'To' header  ====>  $tu"); 
                xlog("reference to domain in URI of 'To' header  ====> 
$td"); 
                xlog("request user rU =  $rU \n"); 
                xlog("from  value =  $from \n"); 
                xlog("To header:  $tu \n"); 
                xlog("requested direction =  $rd"); 
                xlog("requested port =  $rp "); 
                xlog("user ::  $avp(aor) registered the a new contact"); 

               #if (   0 ) setflag(7); 

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

               #save location added 
               save("location"); 
               exit; 
        } 


        if ($rU==NULL) { 
                # request with no Username in RURI 
                sl_send_reply("484","Address Incomplete"); 
                exit; 
        } 


        # do lookup with method filtering 
        if (!lookup("location","m")) { 

                t_newtran(); 
                t_reply("404", "Not Found"); 
                exit; 
        } 


        xlog("*******************************************   SIP TRUNKING
********************************************************"); 

      # If requested URI is one of the two VMs : 666 or 9000 
        if ($tU=~"666") { 
          xlog("Detecting destination from number 666: to test8s2"); 
          $du = "sip:10.42.13.82:5060"; 
          #replace the domain part of RURI to point to test8s2 or test8s7 
          rewriteuri("sip:666 at 10.42.13.82:5060"); 
          xlog("request user rU =  $rU \n"); 
          rewritehostport("10.42.13.82:5060"); 
          # route the call out based on RURI 

                        route(1); 
        } 


   # all numbers starting with 90 number are to be sent to test8s2 and
test8s7 
         if ($tU=~"9000"){ 
            xlog("Detecting destination from number: to test8s7"); 
           #replace the domain part of RURI to point to test8s2 or test8s7 
            strip(1); 
           $du="sip:10.42.13.87:5060"; 
           rewritehostport("10.42.13.87:5060"); 
           #route the call out based on RURI 
           route(1); 
        } 




        # CANCEL processing 
        if (is_method("CANCEL")) 
        { 
                if (t_check_trans()) 
                        t_relay(); 
                exit; 
        } 

        t_check_trans(); 



        # load balancing detect resources and do balancing 
        if ($tU=~"666" || $ruri=~"sip:10.42.15.18;Transport=TCP") { 
        #        xlog(" $rm from $si ,    ruri=$ru", "me"); 

                forward("10.42.13.82:5060"); 
                rewriteuri("sip:test8s2 at 10.42.13.82"); 
                xlog("requested URI = $rU "); 
                # looks like a call to test8s2 
                load_balance("2","VM"); 
                xlog("load balancing destination URI verified : $du"); 
                route(1); 
        } 
        else if ($tU=~"9000" || $ruri=~"sip:10.42.15.18;Transport=TCP") { 
                forward("10.42.13.87:5060"); 
                rewriteuri("sip:test8s7 at 10.42.13.87"); 
                # looks like a call to test8s7 
                 load_balance("2","VM"); 
                xlog("load balancing: dest Uri = $du"); 

                route(1); 
         } 

 # for non-REGISTER requests 

       if ( !(is_method("REGISTER")  ) ) { 
                if (from_uri==myself){ 
                    } else { 
                        # if caller is not local, then called number must be
local 
                        # here we nust route the call !!!!!!! 
                       if (!uri==myself) { 
                                send_reply("403","Rely forbidden"); 
                                exit; 
                        } 
                } 
            save("location"); 
            #save any message even it is not a register request 
                   } 


        # preloaded route checking 
        if (loose_route()) { 
                xlog("L_ERR", 
                "Attempt to route with preloaded Route's
[$fu/$tu/$ru/$ci]"); 
                if (!is_method("ACK")) 
                        sl_send_reply("403","Preload Route denied"); 
                exit; 

        } 


        # record routing 
        if (!is_method("REGISTER|MESSAGE")) 
                record_route(); 



        # account only INVITEs 
        if (is_method("INVITE")) { 
                xlog("***********    INVITE    *********** " ) ; 
                xlog("source IP $si  \n " ); 
                xlog("destination URI = $du  \n"); 
                xlog("calling user:   $tU \n"); 
                xlog("reference to  URI of 'To' header  ====>  $tu"); 
                xlog("reference to domain in URI of 'To' header  ====> 
$td"); 
                xlog("request user rU =  $rU \n"); 
                xlog("from  value =  $from \n"); 
                xlog("To header:  $tu \n"); 
                xlog("requested direction =  $rd"); 
                xlog("requested port =  $rp "); 
                xlog("user ::  $avp(aor) registered the a new contact"); 

        ยด      if (!lookup("location")) { 
                sl_send_reply("404", "User not found"); 
                exit; 
                 } 

         # create dialog with timeout 
               create_dialog(); 
               setflag(ACC_DO); # do accounting 
       } 




        # requests for my domain 
        if (is_method("PUBLISH|SUBSCRIBE")) 
        { 
                sl_send_reply("503", "Service Unavailable"); 
                #method save location added 
                exit; 
        } 

        # when routing via usrloc, log the missed calls also 
        setflag(ACC_MISSED); 
        route(relay); 

        t_relay(); 

route(1); 

} 





route[relay] { 

         # for INVITEs enable some additional helper routes 
         if (!t_relay()){ 
                send_reply("500","Internal Error"); 
        }; 
        exit; 
} 

onreply_route[2] { 

        xlog("incoming reply\n"); 
} 



route[1] { 

        xlog("following route 1 ::: forwarding according to URI"); 
        # forward according to uri 
        forward(); 


        # for INVITEs enable some additional helper routes 
        if (!t_relay()) { 
                sl_reply_error(); 
        }; 
        exit; 
} 



branch_route[per_branch_ops] { 
        xlog("new branch at $ru\n"); 
} 


onreply_route[handle_nat] { 

        xlog("incoming reply\n"); 
} 


failure_route[missed_call] { 
        if (t_was_cancelled()) { 
                exit; 
        } 

        # uncomment the following lines if you want to block client 
        # redirect based on 3xx replies. 
        ##if (t_check_status("3[0-9][0-9]")) { 
        ##t_reply("404","Not found"); 
        ##      exit; 
        ##} 


} 



local_route { 
        if (is_method("BYE") && $DLG_dir=="UPSTREAM") { 

                acc_db_request("200 Dialog Timeout", "acc"); 

        } 



--
View this message in context: http://opensips-open-sip-server.1449251.n2.nabble.com/BYE-404-not-here-tp4512769p7608292.html
Sent from the OpenSIPS - Users mailing list archive at Nabble.com.



More information about the Users mailing list