From bd5c4e73e7cc05c0b072bb5bf51a442a06c30c11 Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Wed, 22 Jan 2014 22:57:08 -0500 Subject: [PATCH] Prevent memory blowup on orphan storage --- .../java/com/google/bitcoin/core/AbstractBlockChain.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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 53890063..da0fec2c 100644 --- a/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java +++ b/core/src/main/java/com/google/bitcoin/core/AbstractBlockChain.java @@ -107,7 +107,7 @@ public abstract class AbstractBlockChain { private final CopyOnWriteArrayList> listeners; // Holds a block header and, optionally, a list of tx hashes or block's transactions - static class OrphanBlock { + class OrphanBlock { final Block block; final List filteredTxHashes; final Map filteredTxn; @@ -115,7 +115,10 @@ public abstract class AbstractBlockChain { final boolean filtered = filteredTxHashes != null && filteredTxn != null; Preconditions.checkArgument((block.transactions == null && filtered) || (block.transactions != null && !filtered)); - this.block = block; + if (!shouldVerifyTransactions()) + this.block = block.cloneAsHeader(); + else + this.block = block; this.filteredTxHashes = filteredTxHashes; this.filteredTxn = filteredTxn; }