diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-05-22 20:57:33 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-05-22 20:57:33 +0900 |
| commit | 9d40c47799bbec12bb02f7579736fbc1fcc35c08 (patch) | |
| tree | 0ef02a9f17d6550667aa745829ff5146b1ccf6a6 /src/BtExtendedMessage.cc | |
| parent | 9727b5b256bb12cff42e6aa230ba2020a933562f (diff) | |
| parent | 0b906f40f1204e79cb43af3867468ab02a371075 (diff) | |
Merge branch 'master' into dynamic-select-file
Diffstat (limited to 'src/BtExtendedMessage.cc')
| -rw-r--r-- | src/BtExtendedMessage.cc | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/src/BtExtendedMessage.cc b/src/BtExtendedMessage.cc index add69170..9f329c42 100644 --- a/src/BtExtendedMessage.cc +++ b/src/BtExtendedMessage.cc @@ -58,7 +58,7 @@ BtExtendedMessage::BtExtendedMessage( { } -unsigned char* BtExtendedMessage::createMessage() +std::vector<unsigned char> BtExtendedMessage::createMessage() { /** * len --- 2+extpayload.length, 4bytes @@ -69,21 +69,15 @@ unsigned char* BtExtendedMessage::createMessage() */ std::string payload = extensionMessage_->getPayload(); msgLength_ = 6 + payload.size(); - auto msg = new unsigned char[msgLength_]; - bittorrent::createPeerMessageString(msg, msgLength_, 2 + payload.size(), ID); - *(msg + 5) = extensionMessage_->getExtensionMessageID(); - memcpy(msg + 6, payload.data(), payload.size()); + auto msg = std::vector<unsigned char>(msgLength_); + auto p = msg.data(); + bittorrent::createPeerMessageString(p, msgLength_, 2 + payload.size(), ID); + p += 5; + *p++ = extensionMessage_->getExtensionMessageID(); + std::copy(std::begin(payload), std::end(payload), p); return msg; } -size_t BtExtendedMessage::getMessageLength() -{ - if (!msgLength_) { - msgLength_ = 6 + extensionMessage_->getPayload().size(); - } - return msgLength_; -} - bool BtExtendedMessage::sendPredicate() const { return getPeer()->isExtendedMessagingEnabled(); |
