[OpenSER-Users-ES] [Users-Es] Presencia y tal...

Iñaki Baz Castillo ibc at aliax.net
Thu Sep 6 20:20:31 CEST 2007


El Jueves, 6 de Septiembre de 2007, Saúl Ibarra escribió:
> Entonces podría interesarme para los teléfonos que no soportan PUBLISH
> no?

Sí, pero como no hay una forma estándar de comunicar eso en los mensajes SIP 
(por ejemplo en el REGISTER)...


> Creo que tu anduviste en el tema pero no era posuible saber cuales 
> soportaban y cuales no, no?

No, no hay.

Probé unos cuántos inventos, como por ejemplo examinar la tabla location 
con "is_registered()" para aplicar sólo el pua_usrloc si el usuario no estaba 
registrado, y más chapucillas así. Pero no son válidas porque es una carrera 
de timers entre el tiempo de registro y el tiempo de caducidad del PUBLISH, y 
paso de obligar a un intervalo de registro fijo sólo por la tontería del 
pua_usrloc.

Es decir, me encontré con un montón de problemas.


> Como solucionaste el tema? 

Primeramente decir que realmente "no" debería ser un problema tan grande que 
un cliente SIP envíe un PUBLISH cuando se inicia y que, como también envía un 
REGISTER, resulte que OpenSer genera otro PUBLISH para él. Piensa que cuenta 
el último que se genere (que es el que genera un nuevo NOTIFY acorde con su 
contenido).

Un ejemplo de problema: Imagina que arrancas un softphone que envía un 
REGISTER cada 1000 segundos y un PUBLISH cada 1500 (además de en el arranque, 
claro).

- En el arranque se envían ambos mensajes y bueno, no pasa nada.
- Pero ahora el usuario se pone a mano en modo "offline".
- Entonces genera un PUBLISH que en OpenSer genera a su vez varios NOTIFY 
con "offline" para todos los subscriptores de la presencia de nuestro 
usuario.
- Es decir, ahora el resto le ven "offline".
- Pero entonces pasan 1000 segundos y mi cliente SIP envía un REGISTER con lo 
que se genera un PUBLISH "online" y los consiguientes NOTIFY y nos ven 
como "online".
- Esto se "arregla" a los 500 seg con mi próximo PUBLISH que 
indicará "offline" (si es que el usuario no lo cambia manualmente antes).

Es decir, una carrera de "timers".



Lo suyo sería tener un listado de clientes que soporten PUBLISH o de los que 
no, y comprobar el User-Agent antes de hacer el pua_usrloc, pero claro... 
coñazo.


En fin, que yo digamos que dejé el tema un poco en el olvido.

Saludos.

-- 
Iñaki Baz Castillo




More information about the Users-es mailing list