From: Marc-André Lureau <marcandre.lur...@redhat.com>

A sync read should block until data is available, instead of
retrying. Change the channel to blocking during read.

Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
 qemu-char.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/qemu-char.c b/qemu-char.c
index efa1e2a..ce09226 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2911,7 +2911,9 @@ static int tcp_chr_sync_read(CharDriverState *chr, const 
uint8_t *buf, int len)
         return 0;
     }
 
+    qio_channel_set_blocking(s->ioc, true, NULL);
     size = tcp_chr_recv(chr, (void *) buf, len);
+    qio_channel_set_blocking(s->ioc, false, NULL);
     if (size == 0) {
         /* connection closed */
         tcp_chr_disconnect(chr);
-- 
2.7.4


Reply via email to