]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- don't open pipes that are unused (no pipes if 1 thread only).
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 26 Feb 2007 16:18:35 +0000 (16:18 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 26 Feb 2007 16:18:35 +0000 (16:18 +0000)
- SIGTERM.

git-svn-id: file:///svn/unbound/trunk@149 be551aaa-1e26-0410-a405-d3ace91eadb9

daemon/worker.c
doc/Changelog

index db8406429153f678a80fbf5b30d4d8e35a82ccbf..e6da5a4832fc72412cf4e2cb70edb39038985cf2 100644 (file)
@@ -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 */
index 2ed52f9ef75da69be835590f912932cdc1ce7c18..c04a02e7cd5c7f34a287be2eb7b3584768a47a3d 100644 (file)
@@ -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,