From f3d9c028418a9272bbadb7399eed077ea64724d8 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 29 Aug 2012 22:05:03 -0400 Subject: [PATCH] Return false when calling Chain.add on an orphan we already have --- .../java/com/google/bitcoin/core/AbstractBlockChain.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java b/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java index 6600b188c..184531441 100644 --- a/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java +++ b/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java @@ -225,9 +225,12 @@ public abstract class AbstractBlockChain { } // Quick check for duplicates to avoid an expensive check further down (in findSplit). This can happen a lot // when connecting orphan transactions due to the dumb brute force algorithm we use. - if (block.equals(getChainHead().getHeader()) || (tryConnecting && orphanBlocks.containsKey(block.getHash()))) { + if (block.equals(getChainHead().getHeader())) { return true; } + if (tryConnecting && orphanBlocks.containsKey(block.getHash())) { + return false; + } // If we want to verify transactions (ie we are running with full blocks), verify that block has transactions if (shouldVerifyTransactions() && block.transactions == null)