[SR-Users-ES] [Kamailio-Users-ES] Expresiones regulares
Iñaki Baz Castillo
ibc en aliax.net
Jue Mayo 7 21:30:26 CEST 2009
El Jueves, 7 de Mayo de 2009, Saúl Ibarra escribió:
> Aupa ibc!
>
> Porque es mas eficiente? En tu ejemplo haces 2 comparaciones y una
> operacion logica y ella solo hace una comparacion, no? Se me escapa
> algo?
Sí, me explico:
if ( $fd == "192.168.9.52" && $fU =~ "^1[0-9]+" )
Primero se hace una comprobación:
$fd == "192.168.9.52"
Ésta es una comparación de igualdad "==" que siempre será más rápida que una
comparación de expresión regular. Además, es muy muy posible que la mayor
parte de los requests que lleguen no tenga From domain "192.168.9.52". Y si no
se cumple la primera condición, no se hace la segunda (la de la expresión
regular). Es decir, no es que mi sugerencia sea más rápida cuando el From
coincide (que posiblemente sea incluso algo más lenta), sino que es más
eficiente cuando el From no coincide (que entiendo será la mayor parte de las
veces).
Por otra parte, la expresión que Laura proponía era:
if (from_uri=="sip:1[0-9]*@192.168.9.52")
Si el request lleva un From un poco puñetero (pero perfectamente válido) como:
From: SIP:123232323 en 192.168.9.52
entonces la expresión regular fallaría porque "SIP" aparece en minúsculas. Una
solución es poner ls "i" de "case insensitive", lo que hace la comprobación
más lenta, pero ¿para qué hacer eso si lo único que queremos comparar es el
username (numérico) y el domain (una IP)?
--
Iñaki Baz Castillo <ibc en aliax.net>
More information about the SR-Users-ES
mailing list