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 */