Skip to content

Commit e0dabe3

Browse files
committed
Merge branch 'PHP-8.2' into PHP-8.3
2 parents 7c9f645 + 37504f1 commit e0dabe3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+255
-302
lines changed

ext/openssl/tests/ServerClientTestCase.inc

+50-15
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ const WORKER_ARGV_VALUE = 'RUN_WORKER';
44

55
const WORKER_DEFAULT_NAME = 'server';
66

7-
function phpt_notify($worker = WORKER_DEFAULT_NAME)
7+
function phpt_notify(string $worker = WORKER_DEFAULT_NAME, string $message = ""): void
88
{
9-
ServerClientTestCase::getInstance()->notify($worker);
9+
ServerClientTestCase::getInstance()->notify($worker, $message);
1010
}
1111

12-
function phpt_wait($worker = WORKER_DEFAULT_NAME, $timeout = null)
12+
function phpt_wait($worker = WORKER_DEFAULT_NAME, $timeout = null): ?string
1313
{
14-
ServerClientTestCase::getInstance()->wait($worker, $timeout);
14+
return ServerClientTestCase::getInstance()->wait($worker, $timeout);
15+
}
16+
17+
function phpt_notify_server_start($server): void
18+
{
19+
ServerClientTestCase::getInstance()->notify_server_start($server);
1520
}
1621

1722
function phpt_has_sslv3() {
@@ -149,43 +154,73 @@ class ServerClientTestCase
149154
eval($code);
150155
}
151156

152-
public function run($masterCode, $workerCode)
157+
/**
158+
* Run client and all workers
159+
*
160+
* @param string $clientCode The client PHP code
161+
* @param string|array $workerCode
162+
* @param bool $ephemeral Select whether automatic port selection and automatic awaiting is used
163+
* @return void
164+
* @throws Exception
165+
*/
166+
public function run(string $clientCode, string|array $workerCode, bool $ephemeral = true): void
153167
{
154168
if (!is_array($workerCode)) {
155169
$workerCode = [WORKER_DEFAULT_NAME => $workerCode];
156170
}
157-
foreach ($workerCode as $worker => $code) {
171+
reset($workerCode);
172+
$code = current($workerCode);
173+
$worker = key($workerCode);
174+
while ($worker != null) {
158175
$this->spawnWorkerProcess($worker, $this->stripPhpTagsFromCode($code));
176+
$code = next($workerCode);
177+
if ($ephemeral) {
178+
$addr = trim($this->wait($worker));
179+
if (empty($addr)) {
180+
throw new \Exception("Failed server start");
181+
}
182+
if ($code === false) {
183+
$clientCode = preg_replace('/{{\s*ADDR\s*}}/', $addr, $clientCode);
184+
} else {
185+
$code = preg_replace('/{{\s*ADDR\s*}}/', $addr, $code);
186+
}
187+
}
188+
$worker = key($workerCode);
159189
}
160-
eval($this->stripPhpTagsFromCode($masterCode));
190+
191+
eval($this->stripPhpTagsFromCode($clientCode));
161192
foreach ($workerCode as $worker => $code) {
162193
$this->cleanupWorkerProcess($worker);
163194
}
164195
}
165196

166-
public function wait($worker, $timeout = null)
197+
public function wait($worker, $timeout = null): ?string
167198
{
168199
$handle = $this->isWorker ? STDIN : $this->workerStdOut[$worker];
169200
if ($timeout === null) {
170-
fgets($handle);
171-
return true;
201+
return fgets($handle);
172202
}
173203

174204
stream_set_blocking($handle, false);
175205
$read = [$handle];
176206
$result = stream_select($read, $write, $except, $timeout);
177207
if (!$result) {
178-
return false;
208+
return null;
179209
}
180210

181-
fgets($handle);
211+
$result = fgets($handle);
182212
stream_set_blocking($handle, true);
183-
return true;
213+
return $result;
214+
}
215+
216+
public function notify(string $worker, string $message = ""): void
217+
{
218+
fwrite($this->isWorker ? STDOUT : $this->workerStdIn[$worker], "$message\n");
184219
}
185220

186-
public function notify($worker)
221+
public function notify_server_start($server): void
187222
{
188-
fwrite($this->isWorker ? STDOUT : $this->workerStdIn[$worker], "\n");
223+
echo stream_socket_get_name($server, false) . "\n";
189224
}
190225
}
191226

ext/openssl/tests/bug46127.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,29 @@ if (!function_exists("proc_open")) die("skip no proc_open");
1111
$certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug46127.pem.tmp';
1212

1313
$serverCode = <<<'CODE'
14-
$serverUri = "ssl://127.0.0.1:64321";
14+
$serverUri = "ssl://127.0.0.1:0";
1515
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1616
$serverCtx = stream_context_create(['ssl' => [
1717
'local_cert' => '%s',
1818
]]);
1919
2020
$sock = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
21-
phpt_notify();
21+
phpt_notify_server_start($sock);
2222
2323
$link = stream_socket_accept($sock);
2424
fwrite($link, "Sending bug 46127\n");
2525
CODE;
2626
$serverCode = sprintf($serverCode, $certFile);
2727

2828
$clientCode = <<<'CODE'
29-
$serverUri = "ssl://127.0.0.1:64321";
29+
$serverUri = "ssl://{{ ADDR }}";
3030
$clientFlags = STREAM_CLIENT_CONNECT;
3131
3232
$clientCtx = stream_context_create(['ssl' => [
3333
'verify_peer' => false,
3434
'verify_peer_name' => false
3535
]]);
3636
37-
phpt_wait();
3837
$sock = stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx);
3938
4039
echo fgets($sock);

ext/openssl/tests/bug48182.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ $certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug48182.pem.tmp';
1212
$cacertFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug48182-ca.pem.tmp';
1313

1414
$serverCode = <<<'CODE'
15-
$serverUri = "ssl://127.0.0.1:64321";
15+
$serverUri = "ssl://127.0.0.1:0";
1616
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1717
$serverCtx = stream_context_create(['ssl' => [
1818
'local_cert' => '%s'
1919
]]);
2020
2121
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
22-
phpt_notify();
22+
phpt_notify_server_start($server);
2323
2424
$client = @stream_socket_accept($server, 1);
2525
@@ -30,14 +30,13 @@ $serverCode = sprintf($serverCode, $certFile);
3030

3131
$peerName = 'bug48182';
3232
$clientCode = <<<'CODE'
33-
$serverUri = "ssl://127.0.0.1:64321";
33+
$serverUri = "ssl://{{ ADDR }}";
3434
$clientFlags = STREAM_CLIENT_CONNECT | STREAM_CLIENT_ASYNC_CONNECT;
3535
$clientCtx = stream_context_create(['ssl' => [
3636
'cafile' => '%s',
3737
'peer_name' => '%s'
3838
]]);
3939
40-
phpt_wait();
4140
$client = stream_socket_client($serverUri, $errno, $errstr, 10, $clientFlags, $clientCtx);
4241
4342
$data = "Sending data over to SSL server in async mode with contents like Hello World\n";

ext/openssl/tests/bug54992.phpt

+4-5
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ $certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug54992.pem.tmp';
1212
$cacertFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug54992-ca.pem.tmp';
1313

1414
$serverCode = <<<'CODE'
15-
$serverUri = "ssl://127.0.0.1:64321";
15+
$serverUri = "ssl://127.0.0.1:0";
1616
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1717
$serverCtx = stream_context_create(['ssl' => [
1818
'local_cert' => '%s',
1919
]]);
2020
2121
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
22-
phpt_notify();
22+
phpt_notify_server_start($server);
2323
2424
@stream_socket_accept($server, 1);
2525
CODE;
@@ -28,15 +28,14 @@ $serverCode = sprintf($serverCode, $certFile);
2828
$peerName = 'bug54992_actual_peer_name';
2929
$wrongPeerName = 'bug54992_expected_peer_name';
3030
$clientCode = <<<'CODE'
31-
$serverUri = "ssl://127.0.0.1:64321";
31+
$serverUri = "ssl://{{ ADDR }}";
3232
$clientFlags = STREAM_CLIENT_CONNECT;
3333
$clientCtx = stream_context_create(['ssl' => [
3434
'verify_peer' => true,
3535
'cafile' => '%s',
3636
'peer_name' => '%s',
3737
]]);
3838
39-
phpt_wait();
4039
$client = stream_socket_client($serverUri, $errno, $errstr, 2, $clientFlags, $clientCtx);
4140
4241
var_dump($client);
@@ -61,5 +60,5 @@ Warning: stream_socket_client(): Peer certificate CN=`bug54992_actual_peer_name'
6160

6261
Warning: stream_socket_client(): Failed to enable crypto in %s on line %d
6362

64-
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d
63+
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:%d (Unknown error) in %s on line %d
6564
bool(false)

ext/openssl/tests/bug62890.phpt

+3-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ $serverCode = <<<'CODE'
1919
'security_level' => 1,
2020
]]);
2121
22-
$server = stream_socket_server('tls://127.0.0.1:64321', $errno, $errstr, $flags, $ctx);
23-
phpt_notify();
22+
$server = stream_socket_server('tls://127.0.0.1:0', $errno, $errstr, $flags, $ctx);
23+
phpt_notify_server_start($server);
2424
@stream_socket_accept($server, 3);
2525
CODE;
2626
$serverCode = sprintf($serverCode, $certFile);
@@ -33,9 +33,7 @@ $clientCode = <<<'CODE'
3333
'security_level' => 1,
3434
]]);
3535
36-
phpt_wait();
37-
38-
$client = stream_socket_client("tls://127.0.0.1:64321", $errno, $errstr, 3, $flags, $ctx);
36+
$client = stream_socket_client("tls://{{ ADDR }}", $errno, $errstr, 3, $flags, $ctx);
3937
var_dump($client);
4038
CODE;
4139

ext/openssl/tests/bug65538_001.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ $certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug65538_001.pem.tmp';
1212
$cacertFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug65538_001-ca.pem.tmp';
1313

1414
$serverCode = <<<'CODE'
15-
$serverUri = "ssl://127.0.0.1:64321";
15+
$serverUri = "ssl://127.0.0.1:0";
1616
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1717
$serverCtx = stream_context_create(['ssl' => [
1818
'local_cert' => '%s',
1919
]]);
2020
2121
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
22-
phpt_notify();
22+
phpt_notify_server_start($server);
2323
2424
$client = @stream_socket_accept($server);
2525
if ($client) {
@@ -41,13 +41,12 @@ $serverCode = sprintf($serverCode, $certFile);
4141

4242
$peerName = 'bug65538_001';
4343
$clientCode = <<<'CODE'
44-
$serverUri = "https://127.0.0.1:64321/";
44+
$serverUri = "https://{{ ADDR }}/";
4545
$clientCtx = stream_context_create(['ssl' => [
4646
'cafile' => 'file://%s',
4747
'peer_name' => '%s',
4848
]]);
4949
50-
phpt_wait();
5150
$html = file_get_contents($serverUri, false, $clientCtx);
5251
5352
var_dump($html);

ext/openssl/tests/bug65538_003.phpt

+3-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,14 @@ $cacertFile = 'bug65538_003-ca.pem';
1717
$cacertPhar = __DIR__ . DIRECTORY_SEPARATOR . 'bug65538_003-ca.phar.tmp';
1818

1919
$serverCode = <<<'CODE'
20-
$serverUri = "ssl://127.0.0.1:64321";
20+
$serverUri = "ssl://127.0.0.1:0";
2121
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
2222
$serverCtx = stream_context_create(['ssl' => [
2323
'local_cert' => '%s',
2424
]]);
2525
2626
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
27-
phpt_notify();
27+
phpt_notify_server_start($server);
2828
2929
$client = @stream_socket_accept($server);
3030
if ($client) {
@@ -46,13 +46,12 @@ $serverCode = sprintf($serverCode, $certFile);
4646

4747
$peerName = 'bug65538_003';
4848
$clientCode = <<<'CODE'
49-
$serverUri = "https://127.0.0.1:64321/";
49+
$serverUri = "https://{{ ADDR }}/";
5050
$clientCtx = stream_context_create(['ssl' => [
5151
'cafile' => 'phar://%s/%s',
5252
'peer_name' => '%s',
5353
]]);
5454
55-
phpt_wait();
5655
$html = file_get_contents($serverUri, false, $clientCtx);
5756
5857
var_dump($html);

ext/openssl/tests/bug65729.phpt

+5-7
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ $certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug65729.pem.tmp';
1212
$cacertFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug65729-ca.pem.tmp';
1313

1414
$serverCode = <<<'CODE'
15-
$serverUri = "ssl://127.0.0.1:64321";
15+
$serverUri = "ssl://127.0.0.1:0";
1616
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1717
$serverCtx = stream_context_create(['ssl' => [
1818
'local_cert' => '%s'
1919
]]);
2020
2121
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
22-
phpt_notify();
22+
phpt_notify_server_start($server);
2323
2424
$expected_names = ['foo.test.com.sg', 'foo.test.com', 'FOO.TEST.COM', 'foo.bar.test.com'];
2525
foreach ($expected_names as $name) {
@@ -29,11 +29,9 @@ CODE;
2929
$serverCode = sprintf($serverCode, $certFile);
3030

3131
$clientCode = <<<'CODE'
32-
$serverUri = "ssl://127.0.0.1:64321";
32+
$serverUri = "ssl://{{ ADDR }}";
3333
$clientFlags = STREAM_CLIENT_CONNECT;
3434
35-
phpt_wait();
36-
3735
$expected_names = ['foo.test.com.sg', 'foo.test.com', 'FOO.TEST.COM', 'foo.bar.test.com'];
3836
foreach ($expected_names as $expected_name) {
3937
$clientCtx = stream_context_create(['ssl' => [
@@ -65,7 +63,7 @@ Warning: stream_socket_client(): Peer certificate CN=`*.test.com' did not match
6563

6664
Warning: stream_socket_client(): Failed to enable crypto in %s on line %d
6765

68-
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d
66+
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:%d (Unknown error) in %s on line %d
6967
bool(false)
7068
resource(%d) of type (stream)
7169
resource(%d) of type (stream)
@@ -74,5 +72,5 @@ Warning: stream_socket_client(): Peer certificate CN=`*.test.com' did not match
7472

7573
Warning: stream_socket_client(): Failed to enable crypto in %s on line %d
7674

77-
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:64321 (Unknown error) in %s on line %d
75+
Warning: stream_socket_client(): Unable to connect to ssl://127.0.0.1:%d (Unknown error) in %s on line %d
7876
bool(false)

ext/openssl/tests/bug68265.phpt

+3-5
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,28 @@ $certFile = __DIR__ . DIRECTORY_SEPARATOR . 'bug68265.pem.tmp';
1212
$san = 'DNS:debs.ak-online.be., DNS:debs.ak-online.net.';
1313

1414
$serverCode = <<<'CODE'
15-
$serverUri = "ssl://127.0.0.1:64321";
15+
$serverUri = "ssl://127.0.0.1:0";
1616
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
1717
$serverCtx = stream_context_create(['ssl' => [
1818
'local_cert' => '%s',
1919
]]);
2020
2121
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
22-
phpt_notify();
22+
phpt_notify_server_start($server);
2323
2424
stream_socket_accept($server, 30);
2525
CODE;
2626
$serverCode = sprintf($serverCode, $certFile);
2727

2828
$clientCode = <<<'CODE'
29-
$serverUri = "ssl://127.0.0.1:64321";
29+
$serverUri = "ssl://{{ ADDR }}";
3030
$clientFlags = STREAM_CLIENT_CONNECT;
3131
$clientCtx = stream_context_create(['ssl' => [
3232
'verify_peer' => false,
3333
'verify_peer_name' => true,
3434
'peer_name' => 'debs.ak-online.net',
3535
]]);
3636
37-
phpt_wait();
38-
3937
var_dump(stream_socket_client($serverUri, $errno, $errstr, 1, $clientFlags, $clientCtx));
4038
CODE;
4139

0 commit comments

Comments
 (0)