From b6bd51c63e78ca0212228a7002a93fb67dfede96 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Tue, 6 Sep 2016 16:25:39 +0200 Subject: [PATCH] 5.3 compatibility --- src/php_http_client.c | 3 ++- src/php_http_client_curl_user.c | 7 ++++++- tests/bug69357.phpt | 8 ++++---- tests/bug71719.phpt | 2 +- tests/client021.phpt | 6 ++++-- tests/client027.phpt | 2 +- tests/client028.phpt | 18 +++++++++--------- tests/client030.phpt | 4 ++-- tests/gh-issue12.phpt | 3 ++- tests/gh-issue47.phpt | 4 ++-- tests/gh-issue50.phpt | 2 +- tests/gh-issue6.phpt | 6 ++++-- travis/pecl | 2 +- 13 files changed, 39 insertions(+), 28 deletions(-) diff --git a/src/php_http_client.c b/src/php_http_client.c index 05414b5..453e43c 100644 --- a/src/php_http_client.c +++ b/src/php_http_client.c @@ -1256,7 +1256,8 @@ static PHP_METHOD(HttpClient, getAvailableConfiguration) } ZEND_BEGIN_ARG_INFO_EX(ai_HttpClient_setDebug, 0, 0, 1) - ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 1) + /* using IS_CALLABLE type hint would create a forwards compatibility break */ + ZEND_ARG_INFO(0, callback) ZEND_END_ARG_INFO(); static PHP_METHOD(HttpClient, setDebug) { diff --git a/src/php_http_client_curl_user.c b/src/php_http_client_curl_user.c index c2be680..f4a9958 100644 --- a/src/php_http_client_curl_user.c +++ b/src/php_http_client_curl_user.c @@ -216,7 +216,11 @@ static void *php_http_client_curl_user_init(php_http_client_t *client, void *use ctx->closure.internal_function.handler = php_http_client_curl_user_handler; MAKE_STD_ZVAL(zclosure); +#if PHP_VERSION_ID >= 50400 zend_create_closure(zclosure, &ctx->closure, NULL, NULL TSRMLS_CC); +#else + zend_create_closure(zclosure, &ctx->closure TSRMLS_CC); +#endif args[0] = &zclosure; php_http_object_method_init(&init, ctx->user, ZEND_STRL("init") TSRMLS_CC); @@ -282,7 +286,8 @@ php_http_client_curl_ops_t *php_http_client_curl_user_ops_get() zend_class_entry *php_http_client_curl_user_class_entry; ZEND_BEGIN_ARG_INFO_EX(ai_init, 0, 0, 1) - ZEND_ARG_TYPE_INFO(0, run, IS_CALLABLE, 0) + /* using IS_CALLABLE type hint would create a forwards compatibility break */ + ZEND_ARG_INFO(0, run) ZEND_END_ARG_INFO(); ZEND_BEGIN_ARG_INFO_EX(ai_timer, 0, 0, 1) #if PHP_VERSION_ID >= 70000 diff --git a/tests/bug69357.phpt b/tests/bug69357.phpt index ac93baf..8d731c5 100644 --- a/tests/bug69357.phpt +++ b/tests/bug69357.phpt @@ -12,11 +12,11 @@ echo "Test\n"; include "helper/server.inc"; server("upload.inc", function($port) { - $r = new \http\Client\Request("PUT", "http://localhost:$port/", [], - (new \http\Message\Body)->append("foo") - ); + $b = new \http\Message\Body; + $b->append("foo"); + $r = new \http\Client\Request("PUT", "http://localhost:$port/", array(), $b); $c = new \http\Client; - $c->setOptions(["expect_100_timeout" => 0]); + $c->setOptions(array("expect_100_timeout" => 0)); $c->enqueue($r)->send(); var_dump($c->getResponse($r)->getInfo()); diff --git a/tests/bug71719.phpt b/tests/bug71719.phpt index f75bac9..fb0138b 100644 --- a/tests/bug71719.phpt +++ b/tests/bug71719.phpt @@ -20,6 +20,6 @@ try { Test %r(exception ')?%rhttp\Exception\BadMessageException%r(' with message '|: )%rhttp\Message::__construct(): Could not parse HTTP protocol version 'HTTP/%s.0'%r'?%r in %sbug71719.php:5 Stack trace: -#0 %sbug71719.php(5): http\Message->__construct('\x80\xACTd 5 HTTP/1.1...', false) +#0 %sbug71719.php(5): http\Message->__construct('%r(\?\?|\\x80\\xAC)%rTd 5 HTTP/1.1...', false) #1 {main} ===DONE=== diff --git a/tests/client021.phpt b/tests/client021.phpt index ef64909..e819003 100644 --- a/tests/client021.phpt +++ b/tests/client021.phpt @@ -110,8 +110,10 @@ dump($tmpfile); }); -(new http\Client("curl", "test"))->configure(["share_cookies" => false]); -$request->setOptions(["cookiestore" => null]); +$c = new http\Client("curl", "test"); +$c->configure(array("share_cookies" => false)); +$c = null; +$request->setOptions(array("cookiestore" => null)); server("cookie.inc", function($port) use($request, $tmpfile) { $request->setOptions(array("port" => $port)); diff --git a/tests/client027.phpt b/tests/client027.phpt index 5d81194..d33a58d 100644 --- a/tests/client027.phpt +++ b/tests/client027.phpt @@ -15,7 +15,7 @@ echo "Test\n"; server("cookie.inc", function($port) { $client = new http\Client(null, "cookies"); - $client->configure(["pipelining" => false]); + $client->configure(array("pipelining" => false)); $request = new http\Client\Request("GET", "http://localhost:$port?r1"); $client->enqueue($request); $client->send(); diff --git a/tests/client028.phpt b/tests/client028.phpt index 4678bcc..280c305 100644 --- a/tests/client028.phpt +++ b/tests/client028.phpt @@ -13,19 +13,19 @@ class UserHandler implements http\Client\Curl\User { private $client; private $run; - private $fds = [ - "R" => [], - "W" => [] - ]; - private $R = []; - private $W = []; + private $fds = array( + "R" => array(), + "W" => array() + ); + private $R = array(); + private $W = array(); private $timeout = 1000; function __construct(http\Client $client) { $this->client = $client; } - function init(callable $run) { + function init($run) { $this->run = $run; } @@ -124,9 +124,9 @@ include "helper/server.inc"; server("proxy.inc", function($port) { $client = new http\Client; - $client->configure([ + $client->configure(array( "use_eventloop" => new UserHandler($client) - ]); + )); $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/"), function($r) { var_dump($r->getResponseCode()); }); diff --git a/tests/client030.phpt b/tests/client030.phpt index 582087f..2a07128 100644 --- a/tests/client030.phpt +++ b/tests/client030.phpt @@ -17,9 +17,9 @@ class test implements SplObserver { } server("proxy.inc", function($port) { $client = new http\Client; - $client->configure([ + $client->configure(array( "use_eventloop" => true, - ]); + )); $client->attach(new test); $client->enqueue(new http\Client\Request("GET", "http://localhost:$port/"), function($r) { var_dump($r->getResponseCode()); diff --git a/tests/gh-issue12.phpt b/tests/gh-issue12.phpt index 0721586..8b2e378 100644 --- a/tests/gh-issue12.phpt +++ b/tests/gh-issue12.phpt @@ -14,7 +14,8 @@ $urls = array( foreach ($urls as $url) { try { - (new http\Client\Request)->setRequestUrl($url); + $c = new http\Client\Request; + $c->setRequestUrl($url); printf("OK: %s\n", $url); } catch (Exception $e) { printf("%s\n", $e->getMessage()); diff --git a/tests/gh-issue47.phpt b/tests/gh-issue47.phpt index 6956588..3378b62 100644 --- a/tests/gh-issue47.phpt +++ b/tests/gh-issue47.phpt @@ -8,10 +8,10 @@ include "skipif.inc"; mod($urls[1]); diff --git a/tests/gh-issue50.phpt b/tests/gh-issue50.phpt index 61e0865..91310cb 100644 --- a/tests/gh-issue50.phpt +++ b/tests/gh-issue50.phpt @@ -33,7 +33,7 @@ Test exception 'http\Exception\RuntimeException' with message 'http\Client::dequeue(): Could not dequeue request while executing callbacks' in %sgh-issue50.php:9 Stack trace: #0 %sgh-issue50.php(9): http\Client->dequeue(Object(http\Client\Request)) -#1 [internal function]: {closure}(Object(http\Client), Object(http\Client\Request), 18, 'GET / HTTP/1.1\r...') +#1 [internal function]: {closure}(Object(http\Client), Object(http\Client\Request), 18, 'GET / HTTP/1.1%s...') #2 %sgh-issue50.php(14): http\Client->send() #3 {main} ===DONE=== diff --git a/tests/gh-issue6.phpt b/tests/gh-issue6.phpt index 3de34bd..470bfea 100644 --- a/tests/gh-issue6.phpt +++ b/tests/gh-issue6.phpt @@ -7,9 +7,11 @@ url - unsafe characters echo "Test\n"; -echo (new http\Url("?__utma=1152894289.1017686999.9107388726.1439222726.1494721726.1&__utmb=115739289.1.10.1437388726&__utmc=115883619&__utmx=-&__utmz=115111289.14310476.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)&__utmv=-&__utmk=112678937"))->query; +$url = new http\Url("?__utma=1152894289.1017686999.9107388726.1439222726.1494721726.1&__utmb=115739289.1.10.1437388726&__utmc=115883619&__utmx=-&__utmz=115111289.14310476.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)&__utmv=-&__utmk=112678937"); +echo $url->query; echo "\n"; -echo (new http\Url("?id={\$id}"))->query; +$url = new http\Url("?id={\$id}"); +echo $url->query; echo "\n"; ?> diff --git a/travis/pecl b/travis/pecl index 23c2876..5e781dc 160000 --- a/travis/pecl +++ b/travis/pecl @@ -1 +1 @@ -Subproject commit 23c2876aaa0808bcfedc1c5c30da6e8234341a13 +Subproject commit 5e781dcbd19aac1bc3a31b3187fd42011e70dd3d -- 2.30.2