diff options
Diffstat (limited to 'src/DefaultBtMessageFactory.cc')
| -rw-r--r-- | src/DefaultBtMessageFactory.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/DefaultBtMessageFactory.cc b/src/DefaultBtMessageFactory.cc index 52c546fd..c10d47d9 100644 --- a/src/DefaultBtMessageFactory.cc +++ b/src/DefaultBtMessageFactory.cc @@ -61,6 +61,8 @@ #include "BtAllowedFastMessageValidator.h" #include "BtHandshakeMessage.h" #include "BtHandshakeMessageValidator.h" +#include "BtExtendedMessage.h" +#include "ExtensionMessage.h" BtMessageHandle DefaultBtMessageFactory::createBtMessage(const unsigned char* data, int32_t dataLength) @@ -161,6 +163,14 @@ DefaultBtMessageFactory::createBtMessage(const unsigned char* data, int32_t data msg = temp; break; } + case BtExtendedMessage::ID: { + if(peer->isExtendedMessagingEnabled()) { + msg = BtExtendedMessage::create(btContext, peer, (const char*)data, dataLength); + } else { + throw new DlAbortEx("Received extended message from peer during a session with extended messaging disabled."); + } + break; + } default: throw new DlAbortEx("Invalid message ID. id=%d", id); } @@ -349,3 +359,11 @@ DefaultBtMessageFactory::createAllowedFastMessage(int32_t index) setCommonProperty(msg); return msg; } + +BtMessageHandle +DefaultBtMessageFactory::createBtExtendedMessage(const ExensionMessageHandle& msg) +{ + BtExtendedMessageHandle m = new BtExtendedMessage(msg); + setCommonProperty(m); + return m; +} |
