[OpenSER-Users-ES] Problema usando t_on_reply desde branch_route

Raúl Alexis Betancor Santana rabs at dimension-virtual.com
Sun Feb 17 16:44:58 CET 2008


El Sunday 17 February 2008 15:20:45 Iñaki Baz Castillo escribió:
> No, podrías usar un único t_on_reply en el cual miras haces:
>
> on_replyroute(1) {
>   ifbflagset(NAT) {
>       use_media_proxy();
>       ...
>   }
> }

No funciona, lo he comprobado, puesto que si solo UNO de los branches tiene el 
bflag(NAT) activado .. ese if será TRUE para todos los branches.
De hecho he tenido que cambiar ese códigos por 

onreply_route[1]
{
  if(isbflagset(NAT) || nat_uac_test("19"))
  {
    use_media_proxy();
   }
}

> Recuerda que un bflag persiste durante toda la transacción de su branch, lo
> cual incluye las respuestas. O sea, si envías un INVITE en cuyo branch
> tenía activado el bflag(NAT) verás ese bflag activo en el on_replyroute
> correspondiente.

Eso es la teoría, la práctica dice que las llamadas a setbflag,resetbflag y 
isbflagset actuan sobre el branch 0 (todos los branches) a no ser que le 
especifiques el branch_idx sobre el que comprobar, lo cual no seria ningún 
problema sino fuera proque ninguna de las tres funciones admite ni una 
variable, ni una pseudovariable ni un AVP como parámetro branch_idx, lo cual 
imposibilita DIRECTAMENTE utilizar dicha funcionalidad.
Además no lo digo yo .. es un bug reportado.
http://66.102.9.104/search?q=cache:7_2_51k69wcJ:openser.org/pipermail/users/2006-July/005982.html+t_on_reply+inside+branch_route&hl=es&ct=clnk&cd=1&client=iceweasel-a

> No te entiendo. Si haces:
>
>  branch_route[2]
> {
>    if(isbflagset(NAT))
>
> Sencillamente comprobarás para cada branch si está activo ese bflag, no sé
> a qué te refieres con "solo comprueba si para TODOS los branches esta
> seteado el flag". Por ejemplo:

Que no, que no funciona así .. eso es lo que uno esperaría .. pero no funciona 
de esa manera, mira la discursión del link que pongo más arriba.

> branch_route[2]
> {
>    if(isbflagset(NAT)) {
>        xlog("bflag(NAT) activado para este branch con RURI $ru \n");
>    }
> }
>
> Ese xlog sólo lo verás para los branches pertenecientes a localizaciones
> del usuario tras NAT.

Ese log lo veré para todos los branches, con que solo uno sea NAT. Juraito 
Iñaki .. que lo he tenido que arreglar a base de meter cabeceras extras en 
las transacciones que llevan NAT.

-- 
Saludos.

Raúl Alexis Betancor Santana
Dimensión Virtual S.L.




More information about the Users-es mailing list