summaryrefslogtreecommitdiff
path: root/src/DefaultBtMessageFactory.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DefaultBtMessageFactory.cc')
-rw-r--r--src/DefaultBtMessageFactory.cc18
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;
+}