chiark / gitweb /
prefork-interp: make fake pair later
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 18 Aug 2022 18:46:30 +0000 (19:46 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 21 Aug 2022 20:21:10 +0000 (21:21 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
cprogs/prefork-interp.c

index 429790ae3cb0fd238c5cd9e83532b857f7088909..9eb5aa17f55e742854988e5fdf1cb6f90649000c 100644 (file)
@@ -398,10 +398,6 @@ static void connect_or_spawn(void) {
   if (r<0 && errno!=ENOENT)
     diee("failed to remove stale socket %s", socket_path);
 
-  int fake_pair[2];
-  r = socketpair(AF_UNIX, SOCK_STREAM, 0, fake_pair);
-  if (r<0) diee("socketpair() for fake initial connection");
-
   int sfd = socket(AF_UNIX, SOCK_STREAM, 0);
   if (sfd<0) diee("socket() for new listener");
 
@@ -416,6 +412,10 @@ static void connect_or_spawn(void) {
   r = listen(sfd, INT_MAX);
   if (r<0) diee("listen() for new listener");
 
+  int fake_pair[2];
+  r = socketpair(AF_UNIX, SOCK_STREAM, 0, fake_pair);
+  if (r<0) diee("socketpair() for fake initial connection");
+
   pid_t setup_pid = fork();
   if (setup_pid == (pid_t)-1) diee("fork for spawn setup");
   if (!setup_pid) become_setup(sfd, fake_pair);