Browse Source

Merge pull request #4623

e84843c Broken addresses on command line no longer trigger testnet. (Ross Nicoll)
0.10
Wladimir J. van der Laan 10 years ago
parent
commit
f23869e14b
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
  1. 8
      src/base58.cpp
  2. 1
      src/base58.h
  3. 19
      src/chainparams.cpp
  4. 3
      src/chainparams.h
  5. 8
      src/qt/paymentserver.cpp

8
src/base58.cpp

@ -215,9 +215,13 @@ bool CBitcoinAddress::Set(const CTxDestination &dest) {
} }
bool CBitcoinAddress::IsValid() const { bool CBitcoinAddress::IsValid() const {
return IsValid(Params());
}
bool CBitcoinAddress::IsValid(const CChainParams &params) const {
bool fCorrectSize = vchData.size() == 20; bool fCorrectSize = vchData.size() == 20;
bool fKnownVersion = vchVersion == Params().Base58Prefix(CChainParams::PUBKEY_ADDRESS) || bool fKnownVersion = vchVersion == params.Base58Prefix(CChainParams::PUBKEY_ADDRESS) ||
vchVersion == Params().Base58Prefix(CChainParams::SCRIPT_ADDRESS); vchVersion == params.Base58Prefix(CChainParams::SCRIPT_ADDRESS);
return fCorrectSize && fKnownVersion; return fCorrectSize && fKnownVersion;
} }

1
src/base58.h

@ -104,6 +104,7 @@ public:
bool Set(const CScriptID &id); bool Set(const CScriptID &id);
bool Set(const CTxDestination &dest); bool Set(const CTxDestination &dest);
bool IsValid() const; bool IsValid() const;
bool IsValid(const CChainParams &params) const;
CBitcoinAddress() {} CBitcoinAddress() {}
CBitcoinAddress(const CTxDestination &dest) { Set(dest); } CBitcoinAddress(const CTxDestination &dest) { Set(dest); }

19
src/chainparams.cpp

@ -221,24 +221,25 @@ const CChainParams &Params() {
return *pCurrentParams; return *pCurrentParams;
} }
void SelectParams(CBaseChainParams::Network network) { CChainParams &Params(CBaseChainParams::Network network) {
SelectBaseParams(network);
switch (network) { switch (network) {
case CBaseChainParams::MAIN: case CBaseChainParams::MAIN:
pCurrentParams = &mainParams; return mainParams;
break;
case CBaseChainParams::TESTNET: case CBaseChainParams::TESTNET:
pCurrentParams = &testNetParams; return testNetParams;
break;
case CBaseChainParams::REGTEST: case CBaseChainParams::REGTEST:
pCurrentParams = &regTestParams; return regTestParams;
break;
default: default:
assert(false && "Unimplemented network"); assert(false && "Unimplemented network");
return; return mainParams;
} }
} }
void SelectParams(CBaseChainParams::Network network) {
SelectBaseParams(network);
pCurrentParams = &Params(network);
}
bool SelectParamsFromCommandLine() { bool SelectParamsFromCommandLine() {
if (!SelectBaseParamsFromCommandLine()) if (!SelectBaseParamsFromCommandLine())
return false; return false;

3
src/chainparams.h

@ -111,6 +111,9 @@ protected:
*/ */
const CChainParams &Params(); const CChainParams &Params();
/** Return parameters for the given network. */
CChainParams &Params(CBaseChainParams::Network network);
/** Sets the params returned by Params() to those for the given network. */ /** Sets the params returned by Params() to those for the given network. */
void SelectParams(CBaseChainParams::Network network); void SelectParams(CBaseChainParams::Network network);

8
src/qt/paymentserver.cpp

@ -10,6 +10,7 @@
#include "optionsmodel.h" #include "optionsmodel.h"
#include "base58.h" #include "base58.h"
#include "chainparams.h"
#include "ui_interface.h" #include "ui_interface.h"
#include "util.h" #include "util.h"
#include "wallet.h" #include "wallet.h"
@ -200,8 +201,11 @@ bool PaymentServer::ipcParseCommandLine(int argc, char* argv[])
{ {
CBitcoinAddress address(r.address.toStdString()); CBitcoinAddress address(r.address.toStdString());
SelectParams(CBaseChainParams::MAIN); if (address.IsValid(Params(CBaseChainParams::MAIN)))
if (!address.IsValid()) {
SelectParams(CBaseChainParams::MAIN);
}
else if (address.IsValid(Params(CBaseChainParams::TESTNET)))
{ {
SelectParams(CBaseChainParams::TESTNET); SelectParams(CBaseChainParams::TESTNET);
} }

Loading…
Cancel
Save