From: Wouter Wijngaards Date: Mon, 26 Feb 2007 16:18:35 +0000 (+0000) Subject: - don't open pipes that are unused (no pipes if 1 thread only). X-Git-Tag: release-0.1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=04e0a37e53c1e28c4abc5ed1010ede44a4d51daf;p=thirdparty%2Funbound.git - don't open pipes that are unused (no pipes if 1 thread only). - SIGTERM. git-svn-id: file:///svn/unbound/trunk@149 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/daemon/worker.c b/daemon/worker.c index db8406429..e6da5a483 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -262,21 +262,23 @@ worker_create(struct daemon* daemon, int id) { struct worker* worker = (struct worker*)calloc(1, sizeof(struct worker)); - int sv[2]; if(!worker) return NULL; worker->daemon = daemon; worker->thread_num = id; worker->cmd_send_fd = -1; worker->cmd_recv_fd = -1; - /* create socketpair to communicate with worker */ - if(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1) { - free(worker); - log_err("socketpair: %s", strerror(errno)); - return NULL; + if(id != 0) { + int sv[2]; + /* create socketpair to communicate with worker */ + if(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == -1) { + free(worker); + log_err("socketpair: %s", strerror(errno)); + return NULL; + } + worker->cmd_send_fd = sv[0]; + worker->cmd_recv_fd = sv[1]; } - worker->cmd_send_fd = sv[0]; - worker->cmd_recv_fd = sv[1]; return worker; } @@ -342,13 +344,15 @@ worker_init(struct worker* worker, struct config_file *cfg, worker_delete(worker); return 0; } - /* start listening to commands */ - if(!(worker->cmd_com=comm_point_create_local(worker->base, - worker->cmd_recv_fd, buffer_size, worker_handle_control_cmd, - worker))) { - log_err("could not create control compt."); - worker_delete(worker); - return 0; + if(worker->thread_num != 0) { + /* start listening to commands */ + if(!(worker->cmd_com=comm_point_create_local(worker->base, + worker->cmd_recv_fd, buffer_size, + worker_handle_control_cmd, worker))) { + log_err("could not create control compt."); + worker_delete(worker); + return 0; + } } /* set forwarder address */ diff --git a/doc/Changelog b/doc/Changelog index 2ed52f9ef..c04a02e7c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ - log code prints thread id. - unbound can thread itself, with reload(HUP) and quit working correctly. + - don't open pipes for #0, doesn't need it. + - listens to SIGTERM, SIGQUIT, SIGINT (all quit) and SIGHUP (reload). 23 February 2007: Wouter - Can do reloads on sigHUP. Everything is stopped, and freed,