Ryan,
I understand the motivation for this, but it breaks Windows. In some cases we do not 
want
to close the socket on Windows; it can be reused for a big performance boost.

Bill

----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, November 10, 2001 1:26 PM
Subject: cvs commit: httpd-2.0/server/mpm/worker worker.c


> rbb         01/11/10 10:26:30
>
>   Modified:    include  http_connection.h
>                server   connection.c
>                server/mpm/beos beos.c
>                server/mpm/mpmt_os2 mpmt_os2_child.c
>                server/mpm/netware mpm_netware.c
>                server/mpm/perchild perchild.c
>                server/mpm/prefork prefork.c
>                server/mpm/spmt_os2 spmt_os2.c
>                server/mpm/threaded threaded.c
>                server/mpm/winnt mpm_winnt.c
>                server/mpm/worker worker.c
>   Log:
>   Remove ap_lingering_close from all of the MPMs. This is now done as
>   a cleanup registered with the connection_pool.  I have also turned
>   ap_lingering_close into a static function, because it is only used
>   in connection.c.  This is the next step to consolidating all of the
>   socket function calls.  ap_lingering_close will only be added if the
>   core is dealing with a standard socket.
>
>   Revision  Changes    Path
>   1.38      +0 -16     httpd-2.0/include/http_connection.h
>
>   Index: http_connection.h
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/include/http_connection.h,v
>   retrieving revision 1.37
>   retrieving revision 1.38
>   diff -u -r1.37 -r1.38
>   --- http_connection.h 2001/07/27 21:01:16 1.37
>   +++ http_connection.h 2001/11/10 18:26:29 1.38
>   @@ -88,22 +88,6 @@
>
>    AP_CORE_DECLARE(void) ap_flush_conn(conn_rec *c);
>
>   -/**
>   - * This function is responsible for the following cases:
>   - * <pre>
>   - * we now proceed to read from the client until we get EOF, or until
>   - * MAX_SECS_TO_LINGER has passed.  the reasons for doing this are
>   - * documented in a draft:
>   - *
>   - * http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt
>   - *
>   - * in a nutshell -- if we don't make this effort we risk causing
>   - * TCP RST packets to be sent which can tear down a connection before
>   - * all the response data has been sent to the client.
>   - * </pre>
>   - * @param c The connection we are closing
>   - */
>   -void ap_lingering_close(conn_rec *);
>    #endif
>
>      /* Hooks */
>
>
>
>   1.85      +7 -3      httpd-2.0/server/connection.c
>
>   Index: connection.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/connection.c,v
>   retrieving revision 1.84
>   retrieving revision 1.85
>   diff -u -r1.84 -r1.85
>   --- connection.c 2001/07/31 00:34:27 1.84
>   +++ connection.c 2001/11/10 18:26:29 1.85
>   @@ -149,13 +149,14 @@
>     * all the response data has been sent to the client.
>     */
>    #define SECONDS_TO_LINGER  2
>   -void ap_lingering_close(conn_rec *c)
>   +static apr_status_t ap_lingering_close(void *dummy)
>    {
>        char dummybuf[512];
>        apr_size_t nbytes = sizeof(dummybuf);
>        apr_status_t rc;
>        apr_int32_t timeout;
>        apr_int32_t total_linger_time = 0;
>   +    conn_rec *c = dummy;
>
>        ap_update_child_status(AP_CHILD_THREAD_FROM_ID(c->id), SERVER_CLOSING, NULL);
>
>   @@ -175,7 +176,7 @@
>
>        if (c->aborted) {
>            apr_socket_close(c->client_socket);
>   -        return;
>   +        return APR_SUCCESS;
>        }
>
>        /* Shut down the socket for write, which will send a FIN
>   @@ -185,7 +186,7 @@
>        if (apr_shutdown(c->client_socket, APR_SHUTDOWN_WRITE) != APR_SUCCESS ||
>            c->aborted) {
>            apr_socket_close(c->client_socket);
>   -        return;
>   +        return APR_SUCCESS;
>        }
>
>        /* Read all data from the peer until we reach "end-of-file" (FIN
>   @@ -208,6 +209,7 @@
>        }
>
>        apr_socket_close(c->client_socket);
>   +    return APR_SUCCESS;
>    }
>
>    AP_CORE_DECLARE(void) ap_process_connection(conn_rec *c)
>   @@ -261,6 +263,8 @@
>        conn->client_socket = inout;
>
>        conn->id = id;
>   +
>   +    apr_pool_cleanup_register(p, conn, ap_lingering_close, apr_pool_cleanup_null);
>
>        return conn;
>    }
>
>
>
>   1.66      +0 -1      httpd-2.0/server/mpm/beos/beos.c
>
>   Index: beos.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/beos/beos.c,v
>   retrieving revision 1.65
>   retrieving revision 1.66
>   diff -u -r1.65 -r1.66
>   --- beos.c 2001/11/08 22:49:12 1.65
>   +++ beos.c 2001/11/10 18:26:29 1.66
>   @@ -316,7 +316,6 @@
>
>        if (current_conn) {
>            ap_process_connection(current_conn);
>   -        ap_lingering_close(current_conn);
>        }
>    }
>
>
>
>
>   1.3       +0 -1      httpd-2.0/server/mpm/mpmt_os2/mpmt_os2_child.c
>
>   Index: mpmt_os2_child.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/mpmt_os2/mpmt_os2_child.c,v
>   retrieving revision 1.2
>   retrieving revision 1.3
>   diff -u -r1.2 -r1.3
>   --- mpmt_os2_child.c 2001/08/20 16:10:57 1.2
>   +++ mpmt_os2_child.c 2001/11/10 18:26:29 1.3
>   @@ -411,7 +411,6 @@
>
>            if (current_conn) {
>                ap_process_connection(current_conn);
>   -            ap_lingering_close(current_conn);
>            }
>
>            apr_pool_destroy(pconn);
>
>
>
>   1.7       +0 -1      httpd-2.0/server/mpm/netware/mpm_netware.c
>
>   Index: mpm_netware.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/netware/mpm_netware.c,v
>   retrieving revision 1.6
>   retrieving revision 1.7
>   diff -u -r1.6 -r1.7
>   --- mpm_netware.c 2001/11/07 05:29:58 1.6
>   +++ mpm_netware.c 2001/11/10 18:26:29 1.7
>   @@ -509,7 +509,6 @@
>            current_conn = ap_new_connection(ptrans, ap_server_conf, csd, 
>my_worker_num);
>            if (current_conn) {
>                ap_process_connection(current_conn);
>   -            ap_lingering_close(current_conn);
>            }
>
>        }
>
>
>
>   1.82      +0 -1      httpd-2.0/server/mpm/perchild/perchild.c
>
>   Index: perchild.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/perchild/perchild.c,v
>   retrieving revision 1.81
>   retrieving revision 1.82
>   diff -u -r1.81 -r1.82
>   --- perchild.c 2001/11/07 05:29:58 1.81
>   +++ perchild.c 2001/11/10 18:26:29 1.82
>   @@ -505,7 +505,6 @@
>        current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
>        if (current_conn) {
>            ap_process_connection(current_conn);
>   -        ap_lingering_close(current_conn);
>        }
>    }
>
>
>
>
>   1.209     +0 -1      httpd-2.0/server/mpm/prefork/prefork.c
>
>   Index: prefork.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/prefork/prefork.c,v
>   retrieving revision 1.208
>   retrieving revision 1.209
>   diff -u -r1.208 -r1.209
>   --- prefork.c 2001/11/10 08:00:41 1.208
>   +++ prefork.c 2001/11/10 18:26:29 1.209
>   @@ -792,7 +792,6 @@
>                                             my_child_num);
>            if (current_conn) {
>                ap_process_connection(current_conn);
>   -            ap_lingering_close(current_conn);
>            }
>
>            /* Check the pod after processing a connection so that we'll go away
>
>
>
>   1.105     +0 -1      httpd-2.0/server/mpm/spmt_os2/spmt_os2.c
>
>   Index: spmt_os2.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/spmt_os2/spmt_os2.c,v
>   retrieving revision 1.104
>   retrieving revision 1.105
>   diff -u -r1.104 -r1.105
>   --- spmt_os2.c 2001/11/07 05:29:58 1.104
>   +++ spmt_os2.c 2001/11/10 18:26:29 1.105
>   @@ -685,7 +685,6 @@
>
>            if (current_conn) {
>                ap_process_connection(current_conn);
>   -            ap_lingering_close(current_conn);
>            }
>        }
>
>
>
>
>   1.68      +0 -1      httpd-2.0/server/mpm/threaded/threaded.c
>
>   Index: threaded.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/threaded/threaded.c,v
>   retrieving revision 1.67
>   retrieving revision 1.68
>   diff -u -r1.67 -r1.68
>   --- threaded.c 2001/11/07 05:29:58 1.67
>   +++ threaded.c 2001/11/10 18:26:29 1.68
>   @@ -478,7 +478,6 @@
>        current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
>        if (current_conn) {
>            ap_process_connection(current_conn);
>   -        ap_lingering_close(current_conn);
>        }
>    }
>
>
>
>
>   1.188     +0 -1      httpd-2.0/server/mpm/winnt/mpm_winnt.c
>
>   Index: mpm_winnt.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/winnt/mpm_winnt.c,v
>   retrieving revision 1.187
>   retrieving revision 1.188
>   diff -u -r1.187 -r1.188
>   --- mpm_winnt.c 2001/11/07 05:29:58 1.187
>   +++ mpm_winnt.c 2001/11/10 18:26:29 1.188
>   @@ -901,7 +901,6 @@
>                apr_getsocketopt(context->sock, APR_SO_DISCONNECTED, &disconnected);
>                if (!disconnected) {
>                    context->accept_socket = INVALID_SOCKET;
>   -                ap_lingering_close(c);
>                }
>            }
>            else {
>
>
>
>   1.33      +0 -1      httpd-2.0/server/mpm/worker/worker.c
>
>   Index: worker.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/server/mpm/worker/worker.c,v
>   retrieving revision 1.32
>   retrieving revision 1.33
>   diff -u -r1.32 -r1.33
>   --- worker.c 2001/11/07 05:29:58 1.32
>   +++ worker.c 2001/11/10 18:26:30 1.33
>   @@ -502,7 +502,6 @@
>        current_conn = ap_new_connection(p, ap_server_conf, sock, conn_id);
>        if (current_conn) {
>            ap_process_connection(current_conn);
>   -        ap_lingering_close(current_conn);
>        }
>    }
>
>
>
>
>

Reply via email to