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

apps/{s_client.c|s_socket}.c: omit usleep calls.



Even though removed calls were oiriginally added on Windows, problem
they tried to mitigate is not Windows-specific.

Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/5887)
parent dcf3d83f
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -3050,19 +3050,6 @@ int s_client_main(int argc, char **argv)
        print_stuff(bio_c_out, con, full_log);
    do_ssl_shutdown(con);

    /*
     * Give the socket time to send its last data before we close it.
     * No amount of setting SO_LINGER etc on the socket seems to persuade
     * Windows to send the data before closing the socket...but sleeping
     * for a short time seems to do it (units in ms)
     * TODO: Find a better way to do this
     */
#if defined(OPENSSL_SYS_WINDOWS)
    Sleep(50);
#elif defined(OPENSSL_SYS_CYGWIN)
    usleep(50000);
#endif

    /*
     * If we ended with an alert being sent, but still with data in the
     * network buffer to be read, then calling BIO_closesocket() will
@@ -3074,6 +3061,19 @@ int s_client_main(int argc, char **argv)
     * TCP-RST. This seems to allow the peer to read the alert data.
     */
    shutdown(SSL_get_fd(con), 1); /* SHUT_WR */
    /*
     * We just said we have nothing else to say, but it doesn't mean that
     * the other side has nothing. It's even recommended to consume incoming
     * data. [In testing context this ensures that alerts are passed on...]
     */
    timeout.tv_sec = 0;
    timeout.tv_usec = 500000;  /* some extreme round-trip */
    do {
        FD_ZERO(&readfds);
        openssl_fdset(s, &readfds);
    } while (select(s + 1, &readfds, NULL, NULL, &timeout) > 0
             && BIO_read(sbio, sbuf, BUFSIZZ) > 0);

    BIO_closesocket(SSL_get_fd(con));
 end:
    if (con != NULL) {
+0 −13
Original line number Diff line number Diff line
@@ -333,19 +333,6 @@ int do_server(int *accept_sock, const char *host, const char *port,
            BIO_set_tcp_ndelay(sock, 1);
            i = (*cb)(sock, type, protocol, context);

            /*
             * Give the socket time to send its last data before we close it.
             * No amount of setting SO_LINGER etc on the socket seems to
             * persuade Windows to send the data before closing the socket...
             * but sleeping for a short time seems to do it (units in ms)
             * TODO: Find a better way to do this
             */
#if defined(OPENSSL_SYS_WINDOWS)
            Sleep(50);
#elif defined(OPENSSL_SYS_CYGWIN)
            usleep(50000);
#endif

            /*
             * If we ended with an alert being sent, but still with data in the
             * network buffer to be read, then calling BIO_closesocket() will