Perché una proprietà CFStream SOCKS impostata in ritardo può essere rifiutata
Applicare le proprietà di flusso configurabili prima dell'apertura, verificare l'accettazione e distinguere l'avvio del flusso dal completamento della negoziazione del proxy.
Una callback chiamata “will connect” non è prova che il CFStream sia ancora configurabile. Il contratto CFReadStreamSetProperty di Apple afferma che si deve presumere che le proprietà vengano impostate prima dell'apertura, salvo che la loro documentazione dica il contrario.
Per un'integrazione di flusso esistente, tenere insieme la sequenza: creare il flusso/la coppia, costruire il dizionario SOCKS con i tipi corretti, impostare la proprietà appropriata e verificarne il risultato booleano, quindi registrare gli eventi e iniziare ad aprire.
Un risultato false è un errore di configurazione, non una rotta installata. Verificare tipo di flusso, chiave della proprietà, tipi dei valori del dizionario e ciclo di vita prima di proseguire.
In una disposizione guidata da eventi, l'apertura può iniziare senza che la negoziazione sia terminata. Osservare gli eventi di stato e di errore prima di considerare utilizzabile la connessione.
Se un'altra libreria possiede il flusso, usare il suo hook documentato prima dell'apertura. Una callback che arriva solo più tardi può essere il punto di integrazione sbagliato. Modificare le proprietà su un flusso già aperto non può spostare quella connessione esistente su SOCKS.