为什么较晚设置的 CFStream SOCKS 属性可能被拒绝
在打开之前应用可配置的流属性,检查其是否被接受,并区分启动流与完成代理协商。
名为“will connect”的回调并不能证明 CFStream 仍可配置。Apple 的 CFReadStreamSetProperty 契约指出,除非其自身文档另有说明,否则应假定属性必须在打开之前设置。
对于现有的流集成,请把顺序保持在一起:创建流/流对,构建类型正确的 SOCKS 字典,设置相应的属性并检查其布尔结果,然后注册事件并开始打开。
false 结果意味着配置失败,而不是已安装的路由。继续之前,请检查流类型、属性键、字典值类型和生命周期。
在事件驱动的安排中,打开可以在协商尚未完成时就开始。在认为连接可用之前,请观察状态事件和错误事件。
如果流由另一个库拥有,请使用其文档中记载的打开前钩子。只在较晚时才到达的回调可能是错误的集成点。在已经打开的流上更改属性无法把该现有连接迁移到 SOCKS。