Always use session_ctx when removing a session
Sessions are stored on the session_ctx, which doesn't change after SSL_set_SSL_CTX(). Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Matt Caswell <matt@openssl.org>
This commit is contained in:
parent
77a795e4b0
commit
e2bb9b9bf3
5 changed files with 7 additions and 7 deletions
|
@ -740,7 +740,7 @@ int dtls1_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
|
|||
BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr);
|
||||
ERR_add_error_data(2, "SSL alert number ", tmp);
|
||||
s->shutdown |= SSL_RECEIVED_SHUTDOWN;
|
||||
SSL_CTX_remove_session(s->ctx, s->session);
|
||||
SSL_CTX_remove_session(s->session_ctx, s->session);
|
||||
return (0);
|
||||
} else {
|
||||
al = SSL_AD_ILLEGAL_PARAMETER;
|
||||
|
|
|
@ -1372,7 +1372,7 @@ int ssl3_read_bytes(SSL *s, int type, int *recvd_type, unsigned char *buf,
|
|||
BIO_snprintf(tmp, sizeof tmp, "%d", alert_descr);
|
||||
ERR_add_error_data(2, "SSL alert number ", tmp);
|
||||
s->shutdown |= SSL_RECEIVED_SHUTDOWN;
|
||||
SSL_CTX_remove_session(s->ctx, s->session);
|
||||
SSL_CTX_remove_session(s->session_ctx, s->session);
|
||||
return (0);
|
||||
} else {
|
||||
al = SSL_AD_ILLEGAL_PARAMETER;
|
||||
|
|
|
@ -72,7 +72,7 @@ int ssl3_send_alert(SSL *s, int level, int desc)
|
|||
return -1;
|
||||
/* If a fatal one, remove from cache */
|
||||
if ((level == SSL3_AL_FATAL) && (s->session != NULL))
|
||||
SSL_CTX_remove_session(s->ctx, s->session);
|
||||
SSL_CTX_remove_session(s->session_ctx, s->session);
|
||||
|
||||
s->s3->alert_dispatch = 1;
|
||||
s->s3->send_alert[0] = level;
|
||||
|
|
|
@ -746,9 +746,9 @@ int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id,
|
|||
r.session_id_length = id_len;
|
||||
memcpy(r.session_id, id, id_len);
|
||||
|
||||
CRYPTO_THREAD_read_lock(ssl->ctx->lock);
|
||||
p = lh_SSL_SESSION_retrieve(ssl->ctx->sessions, &r);
|
||||
CRYPTO_THREAD_unlock(ssl->ctx->lock);
|
||||
CRYPTO_THREAD_read_lock(ssl->session_ctx->lock);
|
||||
p = lh_SSL_SESSION_retrieve(ssl->session_ctx->sessions, &r);
|
||||
CRYPTO_THREAD_unlock(ssl->session_ctx->lock);
|
||||
return (p != NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -994,7 +994,7 @@ int ssl_clear_bad_session(SSL *s)
|
|||
if ((s->session != NULL) &&
|
||||
!(s->shutdown & SSL_SENT_SHUTDOWN) &&
|
||||
!(SSL_in_init(s) || SSL_in_before(s))) {
|
||||
SSL_CTX_remove_session(s->ctx, s->session);
|
||||
SSL_CTX_remove_session(s->session_ctx, s->session);
|
||||
return (1);
|
||||
} else
|
||||
return (0);
|
||||
|
|
Loading…
Reference in a new issue