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/...
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.