123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- --TEST--
- Bug #76675 (Segfault with H2 server push write/writeheader handlers)
- --EXTENSIONS--
- curl
- --XFAIL--
- http2.golang.org/serverpush is gone
- --SKIPIF--
- <?php
- 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+)+
|