BUG/MINOR: ssl: use atomic ops to update global shctx stats
authorWilly Tarreau <w@1wt.eu>
Tue, 15 Jun 2021 14:39:22 +0000 (16:39 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 17 Jun 2021 16:23:46 +0000 (18:23 +0200)
The global shctx lookups and misses was updated without using atomic
ops, so the stats available in "show info" are very likely off by a few
units over time. This should be backported as far as 1.8. Versions
without _HA_ATOMIC_INC() can use HA_ATOMIC_ADD(,1).

(cherry picked from commit 4c19e996218f6c205c1716a0b4718f9bced7f893)
Signed-off-by: Willy Tarreau <w@1wt.eu>
(cherry picked from commit 37d69399648e489fea9f93b7e9fae02dfa59acbb)
[wt: s/_HA_ATOMIC_INC/_HA_ATOMIC_ADD(,1)]
Signed-off-by: Willy Tarreau <w@1wt.eu>

src/ssl_sock.c

index 09b8d08..e5f6029 100644 (file)
@@ -3845,7 +3845,7 @@ SSL_SESSION *sh_ssl_sess_get_cb(SSL *ssl, __OPENSSL_110_CONST__ unsigned char *k
        SSL_SESSION *sess;
        struct shared_block *first;
 
-       global.shctx_lookups++;
+       _HA_ATOMIC_ADD(&global.shctx_lookups, 1);
 
        /* allow the session to be freed automatically by openssl */
        *do_copy = 0;
@@ -3865,7 +3865,7 @@ SSL_SESSION *sh_ssl_sess_get_cb(SSL *ssl, __OPENSSL_110_CONST__ unsigned char *k
        if (!sh_ssl_sess) {
                /* no session found: unlock cache and exit */
                shctx_unlock(ssl_shctx);
-               global.shctx_misses++;
+               _HA_ATOMIC_ADD(&global.shctx_misses, 1);
                return NULL;
        }