xread: retry after poll on EAGAIN/EWOULDBLOCK
authorEric Wong <e@80x24.org>
Mon, 27 Jun 2016 03:56:35 +0000 (03:56 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 27 Jun 2016 15:33:21 +0000 (08:33 -0700)
We should continue to loop after EAGAIN/EWOULDBLOCK as the
intent of xread is to try until there is available data,
EOF, or an unrecoverable error.

Fixes: 1079c4be0b720 ("xread: poll on non blocking fds")

Signed-off-by: Eric Wong <e@80x24.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
wrapper.c
index 1770efac8e02836c5596527be4dc30413968a858..9b20eb9351601a9d2b609fe7959158ce98970171 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -252,6 +252,7 @@ ssize_t xread(int fd, void *buf, size_t len)
                                 * call to read(2).
                                 */
                                poll(&pfd, 1, -1);
+                               continue;
                        }
                }
                return nr;