El 21/08/07, Saúl Ibarra saghul@gmail.com escribió:
Luego al final, si no ha entrado por ninguno de los if se comprueba el alias, el location, y se hace relay. Esa parte no me gusta, y quiero tratar cada mensaje explicitamente, por lo tanto, que pasaria si no dejo los UPDATE y PRACK? Parecen "opcionales"...
Desconozco de momento para qué sirven el UPDATE y PRACK (tengo cierta idea pero no la suficiente), pero algo me dice que son mensajes "in-dialog" en cuyo caso recuerda que no hay ni que comprobar "alias", ni "location", sólo hacer relay (o pedir auth en caso del REFER).
Es decir, te digo algo que seguro ya sabes, pero por si acaso:
Los mensajes fuera de diálogo van a la dirección "bonita" del usuario en plan:
INVITE sip:500@dominio.org MESSAGE sip:500@dominio.org SUBSCRIBE sip:dominio.org PUBLISH sip:500@dominio.org OPTIONS sip:500@dominio.org
Pero los mensajes dentro de diálogo van directamente a la URI indicada previamente en la cabecera "Contact":
ACK sip:500@82.84.173.243:5080 REFER sip:800@82.84.173.243:5080 BYE sip:800@82.84.173.243:5080 INVITE sip:800@82.84.173.243:5080 <-- re-INVITE (poner en espera) INFO sip:800@82.84.173.243:5080 (envío de un DTMF) NOTIFY sip:800@82.84.173.243:5080 (para notificar el resultado de una transferencia solicitada previamente con un REFER)
Es decir, estos mensajes dentro de diálogo ya van directamente a la dirección exacta del destino y no hace falta investigar si son alias o si están en location.
Saludos.