diff --git a/include/boost/asio/detail/win_iocp_io_service.hpp b/include/boost/asio/detail/win_iocp_io_service.hpp index 25458775..1d971d54 100644 --- a/include/boost/asio/detail/win_iocp_io_service.hpp +++ b/include/boost/asio/detail/win_iocp_io_service.hpp @@ -260,11 +260,15 @@ private: LPOVERLAPPED overlapped = 0; ::SetLastError(0); BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred, - &completion_key, &overlapped, block ? INFINITE : 0); + &completion_key, &overlapped, block ? 1000 : 0); DWORD last_error = ::GetLastError(); if (!ok && overlapped == 0) + { + if (block && last_error == WAIT_TIMEOUT) + continue; return 0; + } if (overlapped) {