Latest update - pre9
This commit is contained in:
+13
-28
@@ -2330,7 +2330,6 @@ LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx)
|
||||
long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
|
||||
{
|
||||
long l;
|
||||
int i;
|
||||
/* For some cases with ctx == NULL perform syntax checks */
|
||||
if (ctx == NULL) {
|
||||
switch (cmd) {
|
||||
@@ -2385,40 +2384,27 @@ long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
|
||||
case SSL_CTRL_SESS_NUMBER:
|
||||
return lh_SSL_SESSION_num_items(ctx->sessions);
|
||||
case SSL_CTRL_SESS_CONNECT:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_connect, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_connect);
|
||||
case SSL_CTRL_SESS_CONNECT_GOOD:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_connect_good, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_connect_good);
|
||||
case SSL_CTRL_SESS_CONNECT_RENEGOTIATE:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_connect_renegotiate, &i,
|
||||
ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_connect_renegotiate);
|
||||
case SSL_CTRL_SESS_ACCEPT:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_accept, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_accept);
|
||||
case SSL_CTRL_SESS_ACCEPT_GOOD:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_accept_good, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_accept_good);
|
||||
case SSL_CTRL_SESS_ACCEPT_RENEGOTIATE:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_accept_renegotiate, &i,
|
||||
ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_accept_renegotiate);
|
||||
case SSL_CTRL_SESS_HIT:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_hit, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_hit);
|
||||
case SSL_CTRL_SESS_CB_HIT:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_cb_hit, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_cb_hit);
|
||||
case SSL_CTRL_SESS_MISSES:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_miss, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_miss);
|
||||
case SSL_CTRL_SESS_TIMEOUTS:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_timeout, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_timeout);
|
||||
case SSL_CTRL_SESS_CACHE_FULL:
|
||||
return CRYPTO_atomic_read(&ctx->stats.sess_cache_full, &i, ctx->lock)
|
||||
? i : 0;
|
||||
return tsan_load(&ctx->stats.sess_cache_full);
|
||||
case SSL_CTRL_MODE:
|
||||
return (ctx->mode |= larg);
|
||||
case SSL_CTRL_CLEAR_MODE:
|
||||
@@ -3492,13 +3478,12 @@ void ssl_update_cache(SSL *s, int mode)
|
||||
|
||||
/* auto flush every 255 connections */
|
||||
if ((!(i & SSL_SESS_CACHE_NO_AUTO_CLEAR)) && ((i & mode) == mode)) {
|
||||
int *stat, val;
|
||||
TSAN_QUALIFIER int *stat;
|
||||
if (mode & SSL_SESS_CACHE_CLIENT)
|
||||
stat = &s->session_ctx->stats.sess_connect_good;
|
||||
else
|
||||
stat = &s->session_ctx->stats.sess_accept_good;
|
||||
if (CRYPTO_atomic_read(stat, &val, s->session_ctx->lock)
|
||||
&& (val & 0xff) == 0xff)
|
||||
if ((tsan_load(stat) & 0xff) == 0xff)
|
||||
SSL_CTX_flush_sessions(s->session_ctx, (unsigned long)time(NULL));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user