]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
script: Close extra fds before executing post-login script.
authorTimo Sirainen <tss@iki.fi>
Mon, 14 Dec 2009 01:47:38 +0000 (20:47 -0500)
committerTimo Sirainen <tss@iki.fi>
Mon, 14 Dec 2009 01:47:38 +0000 (20:47 -0500)
--HG--
branch : HEAD

src/util/script.c

index 4dac4b92c1f78cd46f851edcf4fee6d290c612fd..ad88962cbf97a112e21d7c1af98fac8d017d421c 100644 (file)
@@ -30,7 +30,7 @@ static void client_connected(const struct master_service_connection *conn)
        struct mail_storage_service_input input;
        struct mail_storage_service_user *user;
        char buf[1024];
-       unsigned int i;
+       unsigned int i, socket_count;
        int fd = -1;
        ssize_t ret;
 
@@ -107,6 +107,15 @@ static void client_connected(const struct master_service_connection *conn)
                        i_fatal("dup2() failed: %m");
        }
 
+       /* close all listener sockets */
+       socket_count = master_service_get_socket_count(master_service);
+       for (i = 0; i < socket_count; i++) {
+               if (close(MASTER_LISTEN_FD_FIRST + i) < 0)
+                       i_error("close(listener) failed: %m");
+       }
+       if (close(MASTER_STATUS_FD) < 0)
+               i_error("close(status) failed: %m");
+
        (void)execvp(exec_args[0], exec_args);
        i_fatal("execvp(%s) failed: %m", exec_args[0]);
 }