]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
com_add(): Write messages to the client rather than to the log.
[paraslash.git] / server.c
index 90f8cd535d67ac022284118e622e8f3528cf6099..d5946e47386c03a40a802a1d407a69f7b0659fef 100644 (file)
--- a/server.c
+++ b/server.c
@@ -15,6 +15,9 @@
  *
  */
 
+#include <signal.h>
+#include <sys/types.h>
+#include <dirent.h>
 
 #include "para.h"
 #include "server.cmdline.h"
@@ -350,7 +353,7 @@ out:
 
 uint32_t afs_socket_cookie;
 static int afs_socket;
-pid_t afs_pid;
+static pid_t afs_pid;
 
 static void init_afs(void)
 {
@@ -363,10 +366,16 @@ static void init_afs(void)
        afs_pid = fork();
        if (afs_pid < 0)
                exit(EXIT_FAILURE);
-       if (!afs_pid) /* child (afs) */
+       if (!afs_pid) { /* child (afs) */
+               close(afs_server_socket[0]);
                afs_init(afs_socket_cookie, afs_server_socket[1]);
+       }
        close(afs_server_socket[1]);
        afs_socket = afs_server_socket[0];
+       ret = mark_fd_nonblock(afs_socket);
+       if (ret < 0)
+               exit(EXIT_FAILURE);
+       add_close_on_fork_list(afs_socket);
        PARA_INFO_LOG("afs_socket: %d, afs_socket_cookie: %u\n", afs_socket,
                (unsigned) afs_socket_cookie);
 }
@@ -435,6 +444,8 @@ static void handle_sighup(void)
        mmd->selector_change = mmd->selector_num; /* do not change selector.. */
        change_selector(); /* .. just reload */
        init_user_list(user_list_file); /* reload user list */
+       if (afs_pid)
+               kill(afs_pid, SIGHUP);
 }
 
 static void status_refresh(void)