#define CORE_PRIVATE
#include "http_log.h"
+#include "http_core.h"
#include "http_vhost.h"
#include "http_request.h"
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, ':');
if (p == NULL)
/* 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"
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 */