Commit 8e27fec2 authored by Bill Stoddard's avatar Bill Stoddard
Browse files

Win32: Shutdown the listeners before telling the accept threads to quit.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@95268 13f79535-47bb-0310-9956-ffa450edef68
parent 43489055
Loading
Loading
Loading
Loading
+12 −8
Changes for server/mpm/winnt/mpm_winnt.c: 12 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -1362,21 +1362,25 @@ static void child_main()
     */

 shutdown:
    /* Setting is_graceful will cause keep-alive connections to be closed
     * rather than block on the next network read.
    /* Setting is_graceful will cause threads handling keep-alive connections 
     * to close the connection after handling the current request.
     */
    is_graceful = 1;

    /* Setting shutdown_in_progress prevents new connections from
     * being accepted but allows the worker threads to continue
     * handling connections that have already been accepted.
    /* Close the listening sockets. Note, we must close the listeners
     * before closing any accept sockets pending in AcceptEx to prevent
     * memory leaks in the kernel.
     */
    shutdown_in_progress = 1;

    /* Close the listening sockets. */
    for (lr = ap_listeners; lr ; lr = lr->next) {
        apr_socket_close(lr->sd);
    }

    /* Shutdown listener threads and pending AcceptEx socksts 
     * but allow the worker threads to continue consuming from
     * the queue of accepted connections.
     */
    shutdown_in_progress = 1;

    Sleep(1000);

    /* Tell the worker threads to exit */