diff --git a/src/main/java/org/qora/controller/Controller.java b/src/main/java/org/qora/controller/Controller.java index bc8e713f..0fe52006 100644 --- a/src/main/java/org/qora/controller/Controller.java +++ b/src/main/java/org/qora/controller/Controller.java @@ -744,7 +744,7 @@ public class Controller extends Thread { break; // Broadcast signatures that are new to us - Network.getInstance().broadcast(broadcastPeer -> new TransactionSignaturesMessage(newSignatures)); + Network.getInstance().broadcast(broadcastPeer -> broadcastPeer == peer ? null : new TransactionSignaturesMessage(newSignatures)); break; } diff --git a/src/main/java/org/qora/network/Network.java b/src/main/java/org/qora/network/Network.java index 85717edc..971c7e77 100644 --- a/src/main/java/org/qora/network/Network.java +++ b/src/main/java/org/qora/network/Network.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.RejectedExecutionException; @@ -781,7 +782,16 @@ public class Network extends Thread { public void run() { Thread.currentThread().setName("Network Broadcast"); + Random random = new Random(); + for (Peer peer : targetPeers) { + // Very short sleep to reduce strain, improve multithreading and catch interrupts + try { + Thread.sleep(random.nextInt(20) + 20); + } catch (InterruptedException e) { + return; + } + Message message = peerMessageBuilder.apply(peer); if (message == null)