diff options
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(); |
