]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Flock: Even more fd cleanup
authorMaria Matejka <mq@ucw.cz>
Wed, 2 Oct 2024 17:42:25 +0000 (19:42 +0200)
committerMaria Matejka <mq@ucw.cz>
Sun, 23 Feb 2025 18:07:35 +0000 (19:07 +0100)
flock/container.c

index c8bafa6da18345ae72b3665a6dbc0cbdb94d3c25..c582a4992b137ec2939b5a900b6b37a3bfd249a9 100644 (file)
@@ -470,12 +470,6 @@ container_start(void)
   log(L_INFO "Requested to start a container, name %s, base %s, work %s",
       ccf.hostname, ccf.basedir, ccf.workdir);
 
-  /* create socketpair before forking to do communication */
-  int fds[2];
-  int e = socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fds);
-  if (e < 0)
-    die("Failed to create internal socketpair: %m");
-
   pid_t pid = fork();
   if (pid < 0)
     die("Failed to fork container (parent): %m");
@@ -505,7 +499,7 @@ container_start(void)
     return;
   }
 
-  e = unshare(CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWTIME | CLONE_NEWNET);
+  int e = unshare(CLONE_NEWPID | CLONE_NEWNS | CLONE_NEWTIME | CLONE_NEWNET);
   if (e < 0)
     die("Failed to unshare container: %m");
 
@@ -519,6 +513,14 @@ container_start(void)
 #undef FROB
   sigprocmask(SIG_BLOCK, &newmask, &oldmask);
 
+  /* create socketpair before forking to do communication */
+  int fds[2];
+  e = socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, fds);
+  if (e < 0)
+    die("Failed to create internal socketpair: %m");
+
+  log("container fork socketpair: %d %d", fds[0], fds[1]);
+
   pid = fork();
   if (pid < 0)
     die("Failed to fork container (child): %m");