diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index c51b3ae1..1d3ce8be 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -1169,7 +1169,7 @@ public class Controller extends Thread { break; case ARBITRARY_SIGNATURES: - ArbitraryDataManager.getInstance().onNetworkArbitrarySignaturesMessage(peer, message); + // Not currently supported break; case GET_ARBITRARY_METADATA: diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index c2f9f948..72ad871c 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -531,76 +531,6 @@ public class ArbitraryDataManager extends Thread { } - // Handle incoming arbitrary signatures messages - - public void onNetworkArbitrarySignaturesMessage(Peer peer, Message message) { - // Don't process if QDN is disabled - if (!Settings.getInstance().isQdnEnabled()) { - return; - } - - LOGGER.debug("Received arbitrary signature list from peer {}", peer); - - ArbitrarySignaturesMessage arbitrarySignaturesMessage = (ArbitrarySignaturesMessage) message; - List signatures = arbitrarySignaturesMessage.getSignatures(); - - String peerAddress = peer.getPeerData().getAddress().toString(); - if (arbitrarySignaturesMessage.getPeerAddress() != null && !arbitrarySignaturesMessage.getPeerAddress().isEmpty()) { - // This message is about a different peer than the one that sent it - peerAddress = arbitrarySignaturesMessage.getPeerAddress(); - } - - boolean containsNewEntry = false; - - // Synchronize peer data lookups to make this process thread safe. Otherwise we could broadcast - // the same data multiple times, due to more than one thread processing the same message from different peers - synchronized (this.peerDataLock) { - try (final Repository repository = RepositoryManager.getRepository()) { - for (byte[] signature : signatures) { - - // Check if a record already exists for this hash/host combination - // The port is not checked here - only the host/ip - in order to avoid duplicates - // from filling up the db due to dynamic/ephemeral ports - ArbitraryPeerData existingEntry = repository.getArbitraryRepository() - .getArbitraryPeerDataForSignatureAndHost(signature, peer.getPeerData().getAddress().getHost()); - - if (existingEntry == null) { - // We haven't got a record of this mapping yet, so add it - ArbitraryPeerData arbitraryPeerData = new ArbitraryPeerData(signature, peerAddress); - repository.discardChanges(); - if (arbitraryPeerData.isPeerAddressValid()) { - LOGGER.debug("Adding arbitrary peer: {} for signature {}", peerAddress, Base58.encode(signature)); - repository.getArbitraryRepository().save(arbitraryPeerData); - repository.saveChanges(); - - // Remember that this data is new, so that it can be rebroadcast later - containsNewEntry = true; - } - } - } - - // If at least one signature in this batch was new to us, we should rebroadcast the message to the - // network in case some peers haven't received it yet - if (containsNewEntry) { - int requestHops = arbitrarySignaturesMessage.getRequestHops(); - arbitrarySignaturesMessage.setRequestHops(++requestHops); - if (requestHops < ARBITRARY_SIGNATURES_REQUEST_MAX_HOPS) { - LOGGER.debug("Rebroadcasting arbitrary signature list for peer {}. requestHops: {}", peerAddress, requestHops); - Network.getInstance().broadcast(broadcastPeer -> broadcastPeer == peer ? null : arbitrarySignaturesMessage); - } - } else { - // Don't rebroadcast as otherwise we could get into a loop - } - - // If anything needed saving, it would already have called saveChanges() above - repository.discardChanges(); - } catch (DataException e) { - LOGGER.error(String.format("Repository issue while processing arbitrary transaction signature list from peer %s", peer), e); - } - } - } - - public int getPowDifficulty() { return this.powDifficulty; }