From de96e8347dbe404b9c91b9e1c1cf4a4161ee6454 Mon Sep 17 00:00:00 2001 From: catbref Date: Tue, 4 Jun 2019 09:13:03 +0100 Subject: [PATCH] Move handling of GET_PEERS from Controller to Network. On sync fail, only update outbound peer info in repository to help prevent useless 'known peer' entries. --- .../java/org/qora/controller/Controller.java | 25 ++++++++----------- src/main/java/org/qora/network/Network.java | 6 +++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/qora/controller/Controller.java b/src/main/java/org/qora/controller/Controller.java index 22ba78d5..973e3601 100644 --- a/src/main/java/org/qora/controller/Controller.java +++ b/src/main/java/org/qora/controller/Controller.java @@ -292,14 +292,17 @@ public class Controller extends Thread { LOGGER.info(String.format("Failed to synchronize with peer %s (%s) - cooling off", peer, syncResult.name())); // Don't use this peer again for a while - try (final Repository repository = RepositoryManager.getRepository()) { - PeerData peerData = peer.getPeerData(); - peerData.setLastMisbehaved(NTP.getTime()); - repository.getNetworkRepository().save(peerData); - repository.saveChanges(); - } catch (DataException e) { - LOGGER.warn("Repository issue while updating peer synchronization info", e); - } + PeerData peerData = peer.getPeerData(); + peerData.setLastMisbehaved(NTP.getTime()); + + // Only save to repository if outbound peer + if (peer.isOutbound()) + try (final Repository repository = RepositoryManager.getRepository()) { + repository.getNetworkRepository().save(peerData); + repository.saveChanges(); + } catch (DataException e) { + LOGGER.warn("Repository issue while updating peer synchronization info", e); + } break; case NO_REPLY: @@ -616,12 +619,6 @@ public class Controller extends Thread { } break; - case GET_PEERS: - // Send our known peers - if (!peer.sendMessage(Network.getInstance().buildPeersMessage(peer))) - peer.disconnect("failed to send peers list"); - break; - default: LOGGER.debug(String.format("Unhandled %s message [ID %d] from peer %s", message.getType().name(), message.getId(), peer)); break; diff --git a/src/main/java/org/qora/network/Network.java b/src/main/java/org/qora/network/Network.java index c4e9feed..d68115c4 100644 --- a/src/main/java/org/qora/network/Network.java +++ b/src/main/java/org/qora/network/Network.java @@ -472,6 +472,12 @@ public class Network extends Thread { mergePeers(peerV2Addresses); break; + case GET_PEERS: + // Send our known peers + if (!peer.sendMessage(buildPeersMessage(peer))) + peer.disconnect("failed to send peers list"); + break; + default: // Bump up to controller for possible action Controller.getInstance().onNetworkMessage(peer, message);