summaryrefslogtreecommitdiff
path: root/src/BtExtendedMessage.cc
diff options
context:
space:
mode:
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();