Skip to content

Commit

Permalink
s_client: Support interactive reconnect command
Browse files Browse the repository at this point in the history
This change adds the 'C' command character to allow a user to drop the
current session and reconnect to the server. It has the same behavior as
the `-reconnect` option except this allows reconnect to be triggered at
an arbitrary point in the session.

The primary use case for this change is to provide a way for the user to
probe a server for TLS1.3 session resumption support. This is not
currently reliably supported by the `-reconnect` option.

Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from #18683)
  • Loading branch information
raycoll authored and paulidale committed Oct 4, 2022
1 parent 8c7d847 commit 511c491
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions apps/s_client.c
Expand Up @@ -3081,6 +3081,16 @@ int s_client_main(int argc, char **argv)
goto shut;
}

if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'C' && cmdletters))) {
cbuf_len = 0;
BIO_printf(bio_c_out,
"RECONNECTING\n");
do_ssl_shutdown(con);
SSL_set_connect_state(con);
BIO_closesocket(SSL_get_fd(con));
goto re_start;
}

if ((!c_ign_eof) && (cbuf[0] == 'R' && cmdletters)) {
BIO_printf(bio_err, "RENEGOTIATING\n");
SSL_renegotiate(con);
Expand Down

0 comments on commit 511c491

Please sign in to comment.