diff options
author | josibake <josibake@protonmail.com> | 2022-07-28 12:47:53 +0200 |
---|---|---|
committer | josibake <josibake@protonmail.com> | 2022-10-06 18:20:14 -0400 |
commit | 5e744f423838fe7d45453541271bc1a07cd62eac (patch) | |
tree | 5e1a842850e85295034478e167630ba42addf8c9 /src/util | |
parent | 73b61717a977fc9d23f1bae3f8620641a9dee1f3 (diff) | |
download | bitcoin-5e744f423838fe7d45453541271bc1a07cd62eac.tar.xz |
util: disallow setting conf in bitcoin.conf
Help from `bitcoind -h` states that conf can only be used from the commandline.
However, if conf is set in a bitcoin.conf file, it is ignored but there is no error.
Show an error to user if conf is set in a .conf file and prompt them to use
`includeconf` if they wish to specify additional config files.
Adds `IsConfSupported` function to allow for easily adding conf options
to disallow or throw warnings for.
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/system.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/util/system.cpp b/src/util/system.cpp index c3c6cbfef6..948b3f2673 100644 --- a/src/util/system.cpp +++ b/src/util/system.cpp @@ -935,6 +935,14 @@ static bool GetConfigOptions(std::istream& stream, const std::string& filepath, return true; } +bool IsConfSupported(KeyInfo& key, std::string& error) { + if (key.name == "conf") { + error = "conf cannot be set in the configuration file; use includeconf= if you want to include additional config files"; + return false; + } + return true; +} + bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& filepath, std::string& error, bool ignore_invalid_keys) { LOCK(cs_args); @@ -945,6 +953,7 @@ bool ArgsManager::ReadConfigStream(std::istream& stream, const std::string& file for (const std::pair<std::string, std::string>& option : options) { KeyInfo key = InterpretKey(option.first); std::optional<unsigned int> flags = GetArgFlags('-' + key.name); + if (!IsConfSupported(key, error)) return false; if (flags) { std::optional<util::SettingsValue> value = InterpretValue(key, &option.second, *flags, error); if (!value) { |