[Serusers] SER avpops avp_pushto

Greger V. Teigre greger at teigre.com
Thu Aug 10 07:55:36 CEST 2006


You have to change the uri to the new, then append_branch.
g-)

Shaun Hofer wrote:
> When I try to use avp_pushto() in one section of ser.cfg it works and in 
> another section it doesn't. When I use it to out right forward a call it 
> works fine (callfwd). When it's used in the failure_route[1] it doesn't seem 
> to push a value onto ruri (I have made sure that avp_db_load() has been 
> called/used) . I'm wondering if avp_pushto() one of those methods that can't 
> be called from a failed route ?
>
> I get the following error when I use it:
> ERROR: t_forward_nonack: no branched for forwarding
> ERROR: w_t_relay (failure mode): forwarding failed
> ERROR: sl_reply_error used: I'm terribly sorry, server error occurred (1/SL)
>
> I tried taking away voicemail section in  failure_route[1] and made sure I was 
> phoning extension with a number instead of 'voicemail' in value column of the 
> database. That made no difference. When I tried adding append_branch() after 
> avp_pushto() it just ends up ringing the original phone number again.
>
> Thanks in advance
> -Shaun
>
> route[1] {
>         # ----------------------------------------------------------
>         # Default Message Handler
>         # ----------------------------------------------------------
>         t_on_reply("1");
>         if (!t_relay()) {
>                 if (method=="INVITE" || method=="ACK") {
>                         end_media_session();
>                 };
>                 sl_reply_error();
>         };
> }
> route[3] {
>         # ----------------------------------------------------------
>         # INVITE Message Handler
>         # ----------------------------------------------------------
>         if (!allow_trusted()) {
>                 if (!proxy_authorize("","subscriber")) {
>                         proxy_challenge("","0");
>                         break;
>                 } else if (!check_from()) {
>                         sl_send_reply("403", "Use From=ID");
>                         break;
>                 };
>                 consume_credentials();
>         };
>         if (client_nat_test("3")) {
>                 setflag(7);
>                 force_rport();
>                 fix_nated_contact();
>         };
>         lookup("aliases");
>         if (uri!=myself) {
>                 route(4);
>                 route(1);
>                 break;
>         };
>         if (avp_db_load("$ruri/username", "s:callfwd")) {
>                 setflag(22);
>                 avp_pushto("$ruri", "s:callfwd");
>                 route(6);
>                 break;
>         };
>         if (!lookup("location")) {
>                  if (uri=~"^sip:0[1-9][0-9]{8}") { # Domestic PSTN 
>                         route(4);
>                         route(5);
>                         break;
>                 };
> 		sl_send_reply("404", "User Not Found");
>                 break;
>         };
>         if (avp_db_load("$ruri/username", "s:fwdnoanswer")) {
>                 if (!avp_check("s:fwdnoanswer", "eq/$ruri/i")) {
>                         setflag(27);
>
>                 };
>         };
>         log(1,"t on fail \n");
>         t_on_failure("1");
>         route(4);
>         route(1);
> }
>              
>
> route[4] {
>         # ----------------------------------------------------------
>         # NAT Traversal Section
>         # ----------------------------------------------------------
>         if (isflagset(6) || isflagset(7) || isflagset(11)) {
>                 if (!isflagset(8)) {
>                          setflag(8);
>                          use_media_proxy();
>                  };
>         };
> }
>
> route[6] {
>         #  ----------------------------------------------------------
>         #  Call Forwarding Handler
>         #  ----------------------------------------------------------
>         lookup("aliases");
>         if (uri!=myself) {
>                  if (!isflagset(22)) {
>                          append_branch();
>                  };
>                  route(4);
>                  route(1);
>                  break;
>         };
>         if (!lookup("location")) {
>                  if (uri=~"^sip:88[0-9]{8}") { # Offline VoIP Network user 
> sent to * for voicemail
>                        route(4);
>                        route(5);
>                        break;
>                  };
>                  sl_send_reply("404", "User Not Found");
>                  break;
>         };
>         route(4);
>         route(1);
> }
>
> failure_route[1] {
>         if (t_check_status("487")) {
>                 break;
>         };
>         if (isflagset(26) && t_check_status("408")) {
>                 if (avp_check("s:fwdnoanswer","eq/voicemail/I")) { 
>                         avp_delete("s:fwdnoanswer"); 
>                         resetflag(26);
>                         revert_uri();
>                         rewritehostport("x.x.x.x:5060");#goto voicemail server
>                         append_branch();
>                         t_relay_to_udp("x.x.x.x", "5060");
>                         break;
>                 } else {
>                         avp_pushto("$ruri", "s:fwdnoanswer");
>                         avp_delete("s:fwdnoanswer");
>                         resetflag(26);
>                         route(6);
>                         break;
>                 };
>         };
>        
>         end_media_session();
> }
>
>
> _______________________________________________
> Serusers mailing list
> Serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
>   



More information about the sr-users mailing list