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); >> > >