Browse Source

We don't need to call PeerConnection::sendPendingData() twice when
sending piece message.

Tatsuhiro Tsujikawa 14 years ago
parent
commit
acfb290eca
2 changed files with 4 additions and 7 deletions
  1. 3 6
      src/BtPieceMessage.cc
  2. 1 1
      src/BtPieceMessage.h

+ 3 - 6
src/BtPieceMessage.cc

@@ -180,18 +180,16 @@ void BtPieceMessage::send()
     A2_LOG_DEBUG(fmt("msglength = %lu bytes",
                      static_cast<unsigned long>(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<ssize_t>(length)) {
     getPeerConnection()->pushBytes(buf, length);
-    return getPeerConnection()->sendPendingData();
   } else {
     throw DL_ABORT_EX(EX_DATA_READ);
   }

+ 1 - 1
src/BtPieceMessage.h

@@ -64,7 +64,7 @@ private:
 
   void erasePieceOnDisk(const SharedHandle<Piece>& 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);