Skip to content

Commit

Permalink
Fixed bug #69953
Browse files Browse the repository at this point in the history
Added support for MKCALENDAR request method in CLI web server.
  • Loading branch information
cmb69 authored and nikic committed Mar 3, 2016
1 parent ccd215a commit 2d4ad66
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 5 deletions.
3 changes: 3 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2016, PHP 5.6.20

- CLI Server:
. Fixed bug #69953 (Support MKCALENDAR request method). (Christoph)

- Core:
. Fixed bug #71596 (Segmentation fault on ZTS with date function
(setlocale)). (Anatol)
Expand Down
5 changes: 4 additions & 1 deletion sapi/cli/php_http_parser.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ static const char *method_strings[] =
, "LOCK"
, "MKCOL"
, "MOVE"
, "MKCALENDAR"
, "PROPFIND"
, "PROPPATCH"
, "UNLOCK"
Expand Down Expand Up @@ -583,7 +584,7 @@ size_t php_http_parser_execute (php_http_parser *parser,
case 'G': parser->method = PHP_HTTP_GET; break;
case 'H': parser->method = PHP_HTTP_HEAD; break;
case 'L': parser->method = PHP_HTTP_LOCK; break;
case 'M': parser->method = PHP_HTTP_MKCOL; /* or MOVE, MKACTIVITY, MERGE, M-SEARCH */ break;
case 'M': parser->method = PHP_HTTP_MKCOL; /* or MOVE, MKCALENDAR, MKACTIVITY, MERGE, M-SEARCH */ break;
case 'N': parser->method = PHP_HTTP_NOTIFY; break;
case 'O': parser->method = PHP_HTTP_OPTIONS; break;
case 'P': parser->method = PHP_HTTP_POST; /* or PROPFIND or PROPPATCH or PUT */ break;
Expand Down Expand Up @@ -622,6 +623,8 @@ size_t php_http_parser_execute (php_http_parser *parser,
} else if (parser->method == PHP_HTTP_MKCOL) {
if (index == 1 && ch == 'O') {
parser->method = PHP_HTTP_MOVE;
} else if (index == 3 && ch == 'A') {
parser->method = PHP_HTTP_MKCALENDAR;
} else if (index == 1 && ch == 'E') {
parser->method = PHP_HTTP_MERGE;
} else if (index == 1 && ch == '-') {
Expand Down
1 change: 1 addition & 0 deletions sapi/cli/php_http_parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ enum php_http_method
, PHP_HTTP_LOCK
, PHP_HTTP_MKCOL
, PHP_HTTP_MOVE
, PHP_HTTP_MKCALENDAR
, PHP_HTTP_PROPFIND
, PHP_HTTP_PROPPATCH
, PHP_HTTP_UNLOCK
Expand Down
5 changes: 1 addition & 4 deletions sapi/cli/tests/bug69655.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ include "skipif.inc";
<?php
include "php_cli_server.inc";
php_cli_server_start();
foreach (['MKCALENDAR', 'MKCO', 'MKCOLL', 'M'] as $method) {
foreach (['MKCO', 'MKCOLL', 'M'] as $method) {
$context = stream_context_create(['http' => ['method' => $method]]);
// the following is supposed to emit a warning for unsupported methods
file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS, false, $context);
Expand All @@ -25,6 +25,3 @@ Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP r

Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented
in %s on line %d

Warning: file_get_contents(http://localhost:8964): failed to open stream: HTTP request failed! HTTP/1.0 501 Not Implemented
in %s on line %d
17 changes: 17 additions & 0 deletions sapi/cli/tests/bug69953.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
--TEST--
FR #69953 (Support MKCALENDAR request method)
--INI--
allow_url_fopen=1
--SKIPIF--
<?php
include "skipif.inc";
?>
--FILE--
<?php
include "php_cli_server.inc";
php_cli_server_start('echo $_SERVER["REQUEST_METHOD"];');
$context = stream_context_create(['http' => ['method' => 'MKCALENDAR']]);
var_dump(file_get_contents("http://" . PHP_CLI_SERVER_ADDRESS, false, $context));
?>
--EXPECT--
string(10) "MKCALENDAR"

0 comments on commit 2d4ad66

Please sign in to comment.