[SR-Users] Trouble with 302 Redirect

Marco Capetta mcapetta at sipwise.com
Thu Feb 27 09:40:00 CET 2020


Hi Muhammad,

you can try to use set the 't_on_branch_failure' in your branch and then 
catch the 302 message in the 'event_route[tm:branch-failure:id]'. From 
there you should be able to do what you need.

Regards
Marco

On 2/26/20 6:37 PM, Muhammad Zaka wrote:
> Hi Alex,
>
> We have a similar issue (slightly complex) as it involves sip parallel forking.
>
> The issue is that failure_route[] occurs when all sip forked are exhausted even though "302 Moved Temporarily" has been responded back by one of the SIP endpoint quite quickly.
>
> So, we wish to handle 302 onreply_route[] as it is received quite promptly but as you pointed out Kamailio doesn’t let us set the contact header or append_to_reply.
>
> Please can you suggest me is there any way out we can change the sip contact when using sip parallel forking.
>
> Many Thanks
>
> Regards
> Muhammad Adil M Zaka
>
> -----Original Message-----
> From: sr-users <sr-users-bounces at lists.kamailio.org> On Behalf Of Alex Balashov
> Sent: 16 January 2020 22:32
> To: sr-users at lists.kamailio.org
> Subject: Re: [SR-Users] Trouble with 302 Redirect
>
> Try doing this in a failure_route[]; onreply_route[] isn't really meant to transform replies, just to passively observe or drop them.
>
> Also, you'll want to use append_to_reply():
>
>     https://kamailio.org/docs/modules/5.3.x/modules/textops.html#textops.f.append_to_reply
>
> Note that the conditions that give rise to the invocation of a failure_route are broader and somewhat more abstract than any given SIP reply -- e.g. transaction reply timeouts. So, you would want to structure your failure_route like this:
>
>     failure_route[REDIRECT_HANDLE] {
>        if(t_is_canceled())
>           exit;
>
>        if(t_branch_timeout()) {
>           # Handle the timeout case...
> 	
> 	 exit;
>        }
>
>        # Use $T_rpl to access reply code ($rs) and reply reason if needed
>        # ($rs), per:
>        #
>        # https://www.kamailio.org/wiki/cookbooks/5.3.x/pseudovariables#t_rpl_pv
>
>        if($T_rpl($rs) == 486) {
>           append_to_reply("Contact: <sip:...>\r\n");
>           t_reply("302", "Moved Temporarily");
> 	 exit;
>        }
>
>        # Some other case.
>     }
>
> -- Alex
>
> On Thu, Jan 16, 2020 at 03:54:54PM -0500, Jim Leahy wrote:
>
>> Hi All,
>>     I'm having some issues trying to properly send a '302 Moved Temporarily'
>> reply to the calling UAC (UAC1) when the remote UAC (UAC2) returns a
>> 486 status (Do Not Disturb). The goal is to redirect UAC1 to a
>> voicemail server when UAC2 is in DND.
>> Here are the pertinent parts of my config:
>>
>> route {
>>          # drop some things right away
>>          route(DROP);
>>
>>          # perform sanity check
>>          route(SANITYCHECK);
>>
>>          # handle registrations
>>          if(is_method("REGISTER")) {
>>                  route(REGISTRATION);
>>                  exit;
>>          }
>>
>>          # handle invites
>>          if(is_method("INVITE")) {
>>                  route("INVITE");
>>                  exit;
>>          }
>>
>>          route(RELAY);
>> }
>>
>> route[INVITE] {
>>          # add this proxy to the record-route so it stays in the loop
>>          record_route();
>>
>>          # if we can find this user in the location DB...
>>          if(lookup("location")) {
>>                  # relay the invite to the new dURI
>>                  t_on_failure("FOURDIGITFAIL");
>>                  t_on_reply("FOURDIGITREPLY");
>>                  route(RELAY);
>>                  # go back to the main route
>>                  return;
>>          }
>>
>> onreply_route[FOURDIGITREPLY] {
>>          if(t_check_status("4[0-9]{2}")) {
>>                  t_reply("302", "Moved Temporarily");
>>          }
>> }
>>
>> I'm having issues with the t_reply in the onreply_route. It
>> successfully sends the reply, but I can't seem to set the Contact
>> header properly. I'm trying to set it to the location of the user's
>> mailbox on the voicemail sever (ie sip:1000 at vmpbx.domain.com), but nothing I try works. I've tried:
>>       remove_hf("Contact");
>>       insert_hf("Contact: sip:1000 at vmpbx.domain.com");
>>       t_reply("302", "Moved Temporarily");
>>
>> But as I understand it, that just changes the header in the reply from
>> UAC2, not the reply I'm sending to UAC1
>>
>> Then I tried:
>>       append_to_reply("Contact: sip:1000 at vmpbx.domain.com" );
>>       t_reply("302", "Moved Temporarily");
>>
>> But I can't use append_to_reply in an onreply block.
>> How can I change the Contact header in the reply that's sent? Am I
>> just going about this the wrong way? Any help would be appreciated.
>> Thanks
>> _______________________________________________
>> Kamailio (SER) - Users Mailing List
>> sr-users at lists.kamailio.org
>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
>
> --
> Alex Balashov | Principal | Evariste Systems LLC
>
> Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free)
> Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
>
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> _______________________________________________
> Kamailio (SER) - Users Mailing List
> sr-users at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users

-- 
*Marco Capetta *
VoIP Developer

Sipwise GmbH <http://www.sipwise.com> , Campus 21/Europaring F15
AT-2345 Brunn am Gebirge

Phone: +43(0)1 301 2044 <tel:+4313012044>
Email: mcapetta at sipwise.com <mailto:mcapetta at sipwise.com>
Website: www.sipwise.com <http://www.sipwise.com>

Particulars according Austrian Companies Code paragraph 14
"Sipwise GmbH" - Europaring F15 - 2345 Brunn am Gebirge
FN:305595f, Commercial Court Vienna, ATU64002206

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20200227/f755896e/attachment.html>


More information about the sr-users mailing list