[OpenSIPS-Users] ACK mangling redux - OpenSIPS 1.7

Vlad Paiu vladpaiu at opensips.org
Tue Sep 6 17:45:25 CEST 2011


Hello,

In the latest pastebin config you provided the error is still present.
You have
       if(!is_method("REGISTER")) {
                 if(loose_route()) {
                         route(1);
                 }
       }

So for ACKs, you will do loose_route(), it will succeed and then you 
will call route(1), which calls rewritehostport() . So basically, 
nothing was different compared to your previous scenario, you still 
rewrite the RURI for ACKs.

Please take a closer look at the default scripting scenario that comes 
with OpenSIPS.
Basically, the sequential requests processing ( ACKs, ReINVITEs, etc ) 
should look something like :

     if (has_totag()) {
         # sequential request withing a dialog should
         # take the path determined by record-routing
         if (loose_route()) {
             # route it out to whatever destination was set by loose_route()
             # in $du (destination URI).
             if (!t_relay()) {
                 sl_reply_error();
             };
             exit;
         } 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");
         }
     }

Regards,

Vlad Paiu
OpenSIPS Developer


On 09/06/2011 06:17 PM, Jock McKechnie wrote:
>
>
> On Mon, Sep 5, 2011 at 2:49 AM, Vlad Paiu <vladpaiu at opensips.org 
> <mailto:vladpaiu at opensips.org>> wrote:
>
>     Hello Jock,
>
>     I have taken a look at the SIP trace and seems that the proxy
>     behind Charlie, 192.168.1.1, does some weird stuff to the ACK.
>     More specifically, it mangles the domain part of the RURI, so that
>     it points to 192.168.1.4. When Charlie ( 192.168.1.4 ) receives
>     this ACK it sees itself in the domain part of the RURI, so it
>     applies strict routing, by taking the last route header and
>     putting it in the RURI. This is why you see the apparent stripping
>     of the username part when forwarding the ACK.
>
>     I guess a good question is why are you calling
>         rewritehostport("192.168.1.4:5060 <http://192.168.1.4:5060>");
>     on the proxy behind Charlie ? Because this is the source of your
>     problem. I mean why not let the ACK get routed like every other
>     sequential request, via the Route header.
>
>
> Thank you, Vlad;
>
> I think I'm following what you're explaining - I'm force-routing the 
> ACKs instead of letting the handler route them based by the rules in 
> the header itself. I changed the configuration to the below, which 
> should only force the INVITE to Charlie, and use a t_relay() to handle 
> the ACKs, et al, correctly:
>
>         if (is_method("INVITE")) {
>                 # enable Record-Route
>                 record_route();
>                 route(1);
>                 }
>
>         if (!t_relay()) {
>                 sl_reply_error();
>                 }
>
> Unfortunately this appears to make no difference to how the ACK's RURI 
> looks. I imagine I'm using the wrong method of forwarding on the ACK?
> (Full config is here, should you want to see it in context: 
> http://pastebin.com/Zntg2y95)
>
> Thank you, again, for your assistance and suggestions. I am immensely 
> grateful for all help I receive on this list.
>
>  - Jock
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opensips.org
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110906/34b6df37/attachment.htm>


More information about the Users mailing list