chiark / gitweb /
prefork-interp: wip socketry etc.
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Fri, 19 Aug 2022 19:04:49 +0000 (20:04 +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 11256015fe2d46b19a4ad51926c15f275c4212dc..ec43bcf9de2dc560d04408c1727af1037dc58609 100644 (file)
@@ -404,7 +404,7 @@ void become_watcher(void) {
   uv_fs_event_t uvhandle_sockpath;
   int r;
 
-  if (fcntl(0, F_SETFL, O_NONBLOCK)) diee("watcher set stdin nonblocking");
+  nonblock(0);
 
   errno= -uv_loop_init(&loop);
   if (errno) diee("watcher: uv_loop_init");
@@ -448,6 +448,8 @@ void become_setup(int sfd, int fake_pair[2],
   if (dup2(null_0, 0)) diee("dup2 /dev/null onto stdin");
   if (dup2(2, 1) != 1) die("dup2 stderr onto stdout");
 
+  nonblock(sfd);
+
   // Extension could work like this:
   //
   // We advertise a new protocol (perhaps one which is nearly entirely
@@ -518,8 +520,7 @@ static void connect_or_spawn(void) {
 
   close(watcher_stdin[0]);
   close(watcher_stderr[1]);
-  if (fcntl(watcher_stderr[0], F_SETFL, O_NONBLOCK))
-    diee("parent set watcher stderr nonblocking");
+  nonblock(watcher_stderr[0]);
 
   // Fork setup