mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Run curl_setopt_ssl.phpt on Windows, too (GH-16086)
The whole point of using `proc_open()` to execute `openssl s_client` is that we can terminate the process when we're done. However, when going through the shell on Windows, we get a handle to the shell process, and if we terminate that, the grandchild will stay open. Since the pipes of the grandchild will stay open, the PHP process will not terminate either, so the test stalls. We solve this by simply bypassing the shell.
This commit is contained in:
committed by
GitHub
parent
3992ffa2c2
commit
06c41ec6c5
@@ -7,7 +7,7 @@ curl
|
||||
if (!function_exists("proc_open")) die("skip no proc_open");
|
||||
exec('openssl version', $out, $code);
|
||||
if ($code > 0) die("skip couldn't locate openssl binary");
|
||||
if (PHP_OS_FAMILY === 'Windows') die('skip not for Windows');
|
||||
|
||||
if (PHP_OS_FAMILY === 'Darwin') die('skip Fails intermittently on macOS');
|
||||
if (PHP_OS === 'FreeBSD') die('skip proc_open seems to be stuck on FreeBSD');
|
||||
$curl_version = curl_version();
|
||||
@@ -62,7 +62,7 @@ $port = 14430;
|
||||
|
||||
// set up local server
|
||||
$cmd = "openssl s_server -key $serverKeyPath -cert $serverCertPath -accept $port -www -CAfile $clientCertPath -verify_return_error -Verify 1";
|
||||
$process = proc_open($cmd, [["pipe", "r"], ["pipe", "w"], ["pipe", "w"]], $pipes);
|
||||
$process = proc_open($cmd, [["pipe", "r"], ["pipe", "w"], ["pipe", "w"]], $pipes, null, null, ["bypass_shell" => true]);
|
||||
|
||||
if ($process === false) {
|
||||
die('failed to start server');
|
||||
|
||||
Reference in New Issue
Block a user