From e750f1c8d914077d4db8031e5b5454fa1aea952d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Mon, 21 Oct 2024 15:38:44 +0200 Subject: [PATCH] Message event loop tweaks Stop the event source before unregistering it. Unregister the event loop before closing the journal. Unset the watch file descriptor when closing the parent journal. Assert the file descriptor of incoming events has the same number as the one on creation time (it might however still point to a differnt file). --- src/netlog/netlog-manager.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/netlog/netlog-manager.c b/src/netlog/netlog-manager.c index 8d62458..d1e40e2 100644 --- a/src/netlog/netlog-manager.c +++ b/src/netlog/netlog-manager.c @@ -304,6 +304,10 @@ static int manager_journal_event_handler(sd_event_source *event, int fd, uint32_ Manager *m = userp; int r; + assert(m); + assert(m->journal); + assert(m->journal_watch_fd == fd); + if (revents & EPOLLHUP) { log_debug("Received HUP"); return 0; @@ -335,6 +339,7 @@ static void close_journal_input(Manager *m) { sd_journal_close(m->journal); m->journal = NULL; + m->journal_watch_fd = -1; } } @@ -464,14 +469,13 @@ void manager_disconnect(Manager *m) { m->resolve_query = sd_resolve_query_unref(m->resolve_query); - close_journal_input(m); - manager_close_network_socket(m); dtls_disconnect(m->dtls); tls_disconnect(m->tls); - m->event_journal_input = sd_event_source_unref(m->event_journal_input); + m->event_journal_input = sd_event_source_disable_unref(m->event_journal_input); + close_journal_input(m); sd_notifyf(false, "STATUS=Idle."); }