William A. Rowe, Jr. wrote:
> Do we need an entire request?  Wouldn't a 'null request' be faster?
> 

Define 'null request'.

We need an entire request to trigger the Accept Filter.

Just opening and closing the socket (old behavior) will not pop a child
out of the Accept() when Accept Filters or TCP_DEFER_ACCEPT are active.

-Paul


> 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