diff --git a/doc/release-notes-19725.md b/doc/release-notes-19725.md new file mode 100644 index 0000000000000..1754c723fe7ab --- /dev/null +++ b/doc/release-notes-19725.md @@ -0,0 +1,10 @@ + +Updated RPCs +------------ + +- The `getpeerinfo` RPC no longer returns the `addnode` field by default. This + field will be fully removed in the next major release. It can be accessed + with the configuration option `-deprecatedrpc=getpeerinfo_addnode`. However, + it is recommended to instead use the `connection_type` field (it will return + `manual` when addnode is true). (#6033) + diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index 5ad76307118d6..d3e38f4c65243 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -145,7 +145,8 @@ static RPCHelpMan getpeerinfo() {RPCResult::Type::NUM, "version", "The peer version, such as 70001"}, {RPCResult::Type::STR, "subver", "The string version"}, {RPCResult::Type::BOOL, "inbound", "Inbound (true) or Outbound (false)"}, - {RPCResult::Type::BOOL, "addnode", "Whether connection was due to addnode/-connect or if it was an automatic/inbound connection"}, + {RPCResult::Type::BOOL, "addnode", "Whether connection was due to addnode/-connect or if it was an automatic/inbound connection\n" + "(DEPRECATED, returned only if the config option -deprecatedrpc=getpeerinfo_addnode is passed)"}, {RPCResult::Type::BOOL, "masternode", "Whether connection was due to masternode connection attempt"}, {RPCResult::Type::NUM, "banscore", "The ban score (DEPRECATED, returned only if config option -deprecatedrpc=banscore is passed)"}, {RPCResult::Type::NUM, "startingheight", "The starting height (block) of the peer"}, @@ -242,7 +243,10 @@ static RPCHelpMan getpeerinfo() // their ver message. obj.pushKV("subver", stats.cleanSubVer); obj.pushKV("inbound", stats.fInbound); - obj.pushKV("addnode", stats.m_manual_connection); + if (IsDeprecatedRPCEnabled("getpeerinfo_addnode")) { + // addnode is deprecated in v0.21 for removal in v0.22 + obj.pushKV("addnode", stats.m_manual_connection); + } obj.pushKV("masternode", stats.m_masternode_connection); if (fStateStats) { if (IsDeprecatedRPCEnabled("banscore")) { diff --git a/test/functional/rpc_getpeerinfo_banscore_deprecation.py b/test/functional/rpc_getpeerinfo_deprecation.py similarity index 51% rename from test/functional/rpc_getpeerinfo_banscore_deprecation.py rename to test/functional/rpc_getpeerinfo_deprecation.py index b830248e1e23f..340a66e12f389 100755 --- a/test/functional/rpc_getpeerinfo_banscore_deprecation.py +++ b/test/functional/rpc_getpeerinfo_deprecation.py @@ -2,23 +2,37 @@ # Copyright (c) 2020 The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. -"""Test deprecation of getpeerinfo RPC banscore field.""" +"""Test deprecation of getpeerinfo RPC fields.""" from test_framework.test_framework import BitcoinTestFramework -class GetpeerinfoBanscoreDeprecationTest(BitcoinTestFramework): +class GetpeerinfoDeprecationTest(BitcoinTestFramework): def set_test_params(self): self.num_nodes = 2 self.extra_args = [[], ["-deprecatedrpc=banscore"]] def run_test(self): + self.test_banscore_deprecation() + self.test_addnode_deprecation() + + def test_banscore_deprecation(self): self.log.info("Test getpeerinfo by default no longer returns a banscore field") assert "banscore" not in self.nodes[0].getpeerinfo()[0].keys() self.log.info("Test getpeerinfo returns banscore with -deprecatedrpc=banscore") assert "banscore" in self.nodes[1].getpeerinfo()[0].keys() + def test_addnode_deprecation(self): + self.restart_node(1, ["-deprecatedrpc=getpeerinfo_addnode"]) + self.connect_nodes(0, 1) + + self.log.info("Test getpeerinfo by default no longer returns an addnode field") + assert "addnode" not in self.nodes[0].getpeerinfo()[0].keys() + + self.log.info("Test getpeerinfo returns addnode with -deprecatedrpc=addnode") + assert "addnode" in self.nodes[1].getpeerinfo()[0].keys() + if __name__ == "__main__": - GetpeerinfoBanscoreDeprecationTest().main() + GetpeerinfoDeprecationTest().main() diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py index 2605b5341b518..33cece9d7aec9 100755 --- a/test/functional/test_runner.py +++ b/test/functional/test_runner.py @@ -332,7 +332,7 @@ 'feature_config_args.py', 'feature_settings.py', 'rpc_getdescriptorinfo.py', - 'rpc_getpeerinfo_banscore_deprecation.py', + 'rpc_getpeerinfo_deprecation.py', 'rpc_help.py', 'feature_help.py', 'feature_blockfilterindex_prune.py'