-1 (veto)

Filling obscure areas of the server with stupid hacks that modify
the request structure because of something the content generator
*might* do is harmful to overall stability.  204 and 304 are already
handled elsewhere (or, if not, they should be handled elsewhere).

....Roy

On Mar 30, 2009, at 1:49 PM, [email protected] wrote:

Author: niq
Date: Mon Mar 30 20:49:10 2009
New Revision: 760167

URL: http://svn.apache.org/viewvc?rev=760167&view=rev
Log:
HTTPD script support
When a script returns a no-body response code, pretend it was a HEAD
request so as to drop any body the script might erroneously generate.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/server/util_script.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES? rev=760167&r1=760166&r2=760167&view=diff ====================================================================== ========
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Mon Mar 30 20:49:10 2009
@@ -2,6 +2,9 @@

 Changes with Apache 2.3.3

+ *) script support: avoid possibly sending contents with a 204 or 304
+     response.  PR 40953 [Nick Kew]
+
*) ab: Fix a 100% CPU loop on platforms where a failed non- blocking connect returns EINPROGRESS and a subsequent poll() returns only POLLERR.
      Observed on HP-UX.  [Eric Covener]

Modified: httpd/httpd/trunk/server/util_script.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/ util_script.c?rev=760167&r1=760166&r2=760167&view=diff ====================================================================== ========
--- httpd/httpd/trunk/server/util_script.c (original)
+++ httpd/httpd/trunk/server/util_script.c Mon Mar 30 20:49:10 2009
@@ -462,6 +462,10 @@
if ((cgi_status == HTTP_UNSET) && (r->method_number == M_GET)) {
                 cond_status = ap_meets_conditions(r);
             }
+            else if ((cgi_status == HTTP_NO_CONTENT) ||
+                     (cgi_status == HTTP_NOT_MODIFIED)) {
+                r->header_only = 1; /* discard any body */
+            }
             apr_table_overlap(r->err_headers_out, merge,
                 APR_OVERLAP_TABLES_MERGE);
             if (!apr_is_empty_table(cookie_table)) {



Reply via email to