A cosa serve il metodo CANCEL

Utilizziamo il metodo CANCEL per cancellare una precedente richiesta inviata da un UAC.

Nello specifico, si tratta di un metodo che richiede di cessare l’elaborazione della richiesta, e di generare una risposta di errore.

Per questo motivo, è molto utile annullare le richieste alle quali un server impiega molto tempo per rispondere. Rappresenta quindi la soluzione migliore per le richieste di INVITE che non hanno ricevuto risposta in tempo utile. In tale caso, un UAS che riceve una richiesta CANCEL per un INVITE che non ha ancora inviato una risposta finale, smette di squillare e invia una risposta di errore specifica (487).

Com’è composto?

Flusso SIP richiesta CANCEL PBX
Flusso SIP metodo CANCEL

Tramite il flusso SIP, vediamo che la chiamate è stata richiesta dal dispositivo con indirizzo 185.xx.yy.108 e, dopo circa 12 secondi, quest’ultimo decide di terminare la sessione inviando un CANCEL. Il CANCEL viene inizialmente inviato al server (in questo caso il centralino PBX), il quale dà risposta “487” e “200 OK”. La richiesta viene poi inviata dal server al chiamato, su IP 207.180.193.179.

Analisi header e campi di intestazione pacchetto Cancel

Anche qui, nella prima riga troviamo la Request-Line contenente la richiesta fatta dal chiamante.
I campi di intestazione sono pressoché identici alla richiesta BYE (qui l’articolo).

Per maggiori informazioni, potete consultare la documentazione ufficiale RFC3261