On Win32 EWOULDBLOCK is not the same as EAGAIN, so we must
check both errnos after send/recv. Some places already
checked both, a couple of cases were previously missed.

Signed-off-by: Daniel P. Berrange <berra...@redhat.com>
---
 io/channel-socket.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/io/channel-socket.c b/io/channel-socket.c
index 5f087e6..1de5cc0 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -559,7 +559,8 @@ static ssize_t qio_channel_socket_readv(QIOChannel *ioc,
                    iov[i].iov_len,
                    0);
         if (ret < 0) {
-            if (socket_error() == EAGAIN) {
+            if (socket_error() == EAGAIN ||
+                socket_error() == EWOULDBLOCK) {
                 if (done) {
                     return done;
                 } else {
@@ -601,7 +602,8 @@ static ssize_t qio_channel_socket_writev(QIOChannel *ioc,
                    iov[i].iov_len,
                    0);
         if (ret < 0) {
-            if (socket_error() == EAGAIN) {
+            if (socket_error() == EAGAIN ||
+                socket_error() == EWOULDBLOCK) {
                 if (done) {
                     return done;
                 } else {
-- 
2.5.0


Reply via email to