From: Arran Cudbard-Bell Date: Wed, 15 May 2024 01:46:13 +0000 (-0600) Subject: Move password free to the atexit handlers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f19299644dc1e354f5df11b3b720a9be05013ea8;p=thirdparty%2Ffreeradius-server.git Move password free to the atexit handlers --- diff --git a/src/lib/server/base.c b/src/lib/server/base.c index 7420fe26d8c..ab5ad9e729e 100644 --- a/src/lib/server/base.c +++ b/src/lib/server/base.c @@ -120,11 +120,6 @@ void server_free(void) */ xlat_instances_free(); - /* - * Free password dictionaries - */ - password_free(); - /* * Now we're sure no more triggers can fire, free the * trigger tree. diff --git a/src/lib/server/password.c b/src/lib/server/password.c index 27b879af3a6..669c815efe1 100644 --- a/src/lib/server/password.c +++ b/src/lib/server/password.c @@ -25,6 +25,7 @@ RCSID("$Id$") #include +#include #include #include #include @@ -1025,10 +1026,7 @@ fr_pair_t *password_find(bool *ephemeral, TALLOC_CTX *ctx, request_t *request, return NULL; } -/** Load our dictionaries - * - */ -int password_init(void) +static int _password_init(UNUSED void *uctx) { if (fr_dict_autoload(password_dict) < 0) { PERROR("%s", __FUNCTION__); @@ -1043,7 +1041,21 @@ int password_init(void) return 0; } -void password_free(void) +static int _password_free(UNUSED void *uctx) { fr_dict_autofree(password_dict); + + return 0; +} + +/** Load our dictionaries + * + */ +int password_init(void) +{ + int ret; + + fr_atexit_global_once_ret(&ret, _password_init, _password_free, NULL); + + return ret; } diff --git a/src/lib/server/password.h b/src/lib/server/password.h index 071e90d51b3..1207b891bd4 100644 --- a/src/lib/server/password.h +++ b/src/lib/server/password.h @@ -38,8 +38,6 @@ fr_pair_t *password_find(bool *ephemeral, TALLOC_CTX *ctx, request_t *request, int password_init(void); -void password_free(void); - #ifdef __cplusplus } #endif