Browse Source

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.
pull/1/head
Jon Lund Steffensen 10 years ago committed by Luke Dashjr
parent
commit
e38993bb36
  1. 1
      src/net.h
  2. 4
      src/rpc/misc.cpp
  3. 19
      src/rpc/net.cpp

1
src/net.h

@ -131,6 +131,7 @@ public: @@ -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);

4
src/rpc/misc.cpp

@ -89,8 +89,10 @@ UniValue getinfo(const UniValue& params, bool fHelp) @@ -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()));

19
src/rpc/net.cpp

@ -571,6 +571,24 @@ UniValue clearbanned(const UniValue& params, bool fHelp) @@ -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[] = @@ -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)

Loading…
Cancel
Save