summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-20 12:12:11 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-20 12:12:11 +0100
commit4f2b46dbaf4b81eb5f9511336c00df0b493f0128 (patch)
tree2c37767be3224b3120ed0a6b279c5af8294c9f21
parent991ea9cc602d93247d35a1ce94b060f58bcd8205 (diff)
parentb3e0e555c8936a123f0e5c44f8ba0667becb4357 (diff)
downloadphp-git-4f2b46dbaf4b81eb5f9511336c00df0b493f0128.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
-rw-r--r--ext/openssl/tests/ServerClientTestCase.inc23
-rw-r--r--ext/openssl/tests/bug77390.phpt24
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"