diff options
Diffstat (limited to 'cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp')
-rw-r--r-- | cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp b/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp index d93416da75..dd14d11c4c 100644 --- a/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp +++ b/cpp/src/qpid/client/amqp0_10/OutgoingMessage.cpp @@ -58,7 +58,12 @@ void OutgoingMessage::convert(const qpid::messaging::Message& from) if (address) { message.getMessageProperties().setReplyTo(AddressResolution::convert(address)); } - translate(from.getProperties(), message.getMessageProperties().getApplicationHeaders()); + if (!subject.empty()) { + Variant v(subject); v.setEncoding("utf8"); + translate(from.getProperties(), SUBJECT, v, message.getMessageProperties().getApplicationHeaders()); + } else { + translate(from.getProperties(), message.getMessageProperties().getApplicationHeaders()); + } if (from.getTtl().getMilliseconds()) { message.getDeliveryProperties().setTtl(from.getTtl().getMilliseconds()); } @@ -89,16 +94,14 @@ void OutgoingMessage::convert(const qpid::messaging::Message& from) } } -void OutgoingMessage::setSubject(const std::string& subject) +void OutgoingMessage::setSubject(const std::string& s) { - if (!subject.empty()) { - message.getMessageProperties().getApplicationHeaders().setString(SUBJECT, subject); - } + subject = s; } std::string OutgoingMessage::getSubject() const { - return message.getMessageProperties().getApplicationHeaders().getAsString(SUBJECT); + return subject; } }}} // namespace qpid::client::amqp0_10 |