aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--README.md2
-rw-r--r--src/bitcoinrpc.cpp130
-rw-r--r--src/bitcoinrpc.h2
-rw-r--r--src/bloom.cpp4
5 files changed, 75 insertions, 67 deletions
diff --git a/.gitignore b/.gitignore
index b11949171e..a34921b3ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,10 @@ src/test_bitcoin
Makefile
bitcoin-qt
+# Unit-tests
+Makefile.test
+bitcoin-qt_test
+
# Resources cpp
qrc_*.cpp
diff --git a/README.md b/README.md
index ce9bfae872..f1a860953f 100644
--- a/README.md
+++ b/README.md
@@ -60,7 +60,7 @@ submit new unit tests for old code.
Unit tests for the core code are in `src/test/`. To compile and run them:
- cd src; make -f makefile.linux test
+ cd src; make -f makefile.unix test
Unit tests for the GUI code are in `src/qt/test/`. To compile and run them:
diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp
index 230a248422..4a6cc42efc 100644
--- a/src/bitcoinrpc.cpp
+++ b/src/bitcoinrpc.cpp
@@ -194,70 +194,70 @@ Value stop(const Array& params, bool fHelp)
static const CRPCCommand vRPCCommands[] =
-{ // name function safemd unlocked
- // ------------------------ ----------------------- ------ --------
- { "help", &help, true, true },
- { "stop", &stop, true, true },
- { "getblockcount", &getblockcount, true, false },
- { "getconnectioncount", &getconnectioncount, true, false },
- { "getpeerinfo", &getpeerinfo, true, false },
- { "addnode", &addnode, true, true },
- { "getaddednodeinfo", &getaddednodeinfo, true, true },
- { "getdifficulty", &getdifficulty, true, false },
- { "getgenerate", &getgenerate, true, false },
- { "setgenerate", &setgenerate, true, false },
- { "gethashespersec", &gethashespersec, true, false },
- { "getinfo", &getinfo, true, false },
- { "getmininginfo", &getmininginfo, true, false },
- { "getnewaddress", &getnewaddress, true, false },
- { "getaccountaddress", &getaccountaddress, true, false },
- { "setaccount", &setaccount, true, false },
- { "getaccount", &getaccount, false, false },
- { "getaddressesbyaccount", &getaddressesbyaccount, true, false },
- { "sendtoaddress", &sendtoaddress, false, false },
- { "getreceivedbyaddress", &getreceivedbyaddress, false, false },
- { "getreceivedbyaccount", &getreceivedbyaccount, false, false },
- { "listreceivedbyaddress", &listreceivedbyaddress, false, false },
- { "listreceivedbyaccount", &listreceivedbyaccount, false, false },
- { "backupwallet", &backupwallet, true, false },
- { "keypoolrefill", &keypoolrefill, true, false },
- { "walletpassphrase", &walletpassphrase, true, false },
- { "walletpassphrasechange", &walletpassphrasechange, false, false },
- { "walletlock", &walletlock, true, false },
- { "encryptwallet", &encryptwallet, false, false },
- { "validateaddress", &validateaddress, true, false },
- { "getbalance", &getbalance, false, false },
- { "move", &movecmd, false, false },
- { "sendfrom", &sendfrom, false, false },
- { "sendmany", &sendmany, false, false },
- { "addmultisigaddress", &addmultisigaddress, false, false },
- { "createmultisig", &createmultisig, true, true },
- { "getrawmempool", &getrawmempool, true, false },
- { "getblock", &getblock, false, false },
- { "getblockhash", &getblockhash, false, false },
- { "gettransaction", &gettransaction, false, false },
- { "listtransactions", &listtransactions, false, false },
- { "listaddressgroupings", &listaddressgroupings, false, false },
- { "signmessage", &signmessage, false, false },
- { "verifymessage", &verifymessage, false, false },
- { "getwork", &getwork, true, false },
- { "listaccounts", &listaccounts, false, false },
- { "settxfee", &settxfee, false, false },
- { "getblocktemplate", &getblocktemplate, true, false },
- { "submitblock", &submitblock, false, false },
- { "listsinceblock", &listsinceblock, false, false },
- { "dumpprivkey", &dumpprivkey, true, false },
- { "importprivkey", &importprivkey, false, false },
- { "listunspent", &listunspent, false, false },
- { "getrawtransaction", &getrawtransaction, false, false },
- { "createrawtransaction", &createrawtransaction, false, false },
- { "decoderawtransaction", &decoderawtransaction, false, false },
- { "signrawtransaction", &signrawtransaction, false, false },
- { "sendrawtransaction", &sendrawtransaction, false, false },
- { "gettxoutsetinfo", &gettxoutsetinfo, true, false },
- { "gettxout", &gettxout, true, false },
- { "lockunspent", &lockunspent, false, false },
- { "listlockunspent", &listlockunspent, false, false },
+{ // name actor (function) okSafeMode threadSafe
+ // ------------------------ ----------------------- ---------- ----------
+ { "help", &help, true, true },
+ { "stop", &stop, true, true },
+ { "getblockcount", &getblockcount, true, false },
+ { "getconnectioncount", &getconnectioncount, true, false },
+ { "getpeerinfo", &getpeerinfo, true, false },
+ { "addnode", &addnode, true, true },
+ { "getaddednodeinfo", &getaddednodeinfo, true, true },
+ { "getdifficulty", &getdifficulty, true, false },
+ { "getgenerate", &getgenerate, true, false },
+ { "setgenerate", &setgenerate, true, false },
+ { "gethashespersec", &gethashespersec, true, false },
+ { "getinfo", &getinfo, true, false },
+ { "getmininginfo", &getmininginfo, true, false },
+ { "getnewaddress", &getnewaddress, true, false },
+ { "getaccountaddress", &getaccountaddress, true, false },
+ { "setaccount", &setaccount, true, false },
+ { "getaccount", &getaccount, false, false },
+ { "getaddressesbyaccount", &getaddressesbyaccount, true, false },
+ { "sendtoaddress", &sendtoaddress, false, false },
+ { "getreceivedbyaddress", &getreceivedbyaddress, false, false },
+ { "getreceivedbyaccount", &getreceivedbyaccount, false, false },
+ { "listreceivedbyaddress", &listreceivedbyaddress, false, false },
+ { "listreceivedbyaccount", &listreceivedbyaccount, false, false },
+ { "backupwallet", &backupwallet, true, false },
+ { "keypoolrefill", &keypoolrefill, true, false },
+ { "walletpassphrase", &walletpassphrase, true, false },
+ { "walletpassphrasechange", &walletpassphrasechange, false, false },
+ { "walletlock", &walletlock, true, false },
+ { "encryptwallet", &encryptwallet, false, false },
+ { "validateaddress", &validateaddress, true, false },
+ { "getbalance", &getbalance, false, false },
+ { "move", &movecmd, false, false },
+ { "sendfrom", &sendfrom, false, false },
+ { "sendmany", &sendmany, false, false },
+ { "addmultisigaddress", &addmultisigaddress, false, false },
+ { "createmultisig", &createmultisig, true, true },
+ { "getrawmempool", &getrawmempool, true, false },
+ { "getblock", &getblock, false, false },
+ { "getblockhash", &getblockhash, false, false },
+ { "gettransaction", &gettransaction, false, false },
+ { "listtransactions", &listtransactions, false, false },
+ { "listaddressgroupings", &listaddressgroupings, false, false },
+ { "signmessage", &signmessage, false, false },
+ { "verifymessage", &verifymessage, false, false },
+ { "getwork", &getwork, true, false },
+ { "listaccounts", &listaccounts, false, false },
+ { "settxfee", &settxfee, false, false },
+ { "getblocktemplate", &getblocktemplate, true, false },
+ { "submitblock", &submitblock, false, false },
+ { "listsinceblock", &listsinceblock, false, false },
+ { "dumpprivkey", &dumpprivkey, true, false },
+ { "importprivkey", &importprivkey, false, false },
+ { "listunspent", &listunspent, false, false },
+ { "getrawtransaction", &getrawtransaction, false, false },
+ { "createrawtransaction", &createrawtransaction, false, false },
+ { "decoderawtransaction", &decoderawtransaction, false, false },
+ { "signrawtransaction", &signrawtransaction, false, false },
+ { "sendrawtransaction", &sendrawtransaction, false, false },
+ { "gettxoutsetinfo", &gettxoutsetinfo, true, false },
+ { "gettxout", &gettxout, true, false },
+ { "lockunspent", &lockunspent, false, false },
+ { "listlockunspent", &listlockunspent, false, false },
};
CRPCTable::CRPCTable()
@@ -1072,7 +1072,7 @@ json_spirit::Value CRPCTable::execute(const std::string &strMethod, const json_s
// Execute
Value result;
{
- if (pcmd->unlocked)
+ if (pcmd->threadSafe)
result = pcmd->actor(params, false);
else {
LOCK2(cs_main, pwalletMain->cs_wallet);
diff --git a/src/bitcoinrpc.h b/src/bitcoinrpc.h
index 36bfbe3eef..6a3554aea6 100644
--- a/src/bitcoinrpc.h
+++ b/src/bitcoinrpc.h
@@ -95,7 +95,7 @@ public:
std::string name;
rpcfn_type actor;
bool okSafeMode;
- bool unlocked;
+ bool threadSafe;
};
/**
diff --git a/src/bloom.cpp b/src/bloom.cpp
index 36f5e50134..d9ec2efa81 100644
--- a/src/bloom.cpp
+++ b/src/bloom.cpp
@@ -37,6 +37,8 @@ inline unsigned int CBloomFilter::Hash(unsigned int nHashNum, const std::vector<
void CBloomFilter::insert(const vector<unsigned char>& vKey)
{
+ if (vData.size() == 1 && vData[0] == 0xff)
+ return;
for (unsigned int i = 0; i < nHashFuncs; i++)
{
unsigned int nIndex = Hash(i, vKey);
@@ -61,6 +63,8 @@ void CBloomFilter::insert(const uint256& hash)
bool CBloomFilter::contains(const vector<unsigned char>& vKey) const
{
+ if (vData.size() == 1 && vData[0] == 0xff)
+ return true;
for (unsigned int i = 0; i < nHashFuncs; i++)
{
unsigned int nIndex = Hash(i, vKey);