summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/broker/MessageBuilder.cpp
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2009-07-10 19:42:16 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2009-07-10 19:42:16 +0000
commit8ade86a93793137b337502faefefcaf0c4a203eb (patch)
treedb9a22765d6b0639a131618c981d6cd428b8dcbf /cpp/src/qpid/broker/MessageBuilder.cpp
parent82d0880a9a9a65029d35422ad2dff675b867bb6c (diff)
downloadqpid-python-8ade86a93793137b337502faefefcaf0c4a203eb.tar.gz
Correct the case where for very low ( bytes) staging threshhold management
could get disabled. Fix prevents the staging of management messages + test git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@793091 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/MessageBuilder.cpp')
-rw-r--r--cpp/src/qpid/broker/MessageBuilder.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/cpp/src/qpid/broker/MessageBuilder.cpp b/cpp/src/qpid/broker/MessageBuilder.cpp
index 1e988021b2..bc8c10d4b1 100644
--- a/cpp/src/qpid/broker/MessageBuilder.cpp
+++ b/cpp/src/qpid/broker/MessageBuilder.cpp
@@ -37,6 +37,8 @@ namespace
MessageBuilder::MessageBuilder(MessageStore* const _store, uint64_t _stagingThreshold) :
state(DORMANT), store(_store), stagingThreshold(_stagingThreshold), staging(false) {}
+static const std::string QPID_MANAGEMENT("qpid.management");
+
void MessageBuilder::handle(AMQFrame& frame)
{
uint8_t type = frame.getBody()->type();
@@ -75,7 +77,8 @@ void MessageBuilder::handle(AMQFrame& frame)
if (state == CONTENT
&& stagingThreshold
&& message->getFrames().getContentSize() >= stagingThreshold
- && !NullMessageStore::isNullStore(store))
+ && !NullMessageStore::isNullStore(store)
+ && message->getExchangeName() != QPID_MANAGEMENT /* don't stage mgnt messages */)
{
message->releaseContent(store);
staging = true;