<email>mike@php.net</email>
<active>yes</active>
</lead>
- <date>2016-08-22</date>
+ <date>2016-09-07</date>
<version>
<release>3.1.0beta2</release>
<api>3.1.0</api>
* Fix gh-issue #34: allow setting multiple headers with the same name (Mike, @rcanavan)
* Fix gh-issue #33: allow setting prodyhost request option to NULL (Mike, @rcanavan)
* Fix gh-issue #31: add/improve configure checks for default CA bundle/path (Mike, @rcanavan)
+
+Changes from beta1:
+* Fixed recursive calls to the event loop dispatcher
]]></notes>
<contents>
<dir name="/">
<file role="test" name="filterchunked.phpt"/>
<file role="test" name="filterzlib.phpt"/>
<file role="test" name="gh-issue6.phpt"/>
+ <file role="test" name="gh-issue7.phpt"/>
<file role="test" name="gh-issue12.phpt"/>
<file role="test" name="gh-issue42.phpt"/>
<file role="test" name="gh-issue47.phpt"/>
"enable_json",
"enable_hash" => ["yes"],
"enable_iconv" => ["yes"],
- "enable_phar" => ["yes"],
- "enable_posix" => ["yes"]
]);
foreach ($env as $e) {
printf(" - %s\n", $e);
}
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)
{
}
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
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());
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===
});
-(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));
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();
{
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;
}
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());
});
$this->client = $client;
}
- function init(callable $run) {
+ function init($run) {
$this->run = $run;
}
}
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());
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());
<?php
echo "Test\n";
-$urls = [
+$urls = array(
"",
"? = ="
-];
+);
$url0=new http\Url($urls[0], null, http\Url::FROM_ENV);
$url1=$url0->mod($urls[1]);
http\Exception\RuntimeException: 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===
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";
?>