1--TEST--
2http:// and ignore_errors
3--INI--
4allow_url_fopen=1
5--SKIPIF--
6<?php require 'server.inc'; http_server_skipif('tcp://127.0.0.1:12342'); ?>
7--FILE--
8<?php
9require 'server.inc';
10
11function do_test($context_options) {
12
13	$context = stream_context_create(array('http' => $context_options));
14
15	$responses = array(
16		"data://text/plain,HTTP/1.0 200 Ok\r\nX-Foo: bar\r\n\r\n1",
17		"data://text/plain,HTTP/1.0 404 Not found\r\nX-bar: baz\r\n\r\n2",
18	);
19
20	$pid = http_server("tcp://127.0.0.1:12342", $responses, $output);
21
22	foreach($responses as $r) {
23
24		$fd = fopen('http://127.0.0.1:12342/foo/bar', 'rb', false, $context);
25		var_dump($fd);
26
27		if ($fd) {
28			$meta_data = stream_get_meta_data($fd);
29			var_dump($meta_data['wrapper_data']);
30
31			var_dump(stream_get_contents($fd));
32		}
33
34		fseek($output, 0, SEEK_SET);
35		var_dump(stream_get_contents($output));
36		fseek($output, 0, SEEK_SET);
37	}
38
39	http_server_kill($pid);
40}
41
42echo "-- Test: requests without ignore_errors --\n";
43
44do_test(array());
45
46echo "-- Test: requests with ignore_errors --\n";
47
48do_test(array('ignore_errors' => true));
49
50echo "-- Test: requests with ignore_errors (2) --\n";
51
52do_test(array('ignore_errors' => 1));
53
54?>
55--EXPECTF--
56-- Test: requests without ignore_errors --
57resource(%d) of type (stream)
58array(2) {
59  [0]=>
60  string(15) "HTTP/1.0 200 Ok"
61  [1]=>
62  string(10) "X-Foo: bar"
63}
64string(1) "1"
65string(%d) "GET /foo/bar HTTP/1.0
66Host: 127.0.0.1:12342
67Connection: close
68
69"
70
71Warning: fopen(http://127.0.0.1:12342/foo/bar): failed to open stream: HTTP request failed! HTTP/1.0 404 Not found
72 in %s on line %d
73bool(false)
74string(%d) "GET /foo/bar HTTP/1.0
75Host: 127.0.0.1:12342
76Connection: close
77
78"
79-- Test: requests with ignore_errors --
80resource(%d) of type (stream)
81array(2) {
82  [0]=>
83  string(15) "HTTP/1.0 200 Ok"
84  [1]=>
85  string(10) "X-Foo: bar"
86}
87string(1) "1"
88string(%d) "GET /foo/bar HTTP/1.0
89Host: 127.0.0.1:12342
90Connection: close
91
92"
93resource(%d) of type (stream)
94array(2) {
95  [0]=>
96  string(22) "HTTP/1.0 404 Not found"
97  [1]=>
98  string(10) "X-bar: baz"
99}
100string(1) "2"
101string(%d) "GET /foo/bar HTTP/1.0
102Host: 127.0.0.1:12342
103Connection: close
104
105"
106-- Test: requests with ignore_errors (2) --
107resource(%d) of type (stream)
108array(2) {
109  [0]=>
110  string(15) "HTTP/1.0 200 Ok"
111  [1]=>
112  string(10) "X-Foo: bar"
113}
114string(1) "1"
115string(%d) "GET /foo/bar HTTP/1.0
116Host: 127.0.0.1:12342
117Connection: close
118
119"
120resource(%d) of type (stream)
121array(2) {
122  [0]=>
123  string(22) "HTTP/1.0 404 Not found"
124  [1]=>
125  string(10) "X-bar: baz"
126}
127string(1) "2"
128string(%d) "GET /foo/bar HTTP/1.0
129Host: 127.0.0.1:12342
130Connection: close
131
132"
133