From a81188e28f4b2c5742967b9ab166af0960cb0884 Mon Sep 17 00:00:00 2001 From: chimp1984 Date: Wed, 30 Dec 2020 06:12:37 -0500 Subject: [PATCH] Disconnect nodes at RequestDataManager.onMessage < 1.5.1 --- .../p2p/peers/getdata/RequestDataManager.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataManager.java b/p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataManager.java index 38d2bd3ca4b..5fcc153edab 100644 --- a/p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataManager.java +++ b/p2p/src/main/java/bisq/network/p2p/peers/getdata/RequestDataManager.java @@ -31,6 +31,7 @@ import bisq.common.Timer; import bisq.common.UserThread; +import bisq.common.app.Version; import bisq.common.proto.network.NetworkEnvelope; import javax.inject.Inject; @@ -56,9 +57,9 @@ public class RequestDataManager implements MessageListener, ConnectionListener, private static final long RETRY_DELAY_SEC = 10; private static final long CLEANUP_TIMER = 120; // How many seeds we request the PreliminaryGetDataRequest from - private static int NUM_SEEDS_FOR_PRELIMINARY_REQUEST = 2; + private static int NUM_SEEDS_FOR_PRELIMINARY_REQUEST = 16; // how many seeds additional to the first responding PreliminaryGetDataRequest seed we request the GetUpdatedDataRequest from - private static int NUM_ADDITIONAL_SEEDS_FOR_UPDATE_REQUEST = 1; + private static int NUM_ADDITIONAL_SEEDS_FOR_UPDATE_REQUEST = 16; private boolean isPreliminaryDataRequest = true; /////////////////////////////////////////////////////////////////////////////////////////// @@ -261,6 +262,11 @@ public void onMessage(NetworkEnvelope networkEnvelope, Connection connection) { if (peerManager.isSeedNode(connection)) connection.setPeerType(Connection.PeerType.SEED_NODE); + GetDataRequest getDataRequest = (GetDataRequest) networkEnvelope; + if (getDataRequest.getVersion() == null || !Version.isNewVersion(getDataRequest.getVersion(), "1.5.0")) { + connection.shutDown(CloseConnectionReason.MANDATORY_CAPABILITIES_NOT_SUPPORTED); + return; + } final String uid = connection.getUid(); if (!getDataRequestHandlers.containsKey(uid)) { GetDataRequestHandler getDataRequestHandler = new GetDataRequestHandler(networkNode, dataStorage, @@ -284,7 +290,7 @@ public void onFault(String errorMessage, @Nullable Connection connection) { } }); getDataRequestHandlers.put(uid, getDataRequestHandler); - getDataRequestHandler.handle((GetDataRequest) networkEnvelope, connection); + getDataRequestHandler.handle(getDataRequest, connection); } else { log.warn("We have already a GetDataRequestHandler for that connection started. " + "We start a cleanup timer if the handler has not closed by itself in between 2 minutes.");