diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-06-10 00:14:48 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-06-10 00:14:48 +0900 |
| commit | e220c5384961f9261f19c28cd0b85f76f06d8993 (patch) | |
| tree | 3dd3cbcc05aa11b3a36d84ed11afcc9c222d1312 | |
| parent | c7d242e27d8e9c9160c58e89f0ab196eb77fc9f7 (diff) | |
BitTorrent: Allow 32KiB request
It looks like the 32KiB is the default request size of python
bittorrent client. Previously, aria2 only allowed maximum 16KiB
request.
| -rw-r--r-- | src/BtConstants.h | 2 | ||||
| -rw-r--r-- | src/BtPieceMessage.cc | 2 | ||||
| -rw-r--r-- | src/PeerConnection.h | 3 | ||||
| -rw-r--r-- | test/BtRequestMessageTest.cc | 4 | ||||
| -rw-r--r-- | test/PeerConnectionTest.cc | 2 |
5 files changed, 7 insertions, 6 deletions
diff --git a/src/BtConstants.h b/src/BtConstants.h index 2c933888..16736847 100644 --- a/src/BtConstants.h +++ b/src/BtConstants.h @@ -46,7 +46,7 @@ constexpr size_t PIECE_HASH_LENGTH = 20; constexpr size_t PEER_ID_LENGTH = 20; -constexpr size_t MAX_BLOCK_LENGTH = 16_k; +constexpr size_t MAX_BLOCK_LENGTH = 32_k; constexpr size_t DEFAULT_MAX_OUTSTANDING_REQUEST = 6; diff --git a/src/BtPieceMessage.cc b/src/BtPieceMessage.cc index 1c67f2ec..8a8c5607 100644 --- a/src/BtPieceMessage.cc +++ b/src/BtPieceMessage.cc @@ -212,7 +212,7 @@ void BtPieceMessage::send() void BtPieceMessage::pushPieceData(int64_t offset, int32_t length) const { - assert(length <= static_cast<int32_t>(16_k)); + assert(length <= static_cast<int32_t>(MAX_BLOCK_LENGTH)); auto buf = std::vector<unsigned char>(length + MESSAGE_HEADER_LENGTH); createMessageHeader(buf.data()); ssize_t r; diff --git a/src/PeerConnection.h b/src/PeerConnection.h index 0779301a..17e023f0 100644 --- a/src/PeerConnection.h +++ b/src/PeerConnection.h @@ -43,6 +43,7 @@ #include "SocketBuffer.h" #include "Command.h" #include "a2functional.h" +#include "BtConstants.h" namespace aria2 { @@ -53,7 +54,7 @@ class ARC4Encryptor; // The maximum length of buffer. If the message length (including 4 // bytes length and payload length) is larger than this value, it is // dropped. -constexpr size_t MAX_BUFFER_CAPACITY = 16_k + 128; +constexpr size_t MAX_BUFFER_CAPACITY = MAX_BLOCK_LENGTH + 128; class PeerConnection { private: diff --git a/test/BtRequestMessageTest.cc b/test/BtRequestMessageTest.cc index a68fb4d4..1d3841cc 100644 --- a/test/BtRequestMessageTest.cc +++ b/test/BtRequestMessageTest.cc @@ -266,7 +266,7 @@ void BtRequestMessageTest::testValidate() void BtRequestMessageTest::testValidate_lengthTooLong() { - BtRequestMessage msg(0, 0, 16_k + 1); + BtRequestMessage msg(0, 0, 32_k + 1); msg.setBtMessageValidator( make_unique<RangeBtMessageValidator>(&msg, 1_k, 256_k)); try { @@ -274,7 +274,7 @@ void BtRequestMessageTest::testValidate_lengthTooLong() CPPUNIT_FAIL("exception must be thrown."); } catch (DlAbortEx& e) { - CPPUNIT_ASSERT_EQUAL(std::string("Length too long: 16385 > 16KB"), + CPPUNIT_ASSERT_EQUAL(std::string("Length too long: 32769 > 32KB"), std::string(e.what())); } } diff --git a/test/PeerConnectionTest.cc b/test/PeerConnectionTest.cc index 9d580285..f1d8374d 100644 --- a/test/PeerConnectionTest.cc +++ b/test/PeerConnectionTest.cc @@ -28,7 +28,7 @@ void PeerConnectionTest::testReserveBuffer() CPPUNIT_ASSERT_EQUAL((size_t)MAX_BUFFER_CAPACITY, con.getBufferCapacity()); CPPUNIT_ASSERT_EQUAL((size_t)3, con.getBufferLength()); - constexpr size_t newLength = 32_k; + constexpr size_t newLength = 64_k; con.reserveBuffer(newLength); CPPUNIT_ASSERT_EQUAL(newLength, con.getBufferCapacity()); |
