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