]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - server.c
server/afs: Close an unused file descriptor.
[paraslash.git] / server.c
index 94e6564b783371fb8cd77e9f8c0a96eb55093f6f..e94de736f81b9508739dbf0f4c38c180ede29fdb 100644 (file)
--- a/server.c
+++ b/server.c
@@ -31,6 +31,8 @@
 #include "string.h"
 #include "ipc.h"
 #include "fd.h"
+#include "list.h"
+#include "sched.h"
 #include "signal.h"
 #include "user_list.h"
 #include "afs.h"
@@ -346,7 +348,7 @@ out:
        exit(EXIT_FAILURE);
 }
 
-static uint32_t afs_socket_cookie;
+uint32_t afs_socket_cookie;
 static int afs_socket;
 pid_t afs_pid;
 
@@ -361,10 +363,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);
 }