From 2d384f56d87a835544cb908a8c9ecce95da2b574 Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Wed, 4 May 2011 23:04:13 +0200 Subject: [PATCH] Windows: set error to EAGAIN when returning 0-byte read --- oio-win.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/oio-win.c b/oio-win.c index fe5edf62..b2c30c4e 100644 --- a/oio-win.c +++ b/oio-win.c @@ -250,6 +250,7 @@ static oio_err_code oio_translate_sys_error(int sys_errno) { case ERROR_ADDRESS_ALREADY_ASSOCIATED: return OIO_EADDRINUSE; case WSAEADDRINUSE: return OIO_EADDRINUSE; case WSAEADDRNOTAVAIL: return OIO_EADDRNOTAVAIL; + case WSAEWOULDBLOCK: return OIO_EAGAIN; case WSAEALREADY: return OIO_EALREADY; case ERROR_CONNECTION_REFUSED: return OIO_ECONNREFUSED; case WSAECONNREFUSED: return OIO_ECONNREFUSED; @@ -1057,6 +1058,7 @@ static void oio_poll() { err = WSAGetLastError(); if (err == WSAEWOULDBLOCK) { /* 0-byte read */ + oio_set_sys_error(WSAEWOULDBLOCK); ((oio_read_cb)handle->read_cb)(handle, 0, buf); } else { /* Ouch! serious error. */