diff --git a/radicale/config.py b/radicale/config.py index 0e119109..4b7ed8c4 100644 --- a/radicale/config.py +++ b/radicale/config.py @@ -276,17 +276,18 @@ def load(paths: Optional[Iterable[Tuple[str, bool]]] = None for path, ignore_if_missing in paths: parser = RawConfigParser() config_source = "config file %r" % path + config: types.CONFIG try: - if not parser.read(path): - config = Configuration.SOURCE_MISSING - if not ignore_if_missing: - raise RuntimeError("No such file: %r" % path) - else: + with open(path, "r") as f: + parser.read_file(f) config = {s: {o: parser[s][o] for o in parser.options(s)} for s in parser.sections()} except Exception as e: - raise RuntimeError("Failed to load %s: %s" % (config_source, e) - ) from e + if isinstance(e, FileNotFoundError) and ignore_if_missing: + config = Configuration.SOURCE_MISSING + else: + raise RuntimeError("Failed to load %s: %s" % (config_source, e) + ) from e configuration.update(config, config_source) return configuration diff --git a/radicale/rights/from_file.py b/radicale/rights/from_file.py index c7e9c0cd..01fa2fb7 100644 --- a/radicale/rights/from_file.py +++ b/radicale/rights/from_file.py @@ -56,8 +56,8 @@ class Rights(rights.BaseRights): escaped_user = re.escape(user) rights_config = configparser.ConfigParser() try: - if not rights_config.read(self._filename): - raise RuntimeError("No such file: %r" % self._filename) + with open(self._filename, "r") as f: + rights_config.read_file(f) except Exception as e: raise RuntimeError("Failed to load rights file %r: %s" % (self._filename, e)) from e