Commit 26ec943e authored by Bernd Edlinger's avatar Bernd Edlinger
Browse files

Explicitly shut the socket down in s_client

parent 438e57a4
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -3035,6 +3035,17 @@ int s_client_main(int argc, char **argv)
     */
    Sleep(50);
#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
     * result in a TCP-RST being sent. On some platforms (notably
     * Windows) then this will result in the peer immediately abandoning
     * the connection including any buffered alert data before it has
     * had a chance to be read. Shutting down the sending side first,
     * and then closing the socket sends TCP-FIN first followed by
     * TCP-RST. This seems to allow the peer to read the alert data.
     */
    shutdown(SSL_get_fd(con), 1); /* SHUT_WR */
    BIO_closesocket(SSL_get_fd(con));
 end:
    if (con != NULL) {