Windows: set error to EAGAIN when returning 0-byte read

This commit is contained in:
Bert Belder 2011-05-04 23:04:13 +02:00
parent 54c9436501
commit 2d384f56d8

View File

@ -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. */