Skip to content

Commit 8e5d080

Browse files
committed
Tidy up test for bug72333
1 parent f0e67d1 commit 8e5d080

File tree

1 file changed

+61
-56
lines changed

1 file changed

+61
-56
lines changed

ext/openssl/tests/bug74159.phpt

Lines changed: 61 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,103 +4,108 @@ Bug #74159: Writing a large buffer to non-blocking encrypted streams fails
44
<?php
55
if (!extension_loaded("openssl")) die("skip openssl not loaded");
66
if (!function_exists("proc_open")) die("skip no proc_open");
7+
?>
78
--FILE--
89
<?php
10+
// the server code is doing many readings in a short interval which is
11+
// not really reliable on more powerful machine but cover different
12+
// scenarios which might be useful. More reliable test is bug72333.phpt
913
$serverCode = <<<'CODE'
10-
$serverUri = "ssl://127.0.0.1:64321";
11-
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
12-
$serverCtx = stream_context_create(['ssl' => [
13-
'local_cert' => __DIR__ . '/bug54992.pem',
14-
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER,
15-
]]);
14+
$serverUri = "ssl://127.0.0.1:10012";
15+
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
16+
$serverCtx = stream_context_create(['ssl' => [
17+
'local_cert' => __DIR__ . '/bug54992.pem',
18+
'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_SERVER,
19+
]]);
1620
1721
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
18-
phpt_notify();
22+
phpt_notify();
1923
2024
$client = stream_socket_accept($server, 1);
2125
2226
if (!$client) {
23-
exit();
24-
}
27+
exit();
28+
}
2529
2630
$data = '';
27-
while (strlen($data) < 0xfffff) {
28-
$buffer = fread($client, 8192);
29-
if (empty($buffer)) {
30-
exit();
31-
}
32-
$data .= $buffer;
33-
usleep(100);
34-
}
35-
31+
while (strlen($data) < 0xfffff) {
32+
$buffer = fread($client, 8192);
33+
if (empty($buffer)) {
34+
exit();
35+
}
36+
$data .= $buffer;
37+
usleep(100);
38+
}
39+
3640
fclose($client);
3741
CODE;
3842

3943
$clientCode = <<<'CODE'
4044
function streamRead($stream) : int {
41-
return strlen(fread($stream, 8192));
42-
}
45+
return strlen(fread($stream, 8192));
46+
}
4347
4448
function streamWrite($stream, $data) : int {
45-
return fwrite($stream, $data);
46-
}
49+
return fwrite($stream, $data);
50+
}
4751
4852
function waitForWrite(...$streams) : bool {
49-
$read = null;
50-
$except = null;
51-
while($streams && !($n = stream_select($read, $streams, $except, 1)));
52-
return $n > 0;
53-
}
53+
$read = null;
54+
$except = null;
55+
while($streams && !($n = stream_select($read, $streams, $except, 1)));
56+
return $n > 0;
57+
}
5458
5559
function waitForRead(...$streams) : bool {
56-
$write = null;
57-
$except = null;
58-
while ($streams && !($n = stream_select($streams, $write, $except, 1)));
59-
return $n > 0;
60-
}
60+
$write = null;
61+
$except = null;
62+
while ($streams && !($n = stream_select($streams, $write, $except, 1)));
63+
return $n > 0;
64+
}
6165
6266
set_error_handler(function ($errno, $errstr) {
63-
exit("$errstr\n");
64-
});
67+
exit("$errstr\n");
68+
});
6569
66-
$serverUri = "tcp://127.0.0.1:64321";
67-
$clientFlags = STREAM_CLIENT_CONNECT;
68-
$clientCtx = stream_context_create(['ssl' => [
69-
'verify_peer' => true,
70-
'cafile' => __DIR__ . '/bug54992-ca.pem',
71-
'peer_name' => 'bug54992.local',
72-
]]);
70+
$serverUri = "tcp://127.0.0.1:10012";
71+
$clientFlags = STREAM_CLIENT_CONNECT;
72+
$clientCtx = stream_context_create(['ssl' => [
73+
'verify_peer' => true,
74+
'cafile' => __DIR__ . '/bug54992-ca.pem',
75+
'peer_name' => 'bug54992.local',
76+
]]);
7377
7478
phpt_wait();
7579
7680
$fp = stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags, $clientCtx);
7781
7882
stream_set_blocking($fp, false);
79-
while (0 === ($n = stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT)));
83+
while (0 === ($n = stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT)));
8084
8185
$data = str_repeat("a", 0xfffff);
82-
$written = 0;
83-
$total = $written;
84-
while(!empty($data)) {
85-
$written = streamWrite($fp, $data);
86-
$total += $written;
87-
$data = substr($data, $written);
88-
waitForWrite($fp);
89-
}
90-
printf("Written %d bytes\n", $total);
86+
$written = 0;
87+
$total = $written;
88+
while(!empty($data)) {
89+
$written = streamWrite($fp, $data);
90+
$total += $written;
91+
$data = substr($data, $written);
92+
waitForWrite($fp);
93+
}
94+
printf("Written %d bytes\n", $total);
9195
9296
while(waitForRead($fp)) {
93-
streamRead($fp);
94-
if (feof($fp)) {
95-
break;
96-
}
97-
}
97+
streamRead($fp);
98+
if (feof($fp)) {
99+
break;
100+
}
101+
}
98102
99103
exit("DONE\n");
100104
CODE;
101105

102106
include 'ServerClientTestCase.inc';
103107
ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
108+
?>
104109
--EXPECTF--
105110
Written 1048575 bytes
106111
DONE

0 commit comments

Comments
 (0)