Consume data by server in test for bug #72333
authorJakub Zelenka <bukka@php.net>
Fri, 17 Mar 2017 18:11:50 +0000 (18:11 +0000)
committerJakub Zelenka <bukka@php.net>
Fri, 17 Mar 2017 18:11:50 +0000 (18:11 +0000)
Client should be able to write more data and prevent time out

ext/openssl/tests/bug72333.phpt

index 850f18bf6a279aabe5c49f15851f173755684a46..fac59853f9bc7f28d098bb681bcd6aa6e36a2929 100644 (file)
@@ -14,7 +14,21 @@ $serverCode = <<<'CODE'
        $fp = stream_socket_server("ssl://127.0.0.1:10011", $errornum, $errorstr, $flags, $context);
        phpt_notify();
        $conn = stream_socket_accept($fp);
-       fread($conn, 100000);
+       $total = 100000;
+       $result = fread($conn, $total);
+       stream_set_blocking($conn, false);
+       usleep(50000);
+       $read = [$conn];
+       while (stream_select($read, $write, $except, 180)) {
+               $result = fread($conn, 100000);
+               if (!$result) {
+                   break;
+               }
+               $total += strlen($result);
+               if ($total >= 4000000) {
+                   break;
+               }
+       }
        phpt_wait();
 CODE;
 
@@ -23,13 +37,16 @@ $clientCode = <<<'CODE'
 
        phpt_wait();
        $fp = stream_socket_client("ssl://127.0.0.1:10011", $errornum, $errorstr, 3000, STREAM_CLIENT_CONNECT, $context);
-       stream_set_blocking($fp, 0);
+       stream_set_blocking($fp, false);
 
        function blocking_fwrite($fp, $buf) {
                $write = [$fp];
                $total = 0;
                while (stream_select($read, $write, $except, 180)) {
                        $result = fwrite($fp, $buf);
+                       if (!$result) {
+                           break;
+                       }
                        $total += $result;
                        if ($total >= strlen($buf)) {
                                return $total;
@@ -37,7 +54,7 @@ $clientCode = <<<'CODE'
                        $buf = substr($buf, $total);
                }
        }
-       $str1 = str_repeat("a", 3000000);
+       $str1 = str_repeat("a", 4000000);
        blocking_fwrite($fp, $str1);
        phpt_notify();
        echo "done";