From f0a6f5130f96d2e6ac2ada21562857389cb7564a Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Fri, 23 Feb 2007 15:23:33 +0000 Subject: [PATCH] daemonize by default. -d to debugmode. git-svn-id: file:///svn/unbound/trunk@141 be551aaa-1e26-0410-a405-d3ace91eadb9 --- daemon/unbound.c | 18 ++++++++++++------ doc/Changelog | 1 + doc/unbound.8 | 7 ++++++- testcode/testbound.c | 1 + testdata/fwd_tcp.tpkg | Bin 1596 -> 1596 bytes testdata/fwd_udp.tpkg | Bin 1594 -> 1596 bytes util/config_file.c | 2 +- 7 files changed, 21 insertions(+), 8 deletions(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index 965ca137f..28f05d473 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -55,6 +55,7 @@ static void usage() printf(" start unbound daemon DNS resolver.\n"); printf("-h this help\n"); printf("-c file config file to read, unbound.conf(5).\n"); + printf("-d do not fork into the background.\n"); printf("-v verbose (multiple times increase verbosity)\n"); printf("Version %s\n", PACKAGE_VERSION); printf("BSD licensed, see LICENSE in source package for details.\n"); @@ -157,7 +158,7 @@ checkoldpid(struct config_file* cfg) /** daemonize, drop user priviliges and chroot if needed */ static void -do_chroot(struct daemon* daemon, struct config_file* cfg) +do_chroot(struct daemon* daemon, struct config_file* cfg, int debug_mode) { log_assert(cfg); @@ -182,7 +183,7 @@ do_chroot(struct daemon* daemon, struct config_file* cfg) /* init logfile just before fork */ log_init(cfg->logfile); - if(cfg->do_daemonize) { + if(!debug_mode && cfg->do_daemonize) { int fd; /* Take off... */ switch (fork()) { @@ -217,8 +218,9 @@ do_chroot(struct daemon* daemon, struct config_file* cfg) * @param cfgfile: the config file name. * @param cmdline_verbose: verbosity resulting from commandline -v. * These increase verbosity as specified in the config file. + * @param debug_mode: if set, do not daemonize. */ -static void run_daemon(const char* cfgfile, int cmdline_verbose) +static void run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode) { struct config_file* cfg = NULL; struct daemon* daemon = NULL; @@ -242,7 +244,7 @@ static void run_daemon(const char* cfgfile, int cmdline_verbose) if(!daemon_open_shared_ports(daemon)) fatal_exit("could not open ports"); if(!done_chroot) { - do_chroot(daemon, cfg); + do_chroot(daemon, cfg, debug_mode); done_chroot = 1; } /* work */ @@ -276,10 +278,11 @@ main(int argc, char* argv[]) int c; const char* cfgfile = NULL; int cmdline_verbose = 0; + int debug_mode = 0; log_init(NULL); /* parse the options */ - while( (c=getopt(argc, argv, "c:hv")) != -1) { + while( (c=getopt(argc, argv, "c:dhv")) != -1) { switch(c) { case 'c': cfgfile = optarg; @@ -288,6 +291,9 @@ main(int argc, char* argv[]) cmdline_verbose ++; verbosity++; break; + case 'd': + debug_mode = 1; + break; case '?': case 'h': default: @@ -303,6 +309,6 @@ main(int argc, char* argv[]) return 1; } - run_daemon(cfgfile, cmdline_verbose); + run_daemon(cfgfile, cmdline_verbose, debug_mode); return 0; } diff --git a/doc/Changelog b/doc/Changelog index 297f2fe5e..5ffabd124 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - Ports for queries are shared. - config file added interface:, chroot: and username:. - config file: directory, logfile, pidfile. And they work too. + - will daemonize by default now. Use -d to stay in the foreground. 22 February 2007: Wouter - Have a config file. Removed commandline options, moved to config. diff --git a/doc/unbound.8 b/doc/unbound.8 index 7993904b7..aaa5c8367 100644 --- a/doc/unbound.8 +++ b/doc/unbound.8 @@ -41,8 +41,9 @@ unbound .Sh SYNOPSIS .Nm unbound .Op Fl h -.Op Fl c Ar cfgfile +.Op Fl d .Op Fl v +.Op Fl c Ar cfgfile .Sh DESCRIPTION .Ic Unbound @@ -60,6 +61,10 @@ Set the config file to read with settings for unbound. The syntax is described in .Xr unbound.conf 5 . +.It Fl d +Debug flag, do not fork into the background, but stay attached to the +console. + .It Fl v Increase verbosity. If given multiple times, more information is logged. This is in addition to the verbosity (if any) from the config file. diff --git a/testcode/testbound.c b/testcode/testbound.c index 09100bc44..b749c8874 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -156,6 +156,7 @@ main(int argc, char* argv[]) /* determine commandline options for the daemon */ pass_argc = 1; pass_argv[0] = "unbound"; + add_opts("-d", &pass_argc, pass_argv); while( (c=getopt(argc, argv, "ho:p:")) != -1) { switch(c) { case 'p': diff --git a/testdata/fwd_tcp.tpkg b/testdata/fwd_tcp.tpkg index f8d35662f04d65e7fcf12decc71d26c5f9d9293e..f73cd62c64887266db47323bbab6a892cac3f41f 100644 GIT binary patch delta 1461 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 diff --git a/util/config_file.c b/util/config_file.c index 3be1bad60..8e05e0da2 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -84,7 +84,7 @@ config_create() if(!(cfg->logfile = strdup(""))) {config_delete(cfg); return NULL;} if(!(cfg->pidfile = strdup("unbound.pid"))) {config_delete(cfg); return NULL;} cfg->fwd_port = UNBOUND_DNS_PORT; - cfg->do_daemonize = 0; + cfg->do_daemonize = 1; cfg->num_ifs = 0; cfg->ifs = NULL; return cfg; -- 2.47.2