From: Alan T. DeKok Date: Wed, 2 Sep 2015 17:31:02 +0000 (-0400) Subject: Make the "file changed" flag into a bitfield X-Git-Tag: release_3_0_10~177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb7d6d40fba2cc9b25a9d04e43e090e8e7f95beb;p=thirdparty%2Ffreeradius-server.git Make the "file changed" flag into a bitfield --- diff --git a/src/include/conffile.h b/src/include/conffile.h index 596c20afa97..3ca330f260c 100644 --- a/src/include/conffile.h +++ b/src/include/conffile.h @@ -290,8 +290,8 @@ CONF_ITEM *cf_reference_item(CONF_SECTION const *parentcs, #define CF_FILE_NONE (0) #define CF_FILE_ERROR (1) -#define CF_FILE_CONFIG (2) -#define CF_FILE_MODULE (3) +#define CF_FILE_CONFIG (1 << 2) +#define CF_FILE_MODULE (1 << 3) int cf_file_changed(CONF_SECTION *cs); extern CONF_SECTION *root_config; diff --git a/src/main/conffile.c b/src/main/conffile.c index 8cdeaab3dfb..cad30b4191c 100644 --- a/src/main/conffile.c +++ b/src/main/conffile.c @@ -433,28 +433,10 @@ static int file_callback(void *ctx, void *data) * The file changed, we'll need to re-read it. */ if (buf.st_mtime != file->buf.st_mtime) { - /* - * Set none -> whatever - */ - if (*rcode == CF_FILE_NONE) { - if (!file->input) { - *rcode = CF_FILE_CONFIG; - return 1; - } - - *rcode = CF_FILE_MODULE; - return 0; - - } - - /* - * A module WAS changed, but now we discover that - * a main config file has changed. We might as - * well re-load everything. - */ - if ((*rcode == CF_FILE_MODULE) && !file->input) { - *rcode = CF_FILE_CONFIG; - return 1; + if (!file->input) { + *rcode |= CF_FILE_CONFIG; + } else { + *rcode |= CF_FILE_MODULE; } } diff --git a/src/main/mainconfig.c b/src/main/mainconfig.c index de7d5d3e6ea..8b5e889283d 100644 --- a/src/main/mainconfig.c +++ b/src/main/mainconfig.c @@ -1108,8 +1108,18 @@ void main_config_hup(void) return; } - if (rcode == CF_FILE_MODULE) { - INFO("HUP - Files loaded by a module have changed."); + /* + * No config files have changed. + */ + if ((rcode & CF_FILE_CONFIG) == 0) { + if ((rcode & CF_FILE_MODULE) != 0) { + INFO("HUP - Files loaded by a module have changed."); + + /* + * FIXME: reload the module. + */ + + } return; }