summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2007-12-12 20:58:34 +0000
committerIgor Sysoev <igor@sysoev.ru>2007-12-12 20:58:34 +0000
commita20023696492a5c0e1deb27ac573bb4f0666c59a (patch)
treeee9620f9ea2509be245536c14c12230e64ecc0da
parentc9115e73d5663dcaf9f8c4302c14a2dea51cd667 (diff)
downloadnginx-a20023696492a5c0e1deb27ac573bb4f0666c59a.tar.gz
r1604 merge:
compatibility with mget: space after HTTP/1.1
-rw-r--r--src/http/ngx_http_parse.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c
index 256bd9be9..66bd36eea 100644
--- a/src/http/ngx_http_parse.c
+++ b/src/http/ngx_http_parse.c
@@ -124,6 +124,7 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
sw_major_digit,
sw_first_minor_digit,
sw_minor_digit,
+ sw_spaces_after_digit,
sw_almost_done
} state;
@@ -636,6 +637,11 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
goto done;
}
+ if (ch == ' ') {
+ state = sw_spaces_after_digit;
+ break;
+ }
+
if (ch < '0' || ch > '9') {
return NGX_HTTP_PARSE_INVALID_REQUEST;
}
@@ -643,6 +649,20 @@ ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
r->http_minor = r->http_minor * 10 + ch - '0';
break;
+ case sw_spaces_after_digit:
+ switch (ch) {
+ case ' ':
+ break;
+ case CR:
+ state = sw_almost_done;
+ break;
+ case LF:
+ goto done;
+ default:
+ return NGX_HTTP_PARSE_INVALID_REQUEST;
+ }
+ break;
+
/* end of request line */
case sw_almost_done:
r->request_end = p - 1;