@@ -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)
@@ -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)
@@ -65,8 +65,6 @@ void mainloop_init(void)
mainloop_list[i] = NULL;
epoll_terminate = 0;
-
- mainloop_notify_init();
}
void mainloop_quit(void)
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> 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(-)