commit - 9432cd14c34086ae857b4d66358f80496015c33d
commit + 98c3d8979f42c71c2eb00894d54d1618a2340b9f
blob - 1ef78d59801ef309c2eb29896e00a4cc531a265e
blob + 4b7e793ce8230625df932f11cb3a24941a977f15
--- lstun.c
+++ lstun.c
}
}
-static void
+static int
spawn_ssh(void)
{
log_debug("spawning ssh");
switch (ssh_pid = fork()) {
case -1:
- fatal("fork");
+ log_warnx("fork");
+ return -1;
case 0:
execl(SSH_PATH, "ssh", "-L", ssh_tflag, "-NTq", ssh_dest,
NULL);
fatal("exec");
default:
- return;
+ return 0;
}
}
conn++;
- if (ssh_pid == -1)
- spawn_ssh();
+ if (ssh_pid == -1 && spawn_ssh() == -1) {
+ close(s);
+ return;
+ }
if ((c = calloc(1, sizeof(*c))) == NULL) {
log_warn("calloc");