El Lunes, 9 de Marzo de 2009, Jon Bonilla escribió:
Saludos
Me he encontrado con un tratamiento que hace record-route a los PUBLISH en
un fichero de configuración de Kamailio. Me he dado cuenta de que en el
fichero por defecto también aparece así:
if (!is_method("REGISTER|MESSAGE"))
record_route();
if( is_method("PUBLISH|SUBSCRIBE")){
sl_send_reply("503", "Service Unavailable");
exit;
}
¿Por qué se le pone el record-route al publish? No es una initial request
que establezca un diálogo y según el rfc 3903:
A PUBLISH request does not establish a dialog. A UAC MAY include a
Route header field in a PUBLISH request based on a pre-existing route
set as described in Section 8.1 of RFC 3261 [4]. The Record-Route
header field has no meaning in PUBLISH requests or responses, and
MUST be ignored if present.
Lo que me mosquea es que los de Kamailio, que saben de esto mucho más que
yo, hayan puesto el record-route y se me esté escapando algo.
Cierto, la verdad es que sería mucho más elegante aplicar RR sólo a los
métodos que pueden crear diálogo, es decir:
if(is_method("INVITE|SUBSCRIBE"))
record_route();
Lo que pasa es que "no hace daño" añadir RR a otros requests puesto que el UAS
los ignorará, pero cierto es que queda feo.
Si te parece voy a reportarlo en Kamailio-dev a ver qué les parece sustituir
ese fragmento de código por el que propongo (sólo INVITE y SUBSCRIBE crean
diálogo).
--
Iñaki Baz Castillo