[OpenSIPS-Users] Getting header from 302

David Villasmil david.villasmil.work at gmail.com
Thu Jun 10 12:38:25 EST 2021


Hello again,

So following up on this, I understood i could get the header from the 302
reply with:

$(<reply>hdr(X-MyHeader))

Which is good, that works perfectly, but i can't verify the existence of
that header with:

is_present_hf("X-MyHeader")

Is there a way of doing that or should i just check $(<reply>hdr(X-MyHeader))
is not $null?



Regards,

David Villasmil
email: david.villasmil.work at gmail.com
phone: +34669448337


On Thu, Jun 3, 2021 at 2:27 PM David Villasmil <
david.villasmil.work at gmail.com> wrote:

> Thanks Ben,
>
> I understand now. Perfect.
>
> David
>
> On Thu, 3 Jun 2021 at 14:24, Ben Newlin <Ben.Newlin at genesys.com> wrote:
>
>> Yes, if a reply route is armed or the global reply route exists, they are
>> triggered first for any reply. Failure route, if armed, is triggered after
>> that for any >=300 response codes.
>>
>>
>>
>> Ben Newlin
>>
>>
>>
>> *From: *Users <users-bounces at lists.opensips.org> on behalf of David
>> Villasmil <david.villasmil.work at gmail.com>
>> *Date: *Thursday, June 3, 2021 at 8:10 AM
>> *To: *OpenSIPS users mailling list <users at lists.opensips.org>
>> *Subject: *Re: [OpenSIPS-Users] Getting header from 302
>>
>> Oh I didn’t register that <reply> param. I’ll try with that.
>>
>> On the other hand, I may be confused about how opensips processes >299
>> replies. Does it process them on onreply route and then goes to the failure
>> route? I mean that’s what I’m doing right now, but is this intended by
>> design? I would’ve though it’d go straight to the failure route, but
>> actually going to the onreply route sounds smart.
>>
>>
>>
>> On Wed, 2 Jun 2021 at 22:08, Jeff Pyle <jeff at ugnd.org> wrote:
>>
>> I've been working on a proxy to sit between MS Teams and "normal" SIP
>> stacks.  Teams sends way too many 180s and RTP-less 183s so I sanitize them
>> like this:
>>
>> onreply_route[relay_reply] {
>>         if (t_check_status("180")) {
>>                 if (isflagset("GOT_180")) {
>>                         drop;
>>                 } else {
>>                         setflag("GOT_180");
>>                 }
>>         }
>>
>>         if (isflagset("GOT_180") && t_check_status("183")) {
>>                 drop;
>>         }
>>
>> }
>>
>>
>>
>> With this I stop superfluous 18x messages from being relayed downstream.
>> The 'drop' here kills the message completely.  You could include the drop
>> if you want to stop the message from being relayed (which you probably do)
>> and are finished processing it in the script (which you are probably not).
>>
>>
>>
>> If I understand your application correctly, I'd populate the AVP in the
>> reply route and do everything else in the failure route.  Or, try Liviu's
>> suggestion of using $(<reply>hdr(Identity)) in the failure_route directly.
>> Either way, then continue in the failure_route to do whatever else needs to
>> happen.
>>
>>
>>
>>
>>
>> - Jeff
>>
>>
>>
>>
>>
>>
>>
>> On Wed, Jun 2, 2021 at 2:10 PM David Villasmil <
>> david.villasmil.work at gmail.com> wrote:
>>
>> Hello Jeff,
>>
>>
>>
>> That's exactly what I'm doing:
>>
>>
>>
>> # Relay to REDIRECT server
>> route[relay_to_REDIRECT]
>> {
>>     t_on_reply("reply_from_REDIRECT");
>>     t_on_failure("failure_from_REDIRECT");
>>
>>     xlog("L_ERR", "[$ci][$rm]: Relaying to REDIRECT");
>>     if (!t_relay()) {
>>         xlog("L_ERR", "[$ci][$rm]: unable to relay request $ru to $tU --
>> replying with error");
>>         sl_reply_error();
>>     }
>>
>>     exit;
>> }
>>
>> # Response from REDIRECT will come in here.
>> failure_route[failure_from_REDIRECT]
>> {
>>     xlog("L_ERR", "[$ci][$rm]: I'm in
>> failure_route[failover_from_REDIRECT]");
>>     if (t_was_cancelled()) {
>>         exit;
>>     }
>>
>>     if(is_avp_set("$avp(myheader)")) {
>>         xlog("L_ERR", "[$ci][$rm]: Got Identity Header:
>> $(hdr(myheader))");
>>         setflag(100);
>>         route(invite);
>>     }
>> }
>>
>> # Response 302 from REDIRECT will come in here.
>> onreply_route[reply_from_REDIRECT]
>> {
>>     xlog("L_ERR", "[$ci][$rm]: I'm in
>> onreply_route[reply_from_REDIRECT]");
>>     if (t_was_cancelled()) {
>>         exit;
>>     }
>>
>>     # detect redirect, store the header and send to "invite" as normally
>>     if (t_check_status("302") && is_present_hf("myheader")) {
>>         $avp(identity_header) = $(hdr(myheader));
>>         setflag(100);
>>         drop();
>>     }
>> }
>>
>>
>>
>> So I suppose i don't need the drop()?
>>
>>
>>
>> Regards,
>>
>>
>>
>> David Villasmil
>>
>> email: david.villasmil.work at gmail.com
>>
>> phone: +34669448337
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
> --
> Regards,
>
> David Villasmil
> email: david.villasmil.work at gmail.com
> phone: +34669448337
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20210610/969d0fce/attachment-0001.html>


More information about the Users mailing list