mirror of
https://github.com/nginx/nginx.git
synced 2025-06-06 17:02:39 +08:00
Don't pretend we support HTTP major versions >1 as HTTP/1.1.
This commit is contained in:
parent
53e63ff7c3
commit
8ae2bc9320
@ -119,7 +119,7 @@ static ngx_str_t ngx_http_status_lines[] = {
|
|||||||
ngx_string("502 Bad Gateway"),
|
ngx_string("502 Bad Gateway"),
|
||||||
ngx_string("503 Service Temporarily Unavailable"),
|
ngx_string("503 Service Temporarily Unavailable"),
|
||||||
ngx_string("504 Gateway Time-out"),
|
ngx_string("504 Gateway Time-out"),
|
||||||
ngx_null_string, /* "505 HTTP Version Not Supported" */
|
ngx_string("505 HTTP Version Not Supported"),
|
||||||
ngx_null_string, /* "506 Variant Also Negotiates" */
|
ngx_null_string, /* "506 Variant Also Negotiates" */
|
||||||
ngx_string("507 Insufficient Storage"),
|
ngx_string("507 Insufficient Storage"),
|
||||||
|
|
||||||
|
@ -723,6 +723,11 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
r->http_major = ch - '0';
|
r->http_major = ch - '0';
|
||||||
|
|
||||||
|
if (r->http_major > 1) {
|
||||||
|
return NGX_HTTP_PARSE_INVALID_VERSION;
|
||||||
|
}
|
||||||
|
|
||||||
state = sw_major_digit;
|
state = sw_major_digit;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -737,11 +742,12 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
|
|||||||
return NGX_HTTP_PARSE_INVALID_REQUEST;
|
return NGX_HTTP_PARSE_INVALID_REQUEST;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r->http_major > 99) {
|
r->http_major = r->http_major * 10 + ch - '0';
|
||||||
return NGX_HTTP_PARSE_INVALID_REQUEST;
|
|
||||||
|
if (r->http_major > 1) {
|
||||||
|
return NGX_HTTP_PARSE_INVALID_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
r->http_major = r->http_major * 10 + ch - '0';
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* first digit of minor HTTP version */
|
/* first digit of minor HTTP version */
|
||||||
|
@ -72,6 +72,9 @@ static char *ngx_http_client_errors[] = {
|
|||||||
/* NGX_HTTP_PARSE_INVALID_REQUEST */
|
/* NGX_HTTP_PARSE_INVALID_REQUEST */
|
||||||
"client sent invalid request",
|
"client sent invalid request",
|
||||||
|
|
||||||
|
/* NGX_HTTP_PARSE_INVALID_VERSION */
|
||||||
|
"client sent invalid version",
|
||||||
|
|
||||||
/* NGX_HTTP_PARSE_INVALID_09_METHOD */
|
/* NGX_HTTP_PARSE_INVALID_09_METHOD */
|
||||||
"client sent invalid method in HTTP/0.9 request"
|
"client sent invalid method in HTTP/0.9 request"
|
||||||
};
|
};
|
||||||
@ -1036,7 +1039,14 @@ ngx_http_process_request_line(ngx_event_t *rev)
|
|||||||
|
|
||||||
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
ngx_log_error(NGX_LOG_INFO, c->log, 0,
|
||||||
ngx_http_client_errors[rc - NGX_HTTP_CLIENT_ERROR]);
|
ngx_http_client_errors[rc - NGX_HTTP_CLIENT_ERROR]);
|
||||||
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
|
||||||
|
if (rc == NGX_HTTP_PARSE_INVALID_VERSION) {
|
||||||
|
ngx_http_finalize_request(r, NGX_HTTP_VERSION_NOT_SUPPORTED);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
ngx_http_finalize_request(r, NGX_HTTP_BAD_REQUEST);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,9 +54,10 @@
|
|||||||
#define NGX_HTTP_CLIENT_ERROR 10
|
#define NGX_HTTP_CLIENT_ERROR 10
|
||||||
#define NGX_HTTP_PARSE_INVALID_METHOD 10
|
#define NGX_HTTP_PARSE_INVALID_METHOD 10
|
||||||
#define NGX_HTTP_PARSE_INVALID_REQUEST 11
|
#define NGX_HTTP_PARSE_INVALID_REQUEST 11
|
||||||
#define NGX_HTTP_PARSE_INVALID_09_METHOD 12
|
#define NGX_HTTP_PARSE_INVALID_VERSION 12
|
||||||
|
#define NGX_HTTP_PARSE_INVALID_09_METHOD 13
|
||||||
|
|
||||||
#define NGX_HTTP_PARSE_INVALID_HEADER 13
|
#define NGX_HTTP_PARSE_INVALID_HEADER 14
|
||||||
|
|
||||||
|
|
||||||
/* unused 1 */
|
/* unused 1 */
|
||||||
@ -136,6 +137,7 @@
|
|||||||
#define NGX_HTTP_BAD_GATEWAY 502
|
#define NGX_HTTP_BAD_GATEWAY 502
|
||||||
#define NGX_HTTP_SERVICE_UNAVAILABLE 503
|
#define NGX_HTTP_SERVICE_UNAVAILABLE 503
|
||||||
#define NGX_HTTP_GATEWAY_TIME_OUT 504
|
#define NGX_HTTP_GATEWAY_TIME_OUT 504
|
||||||
|
#define NGX_HTTP_VERSION_NOT_SUPPORTED 505
|
||||||
#define NGX_HTTP_INSUFFICIENT_STORAGE 507
|
#define NGX_HTTP_INSUFFICIENT_STORAGE 507
|
||||||
|
|
||||||
|
|
||||||
|
@ -321,6 +321,14 @@ static char ngx_http_error_504_page[] =
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
static char ngx_http_error_505_page[] =
|
||||||
|
"<html>" CRLF
|
||||||
|
"<head><title>505 HTTP Version Not Supported</title></head>" CRLF
|
||||||
|
"<body bgcolor=\"white\">" CRLF
|
||||||
|
"<center><h1>505 HTTP Version Not Supported</h1></center>" CRLF
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
static char ngx_http_error_507_page[] =
|
static char ngx_http_error_507_page[] =
|
||||||
"<html>" CRLF
|
"<html>" CRLF
|
||||||
"<head><title>507 Insufficient Storage</title></head>" CRLF
|
"<head><title>507 Insufficient Storage</title></head>" CRLF
|
||||||
@ -395,7 +403,7 @@ static ngx_str_t ngx_http_error_pages[] = {
|
|||||||
ngx_string(ngx_http_error_502_page),
|
ngx_string(ngx_http_error_502_page),
|
||||||
ngx_string(ngx_http_error_503_page),
|
ngx_string(ngx_http_error_503_page),
|
||||||
ngx_string(ngx_http_error_504_page),
|
ngx_string(ngx_http_error_504_page),
|
||||||
ngx_null_string, /* 505 */
|
ngx_string(ngx_http_error_505_page),
|
||||||
ngx_null_string, /* 506 */
|
ngx_null_string, /* 506 */
|
||||||
ngx_string(ngx_http_error_507_page)
|
ngx_string(ngx_http_error_507_page)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user