Commit fd068d50 authored by Matt Caswell's avatar Matt Caswell
Browse files

Ensure s_client and s_server work when read_ahead is set



Previously s_client and s_server relied on using SSL_pending() which does
not take into account read_ahead. For read pipelining to work, read_ahead
gets set automatically. Therefore s_client and s_server have been
converted to use SSL_has_pending() instead.

Reviewed-by: default avatarTim Hudson <tjh@openssl.org>
parent 49580f25
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2183,7 +2183,7 @@ int s_client_main(int argc, char **argv)
            }
        }

        ssl_pending = read_ssl && SSL_pending(con);
        ssl_pending = read_ssl && SSL_has_pending(con);

        if (!ssl_pending) {
#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE)
+2 −2
Original line number Diff line number Diff line
@@ -2213,7 +2213,7 @@ static int sv_body(int s, int stype, unsigned char *context)
        int read_from_sslcon;

        read_from_terminal = 0;
        read_from_sslcon = SSL_pending(con)
        read_from_sslcon = SSL_has_pending(con)
                           || (async && SSL_waiting_for_async(con));

        if (!read_from_sslcon) {
@@ -2451,7 +2451,7 @@ static int sv_body(int s, int stype, unsigned char *context)
                    ascii2ebcdic(buf, buf, i);
#endif
                    raw_write_stdout(buf, (unsigned int)i);
                    if (SSL_pending(con))
                    if (SSL_has_pending(con))
                        goto again;
                    break;
                case SSL_ERROR_WANT_ASYNC: