diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-20 12:12:11 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-20 12:12:11 +0100 |
commit | 4f2b46dbaf4b81eb5f9511336c00df0b493f0128 (patch) | |
tree | 2c37767be3224b3120ed0a6b279c5af8294c9f21 | |
parent | 991ea9cc602d93247d35a1ce94b060f58bcd8205 (diff) | |
parent | b3e0e555c8936a123f0e5c44f8ba0667becb4357 (diff) | |
download | php-git-4f2b46dbaf4b81eb5f9511336c00df0b493f0128.tar.gz |
Merge branch 'PHP-7.3' into PHP-7.4
-rw-r--r-- | ext/openssl/tests/ServerClientTestCase.inc | 23 | ||||
-rw-r--r-- | ext/openssl/tests/bug77390.phpt | 24 |
2 files changed, 35 insertions, 12 deletions
diff --git a/ext/openssl/tests/ServerClientTestCase.inc b/ext/openssl/tests/ServerClientTestCase.inc index 4bad3c2995..7576764777 100644 --- a/ext/openssl/tests/ServerClientTestCase.inc +++ b/ext/openssl/tests/ServerClientTestCase.inc @@ -9,9 +9,9 @@ function phpt_notify($worker = WORKER_DEFAULT_NAME) ServerClientTestCase::getInstance()->notify($worker); } -function phpt_wait($worker = WORKER_DEFAULT_NAME) +function phpt_wait($worker = WORKER_DEFAULT_NAME, $timeout = null) { - ServerClientTestCase::getInstance()->wait($worker); + ServerClientTestCase::getInstance()->wait($worker, $timeout); } /** @@ -121,9 +121,24 @@ class ServerClientTestCase } } - public function wait($worker) + public function wait($worker, $timeout = null) { - fgets($this->isWorker ? STDIN : $this->workerStdOut[$worker]); + $handle = $this->isWorker ? STDIN : $this->workerStdOut[$worker]; + if ($timeout === null) { + fgets($handle); + return true; + } + + stream_set_blocking($handle, false); + $read = [$handle]; + $result = stream_select($read, $write, $except, $timeout); + if (!$result) { + return false; + } + + fgets($handle); + stream_set_blocking($handle, true); + return true; } public function notify($worker) diff --git a/ext/openssl/tests/bug77390.phpt b/ext/openssl/tests/bug77390.phpt index 7f15329640..a71275ef6f 100644 --- a/ext/openssl/tests/bug77390.phpt +++ b/ext/openssl/tests/bug77390.phpt @@ -23,16 +23,21 @@ $clientCode = <<<'CODE' $read = [$fp]; $buf = ''; - $printed = false; + $warmedUp = false; while (stream_select($read, $write, $except, 1000)) { $chunk = stream_get_contents($fp, 4096); - if ($chunk !== "") { - var_dump($chunk); - $buf .= $chunk; - } elseif (!$printed) { - $printed = true; - var_dump($chunk); + $buf .= $chunk; + phpt_notify('proxy'); + if (!$warmedUp) { + if ($buf !== 'warmup') { + continue; + } + $warmedUp = true; + $buf = ''; + phpt_notify('server'); + continue; } + var_dump($chunk); if ($buf === 'hello, world') { break; } @@ -51,6 +56,8 @@ $serverCode = <<<'CODE' phpt_notify(); $conn = stream_socket_accept($fp); + fwrite($conn, 'warmup'); + phpt_wait(); fwrite($conn, 'hello, world'); phpt_wait(); @@ -82,7 +89,7 @@ $proxyCode = <<<'CODE' $parts = str_split($data, (int) ceil(strlen($data) / 3)); foreach ($parts as $part) { fwrite($conn, $part); - usleep(1000); + phpt_wait(null, 1); } } else { fwrite($conn, $data); @@ -116,4 +123,5 @@ ServerClientTestCase::getInstance()->run($clientCode, [ ?> --EXPECT-- string(0) "" +string(0) "" string(12) "hello, world" |