Skip to content

Commit 2279da9

Browse files
committed
address comment
1 parent 4af8f7d commit 2279da9

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

src/main/java/org/ethereum/beacon/discovery/message/handler/DefaultExternalAddressSelector.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import static com.google.common.base.Preconditions.checkState;
88

99
import com.google.common.annotations.VisibleForTesting;
10+
import java.net.Inet4Address;
1011
import java.net.Inet6Address;
1112
import java.net.InetSocketAddress;
1213
import java.time.Duration;
@@ -60,8 +61,8 @@ public void onExternalAddressReport(
6061
// Select best address per IP family independently to support dual-stack auto-discovery.
6162
// Without per-family selection, the dominant IP family (usually IPv4) always wins
6263
// and the other family's ENR fields are never populated.
63-
selectExternalAddress(false).ifPresent(this::maybeUpdateAddress);
64-
selectExternalAddress(true).ifPresent(this::maybeUpdateAddress);
64+
selectExternalIPV4Address().ifPresent(this::maybeUpdateAddress);
65+
selectExternalIPV6Address().ifPresent(this::maybeUpdateAddress);
6566
}
6667

6768
private void removeStaleAddresses(final Instant now) {
@@ -108,9 +109,17 @@ private void maybeUpdateAddress(final InetSocketAddress selectedAddress) {
108109
}
109110
}
110111

111-
private Optional<InetSocketAddress> selectExternalAddress(final boolean ipv6) {
112+
private Optional<InetSocketAddress> selectExternalIPV4Address() {
112113
return reportedAddresses.entrySet().stream()
113-
.filter(entry -> (entry.getKey().getAddress() instanceof Inet6Address) == ipv6)
114+
.filter(entry -> (entry.getKey().getAddress() instanceof Inet4Address))
115+
.filter(entry -> entry.getValue().getReportCount() >= MIN_CONFIRMATIONS)
116+
.max(Map.Entry.comparingByValue(Comparator.comparing(ReportData::getReportCount)))
117+
.map(Map.Entry::getKey);
118+
}
119+
120+
private Optional<InetSocketAddress> selectExternalIPV6Address() {
121+
return reportedAddresses.entrySet().stream()
122+
.filter(entry -> (entry.getKey().getAddress() instanceof Inet6Address))
114123
.filter(entry -> entry.getValue().getReportCount() >= MIN_CONFIRMATIONS)
115124
.max(Map.Entry.comparingByValue(Comparator.comparing(ReportData::getReportCount)))
116125
.map(Map.Entry::getKey);

0 commit comments

Comments
 (0)