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(a)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. .