aboutsummaryrefslogtreecommitdiff
path: root/rpc.cpp
diff options
context:
space:
mode:
authors_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>2010-12-12 18:38:02 +0000
committers_nakamoto <s_nakamoto@1a98c847-1fd6-4fd8-948a-caf3550aa51b>2010-12-12 18:38:02 +0000
commit986b5e257e2bb9d7aaed5111ca335732f8808b2d (patch)
tree608ca859532589da9862dc4179812a6caf17e872 /rpc.cpp
parent97ee01ad898b0699c2319a1283313881ef4ba430 (diff)
downloadbitcoin-986b5e257e2bb9d7aaed5111ca335732f8808b2d.tar.xz
correction
git-svn-id: https://bitcoin.svn.sourceforge.net/svnroot/bitcoin/trunk@200 1a98c847-1fd6-4fd8-948a-caf3550aa51b
Diffstat (limited to 'rpc.cpp')
-rw-r--r--rpc.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/rpc.cpp b/rpc.cpp
index 49e87e56af..b9ed61de73 100644
--- a/rpc.cpp
+++ b/rpc.cpp
@@ -1178,6 +1178,31 @@ pair<string, rpcfn_type> pCallTable[] =
};
map<string, rpcfn_type> mapCallTable(pCallTable, pCallTable + sizeof(pCallTable)/sizeof(pCallTable[0]));
+string pAllowInSafeMode[] =
+{
+ "help",
+ "stop",
+ "getblockcount",
+ "getblocknumber",
+ "getconnectioncount",
+ "getdifficulty",
+ "getgenerate",
+ "setgenerate",
+ "gethashespersec",
+ "getinfo",
+ "getnewaddress",
+ "getaccountaddress",
+ "setlabel",
+ "getaccount",
+ "getlabel", // deprecated
+ "getaddressesbyaccount",
+ "getaddressesbylabel", // deprecated
+ "backupwallet",
+ "validateaddress",
+ "getwork",
+};
+set<string> setAllowInSafeMode(pAllowInSafeMode, pAllowInSafeMode + sizeof(pAllowInSafeMode)/sizeof(pAllowInSafeMode[0]));
+
@@ -1615,6 +1640,11 @@ void ThreadRPCServer2(void* parg)
if (mi == mapCallTable.end())
throw JSONRPCError(-32601, "Method not found");
+ // Observe safe mode
+ string strWarning = GetWarnings("rpc");
+ if (strWarning != "" && !GetBoolArg("-disablesafemode") && !setAllowInSafeMode.count(strMethod))
+ throw JSONRPCError(-2, string("Safe mode: ") + strWarning);
+
try
{
// Execute