|
Zbigniew Jędrzejewski-Szmek |
126222 |
From 21804157ff0e60508fd128310505381f7b3ec2b0 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
From: Lennart Poettering <lennart@poettering.net>
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
Date: Wed, 18 Dec 2013 16:49:15 +0100
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
Subject: [PATCH] log: when we log to /dev/console and got disconnected (maybe
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
due to vhangup) reconnect
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
src/shared/log.c | 21 +++++++++++++++++++--
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
1 file changed, 19 insertions(+), 2 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
diff --git a/src/shared/log.c b/src/shared/log.c
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
index bd918fb..de770ca 100644
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
--- a/src/shared/log.c
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+++ b/src/shared/log.c
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
@@ -335,8 +335,25 @@ static int write_to_console(
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
IOVEC_SET_STRING(iovec[n++], ANSI_HIGHLIGHT_OFF);
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
IOVEC_SET_STRING(iovec[n++], "\n");
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
- if (writev(console_fd, iovec, n) < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
- return -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ if (writev(console_fd, iovec, n) < 0) {
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ if (errno == EIO && getpid() == 1) {
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ /* If somebody tried to kick us from our
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ * console tty (via vhangup() or suchlike),
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ * try to reconnect */
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ log_close_console();
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ log_open_console();
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ if (console_fd < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ return 0;
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ if (writev(console_fd, iovec, n) < 0)
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ return -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ } else
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ return -errno;
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
return 1;
|
|
Zbigniew Jędrzejewski-Szmek |
126222 |
}
|