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.
0.14
Jon Lund Steffensen 12 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