Pourquoi une propriété CFStream SOCKS définie tardivement peut être rejetée
Appliquez les propriétés de flux configurables avant l'ouverture, vérifiez l'acceptation et distinguez le démarrage du flux de l'achèvement de la négociation du proxy.
Un rappel nommé « will connect » ne prouve pas que le CFStream est encore configurable. Le contrat CFReadStreamSetProperty d'Apple indique qu'il faut supposer que les propriétés doivent être définies avant l'ouverture, sauf si leur propre documentation précise le contraire.
Pour une intégration de flux existante, gardez la séquence d'un seul tenant : créez le flux/la paire, construisez le dictionnaire SOCKS correctement typé, définissez la propriété appropriée et vérifiez son résultat booléen, puis enregistrez les événements et commencez l'ouverture.
Un résultat false est un échec de configuration, pas une route installée. Vérifiez le type de flux, la clé de propriété, les types de valeurs du dictionnaire et le cycle de vie avant de continuer.
Dans un agencement piloté par événements, l'ouverture peut commencer sans que la négociation soit terminée. Observez les événements d'état et d'erreur avant de considérer la connexion comme utilisable.
Si une autre bibliothèque possède le flux, utilisez son point d'ancrage documenté avant ouverture. Un rappel qui n'arrive que plus tard peut être le mauvais point d'intégration. Modifier les propriétés d'un flux déjà ouvert ne peut pas déplacer cette connexion existante vers SOCKS.