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);