Защо късно зададено свойство на CFStream SOCKS може да бъде отхвърлено
Прилагайте конфигурируеми свойства на потока преди отваряне, проверявайте приемането и различавайте стартирането на потока от завършването на прокси преговорите.
Обратно извикване с име „will connect“ не е доказателство, че CFStream все още е конфигурируем. Договорът на Apple за CFReadStreamSetProperty казва, че трябва да се приема, че свойствата се задават преди отваряне, освен ако собствената им документация не твърди друго.
За съществуваща интеграция на поток дръжте последователността заедно: създайте потока/двойката, изградете правилно типизирания SOCKS речник, задайте подходящото свойство и проверете булевия му резултат, след което регистрирайте събития и започнете отваряне.
Резултат false е неуспех на конфигурацията, а не инсталиран маршрут. Проверете типа на потока, ключа на свойството, типовете стойности в речника и жизнения цикъл, преди да продължите.
При събитийно управлявана подредба отварянето може да започне, без преговорите да са завършени. Наблюдавайте събитията за състояние и грешка, преди да приемете връзката за използваема.
Ако друга библиотека притежава потока, използвайте документираната ѝ кука преди отваряне. Обратно извикване само в по-късен момент може да е грешната точка за интеграция. Промяната на свойства върху вече отворен поток не може да премести тази съществуваща връзка към SOCKS.