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

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: default avatarBen Kaduk <kaduk@mit.edu>
(Merged from https://github.com/openssl/openssl/pull/3926)
parent 08717544
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -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);
    }