From 70158200c1fc24a76a455d00a50f35f0d24008f3 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Mon, 2 Aug 2010 16:44:55 +0000 Subject: Fixed bug in setting of the app-id header (it was set in the application-headers rather than the message-properties). Made the broker agent more selective about when it broadcasts console-added messages. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@981592 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp | 2 +- qpid/cpp/src/qpid/management/ManagementAgent.cpp | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'qpid/cpp') diff --git a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp index b7d5ad7d7b..50301f77c8 100644 --- a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp @@ -1208,7 +1208,6 @@ void ManagementAgentImpl::ConnectionThread::sendBuffer(const string& data, for (i = headers.begin(); i != headers.end(); ++i) { msg.getHeaders().setString(i->first, i->second.asString()); } - msg.getHeaders().setString("app_id", "qmf2"); msg.setData(data); sendMessage(msg, exchange, routingKey); @@ -1233,6 +1232,7 @@ void ManagementAgentImpl::ConnectionThread::sendMessage(Message msg, msg.getDeliveryProperties().setRoutingKey(routingKey); msg.getMessageProperties().setReplyTo(ReplyTo("amq.direct", queueName.str())); msg.getMessageProperties().getApplicationHeaders().setString("qmf.agent", agent.name_address); + msg.getMessageProperties().setAppId("qmf2"); try { session.messageTransfer(arg::content=msg, arg::destination=exchange); } catch(exception& e) { diff --git a/qpid/cpp/src/qpid/management/ManagementAgent.cpp b/qpid/cpp/src/qpid/management/ManagementAgent.cpp index 5602dda2c6..847f2b53ce 100644 --- a/qpid/cpp/src/qpid/management/ManagementAgent.cpp +++ b/qpid/cpp/src/qpid/management/ManagementAgent.cpp @@ -428,10 +428,26 @@ void ManagementAgent::clientAdded (const string& routingKey) { sys::Mutex::ScopedLock lock(userLock); - if (routingKey.find("console") != 0) + // + // If this routing key is not relevant to object updates, exit. + // + if ((routingKey.compare(0, 1, "#") != 0) && + (routingKey.compare(0, 9, "console.#") != 0) && + (routingKey.compare(0, 12, "console.obj.") != 0)) return; + // + // Mark local objects for full-update. + // clientWasAdded = true; + + // + // If the routing key is relevant for local objects only, don't involve + // any of the remote agents. + // + if (routingKey.compare(0, 39, "console.obj.*.*.org.apache.qpid.broker.") == 0) + return; + std::list rkeys; for (RemoteAgentMap::iterator aIter = remoteAgents.begin(); @@ -570,11 +586,11 @@ void ManagementAgent::sendBufferLH(const string& data, props->setCorrelationId(cid); } props->setContentType(content_type); + props->setAppId("qmf2"); for (i = headers.begin(); i != headers.end(); ++i) { msg->getOrInsertHeaders().setString(i->first, i->second.asString()); } - msg->getOrInsertHeaders().setString("app_id", "qmf2"); DeliveryProperties* dp = msg->getFrames().getHeaders()->get(true); -- cgit v1.2.1