From: sbyx Date: Tue, 26 Mar 2013 13:26:25 +0000 (-0700) Subject: Merge pull request #6 from fingon/bugfix X-Git-Tag: debian/1.1+git20160131-1~168 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=odhcp6c.git;a=commitdiff_plain;h=920fda0ef9da478202fc330cc887e1ef3d703925;hp=797317aae708139b358b7b58d611fddde869f04a Merge pull request #6 from fingon/bugfix Fixed a race condition with signals --- diff --git a/src/odhcp6c.c b/src/odhcp6c.c index 6451312..88f2ae5 100644 --- a/src/odhcp6c.c +++ b/src/odhcp6c.c @@ -139,13 +139,6 @@ int main(_unused int argc, char* const argv[]) if (help || !ifname) return usage(); - if ((urandom_fd = open("/dev/urandom", O_CLOEXEC | O_RDONLY)) < 0 || - init_dhcpv6(ifname, request_pd) || ra_init(ifname) || - script_init(script, ifname)) { - syslog(LOG_ERR, "failed to initialize: %s", strerror(errno)); - return 3; - } - signal(SIGIO, sighandler); signal(SIGHUP, sighandler); signal(SIGINT, sighandler); @@ -154,6 +147,13 @@ int main(_unused int argc, char* const argv[]) signal(SIGUSR1, sighandler); signal(SIGUSR2, sighandler); + if ((urandom_fd = open("/dev/urandom", O_CLOEXEC | O_RDONLY)) < 0 || + init_dhcpv6(ifname, request_pd) || ra_init(ifname) || + script_init(script, ifname)) { + syslog(LOG_ERR, "failed to initialize: %s", strerror(errno)); + return 3; + } + if (daemonize) { openlog("odhcp6c", LOG_PID, LOG_DAEMON); // Disable LOG_PERROR if (daemon(0, 0)) {