aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJon Lund Steffensen <jonlst@gmail.com>2013-03-26 02:38:24 +0100
committerLuke Dashjr <luke-jr+git@utopios.org>2016-10-24 10:23:58 +0000
commite38993bb36801d492cad87479b8473794f19c9da (patch)
tree805ddc37482556fac351fa2a9e20d0e93219ef2b /src
parent7c9a98aac843c9efabd8653caebc35e968b2f335 (diff)
downloadbitcoin-e38993bb36801d492cad87479b8473794f19c9da.tar.xz
RPC: Add "togglenetwork" method to toggle network activity temporarily
RPC command "togglenetwork" toggles network and returns new state after command. RPC command "getinfo" returns "networkactive" field in output.
Diffstat (limited to 'src')
-rw-r--r--src/net.h1
-rw-r--r--src/rpc/misc.cpp4
-rw-r--r--src/rpc/net.cpp19
3 files changed, 23 insertions, 1 deletions
diff --git a/src/net.h b/src/net.h
index 6912c0f97b..1d911664ff 100644
--- a/src/net.h
+++ b/src/net.h
@@ -131,6 +131,7 @@ public:
bool Start(boost::thread_group& threadGroup, CScheduler& scheduler, std::string& strNodeError, Options options);
void Stop();
bool BindListenPort(const CService &bindAddr, std::string& strError, bool fWhitelisted = false);
+ bool GetNetworkActive() const { return fNetworkActive; };
void SetNetworkActive(bool active);
bool OpenNetworkConnection(const CAddress& addrConnect, bool fCountFailure, CSemaphoreGrant *grantOutbound = NULL, const char *strDest = NULL, bool fOneShot = false, bool fFeeler = false);
bool CheckIncomingNonce(uint64_t nonce);
diff --git a/src/rpc/misc.cpp b/src/rpc/misc.cpp
index 5afcf6353c..4bfcc9387c 100644
--- a/src/rpc/misc.cpp
+++ b/src/rpc/misc.cpp
@@ -89,8 +89,10 @@ UniValue getinfo(const UniValue& params, bool fHelp)
#endif
obj.push_back(Pair("blocks", (int)chainActive.Height()));
obj.push_back(Pair("timeoffset", GetTimeOffset()));
- if(g_connman)
+ if (g_connman) {
+ obj.push_back(Pair("networkactive", g_connman->GetNetworkActive()));
obj.push_back(Pair("connections", (int)g_connman->GetNodeCount(CConnman::CONNECTIONS_ALL)));
+ }
obj.push_back(Pair("proxy", (proxy.IsValid() ? proxy.proxy.ToStringIPPort() : string())));
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
obj.push_back(Pair("testnet", Params().TestnetToBeDeprecatedFieldRPC()));
diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp
index b011029f51..7f5b107997 100644
--- a/src/rpc/net.cpp
+++ b/src/rpc/net.cpp
@@ -571,6 +571,24 @@ UniValue clearbanned(const UniValue& params, bool fHelp)
return NullUniValue;
}
+UniValue togglenetwork(const JSONRPCRequest& request)
+{
+ if (request.fHelp || request.params.size() != 0) {
+ throw runtime_error(
+ "togglenetwork\n"
+ "Toggle all network activity temporarily."
+ );
+ }
+
+ if (!g_connman) {
+ throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Peer-to-peer functionality missing or disabled");
+ }
+
+ g_connman->SetNetworkActive(!g_connman->GetNetworkActive());
+
+ return g_connman->GetNetworkActive();
+}
+
static const CRPCCommand commands[] =
{ // category name actor (function) okSafeMode
// --------------------- ------------------------ ----------------------- ----------
@@ -585,6 +603,7 @@ static const CRPCCommand commands[] =
{ "network", "setban", &setban, true },
{ "network", "listbanned", &listbanned, true },
{ "network", "clearbanned", &clearbanned, true },
+ { "network", "togglenetwork", &togglenetwork, true, },
};
void RegisterNetRPCCommands(CRPCTable &t)