[OpenSIPS-Users] BYEs are not following the VIAs and Record-Routes

dpa denis7979 at mail.ru
Thu Feb 16 12:40:53 CET 2012


Hello

"4.12 forward(destination)

Forward the SIP request to the given destination in stateless mode... 
If destination parameter is missing, the forward will be done based on RURI"

In your case, stateless proxy, using forward() function, forward BYE to destination which is located in RURI, i.e. address of the final UA.

-----Original Message-----
From: users-bounces at lists.opensips.org [mailto:users-bounces at lists.opensips.org] On Behalf Of Samuel Muller
Sent: Wednesday, February 15, 2012 10:32 PM
To: users at lists.opensips.org
Subject: [OpenSIPS-Users] BYEs are not following the VIAs and Record-Routes

Hi,

I'm a bit confused concerning record-route, vias and route headers.

In my case, I've this :
UA -> local statefull pxy 1 -> stateless pxy 2 -> statefull pxy 3 the local pxy is an audiocodes mp11x (to use the SAS capabilies), the stateless is OpenSips with dispatcher module (only for the pxy3), then the statefull pxy 3 are several OpenSips acting too as registrar or redirect.

Meaning of stateless in my case is to have a minimalistic edge proxy to take care of multiple central proxies, not the customer side, and to pass through NAT problems for SIP.

all is working fine (invites, ack, prack, 100, 180, 200, register, options, cancel, ...) but the BYEs.
when an UA calls another UA, the SIP goes through each proxy (I need full control).

so, in the sip messages I've up to 5 VIAs and 3 Record-Routes headers ...
or sometimes in the 200 OK 1 Record-Route composed with multiple sets of IP.

I can not use topology hiding for several reasons :/

the problem with the BYEs, is that the stateless proxy send directly to the final UA instead of the local proxy 1. So it's working, but not as it has to be ...

Here is the config of the stateless proxy :

route {
...
    if (is_method("REGISTER")) {
        add_path_received();
    } else if (!is_method("ACK")) {
        record_route(";rr=pxy2");
    }
    # don't look for totag, there're never initial requests here.
    if (loose_route()) {
        forward();
        exit;
    }
    if (!ds_select_dst("1", "0")) {
         ds_mark_dst("p");
         ds_select_dst("2", "0");
    }
    forward();
    exit;
}


the full sip trace of a BYE is here : http://pastebin.com/WKv9wNU5

If someone has any idea or can explain how's the Route / Record-Route / Vias are working in my case ?

Thank you very much for any help ...

.Sam Muller.




More information about the Users mailing list