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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux