Permalink
Browse files

Connect to some well known peers first to speed up reconnection.

1 parent 50b31aa commit 4f347948905a8e52ba284e44ebd110755042b5bc f committed Jan 31, 2017
Showing with 25 additions and 1 deletion.
  1. +4 −0 conf/nxt-default.properties
  2. +21 −1 src/java/nxt/peer/Peers.java
@@ -32,6 +32,10 @@ nxt.myHallmark=
# If not set, a random selection of nxtcrypto.org and nxtbase.com nodes is used.
nxt.wellKnownPeers=192.168.0.13; burst.ninja; 176.9.101.198; 46.237.194.160; 80.150.243.95; 162.245.20.201; 119.81.44.170; 119.81.44.171
+# Connect to this many well known peers before using the peer database to get connected faster.
+# Set to 0 or comment out to disable.
+burst.connectWellKnownFirst=2
+
# Known bad peers to be blacklisted
nxt.knownBlacklistedPeers=
@@ -62,6 +62,9 @@
static final Set<String> wellKnownPeers;
static final Set<String> knownBlacklistedPeers;
+ private static final int connectWellKnownFirst;
+ private static boolean connectWellKnownFinished;
+
static final int connectTimeout;
static final int readTimeout;
static final int blacklistingPeriod;
@@ -167,6 +170,9 @@
wellKnownPeers = Collections.unmodifiableSet(new HashSet<>(wellKnownPeersList));
}
+ connectWellKnownFirst = Nxt.getIntProperty("burst.connectWellKnownFirst");
+ connectWellKnownFinished = (connectWellKnownFirst == 0);
+
List<String> knownBlacklistedPeersList = Nxt.getStringListProperty("nxt.knownBlacklistedPeers");
if (knownBlacklistedPeersList.isEmpty()) {
knownBlacklistedPeers = Collections.emptySet();
@@ -706,10 +712,24 @@ public JSONObject call() {
public static Peer getAnyPeer(Peer.State state, boolean applyPullThreshold) {
+ if(connectWellKnownFinished == false) {
+ int wellKnownConnected = 0;
+ for(Peer peer : peers.values()) {
+ if(peer.isWellKnown() && peer.getState() == Peer.State.CONNECTED) {
+ wellKnownConnected++;
+ }
+ }
+ if(wellKnownConnected >= connectWellKnownFirst) {
+ connectWellKnownFinished = true;
+ Logger.logInfoMessage("Finished connecteding to " + connectWellKnownFirst + " well known peers.");
+ }
+ }
+
List<Peer> selectedPeers = new ArrayList<>();
for (Peer peer : peers.values()) {
if (! peer.isBlacklisted() && peer.getState() == state && peer.shareAddress()
- && (!applyPullThreshold || ! Peers.enableHallmarkProtection || peer.getWeight() >= Peers.pullThreshold)) {
+ && (!applyPullThreshold || ! Peers.enableHallmarkProtection || peer.getWeight() >= Peers.pullThreshold)
+ && (connectWellKnownFinished || peer.getState() == Peer.State.CONNECTED || peer.isWellKnown())) {
selectedPeers.add(peer);
}
}

0 comments on commit 4f34794

Please sign in to comment.