From 80ef6e6755748c8c289baf3b5b49894653cabfb8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Wed, 15 May 2024 17:47:21 +0100 Subject: [PATCH] Correct logic for DEFAULT config population Fixes https://github.com/matrix-org/sydent/issues/585 --- sydent/config/__init__.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/sydent/config/__init__.py b/sydent/config/__init__.py index f3c78680..a7fd7cbd 100644 --- a/sydent/config/__init__.py +++ b/sydent/config/__init__.py @@ -219,14 +219,15 @@ def parse_config_file(self, config_file: str) -> None: :param config_file: the file to be parsed """ - # If the config file doesn't exist, prepopulate the config object - # with the defaults, in the right section. + # If the config file already exists, place all config options in + # the DEFAULT section, to avoid overriding any of the user's + # configured values in the sections other than DEFAULT. # - # Otherwise, we have to put the defaults in the DEFAULT section, - # to ensure that they don't override anyone's settings which are - # in their config file in the default section (which is likely, - # because sydent used to be braindead). - use_defaults = not os.path.exists(config_file) + # We don't always do this as earlier Sydent versions required + # users to put their settings in the DEFAULT section. + # + # We want to avoid overwriting those. + use_defaults = os.path.exists(config_file) cfg = ConfigParser() for sect, entries in CONFIG_DEFAULTS.items():