]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
socket-activate: signal READY=1 once sockets are open for --accept mode
authorMike Yuan <me@yhndnzj.com>
Sun, 27 Apr 2025 18:20:14 +0000 (20:20 +0200)
committerMike Yuan <me@yhndnzj.com>
Sun, 27 Apr 2025 18:26:42 +0000 (20:26 +0200)
src/socket-activate/socket-activate.c

index 2f81316dfc326aa380ca5afa9954a573f2a891af..1fd07bfa0ded7d8d098ccfb33f0f90d45651a760 100644 (file)
@@ -10,6 +10,7 @@
 
 #include "alloc-util.h"
 #include "build.h"
+#include "daemon-util.h"
 #include "env-util.h"
 #include "errno-util.h"
 #include "escape.h"
@@ -472,6 +473,13 @@ static int run(int argc, char **argv) {
         if (n == 0)
                 return log_error_errno(SYNTHETIC_ERRNO(ENOENT), "No sockets to listen on specified or passed in.");
 
+        /* Notify the caller that all sockets are open now. We only do this in --accept mode however,
+         * since otherwise our process will be replaced and it's better to leave the readiness notify
+         * to the actual payload. */
+        _unused_ _cleanup_(notify_on_cleanup) const char *notify = NULL;
+        if (arg_accept)
+                notify = notify_start(NOTIFY_READY, NOTIFY_STOPPING);
+
         for (;;) {
                 struct epoll_event event;