From 1175d8f6a1782da777f406a8400b7281a7af09e7 Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Tue, 17 Apr 2012 12:30:00 -0400 Subject: [PATCH] AlreadyHave(): only hold lock during mapTransactions access --- src/main.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 57c18aed484..f13b884f96c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1954,11 +1954,15 @@ bool static AlreadyHave(CTxDB& txdb, const CInv& inv) switch (inv.type) { case MSG_TX: + { + bool txInMap = false; CRITICAL_BLOCK(cs_mapTransactions) { - return mapTransactions.count(inv.hash) || - mapOrphanTransactions.count(inv.hash) || - txdb.ContainsTx(inv.hash); + txInMap = (mapTransactions.count(inv.hash) != 0); + } + return txInMap || + mapOrphanTransactions.count(inv.hash) || + txdb.ContainsTx(inv.hash); } case MSG_BLOCK: return mapBlockIndex.count(inv.hash) || mapOrphanBlocks.count(inv.hash);