Vì sao một thuộc tính CFStream SOCKS đặt muộn có thể bị từ chối
Áp dụng các thuộc tính luồng có thể cấu hình trước khi mở, kiểm tra việc chấp nhận và phân biệt giữa bắt đầu luồng với hoàn tất thương lượng proxy.
Một callback tên là “will connect” không phải bằng chứng rằng CFStream vẫn còn có thể cấu hình. Hợp đồng CFReadStreamSetProperty của Apple nói rằng phải giả định các thuộc tính được đặt trước khi mở, trừ khi tài liệu của chính chúng nói khác.
Đối với một tích hợp luồng hiện có, hãy giữ trình tự lại với nhau: tạo luồng/cặp, xây dựng từ điển SOCKS được định kiểu đúng, đặt thuộc tính phù hợp và kiểm tra kết quả Boolean của nó, sau đó đăng ký sự kiện và bắt đầu mở.
Kết quả false là lỗi cấu hình, không phải tuyến đã cài đặt. Kiểm tra loại luồng, khóa thuộc tính, kiểu giá trị của từ điển và vòng đời trước khi tiếp tục.
Trong một bố cục hướng sự kiện, việc mở có thể bắt đầu mà chưa hoàn tất thương lượng. Quan sát các sự kiện trạng thái và lỗi trước khi coi kết nối là dùng được.
Nếu một thư viện khác sở hữu luồng, hãy dùng hook trước khi mở đã được tài liệu hóa của nó. Một callback chỉ đến muộn hơn có thể là điểm tích hợp sai. Thay đổi thuộc tính trên một luồng đã mở không thể chuyển kết nối hiện có đó sang SOCKS.