1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
--TEST--
GH-13860 (Incorrect PHP_STREAM_OPTION_CHECK_LIVENESS case in ext/openssl/xp_ssl.c - causing use of dead socket)
--EXTENSIONS--
openssl
--SKIPIF--
<?php
if (!function_exists("proc_open")) die("skip no proc_open");
?>
--FILE--
<?php
$serverCode = <<<'CODE'
$serverUri = "tcp://127.0.0.1:0";
$serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
$serverCtx = stream_context_create();
$server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
phpt_notify_server_start($server);
$client = @stream_socket_accept($server);
if ($client) {
phpt_wait();
fwrite($client, "xx");
fclose($client);
phpt_notify();
}
CODE;
$clientCode = <<<'CODE'
$serverUri = "tcp://{{ ADDR }}";
$clientFlags = STREAM_CLIENT_CONNECT;
$fp = stream_socket_client($serverUri);
stream_set_blocking($fp, false);
fread($fp, 2);
phpt_notify();
while (!($in = fread($fp, 2))) {
usleep(1000);
}
phpt_wait();
var_dump(feof($fp));
fclose($fp);
CODE;
include 'ServerClientTestCase.inc';
ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
?>
--EXPECT--
bool(true)
|