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.

This commit is contained in:
catbref 2019-06-04 09:13:03 +01:00
parent dcb8d67236
commit de96e8347d
2 changed files with 17 additions and 14 deletions

View File

@ -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())); 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 // Don't use this peer again for a while
try (final Repository repository = RepositoryManager.getRepository()) { PeerData peerData = peer.getPeerData();
PeerData peerData = peer.getPeerData(); peerData.setLastMisbehaved(NTP.getTime());
peerData.setLastMisbehaved(NTP.getTime());
repository.getNetworkRepository().save(peerData); // Only save to repository if outbound peer
repository.saveChanges(); if (peer.isOutbound())
} catch (DataException e) { try (final Repository repository = RepositoryManager.getRepository()) {
LOGGER.warn("Repository issue while updating peer synchronization info", e); repository.getNetworkRepository().save(peerData);
} repository.saveChanges();
} catch (DataException e) {
LOGGER.warn("Repository issue while updating peer synchronization info", e);
}
break; break;
case NO_REPLY: case NO_REPLY:
@ -616,12 +619,6 @@ public class Controller extends Thread {
} }
break; break;
case GET_PEERS:
// Send our known peers
if (!peer.sendMessage(Network.getInstance().buildPeersMessage(peer)))
peer.disconnect("failed to send peers list");
break;
default: default:
LOGGER.debug(String.format("Unhandled %s message [ID %d] from peer %s", message.getType().name(), message.getId(), peer)); LOGGER.debug(String.format("Unhandled %s message [ID %d] from peer %s", message.getType().name(), message.getId(), peer));
break; break;

View File

@ -472,6 +472,12 @@ public class Network extends Thread {
mergePeers(peerV2Addresses); mergePeers(peerV2Addresses);
break; break;
case GET_PEERS:
// Send our known peers
if (!peer.sendMessage(buildPeersMessage(peer)))
peer.disconnect("failed to send peers list");
break;
default: default:
// Bump up to controller for possible action // Bump up to controller for possible action
Controller.getInstance().onNetworkMessage(peer, message); Controller.getInstance().onNetworkMessage(peer, message);