Skip to content

Commit b114e2e

Browse files
Merge dashpay#6015: backport: Merge bitcoin#22043, 22169, 22135
f951ddd Merge bitcoin#22135: CRegTestParams: Use `args` instead of `gArgs`. (MarcoFalke) d613458 Merge bitcoin#22169: p2p, rpc, fuzz: various tiny follow-ups (fanquake) 72d51a7 Merge bitcoin#22043: rpc, test: addpeeraddress test coverage, code simplify/constness (MarcoFalke) Pull request description: bitcoin backports Top commit has no ACKs. Tree-SHA512: 9cd5ae1683fe1f54230e14fcd1c4e34c1ef83885d6a03a11781fafca973fc8f39743185680aaed67c01d537c2ece5f8a8b71f7c26a09557858ae4812cd9e94de
2 parents 2cad51b + f951ddd commit b114e2e

File tree

5 files changed

+41
-20
lines changed

5 files changed

+41
-20
lines changed

src/chainparams.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ class CRegTestParams : public CChainParams {
854854
nDefaultPort = 19899;
855855
nDefaultPlatformP2PPort = 22200;
856856
nDefaultPlatformHTTPPort = 22201;
857-
nPruneAfterHeight = gArgs.GetBoolArg("-fastprune", false) ? 100 : 1000;
857+
nPruneAfterHeight = args.GetBoolArg("-fastprune", false) ? 100 : 1000;
858858
m_assumed_blockchain_size = 0;
859859
m_assumed_chain_state_size = 0;
860860

src/netaddress.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,7 @@ static std::string IPv6ToString(Span<const uint8_t> a)
558558
// clang-format on
559559
}
560560

561-
static std::string OnionToString(const Span<const uint8_t>& addr)
561+
static std::string OnionToString(Span<const uint8_t> addr)
562562
{
563563
uint8_t checksum[torv3::CHECKSUM_LEN];
564564
torv3::Checksum(addr, checksum);

src/rpc/net.cpp

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -985,26 +985,22 @@ static RPCHelpMan addpeeraddress()
985985
throw JSONRPCError(RPC_CLIENT_P2P_DISABLED, "Error: Address manager functionality missing or disabled");
986986
}
987987

988-
UniValue obj(UniValue::VOBJ);
989-
990-
std::string addr_string = request.params[0].get_str();
991-
uint16_t port = request.params[1].get_int();
988+
const std::string& addr_string{request.params[0].get_str()};
989+
const uint16_t port = request.params[1].get_int();
992990

991+
UniValue obj(UniValue::VOBJ);
993992
CNetAddr net_addr;
994-
if (!LookupHost(addr_string, net_addr, false)) {
995-
obj.pushKV("success", false);
996-
return obj;
997-
}
998-
CAddress address = CAddress({net_addr, port}, ServiceFlags(NODE_NETWORK));
999-
address.nTime = GetAdjustedTime();
1000-
// The source address is set equal to the address. This is equivalent to the peer
1001-
// announcing itself.
1002-
if (!node.addrman->Add(address, address)) {
1003-
obj.pushKV("success", false);
1004-
return obj;
993+
bool success{false};
994+
995+
if (LookupHost(addr_string, net_addr, false)) {
996+
CAddress address{{net_addr, port}, ServiceFlags{NODE_NETWORK}};
997+
address.nTime = GetAdjustedTime();
998+
// The source address is set equal to the address. This is equivalent to the peer
999+
// announcing itself.
1000+
if (node.addrman->Add(address, address)) success = true;
10051001
}
10061002

1007-
obj.pushKV("success", true);
1003+
obj.pushKV("success", success);
10081004
return obj;
10091005
},
10101006
};

src/test/fuzz/deserialize.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,15 @@ FUZZ_TARGET_DESERIALIZE(coins_deserialize, {
212212
Coin coin;
213213
DeserializeFromFuzzingInput(buffer, coin);
214214
})
215-
FUZZ_TARGET_DESERIALIZE(net_address_deserialize, {
215+
FUZZ_TARGET_DESERIALIZE(netaddr_deserialize, {
216216
CNetAddr na;
217217
DeserializeFromFuzzingInput(buffer, na);
218218
if (na.IsAddrV1Compatible()) {
219219
AssertEqualAfterSerializeDeserialize(na);
220220
}
221221
AssertEqualAfterSerializeDeserialize(na, INIT_PROTO_VERSION | ADDRV2_FORMAT);
222222
})
223-
FUZZ_TARGET_DESERIALIZE(net_service_deserialize, {
223+
FUZZ_TARGET_DESERIALIZE(service_deserialize, {
224224
CService s;
225225
DeserializeFromFuzzingInput(buffer, s);
226226
if (s.IsAddrV1Compatible()) {

test/functional/rpc_net.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def run_test(self):
6666
self.test_getaddednodeinfo()
6767
self.test_service_flags()
6868
self.test_getnodeaddresses()
69+
self.test_addpeeraddress()
6970

7071
def test_connection_count(self):
7172
self.log.info("Test getconnectioncount")
@@ -256,6 +257,30 @@ def test_getnodeaddresses(self):
256257
assert_raises_rpc_error(-8, "Address count out of range", self.nodes[0].getnodeaddresses, -1)
257258
assert_raises_rpc_error(-8, "Network not recognized: Foo", self.nodes[0].getnodeaddresses, 1, "Foo")
258259

260+
def test_addpeeraddress(self):
261+
self.log.info("Test addpeeraddress")
262+
node = self.nodes[1]
263+
264+
self.log.debug("Test that addpeerinfo is a hidden RPC")
265+
# It is hidden from general help, but its detailed help may be called directly.
266+
assert "addpeerinfo" not in node.help()
267+
assert "addpeerinfo" in node.help("addpeerinfo")
268+
269+
self.log.debug("Test that adding an empty address fails")
270+
assert_equal(node.addpeeraddress(address="", port=8333), {"success": False})
271+
assert_equal(node.getnodeaddresses(count=0), [])
272+
273+
self.log.debug("Test that adding a valid address succeeds")
274+
assert_equal(node.addpeeraddress(address="1.2.3.4", port=8333), {"success": True})
275+
addrs = node.getnodeaddresses(count=0)
276+
assert_equal(len(addrs), 1)
277+
assert_equal(addrs[0]["address"], "1.2.3.4")
278+
assert_equal(addrs[0]["port"], 8333)
279+
280+
self.log.debug("Test that adding the same address again when already present fails")
281+
assert_equal(node.addpeeraddress(address="1.2.3.4", port=8333), {"success": False})
282+
assert_equal(len(node.getnodeaddresses(count=0)), 1)
283+
259284

260285
if __name__ == '__main__':
261286
NetTest().main()

0 commit comments

Comments
 (0)