diff options
| author | Kim van der Riet <kpvdr@apache.org> | 2011-07-19 19:57:06 +0000 |
|---|---|---|
| committer | Kim van der Riet <kpvdr@apache.org> | 2011-07-19 19:57:06 +0000 |
| commit | 7cebcbdcc8cd641faa82d2eb89ecc723cc21a21b (patch) | |
| tree | 4c68b91d7738178edfd17d30afd1887982a9d670 /cpp/src/qpid/cluster | |
| parent | 99a80aaed15489cde434c26cb5a951063d3f64a6 (diff) | |
| download | qpid-python-7cebcbdcc8cd641faa82d2eb89ecc723cc21a21b.tar.gz | |
QPID-3304: Patch from Gordon Sim plus tests which detect the condition being solved. Added a make check-long target to the Makefile in the cpp dir to make it easier to run the long tests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1148503 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/cluster')
| -rw-r--r-- | cpp/src/qpid/cluster/UpdateClient.cpp | 16 | ||||
| -rw-r--r-- | cpp/src/qpid/cluster/UpdateExchange.cpp | 8 |
2 files changed, 12 insertions, 12 deletions
diff --git a/cpp/src/qpid/cluster/UpdateClient.cpp b/cpp/src/qpid/cluster/UpdateClient.cpp index afe5b8ac3a..f306517d37 100644 --- a/cpp/src/qpid/cluster/UpdateClient.cpp +++ b/cpp/src/qpid/cluster/UpdateClient.cpp @@ -318,22 +318,22 @@ class MessageUpdater { lastPos = message.position; // if the ttl > 0, we need to send the calculated expiration time to the updatee - if (message.payload->getProperties<DeliveryProperties>()->getTtl() > 0) { + const DeliveryProperties* dprops = + message.payload->getProperties<DeliveryProperties>(); + if (dprops && dprops->getTtl() > 0) { bool hadMessageProps = message.payload->hasProperties<framing::MessageProperties>(); - framing::MessageProperties* mprops = + const framing::MessageProperties* mprops = message.payload->getProperties<framing::MessageProperties>(); bool hadApplicationHeaders = mprops->hasApplicationHeaders(); - FieldTable& applicationHeaders = mprops->getApplicationHeaders(); - applicationHeaders.setInt64( - UpdateClient::X_QPID_EXPIRATION, - sys::Duration(sys::EPOCH, message.payload->getExpiration())); + message.payload->insertCustomProperty(UpdateClient::X_QPID_EXPIRATION, + sys::Duration(sys::EPOCH, message.payload->getExpiration())); // If message properties or application headers didn't exist // prior to us adding data, we want to remove them on the other side. if (!hadMessageProps) - applicationHeaders.setInt(UpdateClient::X_QPID_NO_MESSAGE_PROPS, 0); + message.payload->insertCustomProperty(UpdateClient::X_QPID_NO_MESSAGE_PROPS, 0); else if (!hadApplicationHeaders) - applicationHeaders.setInt(UpdateClient::X_QPID_NO_HEADERS, 0); + message.payload->insertCustomProperty(UpdateClient::X_QPID_NO_HEADERS, 0); } // We can't send a broker::Message via the normal client API, diff --git a/cpp/src/qpid/cluster/UpdateExchange.cpp b/cpp/src/qpid/cluster/UpdateExchange.cpp index e830459aba..cb1376004e 100644 --- a/cpp/src/qpid/cluster/UpdateExchange.cpp +++ b/cpp/src/qpid/cluster/UpdateExchange.cpp @@ -49,18 +49,18 @@ void UpdateExchange::setProperties(const boost::intrusive_ptr<broker::Message>& // Copy expiration from x-property if present. if (msg->hasProperties<MessageProperties>()) { - MessageProperties* mprops = msg->getProperties<MessageProperties>(); + const MessageProperties* mprops = msg->getProperties<MessageProperties>(); if (mprops->hasApplicationHeaders()) { - FieldTable& headers = mprops->getApplicationHeaders(); + const FieldTable& headers = mprops->getApplicationHeaders(); if (headers.isSet(UpdateClient::X_QPID_EXPIRATION)) { msg->setExpiration( sys::AbsTime(sys::EPOCH, headers.getAsInt64(UpdateClient::X_QPID_EXPIRATION))); - headers.erase(UpdateClient::X_QPID_EXPIRATION); + msg->removeCustomProperty(UpdateClient::X_QPID_EXPIRATION); // Erase props/headers that were added by the UpdateClient if (headers.isSet(UpdateClient::X_QPID_NO_MESSAGE_PROPS)) msg->eraseProperties<MessageProperties>(); else if (headers.isSet(UpdateClient::X_QPID_NO_HEADERS)) - mprops->clearApplicationHeadersFlag(); + msg->clearApplicationHeadersFlag(); } } } |
