#include "auth-common.h"
#include "array.h"
-#include "lib-signals.h"
#include "hash.h"
#include "str.h"
#include "strescape.h"
i_free(node);
}
-static void sig_auth_cache_stats(const siginfo_t *si ATTR_UNUSED, void *context)
-{
- struct auth_cache *cache = context;
- unsigned int total_count;
- size_t cache_used;
-
- total_count = cache->hit_count + cache->miss_count;
- e_info(cache->event, "Authentication cache hits %u/%u (%u%%)",
- cache->hit_count, total_count,
- total_count == 0 ? 100 : (cache->hit_count * 100 / total_count));
-
- e_info(cache->event, "Authentication cache inserts: "
- "positive: %u entries %llu bytes, "
- "negative: %u entries %llu bytes",
- cache->pos_entries, cache->pos_size,
- cache->neg_entries, cache->neg_size);
-
- cache_used = cache->max_size - cache->size_left;
- e_info(cache->event, "Authentication cache current size: "
- "%zu bytes used of %zu bytes (%u%%)",
- cache_used, cache->max_size,
- (unsigned int)(cache_used * 100ULL / cache->max_size));
-
- /* reset counters */
- cache->hit_count = cache->miss_count = 0;
- cache->pos_entries = cache->neg_entries = 0;
- cache->pos_size = cache->neg_size = 0;
-}
-
struct auth_cache *auth_cache_new(size_t max_size, unsigned int ttl_secs,
unsigned int neg_ttl_secs
)
cache->neg_ttl_secs = neg_ttl_secs;
cache->event = event_create(auth_event);
- lib_signals_set_handler(SIGUSR2, LIBSIG_FLAGS_SAFE,
- sig_auth_cache_stats, cache);
return cache;
}
struct auth_cache *cache = *_cache;
*_cache = NULL;
- lib_signals_unset_handler(SIGUSR2, sig_auth_cache_stats, cache);
auth_cache_clear(cache);
hash_table_destroy(&cache->hash);