Annotation of embedaddon/php/ext/curl/tests/bug48203_multi.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: Variation of bug #48203 with curl_multi_exec (Crash when file pointers passed to curl are closed before calling curl_multi_exec)
3: --SKIPIF--
4: <?php
5: if (!extension_loaded("curl")) {
6: exit("skip curl extension not loaded");
7: }
8: if (false === getenv('PHP_CURL_HTTP_REMOTE_SERVER')) {
9: exit("skip PHP_CURL_HTTP_REMOTE_SERVER env variable is not defined");
10: }
11: ?>
12: --FILE--
13: <?php
14:
15: function checkForClosedFilePointer($curl_option, $description) {
16: $fp = fopen(dirname(__FILE__) . '/bug48203.tmp', 'w');
17:
18: $ch1 = curl_init();
19: $ch2 = curl_init();
20:
21: $options = array(
22: CURLOPT_RETURNTRANSFER => 1,
23: $curl_option => $fp,
24: CURLOPT_URL => getenv("PHP_CURL_HTTP_REMOTE_SERVER")
25: );
26:
27: // we also need to set CURLOPT_VERBOSE to test CURLOPT_STDERR properly
28: if (CURLOPT_STDERR == $curl_option) {
29: $options[CURLOPT_VERBOSE] = 1;
30: }
31:
32: if (CURLOPT_INFILE == $curl_option) {
33: $options[CURLOPT_UPLOAD] = 1;
34: }
35:
36: curl_setopt_array($ch1, $options);
37: curl_setopt_array($ch2, $options);
38:
39: fclose($fp); // <-- premature close of $fp caused a crash!
40:
41: $mh = curl_multi_init();
42:
43: curl_multi_add_handle($mh, $ch1);
44: curl_multi_add_handle($mh, $ch2);
45:
46: $active = 0;
47: do {
48: curl_multi_exec($mh, $active);
49: } while ($active > 0);
50:
51: curl_multi_remove_handle($mh, $ch1);
52: curl_multi_remove_handle($mh, $ch2);
53: curl_multi_close($mh);
54:
55: echo "Ok for $description\n";
56: }
57:
58: $options_to_check = array(
59: "CURLOPT_STDERR", "CURLOPT_WRITEHEADER", "CURLOPT_FILE", "CURLOPT_INFILE"
60: );
61:
62: foreach($options_to_check as $option) {
63: checkForClosedFilePointer(constant($option), $option);
64: }
65:
66: ?>
67: --CLEAN--
68: <?php @unlink(dirname(__FILE__) . '/bug48203.tmp'); ?>
69: --EXPECTF--
70: Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36
71:
72: Warning: curl_multi_exec(): CURLOPT_STDERR resource has gone away, resetting to stderr in %sbug48203_multi.php on line 36
73: %A
74: Ok for CURLOPT_STDERR
75: %A
76: Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36
77:
78: Warning: curl_multi_exec(): CURLOPT_WRITEHEADER resource has gone away, resetting to default in %sbug48203_multi.php on line 36
79: Ok for CURLOPT_WRITEHEADER
80:
81: Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
82:
83: Warning: curl_multi_exec(): CURLOPT_FILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
84: %A
85: Ok for CURLOPT_FILE
86:
87: Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
88:
89: Warning: curl_multi_exec(): CURLOPT_INFILE resource has gone away, resetting to default in %sbug48203_multi.php on line 36
90: Ok for CURLOPT_INFILE
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>