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

Samuel Muller sml at l33.fr
Thu Feb 16 15:53:31 CET 2012


Thanks for this information ... so effectively it returns back to the
sip phone directly using the dispatcher module.

So I found that I made 3 mistakes :
. forgot to force_rport() to be sure
. didn't take in charge the has_totag()
. and forgot to configure the Audiocodes'SAS to add its Record-Route

Right now all is fine and working very well.

Thank you to all for this useful list.


Samuel MULLER


On Wed, Feb 15, 2012 at 7:31 PM, Samuel Muller <sml at l33.fr> wrote:
> 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