summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp5
1 files changed, 2 insertions, 3 deletions
diff --git a/qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp b/qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp
index b5bea05eac..3f407c11f7 100644
--- a/qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp
+++ b/qpid/cpp/src/qpid/broker/MessageHandlerImpl.cpp
@@ -28,6 +28,7 @@
#include "BrokerAdapter.h"
#include <boost/format.hpp>
+#include <boost/cast.hpp>
namespace qpid {
namespace broker {
@@ -159,9 +160,7 @@ MessageHandlerImpl::reject(uint16_t /*code*/, const string& /*text*/ )
void
MessageHandlerImpl::transfer(const framing::AMQMethodBody& context)
{
- MessageTransferBody::shared_ptr transfer(
- make_shared_ptr(new MessageTransferBody(static_cast<const MessageTransferBody&>(context))));
-
+ const MessageTransferBody* transfer = boost::polymorphic_downcast<const MessageTransferBody*>(&context);
if (transfer->getBody().isInline()) {
MessageMessage::shared_ptr message(new MessageMessage(&connection, transfer));
channel.handleInlineTransfer(message);