Do we need an entire request?  Wouldn't a 'null request' be faster?

At 01:40 PM 6/27/2005, [EMAIL PROTECTED] wrote:
>Author: pquerna
>Date: Mon Jun 27 11:40:56 2005
>New Revision: 202027
>
>URL: http://svn.apache.org/viewcvs?rev=202027&view=rev
>Log:
>*) server/mpm_common.c: Send a simple HTTP 1.0 request to every listener 
>socket, instead of just closing the socket.  This fixes shutdown of the Worker 
>MPM on FreeBSD, when Accept Filters are enabled.
>
>In the future, we need a method to send a simple request for all protocols.  
>Currently this is very specific to HTTP and FreeBSD's Accept Filter.
>
>Modified:
>    httpd/httpd/trunk/CHANGES
>    httpd/httpd/trunk/server/mpm_common.c
>
>Modified: httpd/httpd/trunk/CHANGES
>URL: 
>http://svn.apache.org/viewcvs/httpd/httpd/trunk/CHANGES?rev=202027&r1=202026&r2=202027&view=diff
>==============================================================================
>--- httpd/httpd/trunk/CHANGES (original)
>+++ httpd/httpd/trunk/CHANGES Mon Jun 27 11:40:56 2005
>@@ -1,6 +1,10 @@
> Changes with Apache 2.1.7
>   [Remove entries to the current 2.0 section below, when backported]
> 
>+  *) Fix shutdown for the Worker MPM when an Accept Filter is used. Instead 
>of 
>+     just closing the socket, a HTTP request is made, to make sure the child 
>is 
>+     always awakened. [Paul Querna]
>+
> Changes with Apache 2.1.6
> 
>   *) Fix htdbm password validation for records which included comments.
>
>Modified: httpd/httpd/trunk/server/mpm_common.c
>URL: 
>http://svn.apache.org/viewcvs/httpd/httpd/trunk/server/mpm_common.c?rev=202027&r1=202026&r2=202027&view=diff
>==============================================================================
>--- httpd/httpd/trunk/server/mpm_common.c (original)
>+++ httpd/httpd/trunk/server/mpm_common.c Mon Jun 27 11:40:56 2005
>@@ -546,6 +546,7 @@
>  */
> static apr_status_t dummy_connection(ap_pod_t *pod)
> {
>+    const char* srequest = "GET / HTTP/1.0\r\n\r\n";
>     apr_status_t rv;
>     apr_socket_t *sock;
>     apr_pool_t *p;
>@@ -596,6 +597,16 @@
>                      "connect to listener on %pI", ap_listeners->bind_addr);
>     }
> 
>+    /* Since some operating systems support buffering of data or entire 
>+     * requests in the kernel, we send a simple request, to make sure 
>+     * the server pops out of a blocking accept(). 
>+     */
>+    /* XXX: This is HTTP specific. We should look at the Protocol for each 
>+     * listener, and send the correct type of request to trigger any Accept
>+     * Filters.
>+     */
>+    apr_socket_send(sock, srequest, strlen(srequest));
>+    apr_socket_shutdown(sock, APR_SHUTDOWN_WRITE);
>     apr_socket_close(sock);
>     apr_pool_destroy(p);
> 


Reply via email to