mirror of
https://github.com/xroche/httrack.git
synced 2026-07-24 01:29:49 +03:00
* Reap a stalled TLS handshake with the per-slot --timeout back_wait only runs its per-slot timeout check when the local gestion_timeout flag is armed. The CONNECTING, WAIT_DNS and receiving handlers arm it, but the STATUS_SSL_WAIT_HANDSHAKE handler did not, so a peer that completes the TCP connect and never speaks TLS left SSL_connect returning WANT_READ until --max-time fired, ignoring --timeout entirely. Arm the flag in the handshake handler and start a fresh timeout window when the slot enters the handshake, so it is measured from there rather than from the connect. The generic check already reaps any status > 0 slot once armed; give it a distinct message instead of the generic "Receive Time Out". Test 59 crawls a server that accepts the connect and stays silent: it ends in --timeout seconds with the fix, and hangs until the kill guard without it. Closes #607 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> * Cover the handshake timeout window, and share the ephemeral-bind helper Test 59 only bounded the crawl from above, so an engine that reaped every handshake instantly passed it, and nothing exercised the timeout_refresh at the handshake entry: on loopback the connect is instant, so the handshake's own window is indistinguishable from the connect's. Add a floor to the first case, and a second one behind a proxy that takes 4s to answer CONNECT. The handshake must still get its full --timeout=5 from there (~9s); sharing the connect's clock reaps at ~5s. Dropping the refresh now fails the test, as does collapsing the window to zero. The stall server grows a proxy mode for that, and takes its listening socket from a new proxytestlib bind_ephemeral(), which replaces the same boilerplate in the socks5 and proxy servers. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Xavier Roche <roche@httrack.com> --------- Signed-off-by: Xavier Roche <roche@httrack.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.1 KiB
5.1 KiB