11. Receiving Trickled Candidates (Ricezione dei candidati trickled)
In qualsiasi momento durante una sessione ICE, un agente Trickle ICE può ricevere nuovi candidati dall'agente remoto, da cui tenterà di formare una coppia di candidati; questo funziona come descritto nella specifica ICE [RFC8445], con le seguenti condizioni:
-
L'agente controlla se eventuali candidati locali sono attualmente noti per lo stesso flusso e componente. Se non lo sono, l'agente aggiunge semplicemente il nuovo candidato all'elenco dei candidati remoti (senza accoppiarlo).
-
Altrimenti, se l'agente ha già raccolto uno o più candidati locali per questo flusso e componente, tenta di accoppiare il nuovo candidato remoto come descritto nella specifica ICE [RFC8445].
-
Se una coppia appena formata ha un candidato locale il cui tipo è riflessivo del server (server-reflexive), l'agente deve (MUST) sostituire il candidato locale con la sua base prima di completare il controllo di ridondanza al passo successivo.
-
L'agente pota le coppie ridondanti come descritto di seguito ma controlla le coppie esistenti solo se hanno uno stato In attesa (Waiting) o Congelato (Frozen); questo evita la rimozione di coppie per le quali i controlli di connettività sono in corso (uno stato In corso (In-Progress)) o per le quali i controlli di connettività hanno già dato un risultato definitivo (uno stato Riuscito (Succeeded) o Fallito (Failed)).
A. Se l'agente trova una ridondanza tra due coppie e una di queste coppie contiene un candidato remoto appena ricevuto il cui tipo è riflessivo del peer (peer-reflexive), l'agente dovrebbe (SHOULD) rifiutare la coppia contenente tale candidato, impostare la priorità della coppia esistente alla priorità della coppia rifiutata e riordinare la checklist. (Questa politica aiuta a eliminare i problemi con i candidati riflessivi del peer remoti per i quali una richiesta di binding STUN viene ricevuta prima che la segnalazione del candidato venga trickled all'agente ricevente, come una vista diversa delle priorità di coppia tra l'agente locale e l'agente remoto, perché lo stesso candidato potrebbe essere percepito come riflessivo del peer da un agente e come riflessivo del server dall'altro agente.)
B. L'agente applica quindi le regole definite nella Sezione 6.1.2.4 di [RFC8445].
-
Se, dopo aver completato i test di ridondanza pertinenti, la checklist in cui la coppia deve essere aggiunta contiene già il numero massimo di coppie di candidati (100 per impostazione predefinita secondo [RFC8445]), l'agente dovrebbe (SHOULD) rifiutare tutte le coppie nello stato Fallito per fare spazio alla nuova coppia. Se non ci sono tali coppie, l'agente dovrebbe (SHOULD) rifiutare una coppia con una priorità inferiore alla nuova coppia per fare spazio alla nuova coppia, fino a quando il numero di coppie è uguale al numero massimo di coppie. Questo trattamento è coerente con la Sezione 6.1.2.5 di [RFC8445].