diff mbox series

[BlueZ,v1] mainloop: Only connect to NOTIFY_SOCKET if STATUS=Starting up

Message ID 20250502161243.2745492-1-luiz.dentz@gmail.com
State New
Headers show
Series [BlueZ,v1] mainloop: Only connect to NOTIFY_SOCKET if STATUS=Starting up | expand

Commit Message

Luiz Augusto von Dentz May 2, 2025, 4:12 p.m. UTC
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(-)
diff mbox series

Patch

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)