mirror of
https://github.com/morgan9e/systemd
synced 2026-04-14 00:14:32 +09:00
journald-socket: close previous socket when ForwardToSocket= is changed on reload
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "journald-config.h"
|
||||
#include "journald-kmsg.h"
|
||||
#include "journald-manager.h"
|
||||
#include "journald-socket.h"
|
||||
#include "log.h"
|
||||
#include "parse-util.h"
|
||||
#include "proc-cmdline.h"
|
||||
@@ -366,6 +367,7 @@ int manager_dispatch_reload_signal(sd_event_source *s, const struct signalfd_sig
|
||||
|
||||
(void) manager_reopen_dev_kmsg(m, old.read_kmsg);
|
||||
manager_reset_kernel_audit(m, old.set_audit);
|
||||
manager_reload_forward_socket(m, &old.forward_to_socket);
|
||||
|
||||
r = manager_reload_journals(m);
|
||||
if (r < 0)
|
||||
|
||||
@@ -163,3 +163,20 @@ int manager_forward_socket(
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void manager_reload_forward_socket(Manager *m, const SocketAddress *old) {
|
||||
assert(m);
|
||||
assert(old);
|
||||
|
||||
/* The socket is not opened yet or already closed. There is nothing we need to do now. The socket
|
||||
* will be opened when necessary. */
|
||||
if (m->forward_socket_fd < 0)
|
||||
return;
|
||||
|
||||
if (socket_address_equal(&m->config.forward_to_socket, old))
|
||||
return;
|
||||
|
||||
/* A different socket address is specified. Let's close the old socket. New socket will be opened
|
||||
* when necessary. */
|
||||
m->forward_socket_fd = safe_close(m->forward_socket_fd);
|
||||
}
|
||||
|
||||
@@ -4,3 +4,4 @@
|
||||
#include "journald-forward.h"
|
||||
|
||||
int manager_forward_socket(Manager *m, const struct iovec *iovec, size_t n, const dual_timestamp *ts, int priority);
|
||||
void manager_reload_forward_socket(Manager *m, const SocketAddress *old);
|
||||
|
||||
Reference in New Issue
Block a user