[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