chiark / gitweb /
Use new mdup(3mLib) function.
[tripe] / server / tun-slip.c
index 40830f9d6417acd06583911fa27f9ec5e77f98e8..04a5840263208b10467788c59e193b0e91d086c4 100644 (file)
@@ -258,6 +258,7 @@ static tunnel *t_create(peer *p, int fd, char **ifn)
 {
   slipif *sl = 0;
   int pin[2] = { -1, -1 }, pout[2] = { -1, -1 };
+  mdup_fd md[2];
   pid_t kid = -1;
   dstr d = DSTR_INIT;
   unsigned char ch;
@@ -292,10 +293,10 @@ static tunnel *t_create(peer *p, int fd, char **ifn)
     goto fail;
   }
   if (!kid) {
-    close(pin[1]);
-    close(pout[0]);
-    dup2(pin[0], STDIN_FILENO);
-    dup2(pout[1], STDOUT_FILENO);
+    close(pin[1]); close(pout[0]);
+    md[0].cur = pin[0];  md[0].want = STDIN_FILENO;
+    md[1].cur = pout[0]; md[1].want = STDOUT_FILENO;
+    mdup(md, 2);
     execlp(slipcmd, slipcmd, p_name(p), (char *)0);
     _exit(127);
   }