diff options
author | Jon Lund Steffensen <jonlst@gmail.com> | 2013-03-26 02:38:24 +0100 |
---|---|---|
committer | Luke Dashjr <luke-jr+git@utopios.org> | 2016-10-24 10:23:58 +0000 |
commit | e38993bb36801d492cad87479b8473794f19c9da (patch) | |
tree | 805ddc37482556fac351fa2a9e20d0e93219ef2b | |
parent | 7c9a98aac843c9efabd8653caebc35e968b2f335 (diff) |
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.
-rw-r--r-- | src/net.h | 1 | ||||
-rw-r--r-- | src/rpc/misc.cpp | 4 | ||||
-rw-r--r-- | src/rpc/net.cpp | 19 |
3 files changed, 23 insertions, 1 deletions
@@ -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) |