Fix Proxy where a timeout occurs waiting for both client and server
authorMatt Caswell <matt@openssl.org>
Thu, 31 Aug 2017 08:39:26 +0000 (09:39 +0100)
committerMatt Caswell <matt@openssl.org>
Fri, 1 Sep 2017 07:47:14 +0000 (08:47 +0100)
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4305)

util/perl/TLSProxy/Proxy.pm

index c92652e78f0bf2cecdbf0dc854c57ef4ec3e5907..f3e76bf35c457ef6cbc3691c3b69220cb7ef6cdc 100644 (file)
@@ -297,8 +297,11 @@ sub clientstart
     while(     (!(TLSProxy::Message->end)
                 || (defined $self->sessionfile()
                     && (-s $self->sessionfile()) == 0))
-            && $ctr < 10
-            && (@ready = $sel->can_read(1))) {
+            && $ctr < 10) {
+        if (!(@ready = $sel->can_read(1))) {
+            $ctr++;
+            next;
+        }
         foreach my $hand (@ready) {
             if ($hand == $server_sock) {
                 $server_sock->sysread($indata, 16384) or goto END;
@@ -311,7 +314,7 @@ sub clientstart
                 $server_sock->syswrite($indata);
                 $ctr = 0;
             } else {
-                $ctr++
+                die "Unexpected handle";
             }
         }
     }