From bf305262b2b02b54ef455ee6da36263bb0f4b595 Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 18 Sep 2013 18:01:54 +0000 Subject: QPID-5141: always set content object on 0-10 path (unless explicitly asked not to) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1524505 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp b/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp index 27fbe41e34..c356bc298b 100644 --- a/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp +++ b/qpid/cpp/src/qpid/client/amqp0_10/ReceiverImpl.cpp @@ -26,6 +26,7 @@ #include "qpid/messaging/Receiver.h" #include "qpid/messaging/Session.h" #include "qpid/amqp_0_10/Codecs.h" +#include "qpid/types/encodings.h" namespace qpid { namespace client { @@ -155,6 +156,10 @@ ReceiverImpl::ReceiverImpl(SessionImpl& p, const std::string& name, parent(&p), destination(name), address(a), byteCredit(0xFFFFFFFF), autoDecode(autoDecode_), state(UNRESOLVED), capacity(0), window(0) {} +namespace { +const std::string TEXT_PLAIN("text/plain"); +} + bool ReceiverImpl::getImpl(qpid::messaging::Message& message, qpid::messaging::Duration timeout) { { @@ -169,6 +174,13 @@ bool ReceiverImpl::getImpl(qpid::messaging::Message& message, qpid::messaging::D } else if (message.getContentType() == qpid::amqp_0_10::ListCodec::contentType) { message.getContentObject() = qpid::types::Variant::List(); decode(message, message.getContentObject().asList()); + } else if (!message.getContentBytes().empty()) { + message.getContentObject() = message.getContentBytes(); + if (message.getContentType() == TEXT_PLAIN) { + message.getContentObject().setEncoding(qpid::types::encodings::UTF8); + } else { + message.getContentObject().setEncoding(qpid::types::encodings::BINARY); + } } } return true; -- cgit v1.2.1