From 57df14b8f8b15e7936568694bba1f1083c7e69b1 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Fri, 2 May 2025 12:12:43 -0400 Subject: [PATCH] mainloop: Only connect to NOTIFY_SOCKET if STATUS=Starting up This makes the handling of NOYIFY_SOCKET conditional to only when application attempts to set STATUS=Starting up which means it is intentionally requiring it. Fixes: https://github.com/bluez/bluez/issues/996 --- src/shared/mainloop-glib.c | 1 - src/shared/mainloop-notify.c | 11 +++++++++-- src/shared/mainloop.c | 2 -- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/shared/mainloop-glib.c b/src/shared/mainloop-glib.c index 7d4b057bf..042119baf 100644 --- a/src/shared/mainloop-glib.c +++ b/src/shared/mainloop-glib.c @@ -33,7 +33,6 @@ static int exit_status; void mainloop_init(void) { main_loop = g_main_loop_new(NULL, FALSE); - mainloop_notify_init(); } void mainloop_quit(void) diff --git a/src/shared/mainloop-notify.c b/src/shared/mainloop-notify.c index 11989512e..5100a4e89 100644 --- a/src/shared/mainloop-notify.c +++ b/src/shared/mainloop-notify.c @@ -111,8 +111,15 @@ int mainloop_sd_notify(const char *state) { int err; - if (notify_fd <= 0) - return -ENOTCONN; + if (notify_fd <= 0) { + if (strcmp(state, "STATUS=Starting up")) + return -ENOTCONN; + + /* Auto init only when starting up */ + mainloop_notify_init(); + if (notify_fd <= 0) + return -ENOTCONN; + } err = send(notify_fd, state, strlen(state), MSG_NOSIGNAL); if (err < 0) diff --git a/src/shared/mainloop.c b/src/shared/mainloop.c index b71707cae..9a2e1eee6 100644 --- a/src/shared/mainloop.c +++ b/src/shared/mainloop.c @@ -65,8 +65,6 @@ void mainloop_init(void) mainloop_list[i] = NULL; epoll_terminate = 0; - - mainloop_notify_init(); } void mainloop_quit(void) -- 2.47.3