1--TEST--
2stream_socket_shutdown() test on IPv4 TCP Loopback
3--SKIPIF--
4<?php
5	function_exists('stream_socket_shutdown') or die('skip stream_socket_shutdown() is not supported.');
6?>
7--FILE--
8<?php
9
10  for ($i=0; $i<100; $i++) {
11    $port = rand(10000, 65000);
12    /* Setup socket server */
13    $server = @stream_socket_server("tcp://127.0.0.1:$port");
14    if ($server) {
15      break;
16    }
17  }
18
19if (!$server) {
20		die('Unable to create AF_INET socket [server]');
21	}
22
23	/* Connect and send request 1 */
24	$client1 = stream_socket_client("tcp://127.0.0.1:$port");
25	if (!$client1) {
26		die('Unable to create AF_INET socket [client]');
27	}
28	@fwrite($client1, "Client 1\n");
29	stream_socket_shutdown($client1, STREAM_SHUT_WR);
30	@fwrite($client1, "Error 1\n");
31
32	/* Connect and send request 2 */
33	$client2 = stream_socket_client("tcp://127.0.0.1:$port");
34	if (!$client2) {
35		die('Unable to create AF_INET socket [client]');
36	}
37	@fwrite($client2, "Client 2\n");
38	stream_socket_shutdown($client2, STREAM_SHUT_WR);
39	@fwrite($client2, "Error 2\n");
40
41	/* Accept connection 1 */
42	$socket = stream_socket_accept($server);
43	if (!$socket) {
44		die('Unable to accept connection');
45	}
46	@fwrite($socket, fgets($socket));
47	@fwrite($socket, fgets($socket));
48	fclose($socket);
49
50	/* Read Response 1 */
51	echo fgets($client1);
52	echo fgets($client1);
53
54	/* Accept connection 2 */
55	$socket = stream_socket_accept($server);
56	if (!$socket) {
57		die('Unable to accept connection');
58	}
59	@fwrite($socket, fgets($socket));
60	@fwrite($socket, fgets($socket));
61	fclose($socket);
62
63	/* Read Response 2 */
64	echo fgets($client2);
65	echo fgets($client2);
66
67	fclose($client1);
68	fclose($client2);
69	fclose($server);
70?>
71--EXPECT--
72Client 1
73Client 2
74