mirror of https://github.com/aria2/aria2
Get the correct uploaded data size
Subtract msgHdrLen_ from writtenLength to get the uploaded data size. Without this correction, the seeder assumes it has uploaded more data than it actually has.pull/34/head
parent
31189b1222
commit
b2893f1e31
|
@ -67,6 +67,7 @@ BtPieceMessage::BtPieceMessage
|
|||
index_(index),
|
||||
begin_(begin),
|
||||
blockLength_(blockLength),
|
||||
msgHdrLen_(0),
|
||||
data_(0)
|
||||
{
|
||||
setUploading(true);
|
||||
|
@ -179,17 +180,25 @@ void BtPieceMessage::send()
|
|||
getPeer()->getPort(),
|
||||
toString().c_str()));
|
||||
unsigned char* msgHdr = createMessageHeader();
|
||||
size_t msgHdrLen = getMessageHeaderLength();
|
||||
msgHdrLen_ = getMessageHeaderLength();
|
||||
A2_LOG_DEBUG(fmt("msglength = %lu bytes",
|
||||
static_cast<unsigned long>(msgHdrLen+blockLength_)));
|
||||
getPeerConnection()->pushBytes(msgHdr, msgHdrLen);
|
||||
static_cast<unsigned long>(msgHdrLen_+blockLength_)));
|
||||
getPeerConnection()->pushBytes(msgHdr, msgHdrLen_);
|
||||
int64_t pieceDataOffset =
|
||||
static_cast<int64_t>(index_)*downloadContext_->getPieceLength()+begin_;
|
||||
pushPieceData(pieceDataOffset, blockLength_);
|
||||
}
|
||||
writtenLength = getPeerConnection()->sendPendingData();
|
||||
getPeer()->updateUploadLength(writtenLength);
|
||||
downloadContext_->updateUploadLength(writtenLength);
|
||||
// Subtract msgHdrLen_ from writtenLength to get the uploaded data
|
||||
// size.
|
||||
if(writtenLength > msgHdrLen_) {
|
||||
writtenLength -= msgHdrLen_;
|
||||
msgHdrLen_ = 0;
|
||||
getPeer()->updateUploadLength(writtenLength);
|
||||
downloadContext_->updateUploadLength(writtenLength);
|
||||
} else {
|
||||
msgHdrLen_ -= writtenLength;
|
||||
}
|
||||
setSendingInProgress(!getPeerConnection()->sendBufferIsEmpty());
|
||||
}
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ private:
|
|||
size_t index_;
|
||||
int32_t begin_;
|
||||
int32_t blockLength_;
|
||||
size_t msgHdrLen_;
|
||||
const unsigned char* data_;
|
||||
SharedHandle<DownloadContext> downloadContext_;
|
||||
SharedHandle<PeerStorage> peerStorage_;
|
||||
|
|
Loading…
Reference in New Issue