diff --git a/src/iodine.c b/src/iodine.c index bb2410b..f54ba52 100644 --- a/src/iodine.c +++ b/src/iodine.c @@ -569,16 +569,16 @@ main(int argc, char **argv) do_chroot(newroot); - if (!foreground) { - do_detach(); - } - if (username) { if (setgid(pw->pw_gid) < 0 || setuid(pw->pw_uid) < 0) { printf("Could not switch to user %s!\n", username); usage(); } } + + if (!foreground) { + do_detach(); + } tunnel(tun_fd, dns_fd); diff --git a/src/iodined.c b/src/iodined.c index d0d6212..d0a10c2 100644 --- a/src/iodined.c +++ b/src/iodined.c @@ -535,10 +535,6 @@ main(int argc, char **argv) printf("Listening to dns for domain %s\n", argv[1]); do_chroot(newroot); - - if (!foreground) { - do_detach(); - } signal(SIGINT, sigint); if (username) { @@ -548,6 +544,10 @@ main(int argc, char **argv) } } + if (!foreground) { + do_detach(); + } + tunnel(tun_fd, dnsd_fd); cleanup2: