You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by wr...@apache.org on 2005/07/06 04:01:55 UTC

svn commit: r209384 - in /httpd/httpd/branches/1.3.x/src/modules/proxy: mod_proxy.c proxy_http.c

Author: wrowe
Date: Tue Jul  5 19:01:54 2005
New Revision: 209384

URL: http://svn.apache.org/viewcvs?rev=209384&view=rev
Log:

  The TRACE method control belonged in mod_proxy, it shouldn't
  have been hiding in the http-only proxy provider.

Modified:
    httpd/httpd/branches/1.3.x/src/modules/proxy/mod_proxy.c
    httpd/httpd/branches/1.3.x/src/modules/proxy/proxy_http.c

Modified: httpd/httpd/branches/1.3.x/src/modules/proxy/mod_proxy.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/1.3.x/src/modules/proxy/mod_proxy.c?rev=209384&r1=209383&r2=209384&view=diff
==============================================================================
--- httpd/httpd/branches/1.3.x/src/modules/proxy/mod_proxy.c (original)
+++ httpd/httpd/branches/1.3.x/src/modules/proxy/mod_proxy.c Tue Jul  5 19:01:54 2005
@@ -18,6 +18,7 @@
 #define CORE_PRIVATE
 
 #include "http_log.h"
+#include "http_core.h"
 #include "http_vhost.h"
 #include "http_request.h"
 
@@ -278,6 +279,38 @@
 
     if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
         return rc;
+
+    if (r->method_number == M_TRACE) {
+        core_server_config *coreconf = (core_server_config *)
+             ap_get_module_config(r->server->module_config, &core_module);
+
+        if (coreconf->trace_enable == AP_TRACE_DISABLE)
+        {
+            /* Allow "error-notes" string to be printed by ap_send_error_response()
+             * Note; this goes nowhere, canned error response need an overhaul.
+             */
+            ap_table_setn(r->notes, "error-notes",
+                           "TRACE forbidden by server configuration");
+            ap_table_setn(r->notes, "verbose-error-to", "*");
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
+                          "proxy: TRACE forbidden by server configuration");
+            return HTTP_FORBIDDEN;
+        }
+
+        if (coreconf->trace_enable != AP_TRACE_EXTENDED 
+            && (r->read_length || r->read_chunked || r->remaining))
+        {
+            /* Allow "error-notes" string to be printed by ap_send_error_response()
+             * Note; this goes nowhere, canned error response need an overhaul.
+             */
+            ap_table_setn(r->notes, "error-notes",
+                           "TRACE with request body is not allowed");
+            ap_table_setn(r->notes, "verbose-error-to", "*");
+            ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
+                          "proxy: TRACE with request body is not allowed");
+            return HTTP_REQUEST_ENTITY_TOO_LARGE;
+        }
+    }
 
     url = r->filename + 6;
     p = strchr(url, ':');

Modified: httpd/httpd/branches/1.3.x/src/modules/proxy/proxy_http.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/1.3.x/src/modules/proxy/proxy_http.c?rev=209384&r1=209383&r2=209384&view=diff
==============================================================================
--- httpd/httpd/branches/1.3.x/src/modules/proxy/proxy_http.c (original)
+++ httpd/httpd/branches/1.3.x/src/modules/proxy/proxy_http.c Tue Jul  5 19:01:54 2005
@@ -15,7 +15,6 @@
 
 /* HTTP routines for Apache proxy */
 
-#define CORE_PRIVATE   /* To inspect core_server_conf->trace_enable */
 #include "mod_proxy.h"
 #include "http_log.h"
 #include "http_main.h"
@@ -141,24 +140,6 @@
 
     memset(&server, '\0', sizeof(server));
     server.sin_family = AF_INET;
-
-    if (r->method_number == M_TRACE) {
-        core_server_config *coreconf = (core_server_config *)
-             ap_get_module_config(r->server->module_config, &core_module);
-
-        if (coreconf->trace_enable == AP_TRACE_DISABLE)
-            return ap_proxyerror(r, HTTP_FORBIDDEN,
-                                 "TRACE denied by server configuration");
-
-        /* Can't test ap_should_client_block, we aren't ready to send
-         * the client a 100 Continue response till the connection has
-         * been established
-         */
-        if (coreconf->trace_enable != AP_TRACE_EXTENDED 
-            && (r->read_length || (!r->read_chunked && (r->remaining <= 0))))
-            return ap_proxyerror(r, HTTP_REQUEST_ENTITY_TOO_LARGE,
-                                 "TRACE with request body is not allowed");
-    }
     
     /* We break the URL into host, port, path-search */