En los últimos días hubo una discusión interesante (lanzada por Iñaki, además) en las listas de OpenSER y sip-implementors a acerca de cómo tratar las respuestas 6xx ya que según la RFC3261 cuando un proxy recibe un 6xx, éste debe dar por terminada la transacción y no permitir crear ningún otro branch ya que se considera que es una respuesta de finalización completa… y sin ninguna opción de continuidad
Debido a que algunos UA (softphones, teléfonos IP, gateways, etc) hacen un mal uso de esta respuesta, hay casos en los que no es posible usar servicios como serial forking, crear un nuevo branch hacia un media server, etc, al recibir un 6xx cuando realmente se debería recibir un 4xx.
Después de las discusiones comentadas, Bogdan Iancu ha decidido implementar una nueva opción en el módulo TM de OpenSER que permite modificar el comportamiento del proxy al recibir un 6xx, aunque esto signifique saltarse el comportamiento estándar definido en la RFC3261. Con esta nueva opción, se puede hacer que el proxy trate un 6xx internamente como si fuese cualquier otra respuesta negativa (4xx, 5xx) permitiendo generar nuevos branches para serial forking, locuciones, etc.
Se me ocurre que una opción más flexible sería activar/desactivar esta característica con un FLAG. Así por ejemplo podríamos “pasar olímpicamente” de 6XX enviados por gateways tontos pero hacer caso de los 6XX cuando se producen al hacer parallel forking en una llamada a un usuario interno.
Tal vez lo suelte por la lista de developers.
uff… ¿vamos a diferenciar entre 6xx malos y 6xx buenos?
jeje, no sé qué responder… tal vez un 6XX
XD
¿cuando uno no sabe que responder no tiene que enviar un 500 “Internal Server Error”?
Pero no pongas un Retry-After o te lo vuelven a preguntar…