Passa al contenuto principale

9. CreatePermission

TURN supporta due modi per il client di installare o aggiornare i permessi sul server. Questa sezione descrive un modo: la richiesta CreatePermission.

La richiesta CreatePermission può essere utilizzata in combinazione con il meccanismo Send nella sezione 10 o con il meccanismo del canale nella sezione 11.

9.1. Formazione di una richiesta CreatePermission

Un client che desidera installare o aggiornare uno o più permessi può inviare una richiesta CreatePermission al server.

Quando forma una richiesta CreatePermission, il client deve includere almeno un attributo XOR-PEER-ADDRESS e può includere più di uno di questi attributi. La parte dell'indirizzo IP di ciascun attributo XOR-PEER-ADDRESS contiene l'indirizzo IP per il quale deve essere installato o aggiornato un permesso. La parte della porta di ciascun attributo XOR-PEER-ADDRESS verrà ignorata e può essere qualsiasi valore arbitrario. I vari attributi XOR-PEER-ADDRESS possono apparire in qualsiasi ordine.

9.2. Ricezione di una richiesta CreatePermission

Quando il server riceve una richiesta CreatePermission, la elabora come da sezione 4 più le regole specifiche menzionate qui.

Il messaggio viene controllato per la validità. La richiesta CreatePermission deve contenere almeno un attributo XOR-PEER-ADDRESS e può contenere più di questi attributi. Se tale attributo non esiste, o se uno qualsiasi di questi attributi non è valido, allora viene restituito un errore 400 (Bad Request). Se la richiesta è valida, ma il server non è in grado di soddisfare la richiesta a causa di qualche limite di capacità o simile, allora viene restituito un errore 508 (Insufficient Capacity).

Il server può imporre restrizioni sull'indirizzo IP consentito nell'attributo XOR-PEER-ADDRESS -- se un valore non è consentito, il server rifiuta la richiesta con un errore 403 (Forbidden).

Se il messaggio è valido e il server è in grado di eseguire la richiesta, allora il server installa o aggiorna un permesso per l'indirizzo IP contenuto in ciascun attributo XOR-PEER-ADDRESS come descritto nella sezione 8. La parte della porta di ciascun attributo viene ignorata e può essere qualsiasi valore arbitrario.

Il server risponde quindi con una risposta di successo CreatePermission. Non ci sono attributi obbligatori nella risposta di successo.

NOTA: Il server non ha bisogno di fare nulla di speciale per implementare l'idempotenza delle richieste CreatePermission su UDP utilizzando "l'approccio stack senza stato". Le richieste CreatePermission ritrasmesse aggiorneranno semplicemente i permessi.

9.3. Ricezione di una risposta CreatePermission

Se il client riceve una risposta di successo CreatePermission valida, allora il client aggiorna le sue strutture dati per indicare che i permessi sono stati installati o aggiornati.