加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
logging-read-all-bytes-on-EOF-in-event-handler.patch 1.75 KB
一键复制 编辑 原始数据 按行查看 历史
From f2f21f4f7a5f0fdf43fa957f0628045ed373a025 Mon Sep 17 00:00:00 2001
From: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Date: Thu, 24 Sep 2020 15:47:09 +0300
Subject: [PATCH 036/108] logging: read all bytes on EOF in event handler
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>
(cherry picked from commit 7c0e1a8631773788a96702252931541290288ef6)
---
src/logging/log_handler.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/src/logging/log_handler.c b/src/logging/log_handler.c
index 3cc197a396..00fca7b653 100644
--- a/src/logging/log_handler.c
+++ b/src/logging/log_handler.c
@@ -138,7 +138,7 @@ virLogHandlerGetLogFileFromWatch(virLogHandlerPtr handler,
static void
virLogHandlerDomainLogFileEvent(int watch,
int fd,
- int events,
+ int events G_GNUC_UNUSED,
void *opaque)
{
virLogHandlerPtr handler = opaque;
@@ -168,14 +168,13 @@ virLogHandlerDomainLogFileEvent(int watch,
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;
--
2.33.0
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化