Porque uma propriedade CFStream SOCKS tardia pode ser rejeitada
Aplique as propriedades de fluxo configuráveis antes de abrir, verifique a aceitação e distinga o início do fluxo da conclusão da negociação do proxy.
Uma callback chamada “will connect” não é prova de que o CFStream ainda seja configurável. O contrato CFReadStreamSetProperty da Apple diz que se deve assumir que as propriedades são definidas antes de abrir, salvo se a documentação das próprias indicar o contrário.
Para uma integração de fluxo existente, mantenha a sequência junta: crie o fluxo/o par, construa o dicionário SOCKS com os tipos corretos, defina a propriedade adequada e verifique o respetivo resultado booleano, depois registe eventos e comece a abrir.
Um resultado false é uma falha de configuração, não uma rota instalada. Verifique o tipo de fluxo, a chave da propriedade, os tipos de valor do dicionário e o ciclo de vida antes de continuar.
Numa disposição orientada a eventos, a abertura pode começar sem que a negociação termine. Observe os eventos de estado e de erro antes de considerar a ligação utilizável.
Se outra biblioteca for dona do fluxo, use o hook documentado de pré-abertura. Uma callback que só chega mais tarde pode ser o ponto de integração errado. Alterar propriedades num fluxo já aberto não pode mover essa ligação existente para SOCKS.