|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Synapse + SSL + Socks5 = виснут соединения
Используемые версии Synapse - 38, 39, 40
Используемые версии SSL библиотек - от 0.9.8d до 1.0.1с Код:
http := thttpsend.create; addr := prox [random (prox.count - 1)]; http.sock.socksip := copy (addr, 1, pos (':', addr) - 1); http.sock.socksport := copy (addr, pos (':', addr) + 1, maxint); http.httpmethod ('GET', 'https://facebook.com/'); freeandnil (http); Создается N потоков с этим кодом внутри. Завершаются не все (в среднем 980 из 1000). Было выяснено, что оставшиеся висеть держат соединение (ESTABLISHED статус), и ничего не делают, негодники. Собственно проблема. |
#2
|
||||
|
||||
Убивать по таймауту?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
Это понятно. Вот только как его установить?
|
#4
|
||||
|
||||
Если сам синапс не умеет - то создавать ещё один мониторящий поток, и в нём смотреть - если "качающий" завис, то останавливать его, освобождать ресурсы и запускать по новой. Как определить, что завис - очень просто, перед началом загрузки ставить какой-нибудь флаг и время начала (в public-свойствах потока). После окончания флаг снимать. Те, у кого установлен флаг и время старта меньше (now - [время_таймаута]) - зависли.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
|||
|
|||
Уметь-то умеет. Но он ставит тайм-аут для обычного сокета. Как только вешается поверх SSL - начинается веселье. Отдельный контролирующий поток создавать - проблематично.
|