From: Matt Caswell Date: Fri, 21 Jul 2017 10:39:01 +0000 (+0100) Subject: If no SNI has been explicitly set use the one from the session X-Git-Tag: OpenSSL_1_1_1-pre1~724 X-Git-Url: https://git.openssl.org/?p=openssl.git;a=commitdiff_plain;h=c5de99a2d90b0714eeda4943444e3a6bfbc525ad;hp=087175449922ddc3063e37f61e2c4330f3cf0468;ds=sidebyside If no SNI has been explicitly set use the one from the session If we have not decided on an SNI value yet, but we are attempting to reuse a session, and SNI is set in that, then we should use that value by default. Reviewed-by: Ben Kaduk (Merged from https://github.com/openssl/openssl/pull/3926) --- diff --git a/apps/s_client.c b/apps/s_client.c index 36da3b6aa7..b3aedd20e7 100644 --- a/apps/s_client.c +++ b/apps/s_client.c @@ -1888,6 +1888,26 @@ int s_client_main(int argc, char **argv) ERR_print_errors(bio_err); goto end; } + /* By default the SNI should be the same as was set in the session */ + if (!noservername && servername == NULL) + { + const char *sni = SSL_SESSION_get0_hostname(sess); + + if (sni != NULL) { + servername = OPENSSL_strdup(sni); + if (servername == NULL) { + BIO_printf(bio_err, "Can't set server name\n"); + ERR_print_errors(bio_err); + goto end; + } + } else { + /* + * Force no SNI to be sent so we are consistent with the + * session. + */ + noservername = 1; + } + } SSL_SESSION_free(sess); }