If writing side writes enough bytes to the pipe and closes writing
end then we got both VIR_EVENT_HANDLE_HANGUP and VIR_EVENT_HANDLE_READ
in handler. Currently in this situation handler reads 1024 bytes
and finish reading leaving unread data in pipe.
Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
static void
virLogHandlerDomainLogFileEvent(int watch,
int fd,
- int events,
+ int events G_GNUC_UNUSED,
void *opaque)
{
virLogHandlerPtr handler = opaque;
virReportSystemError(errno, "%s",
_("Unable to read from log pipe"));
goto error;
+ } else if (len == 0) {
+ goto error;
}
if (virRotatingFileWriterAppend(logfile->file, buf, len) != len)
goto error;
- if (events & VIR_EVENT_HANDLE_HANGUP)
- goto error;
-
cleanup:
virObjectUnlock(handler);
return;