]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
Remove ->signum from struct signal_task.
[paraslash.git] / server.c
index 71aeaf1ce725209c4a39f0506d1d41169999c0e4..ba5dabde066050825a46ef3abae82556474e7226 100644 (file)
--- a/server.c
+++ b/server.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1997-2009 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 1997-2010 Andre Noll <maan@systemlinux.org>
  *
  * Licensed under the GPL v2. For licencing details see COPYING.
  */
@@ -279,12 +279,13 @@ static void handle_sighup(void)
 static void signal_post_select(struct sched *s, struct task *t)
 {
        struct signal_task *st = container_of(t, struct signal_task, task);
+       int signum;
 
        if (!FD_ISSET(st->fd, &s->rfds))
                return;
 
-       st->signum = para_next_signal();
-       switch (st->signum) {
+       signum = para_next_signal();
+       switch (signum) {
        case SIGHUP:
                handle_sighup();
                break;
@@ -304,7 +305,7 @@ static void signal_post_select(struct sched *s, struct task *t)
        /* die on sigint/sigterm. Kill all children too. */
        case SIGINT:
        case SIGTERM:
-               PARA_EMERG_LOG("terminating on signal %d\n", st->signum);
+               PARA_EMERG_LOG("terminating on signal %d\n", signum);
                kill(0, SIGTERM);
                /*
                 * We must wait for afs because afs catches SIGINT/SIGTERM.
@@ -366,12 +367,9 @@ static void command_post_select(struct sched *s, struct task *t)
        pid_t child_pid;
        uint32_t *chunk_table;
 
-       if (!FD_ISSET(sct->listen_fd, &s->rfds))
-               return;
-       ret = para_accept(sct->listen_fd, NULL, 0);
-       if (ret < 0)
+       ret = para_accept(sct->listen_fd, &s->rfds, NULL, 0, &new_fd);
+       if (ret <= 0)
                goto out;
-       new_fd = ret;
        peer_name = remote_name(new_fd);
        PARA_INFO_LOG("got connection from %s, forking\n", peer_name);
        mmd->num_connects++;