57 lines
1.6 KiB
PHP
57 lines
1.6 KiB
PHP
--TEST--
|
|
Bug #76675 (Segfault with H2 server push write/writeheader handlers)
|
|
--XFAIL--
|
|
http2.golang.org/serverpush is gone
|
|
--SKIPIF--
|
|
<?php
|
|
include 'skipif.inc';
|
|
if (getenv("SKIP_ONLINE_TESTS")) {
|
|
die("skip online test");
|
|
}
|
|
$curl_version = curl_version();
|
|
if ($curl_version['version_number'] < 0x073d00) {
|
|
exit("skip: test may crash with curl < 7.61.0");
|
|
}
|
|
die("skip test is slow due to timeout, and XFAILs anyway");
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
$transfers = 1;
|
|
$callback = function($parent, $passed) use (&$transfers) {
|
|
curl_setopt($passed, CURLOPT_WRITEFUNCTION, function ($ch, $data) {
|
|
echo "Received ".strlen($data);
|
|
return strlen($data);
|
|
});
|
|
$transfers++;
|
|
return CURL_PUSH_OK;
|
|
};
|
|
$mh = curl_multi_init();
|
|
curl_multi_setopt($mh, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
|
|
curl_multi_setopt($mh, CURLMOPT_PUSHFUNCTION, $callback);
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, 'https://http2.golang.org/serverpush');
|
|
curl_setopt($ch, CURLOPT_HTTP_VERSION, 3);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_multi_add_handle($mh, $ch);
|
|
$active = null;
|
|
do {
|
|
$status = curl_multi_exec($mh, $active);
|
|
do {
|
|
$info = curl_multi_info_read($mh);
|
|
if (false !== $info && $info['msg'] == CURLMSG_DONE) {
|
|
$handle = $info['handle'];
|
|
if ($handle !== null) {
|
|
$transfers--;
|
|
curl_multi_remove_handle($mh, $handle);
|
|
curl_close($handle);
|
|
}
|
|
}
|
|
} while ($info);
|
|
} while ($transfers);
|
|
curl_multi_close($mh);
|
|
?>
|
|
--EXPECTREGEX--
|
|
(Received \d+)+
|