Make HttpProtocol accept a range of allowed versions.

Bump MMN


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1407643 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stefan Fritsch
2012-11-09 21:17:04 +00:00
parent 655875eb8c
commit b5a7699209
4 changed files with 63 additions and 29 deletions

View File

@ -566,6 +566,8 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
apr_size_t len;
int num_blank_lines = 0;
int max_blank_lines = r->server->limit_req_fields;
core_server_config *conf =
ap_get_core_module_config(r->server->module_config);
if (max_blank_lines <= 0) {
max_blank_lines = DEFAULT_LIMIT_REQUEST_FIELDS;
@ -644,19 +646,9 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
pro = ll;
len = strlen(ll);
} else {
core_server_config *conf;
conf = ap_get_core_module_config(r->server->module_config);
r->assbackwards = 1;
pro = "HTTP/0.9";
len = 8;
if (conf->http09_enable == AP_HTTP09_DISABLE) {
r->status = HTTP_VERSION_NOT_SUPPORTED;
r->protocol = apr_pstrmemdup(r->pool, pro, len);
r->proto_num = HTTP_VERSION(0, 9);
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02401)
"HTTP/0.9 denied by server configuration");
return 0;
}
}
r->protocol = apr_pstrmemdup(r->pool, pro, len);
@ -674,6 +666,21 @@ static int read_request_line(request_rec *r, apr_bucket_brigade *bb)
else
r->proto_num = HTTP_VERSION(1, 0);
if (conf->min_http_version != AP_HTTP_VERSION_UNSET
&& ( conf->min_http_version > r->proto_num
|| conf->max_http_version < r->proto_num)) {
r->status = HTTP_VERSION_NOT_SUPPORTED;
if (r->proto_num == HTTP_VERSION(0, 9)) {
/* If we deny 0.9, send error message with 1.x */
r->assbackwards = 0;
}
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, APLOGNO(02401)
"HTTP/%d.%d denied by server configuration",
HTTP_VERSION_MAJOR(r->proto_num),
HTTP_VERSION_MINOR(r->proto_num));
return 0;
}
return 1;
}