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 /src | |
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.
Diffstat (limited to 'src')
-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) |