From acfb290eca6538aa0d1fb029fafceb2c1c2b7367 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 8 Jan 2011 17:55:53 +0900 Subject: [PATCH] We don't need to call PeerConnection::sendPendingData() twice when sending piece message. --- src/BtPieceMessage.cc | 9 +++------ src/BtPieceMessage.h | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index c5362e95..eabb916a 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -180,18 +180,16 @@ void BtPieceMessage::send() A2_LOG_DEBUG(fmt("msglength = %lu bytes", static_cast(msgHdrLen+blockLength_))); getPeerConnection()->pushBytes(msgHdr, msgHdrLen); - getPeerConnection()->sendPendingData(); off_t pieceDataOffset = (off_t)index_*downloadContext_->getPieceLength()+begin_; - writtenLength = sendPieceData(pieceDataOffset, blockLength_); - } else { - writtenLength = getPeerConnection()->sendPendingData(); + pushPieceData(pieceDataOffset, blockLength_); } + writtenLength = getPeerConnection()->sendPendingData(); getPeer()->updateUploadLength(writtenLength); setSendingInProgress(!getPeerConnection()->sendBufferIsEmpty()); } -size_t BtPieceMessage::sendPieceData(off_t offset, size_t length) const +void BtPieceMessage::pushPieceData(off_t offset, size_t length) const { assert(length <= 16*1024); unsigned char* buf = new unsigned char[length]; @@ -204,7 +202,6 @@ size_t BtPieceMessage::sendPieceData(off_t offset, size_t length) const } if(r == static_cast(length)) { getPeerConnection()->pushBytes(buf, length); - return getPeerConnection()->sendPendingData(); } else { throw DL_ABORT_EX(EX_DATA_READ); } diff --git a/src/BtPieceMessage.h b/src/BtPieceMessage.h index f80782dd..e9eaff3c 100644 --- a/src/BtPieceMessage.h +++ b/src/BtPieceMessage.h @@ -64,7 +64,7 @@ private: void erasePieceOnDisk(const SharedHandle& piece); - size_t sendPieceData(off_t offset, size_t length) const; + void pushPieceData(off_t offset, size_t length) const; public: BtPieceMessage(size_t index = 0, uint32_t begin = 0, size_t blockLength = 0);