diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2022-11-09 21:09:16 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2022-11-09 21:54:45 +0100 |
commit | 371eb49043d225d2bab8149187b813a14b4b86d2 (patch) | |
tree | 4b25595f3d68b2d0a64cbfbf2ab2987e9b8b163e /sysdep/unix | |
parent | 84545a26cc3f7ce68408a663c1ad4a50edccdacc (diff) |
Conf: Free stored old config before parsing new one
BIRD keeps a previous (old) configuration for the purpose of undo. The
existing code frees it after a new configuration is successfully parsed
during reconfiguration. That causes memory usage spikes as there are
temporarily three configurations (old, current, and new). The patch
changes it to free the old one before parsing the new one (as user
already requested a new config). The disadvantage is that undo is
not available after failed reconfiguration.
Diffstat (limited to 'sysdep/unix')
-rw-r--r-- | sysdep/unix/main.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c index 84e7d889..18cc091f 100644 --- a/sysdep/unix/main.c +++ b/sysdep/unix/main.c @@ -242,6 +242,8 @@ async_config(void) { struct config *conf; + config_free_old(); + log(L_INFO "Reconfiguration requested by SIGHUP"); if (!unix_read_config(&conf, config_name)) { @@ -324,6 +326,8 @@ cmd_reconfig(const char *name, int type, uint timeout) if (cli_access_restricted()) return; + config_free_old(); + struct config *conf = cmd_read_config(name); if (!conf) return; |