3proxy-1.1.0-pre1 Вышел 24 Октября 2026 ! Исправление: служба обратного соединения (-r), заменённая при перезагрузке конфигурации, продолжала до 60 секунд ждать разрешения, занимая место и поток, и каждая перезагрузка оставляла ещё одно соединение в очереди другой стороны (-R); соединение, закрытое стороной -r, стоило стороне -R клиента ! Исправление: нумерованные счётчики трафика сбрасывались при перезагрузке конфигурации, если файл счётчиков не использовался + Перезагрузка конфигурации атомарна: конфигурация с ошибкой отвергается, и действующая продолжает работать; новая служба на том же адресе, в том же сетевом пространстве имён и на том же устройстве принимает слушающий сокет TCP или UDP старой службы, так что ни одно соединение не отвергается и не теряется, а сессии UDP продолжаются; соединения старых служб заново проходят аутентификацию по новой конфигурации (если не задан noforce) и закрываются, если их служба удалена или в ней нет свободного места; команды и соединения данных FTP авторизуются по действующим правилам + Службы одной конфигурации на одном адресе разделяют его слушающий сокет; страница служб admin показывает клиентов и трафик каждого слушающего сокета, сохраняемые при перезагрузке + Журналы: каждый журнал открывается один раз и используется всеми службами, которые в него пишут, остаётся открытым при перезагрузке, пока используется, и закрывается, когда больше не нужен; -l принимает те же аргументы, что и log; каждый журнал пишется отдельным потоком из очереди, так что клиент никогда не ждёт медленного журнала (ODBC, RADIUS, заполненный диск); запись, заставшая очередь заполненной, отбрасывается, об отброшенных записях и сбоях журнала сообщается + minlogqueue / maxlogqueue: сколько записей очередь журнала держит наготове и сколько вмещает самое большее (по умолчанию 64 и 4096) + Журнал ODBC: журнал называется только источником данных, имя пользователя и пароль — его параметры и никогда не выводятся в сообщениях; журнал с тем же источником данных и другими учётными данными переподключается с ними + threadpool []: поток, соединение которого закончилось, вместо завершения ждёт следующего соединения любой службы, сохраняя свою память; по умолчанию до 32 потоков на каждую работающую службу; пул показывается на странице служб admin + defaultresolve / sysresolve / fakeresolve действуют на службы, запущенные после них: defaultresolve (по умолчанию) использует действующие серверы имён, sysresolve — системные функции (библиотеку C), как раньше без nserver + timeouts, filtermaxsize, parentretries, delimchar и maxseg действуют на службы, запущенные после них, так что у служб могут быть свои значения + ssl_ktls / ssl_noktls: TLS в ядре (Linux, FreeBSD) с OpenSSL 3.0 и новее, собранным с поддержкой TLS в ядре; splice() работает поверх TLS в ядре + -s:MIN,STREAK,SMALL настраивает, когда автоматический режим splice() включает splice() для направления и когда возвращается к копированию + filtermaxsize 0 снимает ограничение + Службы UDP (udppm, dnspr) работают каждая в одном потоке, без потока на клиента, в Linux через epoll; dnspr ждёт ответа серверов имён, не занимая поток + Буферы соединения выделяются вместе со структурой соединения; вместе с пулом потоков — меньше выделений памяти на соединение + Значения по умолчанию при сборке: -DLOGQUEUEMIN, -DLOGQUEUEMAX, -DDEFAULT_POOLMAX, -DPOOLPERSERVICE, -DDEFAULT_POOLTIMEOUT, -DDEFAULT_MAXCHILD - Автоматический режим splice() включён по умолчанию в Linux (-s0 выключает его); служба с фильтрами данных, а также начинающая или завершающая TLS без TLS в ядре в обе стороны, splice() не использует - -ni / -ne (сетевые пространства имён Linux): потоки остаются в пространстве имён, в котором запущен 3proxy, и входят в заданное только для создания сокета; -ni относится и к сокету, через который SOCKS UDP ASSOCIATE общается с клиентом, -ne — к SOCKS BIND, сокетам UDP в сторону назначения и сокетам обратного соединения; разрешение имён, журналы и RADIUS остаются в исходном пространстве имён; путь открывается при чтении строки службы, и путь, не являющийся сетевым пространством имён, не даёт службе запуститься - Без nserver имена разрешаются собственным резолвером 3proxy с системными серверами имён (до 3 из /etc/resolv.conf, в Windows из реестра), имена из файла hosts отвечаются в первую очередь, вместо библиотеки C; оба проверяются на изменения каждые 5 секунд, nsrecord имеет приоритет над файлом hosts, и dnspr передаёт запросы этим серверам; библиотека C используется, если сервер имён не найден, или с sysresolve - Набор номера по требованию (dial on demand) удалён: команда dialer принимается и игнорируется