On Tue, Jan 22, 2008 at 04:47:07PM +0100, Iñaki Baz Castillo wrote:
La pregunta
mágica es .. ¿Y como averiguar que tienen path? .. porque
he intentado con un $hdr(Path) y nanai, con un is_present_hf("Path") y
tampoco.
Eso nunca va a funcionar ya que la adicción o supresión de cabeceras se hacen
efectivas al abandonar el proxy, nunca durante el proceso del mensaje.
Ya, ya se que se produce el cambio cuando sale, pero creo que no me
has entendido ... pongo un ejemplo de traza:
Solo pongo el register de un UAC para abreviar.
UAC1 P1 P2 UAC2
REGISTER ->
<- 401
REGISTER ->
<- 200
add_path
t_replicate ->
save("location",0x03)
<- INVITE UAC1
401 ->
<- INVITE UAC1
100 ->
lookup()
<- t_relay()
allow_trusted()
sl_reply("503")->
-> 503
El 503 se produce porque cuando el P2 hace el lookup(), encuentra al
UAC1 en su base de datos (gracias a replicate), pero cambia el RURI
ANTES de darse cuenta de que el UAC1 tiene en su AOR un Path como una
casa y cuando el INVITE llega a P1, el RURI ya no es válido.
Si cambio el RURI ($ru) después del lookup, la señalización continua
correcta, pero se me monta el bucle del RTP.
Estoy
revisando el código de lookup() a ver donde demonios tiene el
tio en cuenta el Path, porque el módulo path.so solo registra un
callback hacia el módulo rr.
¿Has leído esto?
Módulo "registrar":
1.1.1. PATH support
http://www.openser.org/docs/modules/1.3.x/registrar.html#AEN41
Si y dice clarito ...
" A call to lookup(...) always uses the path header if found, and
inserts it as Route HF either in front of the first Route HF, or after
the last Via HF if no Route is present. It also sets the destination
uri to the first Path uri, thus overwriting the received-uri, because
NAT has to be handled at the outbound-proxy of the UAC (the first hop
after client's NAT)."
En cristiano, que encontrará el Path y modificará el orden de los
Route acorde, pero también dice que modificará el RURI.
Umm ..., se me ocurre que si trato el INVITE que entra el P1 desde P2,
como si fuese desde un GW PSTN (que tienen otro tratamiento diferente),
puede que cuele ... voy a probar.
Saludos.
--
Raúl Alexis Betancor Santana
Dimensión Virtual S.L.