1--TEST--
2Test CURLMOPT_PUSHFUNCTION with non-existent callback function
3--CREDITS--
4Davey Shafik
5Kévin Dunglas
6Niels Dossche
7--EXTENSIONS--
8curl
9--XLEAK--
10--SKIPIF--
11<?php
12include 'skipif-nocaddy.inc';
13
14$curl_version = curl_version();
15if ($curl_version['version_number'] < 0x080100) {
16    exit("skip: test may crash with curl < 8.1.0");
17}
18?>
19--FILE--
20<?php
21// Test adapted from curl_pushfunction.phpt
22
23$mh = curl_multi_init();
24
25curl_multi_setopt($mh, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
26curl_multi_setopt($mh, CURLMOPT_PUSHFUNCTION, "nonexistent");
27
28$ch = curl_init();
29curl_setopt($ch, CURLOPT_URL, "https://localhost/serverpush");
30curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
31curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
32
33curl_multi_add_handle($mh, $ch);
34
35$active = null;
36while(true) {
37    $status = curl_multi_exec($mh, $active);
38
39    do {
40        $info = curl_multi_info_read($mh);
41        if (false !== $info && $info['msg'] == CURLMSG_DONE) {
42            $handle = $info['handle'];
43            if ($handle !== null) {
44                curl_multi_remove_handle($mh, $handle);
45                curl_close($handle);
46                break 2;
47            }
48        }
49    } while ($info);
50}
51
52curl_multi_close($mh);
53?>
54--EXPECTF--
55Warning: curl_multi_exec(): Cannot call the CURLMOPT_PUSHFUNCTION in %s on line %d
56