Fix waitForDataEx's return value for an open connection and a zero timeout.
IOMode.once causes the read() to return with IOStatus.wouldBlock immediately, which previously resulted in erroneously reporting WaitForDataStatus.noModeData instead of timeout. See vibe-d/vibe.d#2483
This commit is contained in:
parent
4357b32375
commit
ae6506289a
|
@ -612,7 +612,10 @@ mixin(tracer);
|
||||||
asyncAwaitAny!(true, waiter)(timeout);
|
asyncAwaitAny!(true, waiter)(timeout);
|
||||||
|
|
||||||
if (!m_context) return WaitForDataStatus.noMoreData;
|
if (!m_context) return WaitForDataStatus.noMoreData;
|
||||||
if (cancelled) return WaitForDataStatus.timeout;
|
// NOTE: for IOMode.immediate, no actual timeout occurrs, but the read
|
||||||
|
// fails immediately with wouldBlock
|
||||||
|
if (cancelled || status == IOStatus.wouldBlock)
|
||||||
|
return WaitForDataStatus.timeout;
|
||||||
|
|
||||||
logTrace("Socket %s, read %s bytes: %s", m_socket, nbytes, status);
|
logTrace("Socket %s, read %s bytes: %s", m_socket, nbytes, status);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue