Fix virPipeReadUntilEOF on more than 1024 bytes of data

virPipeReadUntilEOF is used to read the stdout of exec'ed
and this could fail to capture the full output and read only
1024 bytes.
  The problem is that this is based on a poll loop, and in the
loop we read at most 1024 bytes per file descriptor, but we also
note in the loop if poll indicates that the process won't output
more than that on that fd by setting finished[i] = 1.
  The simplest way is that if we read a full buffer make sure
finished[i] is still 0 because we will need another pass in the
loop.
This commit is contained in:
Daniel Veillard 2010-11-03 08:43:43 +01:00
parent b50408c143
commit 04cbfa4fae

View File

@ -984,6 +984,9 @@ virPipeReadUntilEOF(int outfd, int errfd,
got = read(fds[i].fd, data, sizeof(data));
if (got == sizeof(data))
finished[i] = 0;
if (got == 0) {
finished[i] = 1;
continue;