aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-04-07 10:10:01 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-04-07 10:16:09 +0200
commit4ae5e72128f605d0fc25bba1d42c0434375d712e (patch)
treec68e11bcbe036d94eed2712daa29a058354c76ab /src
parentf4e1c347cf1861595609ba841d35c4a59b50bde2 (diff)
Show error message if ReadConfigFile fails
A runaway exception was raised if ReadConfigFile fails (usually due to a parse error in bitcoin.conf). Show an error message instead. Fixes #4013.
Diffstat (limited to 'src')
-rw-r--r--src/bitcoin-cli.cpp7
-rw-r--r--src/bitcoind.cpp8
-rw-r--r--src/qt/bitcoin.cpp8
3 files changed, 20 insertions, 3 deletions
diff --git a/src/bitcoin-cli.cpp b/src/bitcoin-cli.cpp
index 817369fe95..ca6950a162 100644
--- a/src/bitcoin-cli.cpp
+++ b/src/bitcoin-cli.cpp
@@ -27,7 +27,12 @@ static bool AppInitRPC(int argc, char* argv[])
fprintf(stderr, "Error: Specified data directory \"%s\" does not exist.\n", mapArgs["-datadir"].c_str());
return false;
}
- ReadConfigFile(mapArgs, mapMultiArgs);
+ try {
+ ReadConfigFile(mapArgs, mapMultiArgs);
+ } catch(std::exception &e) {
+ fprintf(stderr,"Error reading configuration file: %s\n", e.what());
+ return false;
+ }
// Check for -testnet or -regtest parameter (TestNet() calls are only valid after this clause)
if (!SelectParamsFromCommandLine()) {
fprintf(stderr, "Error: Invalid combination of -regtest and -testnet.\n");
diff --git a/src/bitcoind.cpp b/src/bitcoind.cpp
index 4882a00532..17aa0c9d4b 100644
--- a/src/bitcoind.cpp
+++ b/src/bitcoind.cpp
@@ -70,7 +70,13 @@ bool AppInit(int argc, char* argv[])
fprintf(stderr, "Error: Specified data directory \"%s\" does not exist.\n", mapArgs["-datadir"].c_str());
return false;
}
- ReadConfigFile(mapArgs, mapMultiArgs);
+ try
+ {
+ ReadConfigFile(mapArgs, mapMultiArgs);
+ } catch(std::exception &e) {
+ fprintf(stderr,"Error reading configuration file: %s\n", e.what());
+ return false;
+ }
// Check for -testnet or -regtest parameter (TestNet() calls are only valid after this clause)
if (!SelectParamsFromCommandLine()) {
fprintf(stderr, "Error: Invalid combination of -regtest and -testnet.\n");
diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp
index 0db4308bf6..696e65ec19 100644
--- a/src/qt/bitcoin.cpp
+++ b/src/qt/bitcoin.cpp
@@ -507,7 +507,13 @@ int main(int argc, char *argv[])
QObject::tr("Error: Specified data directory \"%1\" does not exist.").arg(QString::fromStdString(mapArgs["-datadir"])));
return 1;
}
- ReadConfigFile(mapArgs, mapMultiArgs);
+ try {
+ ReadConfigFile(mapArgs, mapMultiArgs);
+ } catch(std::exception &e) {
+ QMessageBox::critical(0, QObject::tr("Bitcoin"),
+ QObject::tr("Error: Cannot parse configuration file: %1. Only use key=value syntax.").arg(e.what()));
+ return false;
+ }
/// 7. Determine network (and switch to network specific options)
// - Do not call Params() before this step