Without this patch, iov_send_recv() never returns when do_send_recv() returns zero.
Reviewed-by: Paolo Bonzini <pbonz...@redhat.com> Signed-off-by: MORITA Kazutaka <morita.kazut...@lab.ntt.co.jp> --- util/iov.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util/iov.c b/util/iov.c index cc6e837..f705586 100644 --- a/util/iov.c +++ b/util/iov.c @@ -202,6 +202,12 @@ ssize_t iov_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, return -1; } + if (ret == 0 && !do_send) { + /* recv returns 0 when the peer has performed an orderly + * shutdown. */ + break; + } + /* Prepare for the next iteration */ offset += ret; total += ret; -- 1.8.1.3.566.gaa39828