log: when we log to /dev/console and got disconnected (maybe due to vhangup) reconnect

This commit is contained in:
Lennart Poettering
2013-12-18 18:21:27 +01:00
parent 74f9e0f203
commit 0e6eaa2d98
+19 -2
View File
@@ -335,8 +335,25 @@ static int write_to_console(
IOVEC_SET_STRING(iovec[n++], ANSI_HIGHLIGHT_OFF);
IOVEC_SET_STRING(iovec[n++], "\n");
if (writev(console_fd, iovec, n) < 0)
return -errno;
if (writev(console_fd, iovec, n) < 0) {
if (errno == EIO && getpid() == 1) {
/* If somebody tried to kick us from our
* console tty (via vhangup() or suchlike),
* try to reconnect */
log_close_console();
log_open_console();
if (console_fd < 0)
return 0;
if (writev(console_fd, iovec, n) < 0)
return -errno;
} else
return -errno;
}
return 1;
}