提交 04cbfa4f 编写于 作者: D Daniel Veillard

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.
上级 b50408c1
...@@ -984,6 +984,9 @@ virPipeReadUntilEOF(int outfd, int errfd, ...@@ -984,6 +984,9 @@ virPipeReadUntilEOF(int outfd, int errfd,
got = read(fds[i].fd, data, sizeof(data)); got = read(fds[i].fd, data, sizeof(data));
if (got == sizeof(data))
finished[i] = 0;
if (got == 0) { if (got == 0) {
finished[i] = 1; finished[i] = 1;
continue; continue;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册