]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid sending systemd shutdown notifications if non-daemon
authorEli Zaretskii <eliz@gnu.org>
Fri, 22 Jan 2021 12:30:22 +0000 (14:30 +0200)
committerEli Zaretskii <eliz@gnu.org>
Fri, 22 Jan 2021 12:30:22 +0000 (14:30 +0200)
* src/emacs.c (Fkill_emacs): Send the shutdown notification only
in daemon mode.  (Bug#46022)

src/emacs.c

index f2e858f13bbd209051401cebd7b17bc4ef201b06..67220ebb769b2875abf0e79c722380cce2510680 100644 (file)
@@ -187,7 +187,8 @@ bool build_details;
 /* Name for the server started by the daemon.*/
 static char *daemon_name;
 
-/* 0 not a daemon, 1 new-style (foreground), 2 old-style (background).  */
+/* 0 not a daemon, 1 new-style (foreground), 2 old-style (background).
+   A negative value means the daemon initialization was already done.  */
 int daemon_type;
 
 #ifndef WINDOWSNT
@@ -2371,7 +2372,10 @@ all of which are called before Emacs is actually killed.  */
   int exit_code;
 
 #ifdef HAVE_LIBSYSTEMD
-  sd_notify(0, "STOPPING=1");
+  /* Notify systemd we are shutting down, but only if we have notified
+     it about startup.  */
+  if (daemon_type == -1)
+    sd_notify(0, "STOPPING=1");
 #endif /* HAVE_LIBSYSTEMD */
 
   /* Fsignal calls emacs_abort () if it sees that waiting_for_input is
@@ -2876,7 +2880,7 @@ from the parent process and its tty file descriptors.  */)
     }
 
   /* Set it to an invalid value so we know we've already run this function.  */
-  daemon_type = -1;
+  daemon_type = -daemon_type;
 
 #else  /* WINDOWSNT */
   /* Signal the waiting emacsclient process.  */