[ostree] trivial-httpd: use PR_SET_PDEATHSIG by default



commit f7c926c5e9a4cff74e203c6bdd9b13f8cc027eed
Author: Colin Walters <walters verbum org>
Date:   Mon Dec 8 14:44:44 2014 -0500

    trivial-httpd: use PR_SET_PDEATHSIG by default
    
    If we're not daemonizing, this is a useful way to ensure we go away if
    our parent does.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=741264

 src/ostree/ot-builtin-trivial-httpd.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/src/ostree/ot-builtin-trivial-httpd.c b/src/ostree/ot-builtin-trivial-httpd.c
index 31c541a..f4e303c 100644
--- a/src/ostree/ot-builtin-trivial-httpd.c
+++ b/src/ostree/ot-builtin-trivial-httpd.c
@@ -28,6 +28,8 @@
 #include "otutil.h"
 
 #include <sys/socket.h>
+#include <sys/prctl.h>
+#include <signal.h>
 
 static char *opt_port_file = NULL;
 static gboolean opt_daemonize;
@@ -390,7 +392,7 @@ ostree_builtin_trivial_httpd (int argc, char **argv, GCancellable *cancellable,
 #if !SOUP_CHECK_VERSION(2, 48, 0)
   soup_server_run_async (server);
 #endif
-
+  
   if (opt_daemonize)
     {
       pid_t pid = fork();
@@ -411,6 +413,21 @@ ostree_builtin_trivial_httpd (int argc, char **argv, GCancellable *cancellable,
       fclose (stdout);
       fclose (stdin);
     }
+  else
+    {
+      /* Since we're used for testing purposes, let's just do this by
+       * default.  This ensures we exit when our parent does.
+       */
+      if (prctl (PR_SET_PDEATHSIG, SIGTERM) != 0)
+        {
+          int errsv = errno;
+          if (errsv != ENOSYS)
+            {
+              ot_util_set_error_from_errno (error, errsv);
+              goto out;
+            }
+        }
+    }
 
   app->running = TRUE;
   if (opt_autoexit)


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