[OpenSIPS-Users] Call Forward

Juri Nysschen juri at greydotelecom.com
Tue Mar 1 18:28:32 CET 2011


Hi All,

 

I am trying to call forward when the destination agent is not
registered/available on the proxy.

 

The relevant routes are below. 

 

On a 486 BUSY it works perfectly !

 

At the top of my route block I have:

      if (!mf_process_maxfwd_header("5")) {

            xlog("L_INFO","LOOP [$fd/$fu/$rd/$ru/$si/]\n");

            sl_send_reply("483","Unavailable");

            exit;

      }

 

so if the UA is not registered to the proxy and it cannot find it, 483 is
returned on the INVITE.

 

on 483 if I use the same code as on 486:

 

            revert_uri();

            prefix("171");

            rewritehostport("X.X.X.X:5060");

            t_relay();

 

It seems to endlessly loop, eventually giving header errors.

 

In both cases the INVITE is called using:

 

do_routing("1");

lookup("location");

route(1);

exit;

 

What am I missing? Surely it should act the same in both cases.

 

 

route[1] {

            xlog("L_INFO","Route1 [$fd/$fu/$rd/$ru/$si/]\n");

 

            if (is_method("INVITE")) {

                  t_on_branch("1");

                  t_on_failure("1");

                  xlog("L_INFO","Route1 INVITE [$fd/$fu/$rd/$ru/$si/]\n");

                  if(has_body("application/sdp")){

                        xlog("L_INFO","Route1 INVITE has SDP
[$fd/$fu/$rd/$ru/$si/]\n");

                        if (rtpproxy_offer()){

                              xlog("L_INFO","Route1 INVITE Proxy Offered
[$fd/$fu/$rd/$ru/$si/]\n");

                              t_on_reply("1");

                        }

                        else {

                              t_on_reply("3");

                        };    

                  } else {

                        xlog("L_INFO","Route1 INVITE No SDP
[$fd/$fu/$rd/$ru/$si/]\n");

                        t_on_reply("2");

                  }

            }

            

            if (is_method("ACK") && has_body("application/sdp")){

                  xlog("L_INFO","Route1 INVITE ACK with SDP Answer Proxy
[$fd/$fu/$rd/$ru/$si/]\n");

                  rtpproxy_answer();

            }     

            

            if (is_method("BYE")){

                  xlog("L_INFO","Route1 BYE [$fd/$fu/$rd/$ru/$si/]\n");

            }     

            

        if (!t_relay()) {

                sl_reply_error();

        };

        

}

 

 

branch_route[1] 

{

      xlog("L_INFO","Branch Route1  [$fd/$fu/$rd/$ru/$si/]\n");

      setflag(3); # start db accounting

}

 

failure_route[1] 

{

    xlog("L_INFO","Failure Route1  [$fd/$fu/$rd/$ru/$si/]\n");

    if (t_was_cancelled()) {

            xlog("L_INFO","Failed on Cancel [$fd/$fu/$rd/$ru/$si/]\n");

            exit;

    }

    

    if (t_check_status("6[0-9]")) {

            xlog("L_INFO","Global Failure on Congestion
[$fd/$fu/$rd/$ru/$si/]\n");

            exit;

    }

    

    if (t_check_status("486")){ # Divert on BUSY

            xlog("L_INFO","Call Forward on BUSY [$fd/$fu/$rd/$ru/$si/]\n");

            revert_uri();

            prefix("171");

            rewritehostport("X.X.X.X:5060");

            t_relay();

            exit; 

      };

   

    if (t_check_status("483")){ # Divert on UNAVAILABLE

            xlog("L_INFO","Call Forward on UNAVAILABLE not available
[$fd/$fu/$rd/$ru/$si/]\n");

            exit;

      };

 

}

 

 

Regards

 <http://www.greydotelecom.net/bcard/jnysschen.htm> Juri Nysschen

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110301/5656089e/attachment-0001.htm>


More information about the Users mailing list