Latest update - pre9
This commit is contained in:
+16
-16
@@ -132,23 +132,18 @@ int tls_setup_handshake(SSL *s)
|
||||
}
|
||||
if (SSL_IS_FIRST_HANDSHAKE(s)) {
|
||||
/* N.B. s->session_ctx == s->ctx here */
|
||||
CRYPTO_atomic_add(&s->session_ctx->stats.sess_accept, 1, &i,
|
||||
s->session_ctx->lock);
|
||||
tsan_counter(&s->session_ctx->stats.sess_accept);
|
||||
} else {
|
||||
/* N.B. s->ctx may not equal s->session_ctx */
|
||||
CRYPTO_atomic_add(&s->ctx->stats.sess_accept_renegotiate, 1, &i,
|
||||
s->ctx->lock);
|
||||
tsan_counter(&s->ctx->stats.sess_accept_renegotiate);
|
||||
|
||||
s->s3->tmp.cert_request = 0;
|
||||
}
|
||||
} else {
|
||||
int discard;
|
||||
if (SSL_IS_FIRST_HANDSHAKE(s))
|
||||
CRYPTO_atomic_add(&s->session_ctx->stats.sess_connect, 1, &discard,
|
||||
s->session_ctx->lock);
|
||||
tsan_counter(&s->session_ctx->stats.sess_connect);
|
||||
else
|
||||
CRYPTO_atomic_add(&s->session_ctx->stats.sess_connect_renegotiate,
|
||||
1, &discard, s->session_ctx->lock);
|
||||
tsan_counter(&s->session_ctx->stats.sess_connect_renegotiate);
|
||||
|
||||
/* mark client_random uninitialized */
|
||||
memset(s->s3->client_random, 0, sizeof(s->s3->client_random));
|
||||
@@ -752,6 +747,12 @@ MSG_PROCESS_RETURN tls_process_finished(SSL *s, PACKET *pkt)
|
||||
|
||||
/* This is a real handshake so make sure we clean it up at the end */
|
||||
if (s->server) {
|
||||
/*
|
||||
* To get this far we must have read encrypted data from the client. We
|
||||
* no longer tolerate unencrypted alerts. This value is ignored if less
|
||||
* than TLSv1.3
|
||||
*/
|
||||
s->statem.enc_read_state = ENC_READ_STATE_VALID;
|
||||
if (s->post_handshake_auth != SSL_PHA_REQUESTED)
|
||||
s->statem.cleanuphand = 1;
|
||||
if (SSL_IS_TLS13(s) && !tls13_save_handshake_digest_for_pha(s)) {
|
||||
@@ -1009,7 +1010,6 @@ unsigned long ssl3_output_cert_chain(SSL *s, WPACKET *pkt, CERT_PKEY *cpk)
|
||||
*/
|
||||
WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop)
|
||||
{
|
||||
int discard;
|
||||
void (*cb) (const SSL *ssl, int type, int val) = NULL;
|
||||
|
||||
if (clearbufs) {
|
||||
@@ -1055,8 +1055,7 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop)
|
||||
ssl_update_cache(s, SSL_SESS_CACHE_SERVER);
|
||||
|
||||
/* N.B. s->ctx may not equal s->session_ctx */
|
||||
CRYPTO_atomic_add(&s->ctx->stats.sess_accept_good, 1, &discard,
|
||||
s->ctx->lock);
|
||||
tsan_counter(&s->ctx->stats.sess_accept_good);
|
||||
s->handshake_func = ossl_statem_accept;
|
||||
|
||||
if (SSL_IS_DTLS(s) && !s->hit) {
|
||||
@@ -1084,12 +1083,10 @@ WORK_STATE tls_finish_handshake(SSL *s, WORK_STATE wst, int clearbufs, int stop)
|
||||
ssl_update_cache(s, SSL_SESS_CACHE_CLIENT);
|
||||
}
|
||||
if (s->hit)
|
||||
CRYPTO_atomic_add(&s->session_ctx->stats.sess_hit, 1, &discard,
|
||||
s->session_ctx->lock);
|
||||
tsan_counter(&s->session_ctx->stats.sess_hit);
|
||||
|
||||
s->handshake_func = ossl_statem_connect;
|
||||
CRYPTO_atomic_add(&s->session_ctx->stats.sess_connect_good, 1,
|
||||
&discard, s->session_ctx->lock);
|
||||
tsan_counter(&s->session_ctx->stats.sess_connect_good);
|
||||
|
||||
if (SSL_IS_DTLS(s) && s->hit) {
|
||||
/*
|
||||
@@ -1917,6 +1914,9 @@ int ssl_choose_client_version(SSL *s, int version, RAW_EXTENSION *extensions)
|
||||
if (highver != 0 && s->version != vent->version)
|
||||
continue;
|
||||
|
||||
if (highver == 0 && (s->mode & SSL_MODE_SEND_FALLBACK_SCSV) != 0)
|
||||
highver = vent->version;
|
||||
|
||||
method = vent->cmeth();
|
||||
err = ssl_method_error(s, method);
|
||||
if (err != 0) {
|
||||
|
||||
Reference in New Issue
Block a user