From bbe28d3a55f8b129d4595e5202b7c9891a568509 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Sat, 27 Jun 2015 19:47:32 +0200 Subject: Fixed #69655: php -S changes MKCALENDAR request method to MKCOL The parsing of the request method in the CLI server has been faulty, so that several unsupported methods have been recognized as other methods. --- sapi/cli/php_http_parser.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'sapi/cli/php_http_parser.c') diff --git a/sapi/cli/php_http_parser.c b/sapi/cli/php_http_parser.c index 2fc0405499..73c6d4c1fe 100644 --- a/sapi/cli/php_http_parser.c +++ b/sapi/cli/php_http_parser.c @@ -604,15 +604,20 @@ size_t php_http_parser_execute (php_http_parser *parser, goto error; matcher = method_strings[parser->method]; - if (ch == ' ' && (matcher[index] == '\0' || parser->method == PHP_HTTP_NOT_IMPLEMENTED)) { + if (ch == ' ') { + if (parser->method != PHP_HTTP_NOT_IMPLEMENTED && matcher[index] != '\0') { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; + } state = s_req_spaces_before_url; - } else if (ch == matcher[index]) { + } else if (parser->method == PHP_HTTP_NOT_IMPLEMENTED || ch == matcher[index]) { ; /* nada */ } else if (parser->method == PHP_HTTP_CONNECT) { if (index == 1 && ch == 'H') { parser->method = PHP_HTTP_CHECKOUT; } else if (index == 2 && ch == 'P') { parser->method = PHP_HTTP_COPY; + } else { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; } } else if (parser->method == PHP_HTTP_MKCOL) { if (index == 1 && ch == 'O') { @@ -623,6 +628,8 @@ size_t php_http_parser_execute (php_http_parser *parser, parser->method = PHP_HTTP_MSEARCH; } else if (index == 2 && ch == 'A') { parser->method = PHP_HTTP_MKACTIVITY; + } else { + parser->method = PHP_HTTP_NOT_IMPLEMENTED; } } else if (index == 1 && parser->method == PHP_HTTP_POST && ch == 'R') { parser->method = PHP_HTTP_PROPFIND; /* or HTTP_PROPPATCH */ -- cgit v1.2.1