diff --git a/qubes_rpc/ioall.c b/qubes_rpc/ioall.c index 355b88fa..2a81df4d 100644 --- a/qubes_rpc/ioall.c +++ b/qubes_rpc/ioall.c @@ -75,9 +75,14 @@ int read_all(int fd, void *buf, int size) return 0; } if (ret < 0) { - perror_wrapper("read"); + if (errno != EAGAIN) + perror_wrapper("read"); return 0; } + if (got_read == 0) { + // force blocking operation on further reads + set_block(fd); + } got_read += ret; } // fprintf(stderr, "read %d bytes\n", size);