summaryrefslogtreecommitdiff
path: root/src/BtExtendedMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-05-22 20:57:33 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-05-22 20:57:33 +0900
commit9d40c47799bbec12bb02f7579736fbc1fcc35c08 (patch)
tree0ef02a9f17d6550667aa745829ff5146b1ccf6a6 /src/BtExtendedMessage.cc
parent9727b5b256bb12cff42e6aa230ba2020a933562f (diff)
parent0b906f40f1204e79cb43af3867468ab02a371075 (diff)
Merge branch 'master' into dynamic-select-file
Diffstat (limited to 'src/BtExtendedMessage.cc')
-rw-r--r--src/BtExtendedMessage.cc20
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();