Interrupt stalled downloads on Windows too

shutdown() from another thread doesn't wake a blocked recv on Windows, so
quitting mid-download waited out the 4 s deadline there (CI's Windows
server tests). Close the handle as well, detached first so the worker's own
close can't hit a reused handle.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
saphidandClaude Opus 5.5 committed 2026-09-26 23:06:13 +10:00
1 parent 1cd839e0f1
commit b86dd3b07d
1 file changed
+8
+8
View File
@@ -373,6 +373,14 @@ def abort(conn):
sock.shutdown(socket.SHUT_RDWR)
except OSError:
pass
if os.name == "nt":
# Windows doesn't wake a recv blocked in another thread on shutdown(),
# only when the handle closes. detach() first, so the owner's later
# close() can't close a handle the OS has since given to someone else.
try:
socket.close(sock.detach())
except OSError:
pass
def download(p, dest_dir, progress=None, cancelled=None, connected=None):