3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-07 06:44:16 +00:00

Deduplicate peers retrieved from peer discovery. Resolves issue 260.

This commit is contained in:
Mike Hearn 2012-12-24 17:51:40 +00:00
parent 75c007fab3
commit 7d7e76a3b0

View File

@ -22,6 +22,7 @@ import com.google.bitcoin.discovery.PeerDiscovery;
import com.google.bitcoin.discovery.PeerDiscoveryException; import com.google.bitcoin.discovery.PeerDiscoveryException;
import com.google.bitcoin.utils.EventListenerInvoker; import com.google.bitcoin.utils.EventListenerInvoker;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.collect.Sets;
import com.google.common.util.concurrent.*; import com.google.common.util.concurrent.*;
import org.jboss.netty.bootstrap.ClientBootstrap; import org.jboss.netty.bootstrap.ClientBootstrap;
import org.jboss.netty.channel.*; import org.jboss.netty.channel.*;
@ -413,15 +414,16 @@ public class PeerGroup extends AbstractIdleService {
protected void discoverPeers() throws PeerDiscoveryException { protected void discoverPeers() throws PeerDiscoveryException {
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
Set<PeerAddress> addressSet = Sets.newHashSet();
for (PeerDiscovery peerDiscovery : peerDiscoverers) { for (PeerDiscovery peerDiscovery : peerDiscoverers) {
InetSocketAddress[] addresses; InetSocketAddress[] addresses;
addresses = peerDiscovery.getPeers(10, TimeUnit.SECONDS); addresses = peerDiscovery.getPeers(10, TimeUnit.SECONDS);
synchronized (inactives) { for (int i = 0; i < addresses.length; i++)
for (int i = 0; i < addresses.length; i++) { addressSet.add(new PeerAddress(addresses[i]));
inactives.add(new PeerAddress(addresses[i])); if (addressSet.size() > 0) break;
} }
if (inactives.size() > 0) break; synchronized (inactives) {
} inactives.addAll(addressSet);
} }
log.info("Peer discovery took {}msec", System.currentTimeMillis() - start); log.info("Peer discovery took {}msec", System.currentTimeMillis() - start);
} }