Diff between 4bbfd9712857d4983593df23b82eb599907e6a69 and 57df14b8f8b15e7936568694bba1f1083c7e69b1

Changed Files

File Additions Deletions Status
src/shared/mainloop-glib.c +0 -1 modified
src/shared/mainloop-notify.c +9 -2 modified
src/shared/mainloop.c +0 -2 modified

Full Patch

diff --git a/src/shared/mainloop-glib.c b/src/shared/mainloop-glib.c
index 7d4b057..042119b 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 1198951..5100a4e 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 b71707c..9a2e1ee 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)