Resumo

  • A RFC 3680 separou o estado de registro de um endereço do conjunto de contatos vinculados a ele. Mesmo sem contatos registrados, o endereço permanecia no estado definido init.
  • Muitas notificações traziam apenas os contatos alterados. O assinante precisava aplicar as versões em sequência e pedir uma atualização completa ao detectar um salto; isso não comprovava presença, dispositivo ativo nem chamada bem-sucedida.

Uma lista vazia ainda podia ser uma resposta com estado. Na RFC 3680, um endereço de registro (AoR) sem contatos vinculados continuava em init. A máquina de estados pertencia ao AoR. Cada contato tinha outra máquina, criada quando era registrado e eliminada quando deixava de existir.

Publicada em março de 2004, a RFC 3680 definiu o pacote de eventos SIP reg. Um assinante autorizado enviava SUBSCRIBE e recebia informações em application/reginfo+xml. A primeira notificação podia trazer o estado completo; as seguintes geralmente mostravam apenas o que havia mudado. Cada documento indicava full ou partial e carregava uma versão: começava em zero e aumentava de um em um naquela assinatura.

O formato economizava transmissão, mas transferia ao assinante o trabalho de manter o quadro inteiro. Como um delta não repete contatos inalterados, o cliente precisava guardar uma tabela e combinar as notificações em ordem. A próxima versão podia ser aplicada; uma versão antiga era descartada. Se a numeração saltasse, a RFC recomendava atualizar a assinatura para provocar uma notificação de estado completo. Sem essa recuperação, a tabela local podia parecer coerente e já não refletir todos os contatos.

A máquina do AoR esclarece o que acontece quando o último contato some. O primeiro registro leva o endereço de init a active. Ele fica ativo enquanto ao menos um contato existir. Quando o último expira ou é removido, o AoR passa por terminated e volta imediatamente a init; essa transição final não pode ser enviada em um NOTIFY. O encerramento do contato, por sua vez, pode aparecer como uma mudança do próprio contato. O vínculo termina; o endereço continua tendo estado.

Active descreve registro, não uma pessoa. Não prova que alguém está disponível, que um aparelho está ligado agora ou que um INVITE será entregue. A RFC 3856 especificou outro pacote, o SIP Presence. Registros podem alimentar a composição de presença, mas não são sinônimos dela. E a publicação de uma norma não prova que uma implementação a siga.

A contribuição da RFC 3680 foi tornar mudanças observáveis por assinantes autorizados, preservar uma resposta definida para o conjunto vazio e criar um caminho de ressincronização após uma lacuna. A pergunta operacional não é só “há um contato?”. É também “até qual versão esta visão chegou, algum evento se perdeu e o que a evidência de registro realmente permite concluir?”.

Fontes