forked from Qortal/qortal
Disregard misbehaved peers before counting to see if we can synchronize.
Also added simple system-tray tooltip update to show number of peers and current height.
This commit is contained in:
parent
915eebb8e5
commit
5b70f0004d
@ -35,6 +35,7 @@ import org.qora.data.transaction.ArbitraryTransactionData;
|
||||
import org.qora.data.transaction.ArbitraryTransactionData.DataType;
|
||||
import org.qora.data.transaction.TransactionData;
|
||||
import org.qora.gui.Gui;
|
||||
import org.qora.gui.SysTray;
|
||||
import org.qora.network.Network;
|
||||
import org.qora.network.Peer;
|
||||
import org.qora.network.message.ArbitraryDataMessage;
|
||||
@ -304,15 +305,12 @@ public class Controller extends Thread {
|
||||
private void potentiallySynchronize() {
|
||||
List<Peer> peers = Network.getInstance().getUniqueHandshakedPeers();
|
||||
|
||||
// Check we have enough peers to potentially synchronize
|
||||
if (peers.size() < Settings.getInstance().getMinBlockchainPeers())
|
||||
return;
|
||||
|
||||
// Disregard peers that have "misbehaved" recently
|
||||
peers.removeIf(hasPeerMisbehaved);
|
||||
|
||||
// Remove peers with unknown height, lower height or same height and same block signature (unless we don't have their block signature)
|
||||
// peers.removeIf(hasShorterBlockchain());
|
||||
// Check we have enough peers to potentially synchronize
|
||||
if (peers.size() < Settings.getInstance().getMinBlockchainPeers())
|
||||
return;
|
||||
|
||||
// Disregard peers that don't have a recent block
|
||||
final long minLatestBlockTimestamp = getMinimumLatestBlockTimestamp();
|
||||
@ -361,6 +359,7 @@ public class Controller extends Thread {
|
||||
break;
|
||||
|
||||
case OK:
|
||||
updateSysTray();
|
||||
case NOTHING_TO_DO:
|
||||
LOGGER.debug(String.format("Synchronized with peer %s (%s)", peer, syncResult.name()));
|
||||
break;
|
||||
@ -373,6 +372,15 @@ public class Controller extends Thread {
|
||||
}
|
||||
}
|
||||
|
||||
public void updateSysTray() {
|
||||
final int numberOfPeers = Network.getInstance().getUniqueHandshakedPeers().size();
|
||||
|
||||
final int height = getChainHeight();
|
||||
|
||||
String tooltip = String.format("qora-core - %d peer%s - height %d", numberOfPeers, (numberOfPeers != 1 ? "s" : ""), height);
|
||||
SysTray.getInstance().setToolTipText(tooltip);
|
||||
}
|
||||
|
||||
// Shutdown
|
||||
|
||||
public void shutdown() {
|
||||
@ -492,6 +500,12 @@ public class Controller extends Thread {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
updateSysTray();
|
||||
}
|
||||
|
||||
public void onPeerDisconnect(Peer peer) {
|
||||
updateSysTray();
|
||||
}
|
||||
|
||||
public void onNetworkMessage(Peer peer, Message message) {
|
||||
|
@ -377,6 +377,9 @@ public class Network extends Thread {
|
||||
}
|
||||
|
||||
public void onDisconnect(Peer peer) {
|
||||
// Notify Controller
|
||||
Controller.getInstance().onPeerDisconnect(peer);
|
||||
|
||||
synchronized (this.connectedPeers) {
|
||||
this.connectedPeers.remove(peer);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user