3proxy/man
Vladimir Dubrovin cd34fd45d5 Take another local port when the one bound cannot reach the destination
extport binds a local port out of its range and connects from it. A port
which is free to bind may still be half of a pair which is closing from an
earlier connection to the same destination, and Windows fails the connect
with WSAEADDRINUSE where other systems fail the bind and fall back. The
request then failed with error 13 for a reason another port would have
avoided, which is what the range is searched for in the first place.

Retry the connect with another port from the range. Only for that error, so
a destination which is simply unreachable still costs one attempt, and out of
the same ten tries the bind already spends, so the attempts parentretries
makes are not multiplied. EADDRINUSE joins the errno values proxy.h maps to
their Winsock numbers, without which the test would never match on Windows.

parent_ports gave its three services one window between them, which is how
the case met the collision on the Windows runner. Each has its own now.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 13:02:56 +03:00
..
3proxy_crypt.8 Copyright update 2026-05-08 18:07:08 +03:00
3proxy.8 Added imapp, starttls support for smtpp, pop3p, tlspr 2026-07-22 16:15:50 +03:00
3proxy.cfg.5 Take another local port when the one bound cannot reach the destination 2026-09-17 13:02:56 +03:00
ftppr.8 Copyright update 2026-05-08 18:07:08 +03:00
imapp.8 Added imapp, starttls support for smtpp, pop3p, tlspr 2026-07-22 16:15:50 +03:00
pop3p.8 Added imapp, starttls support for smtpp, pop3p, tlspr 2026-07-22 16:15:50 +03:00
proxy.8 Copyright update 2026-05-08 18:07:08 +03:00
smtpp.8 Added imapp, starttls support for smtpp, pop3p, tlspr 2026-07-22 16:15:50 +03:00
socks.8 Copyright update 2026-05-08 18:07:08 +03:00
tcppm.8 Copyright update 2026-05-08 18:07:08 +03:00
tlspr.8 Fix cmake build 2026-07-22 16:23:11 +03:00
udppm.8 Copyright update 2026-05-08 18:07:08 +03:00