From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> 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 7d4b057bf6ec..042119baf1ad 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 11989512e013..5100a4e89285 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 b71707cae4fa..9a2e1eee6f97 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.49.0