chiark
/
gitweb
/
~mdw
/
tripe
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
svc: Peer management services.
[tripe]
/
server
/
tun-slip.c
diff --git
a/server/tun-slip.c
b/server/tun-slip.c
index 40830f9d6417acd06583911fa27f9ec5e77f98e8..04a5840263208b10467788c59e193b0e91d086c4 100644
(file)
--- a/
server/tun-slip.c
+++ b/
server/tun-slip.c
@@
-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 };
{
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;
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) {
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);
}
execlp(slipcmd, slipcmd, p_name(p), (char *)0);
_exit(127);
}