diff options
Diffstat (limited to 'src/DefaultExtensionMessageFactory.cc')
| -rw-r--r-- | src/DefaultExtensionMessageFactory.cc | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/DefaultExtensionMessageFactory.cc b/src/DefaultExtensionMessageFactory.cc index a86765c0..c84c6789 100644 --- a/src/DefaultExtensionMessageFactory.cc +++ b/src/DefaultExtensionMessageFactory.cc @@ -33,6 +33,9 @@ */ /* copyright --> */ #include "DefaultExtensionMessageFactory.h" + +#include <cstring> + #include "Peer.h" #include "DlAbortEx.h" #include "HandshakeExtensionMessage.h" @@ -81,19 +84,19 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t m->setDownloadContext(dctx_); return m; } else { - std::string extensionName = registry_->getExtensionName(extensionMessageID); - if(extensionName.empty()) { + const char* extensionName = registry_->getExtensionName(extensionMessageID); + if(!extensionName) { throw DL_ABORT_EX (fmt("No extension registered for extended message ID %u", extensionMessageID)); } - if(extensionName == "ut_pex") { + if(strcmp(extensionName, "ut_pex") == 0) { // uTorrent compatible Peer-Exchange UTPexExtensionMessageHandle m = UTPexExtensionMessage::create(data, length); m->setPeerStorage(peerStorage_); return m; - } else if(extensionName == "ut_metadata") { + } else if(strcmp(extensionName, "ut_metadata") == 0) { if(length == 0) { throw DL_ABORT_EX (fmt(MSG_TOO_SMALL_PAYLOAD_SIZE, @@ -160,7 +163,7 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t throw DL_ABORT_EX (fmt("Unsupported extension message received." " extensionMessageID=%u, extensionName=%s", - extensionMessageID, extensionName.c_str())); + extensionMessageID, extensionName)); } } } |
