diff --git a/src/wallet/init.cpp b/src/wallet/init.cpp --- a/src/wallet/init.cpp +++ b/src/wallet/init.cpp @@ -174,23 +174,23 @@ } } - int zapwallettxes = gArgs.GetArg("-zapwallettxes", 0); + bool zapwallettxes = gArgs.GetBoolArg("-zapwallettxes", false); // -zapwallettxes implies dropping the mempool on startup - if (zapwallettxes != 0 && gArgs.SoftSetBoolArg("-persistmempool", false)) { - LogPrintf("%s: parameter interaction: -zapwallettxes=%s -> setting " - "-persistmempool=0\n", - __func__, zapwallettxes); + if (zapwallettxes && gArgs.SoftSetBoolArg("-persistmempool", false)) { + LogPrintf("%s: parameter interaction: -zapwallettxes enabled -> " + "setting -persistmempool=0\n", + __func__); } // -zapwallettxes implies a rescan - if (zapwallettxes != 0) { + if (zapwallettxes) { if (is_multiwallet) { return InitError( strprintf("%s is only allowed with a single wallet file", "-zapwallettxes")); } if (gArgs.SoftSetBoolArg("-rescan", true)) { - LogPrintf("%s: parameter interaction: -zapwallettxes= -> " + LogPrintf("%s: parameter interaction: -zapwallettxes enabled -> " "setting -rescan=1\n", __func__); } diff --git a/test/functional/wallet_multiwallet.py b/test/functional/wallet_multiwallet.py --- a/test/functional/wallet_multiwallet.py +++ b/test/functional/wallet_multiwallet.py @@ -114,6 +114,54 @@ self.nodes[0].assert_start_raises_init_error( ['-walletdir=' + not_a_dir], 'Error: Specified -walletdir "' + not_a_dir + '" is not a directory') + self.log.info("Do not allow -zapwallettxes with multiwallet") + self.nodes[0].assert_start_raises_init_error( + [ + '-zapwallettxes', + '-wallet=w1', + '-wallet=w2'], + "Error: -zapwallettxes is only allowed with a single wallet file") + self.nodes[0].assert_start_raises_init_error( + [ + '-zapwallettxes=1', + '-wallet=w1', + '-wallet=w2'], + "Error: -zapwallettxes is only allowed with a single wallet file") + self.nodes[0].assert_start_raises_init_error( + [ + '-zapwallettxes=2', + '-wallet=w1', + '-wallet=w2'], + "Error: -zapwallettxes is only allowed with a single wallet file") + + self.log.info("Do not allow -salvagewallet with multiwallet") + self.nodes[0].assert_start_raises_init_error( + [ + '-salvagewallet', + '-wallet=w1', + '-wallet=w2'], + "Error: -salvagewallet is only allowed with a single wallet file") + self.nodes[0].assert_start_raises_init_error( + [ + '-salvagewallet=1', + '-wallet=w1', + '-wallet=w2'], + "Error: -salvagewallet is only allowed with a single wallet file") + + self.log.info("Do not allow -upgradewallet with multiwallet") + self.nodes[0].assert_start_raises_init_error( + [ + '-upgradewallet', + '-wallet=w1', + '-wallet=w2'], + "Error: -upgradewallet is only allowed with a single wallet file") + self.nodes[0].assert_start_raises_init_error( + [ + '-upgradewallet=1', + '-wallet=w1', + '-wallet=w2'], + "Error: -upgradewallet is only allowed with a single wallet file") + # if wallets/ doesn't exist, datadir should be the default wallet dir wallet_dir2 = data_dir('walletdir') os.rename(wallet_dir(), wallet_dir2)