[SR-Users] Problem using ds_is_from_list in failure_route

Joel Serrano | VOZELIA joel at vozelia.com
Wed Sep 21 00:37:53 CEST 2016


Hi, 

I managed to solve this problem using ds_is_from_list in failure_route like this:

ds_is_from_list("8201", "3", "sip:$T_rpl($si):$T_rpl($sp)"))

But I don't understand why I needed to do it that way.

I would still like anyone to explain if they know the reason!

Thanks.. :)
Joel.

----- Original Message -----
> From: "Joel Serrano | VOZELIA" <joel at vozelia.com>
> To: "Kamailio (SER) - Users Mailing List" <sr-users at lists.sip-router.org>
> Sent: Tuesday, September 20, 2016 2:36:42 PM
> Subject: [SR-Users] Problem using ds_is_from_list in failure_route

> Hi all,
> 
> I'm facing a strange problem using ds_is_from_list in the failure_route block.
> 
> I have 4 servers in a dispatcher group 8201.
> 
> 
> Scenario:
> 
> A call comes in, gets routed to a backend server from 8201 dispatcher group, the
> backend replies with a 480.
> 
> Then we have:
> 
> onreply_route[MANAGE_REPLY] {
> [...]
>        if (ds_is_from_list("8201")) && t_check_status("480") {       <<<<<< This gets
>        executed, because the node is in 8201 and the reply was a 480
>                if (is_present_hf("X-UserID")) {
>                        $var(UserId) = $hdr(X-UserID);
>                }
>        }
> [...]
> }
> 
> So far so good, next is:
> 
> 
> failure_route[MANAGE_FAILURE] {
> [...]
>        if (ds_is_from_list("8201")) && (t_check_status("480")) {     <<<<<< This does
>        NOT get executed.
>                append_hf("X-UserID: $var(UserId)\r\n");
>                if (!ds_select_domain("8205","4")) {
>                        xlog("L_ERR", "[$ci] - No additional gateways\n");
>                        t_reply("502","Bad Gateway");
>                        exit;
>                }
>                t_set_fr(0,2000);
>                route(RELAY);
>        }
> [...]
> }
> 
> 
> To find the problem, I added some logging in the failure_route before entering
> the IF statement:
> 
> if (ds_is_from_list("8201")) xlog("L_NOTICE", "DS is in group 8201");    <<<<<
> No log, so did NOT match.
> if (t_check_status("480")) xlog("L_NOTICE", "Status is 480");            <<<<<
> Yes log, so DID match.
> 
> 
> According to the docs, ds_is_from_list can be used in any route block, so I
> think I am definitely doing something wrong... or maybe it's a bug??
> 
> The idea is to achieve this:
> 
> Call comes in from softphone into proxy, proxy sends it to backend, if backend
> replies with a 480, send it to another dispatcher set (8205). If the 480 comes
> from somewhere that is not the backend (8201), then do nothing.
> 
> 
> 
> Any suggestions?
> 
> Thanks in advanced.
> 
> Best regards,
> Joel.
> Este mensaje y, en su caso, los ficheros anexos son confidenciales,
> especialmente en lo que respecta a los datos personales, y se dirigen
> exclusivamente al destinatario referenciado.Les informamos que los datos
> contenidos en el presente mail, han sido facilitados por usted o recogidos de
> Fuentes Accesibles al Público. Dicha información personal, será incluida en un
> fichero bajo la responsabilidad de VOZELIA TELECOM S.L.Todos los ficheros que
> trata nuestra empresa se encuentran debidamente inscritos ante la Agencia
> Española de Protección de Datos.Vd. Como propio interesado podrá ejercitar sus
> derechos de Acceso, Cancelación, Rectificación u Oposición, en el mail:
> administracion at vozelia.com o en la dirección Avenida de Manoteras 8 escalera 3
> 2ºB, 28050 Madrid.Tal y como establece la Ley Orgánica de Protección de Datos
> 15/1999 de 13 de Diciembre.Para ejercer sus derechos desde Panama podrá hacerlo
> en la dirección Vía Argentina, Edificio Mediteranean Loft. Panama.En caso
> de no ser el destinatario y haya recibido este mensaje por error, agradeceremos
> que nos lo comunique inmediatamente al remitente sin difundir, almacenar o
> copiar su contenido.La divulgación o el suministro, en todo o en parte, a
> cualquier tercero, no podrá ser realizada sin el previo, expreso y escrito
> consentimiento de VOZELIA TELECOM S.L. .
> 
> 
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
Este mensaje y, en su caso, los ficheros anexos son confidenciales, especialmente en lo que respecta a los datos personales, y se dirigen exclusivamente al destinatario referenciado.Les informamos que los datos contenidos en el presente mail, han sido facilitados por usted o recogidos de Fuentes Accesibles al Público. Dicha información personal, será incluida en un fichero bajo la responsabilidad de VOZELIA TELECOM S.L.Todos los ficheros que trata nuestra empresa se encuentran debidamente inscritos ante la Agencia Española de Protección de Datos.Vd. Como propio interesado podrá ejercitar sus derechos de Acceso, Cancelación, Rectificación u Oposición, en el mail: administracion at vozelia.com o en la dirección Avenida de Manoteras 8 escalera 3 2ºB, 28050 Madrid.Tal y como establece la Ley Orgánica de Protección de Datos 15/1999 de 13 de Diciembre.Para ejercer sus derechos desde Panama podrá hacerlo en la dirección Vía Argentina, Edificio Mediteranean Loft. Panama.En caso 
 de no ser el destinatario y haya recibido este mensaje por error, agradeceremos que nos lo comunique inmediatamente al remitente sin difundir, almacenar o copiar su contenido.La divulgación o el suministro, en todo o en parte, a cualquier tercero, no podrá ser realizada sin el previo, expreso y escrito consentimiento de VOZELIA TELECOM S.L. .




More information about the sr-users mailing list