summaryrefslogtreecommitdiff
path: root/src/BtPieceMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-12-06 00:39:14 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-12-06 00:39:14 +0900
commit56c498bcbfa1b7645c75e39142ac9f6c6ca369c6 (patch)
treea539d2585134ce545dcfcaee0ee4436e4049cd10 /src/BtPieceMessage.cc
parent9ed8502e742452568695181014410fe924f45e26 (diff)
Clear write cache on Segment::clear and Piece::clearAllBlock
Diffstat (limited to 'src/BtPieceMessage.cc')
-rw-r--r--src/BtPieceMessage.cc13
1 files changed, 3 insertions, 10 deletions
diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc
index f2e7dccd..108b39ce 100644
--- a/src/BtPieceMessage.cc
+++ b/src/BtPieceMessage.cc
@@ -253,10 +253,7 @@ bool BtPieceMessage::checkPieceHash(const SharedHandle<Piece>& piece)
getPieceStorage()->getDiskAdaptor())
== downloadContext_->getPieceHash(piece->getIndex());
} catch(RecoverableException& e) {
- piece->clearAllBlock();
- if(piece->getWrDiskCacheEntry()) {
- piece->clearWrCache(getPieceStorage()->getWrDiskCache());
- }
+ piece->clearAllBlock(getPieceStorage()->getWrDiskCache());
throw;
}
}
@@ -269,8 +266,7 @@ void BtPieceMessage::onNewPiece(const SharedHandle<Piece>& piece)
piece->flushWrCache(getPieceStorage()->getWrDiskCache());
if(piece->getWrDiskCacheEntry()->getError() !=
WrDiskCacheEntry::CACHE_ERR_SUCCESS) {
- piece->clearAllBlock();
- piece->clearWrCache(getPieceStorage()->getWrDiskCache());
+ piece->clearAllBlock(getPieceStorage()->getWrDiskCache());
throw DOWNLOAD_FAILURE_EXCEPTION2
(fmt("Write disk cache flush failure index=%lu",
static_cast<unsigned long>(piece->getIndex())),
@@ -289,10 +285,7 @@ void BtPieceMessage::onWrongPiece(const SharedHandle<Piece>& piece)
A2_LOG_INFO(fmt(MSG_GOT_WRONG_PIECE,
getCuid(),
static_cast<unsigned long>(piece->getIndex())));
- if(piece->getWrDiskCacheEntry()) {
- piece->clearWrCache(getPieceStorage()->getWrDiskCache());
- }
- piece->clearAllBlock();
+ piece->clearAllBlock(getPieceStorage()->getWrDiskCache());
piece->destroyHashContext();
getBtRequestFactory()->removeTargetPiece(piece);
}