From 2d4a77b6f03a057cedb03b318e5bc7bebdd386cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Wed, 25 Mar 2026 15:03:23 +0800 Subject: [PATCH] Networking (Windows): waits for completion of `CancelIO` --- src/common/impl/networking_windows.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/common/impl/networking_windows.c b/src/common/impl/networking_windows.c index d436ddf8f..620087492 100644 --- a/src/common/impl/networking_windows.c +++ b/src/common/impl/networking_windows.c @@ -258,7 +258,8 @@ const char* ffNetworkingRecvHttpResponse(FFNetworkingState* state, FFstrbuf* buf } else { FF_DEBUG("WSAWaitForMultipleEvents failed: %s", ffDebugWin32Error((DWORD) WSAGetLastError())); } - CancelIo((HANDLE) state->sockfd); + if (CancelIoEx((HANDLE) state->sockfd, &state->overlapped)) + WSAWaitForMultipleEvents(1, &state->overlapped.hEvent, TRUE, 10, TRUE); WSACloseEvent(state->overlapped.hEvent); closesocket(state->sockfd); ffStrbufDestroy(&state->command); @@ -286,6 +287,12 @@ const char* ffNetworkingRecvHttpResponse(FFNetworkingState* state, FFstrbuf* buf // Not a critical error, continue anyway } + if (shutdown(state->sockfd, SD_SEND) == SOCKET_ERROR) + { + FF_DEBUG("Failed to shutdown socket send: %s", ffDebugWin32Error((DWORD) WSAGetLastError())); + // Not a critical error, continue anyway + } + if(timeout > 0) { FF_DEBUG("Setting receive timeout: %u ms", timeout);