diff --git a/source/eventcore/drivers/winapi/sockets.d b/source/eventcore/drivers/winapi/sockets.d index 051b111..8d82029 100644 --- a/source/eventcore/drivers/winapi/sockets.d +++ b/source/eventcore/drivers/winapi/sockets.d @@ -552,8 +552,11 @@ final class WinAPIEventDriverSockets : EventDriverSockets { } } - if (mode == IOMode.immediate) + if (mode == IOMode.immediate) { () @trusted { CancelIoEx(cast(HANDLE)cast(SOCKET)socket, cast(LPOVERLAPPED)&slot.read.overlapped); } (); + on_read_finish(socket, IOStatus.wouldBlock, 0, null); + return; + } slot.read.callback = on_read_finish; addRef(socket); @@ -646,8 +649,11 @@ final class WinAPIEventDriverSockets : EventDriverSockets { } } - if (mode == IOMode.immediate) + if (mode == IOMode.immediate) { () @trusted { CancelIoEx(cast(HANDLE)cast(SOCKET)socket, cast(LPOVERLAPPED)&slot.write.overlapped); } (); + on_write_finish(socket, IOStatus.wouldBlock, 0, null); + return; + } slot.write.callback = on_write_finish; addRef(socket);