[OpenSER-Users-ES] Duda sobre el comportamiento de los flags en los branches.

Iñaki Baz Castillo ibc at aliax.net
Sat Feb 16 15:35:42 CET 2008


El Sábado, 16 de Febrero de 2008, Raúl Alexis Betancor Santana escribió:

> Pero en cuestión de los flags, si en un route(n) se comprobaba un flag
> concreto con isflagset, ¿esa comprobación se hace sobre el request original
> (branch[0]) ó sobre cada uno de los branches que pasan por ahi?

Depende de si haces la comprobación sobre un flag (isflagset) o sobre un bflag 
(isbflagset).

En el primer caso (flag) es para todos los branches a la vez, es decir, si 
activas un flag en el route inicial y luego lo testeas en cualquier 
on_branch_route lo verás activado. Incluso si te da por cambiarlo en un 
on_branch_route se cambiará para todos.

En cambio los bflags son independientes para cada branch que se cree, pero hay 
que tener cuidado:

Si estando en un "route" haces un lookup y te devuelve dos contactos, uno tras 
NAT y otro no, no se te ocurra hacer "isbflagset(FLAG_NATTED_CONTACT)" puesto 
que es una lotería (te dará sí o no dependiendo de si el primer contacto de 
la tabla está tras NAT o no. De igual forma si activas un bflag en el route 
inicial ese bflag se aplicará a todos los branches que crees, pero luego en 
el tratamiento individual de cada uno lo puedes cambiar.

En definitiva, las funciones "setbflag" y "isbflagset" sólo usarlas en un 
on_branch_route o en routes llamados desde él.



-- 
Iñaki Baz Castillo




More information about the Users-es mailing list