From a9b9af8102edc18b42c4f64de03399ad93a694b4 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Wed, 29 Mar 2023 00:12:38 +0200 Subject: [PATCH] PeerGroup: check required services on discovered addresses via `addr/addrv2` If the discovered peer has the required services, mark it with a slightly higher priority than peers discovered via `PeerDiscovery`. --- core/src/main/java/org/bitcoinj/core/PeerGroup.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java index b6f719405..85da43459 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java +++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java @@ -319,8 +319,10 @@ public class PeerGroup implements TransactionBroadcaster { Collections.shuffle(addresses); int numAdded = 0; for (PeerAddress address : addresses) { - // Add to inactive pool. - boolean added = addInactive(address, 0); + if (!address.getServices().has(requiredServices)) + continue; + // Add to inactive pool with slightly elevated priority because services fit. + boolean added = addInactive(address, 1); if (added) numAdded++; // Limit addresses picked per message.