Commit 44420615 authored by Andy Polyakov's avatar Andy Polyakov
Browse files

TLSProxy/Proxy.pm: straighten inner loop termination logic.



Original condition was susceptible to race condition...

Reviewed-by: default avatarBernd Edlinger <bernd.edlinger@hotmail.de>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5933)
parent de5b3a86
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -369,12 +369,14 @@ sub clientstart
    $fdset = IO::Select->new($server_sock, $client_sock);
    my @ready;
    my $ctr = 0;
    my $sessionfile = $self->{sessionfile};
    local $SIG{PIPE} = "IGNORE";
    while($fdset->count
            && (!(TLSProxy::Message->end)
                || (defined $self->sessionfile()
                    && (-s $self->sessionfile()) == 0))
            && $ctr < 10) {
    while($fdset->count && $ctr < 10) {
        if (defined($sessionfile)) {
            # s_client got -ign_eof and won't be exiting voluntarily, so we
            # look for data *and* check on session file...
            last if TLSProxy::Message->success() && -s $sessionfile;
        }
        if (!(@ready = $fdset->can_read(1))) {
            $ctr++;
            next;