mirror of
https://github.com/apache/httpd.git
synced 2025-08-15 23:27:39 +00:00
revert r1773285
breaks some existing tests. Needs more work. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1773292 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@ -632,7 +632,6 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b,
|
||||
struct check_header_ctx {
|
||||
request_rec *r;
|
||||
int strict;
|
||||
const char *badheader;
|
||||
};
|
||||
|
||||
/* check a single header, to be used with apr_table_do() */
|
||||
@ -658,7 +657,6 @@ static int check_header(void *arg, const char *name, const char *val)
|
||||
"Response header name '%s' contains invalid "
|
||||
"characters, aborting request",
|
||||
name);
|
||||
ctx->badheader = name;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -668,7 +666,6 @@ static int check_header(void *arg, const char *name, const char *val)
|
||||
"Response header '%s' value of '%s' contains invalid "
|
||||
"characters, aborting request",
|
||||
name, val);
|
||||
ctx->badheader = name;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
@ -683,21 +680,13 @@ static APR_INLINE int check_headers(request_rec *r)
|
||||
struct check_header_ctx ctx;
|
||||
core_server_config *conf =
|
||||
ap_get_core_module_config(r->server->module_config);
|
||||
int rv = 1;
|
||||
|
||||
ctx.r = r;
|
||||
ctx.strict = (conf->http_conformance != AP_HTTP_CONFORMANCE_UNSAFE);
|
||||
ctx.badheader = NULL;
|
||||
if (!apr_table_do(check_header, &ctx, r->headers_out, NULL))
|
||||
return 0; /* problem has been logged by check_header() */
|
||||
|
||||
while (!apr_table_do(check_header, &ctx, r->headers_out, NULL)){
|
||||
if (ctx.badheader) {
|
||||
apr_table_unset(r->headers_out, ctx.badheader);
|
||||
apr_table_unset(r->err_headers_out, ctx.badheader);
|
||||
}
|
||||
rv = 0; /* problem has been logged by check_header() */
|
||||
}
|
||||
|
||||
return rv;
|
||||
return 1;
|
||||
}
|
||||
|
||||
typedef struct header_struct {
|
||||
@ -1260,7 +1249,8 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f,
|
||||
}
|
||||
|
||||
if (!check_headers(r)) {
|
||||
r->status = 500;
|
||||
ap_die(HTTP_INTERNAL_SERVER_ERROR, r);
|
||||
return AP_FILTER_ERROR;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user