From f49cf6532cb59e0886d5a4a88d7d63f9f36652ca Mon Sep 17 00:00:00 2001 From: Gordon Sim Date: Wed, 16 Jul 2014 14:09:41 +0000 Subject: QPID-5850: Support for long session names (patch from Ernie Allen) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1611016 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/SessionState.cpp | 8 ++++++-- qpid/cpp/src/qpid/broker/amqp/ManagedSession.cpp | 7 ++++++- qpid/cpp/src/qpid/broker/management-schema.xml | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'qpid/cpp/src') diff --git a/qpid/cpp/src/qpid/broker/SessionState.cpp b/qpid/cpp/src/qpid/broker/SessionState.cpp index 8b57bd9e71..6dfc34a379 100644 --- a/qpid/cpp/src/qpid/broker/SessionState.cpp +++ b/qpid/cpp/src/qpid/broker/SessionState.cpp @@ -69,8 +69,12 @@ void SessionState::addManagementObject() { if (parent != 0) { ManagementAgent* agent = getBroker().getManagementAgent(); if (agent != 0) { - mgmtObject = _qmf::Session::shared_ptr(new _qmf::Session - (agent, this, parent, getId().getName())); + std::string name(getId().getName()); + std::string fullName(name); + if (name.length() >= std::numeric_limits::max()) + name.resize(std::numeric_limits::max()-1); + mgmtObject = _qmf::Session::shared_ptr(new _qmf::Session (agent, this, parent, name)); + mgmtObject->set_fullName (fullName); mgmtObject->set_attached (0); mgmtObject->set_detachedLifespan (0); mgmtObject->clr_expireTime(); diff --git a/qpid/cpp/src/qpid/broker/amqp/ManagedSession.cpp b/qpid/cpp/src/qpid/broker/amqp/ManagedSession.cpp index 5917ddb28a..fcccfaea8f 100644 --- a/qpid/cpp/src/qpid/broker/amqp/ManagedSession.cpp +++ b/qpid/cpp/src/qpid/broker/amqp/ManagedSession.cpp @@ -36,7 +36,12 @@ ManagedSession::ManagedSession(Broker& broker, ManagedConnection& p, const std:: { qpid::management::ManagementAgent* agent = broker.getManagementAgent(); if (agent != 0) { - session = _qmf::Session::shared_ptr(new _qmf::Session(agent, this, broker.GetVhostObject(), id)); + std::string name(id); + std::string fullName(name); + if (name.length() >= std::numeric_limits::max()) + name.resize(std::numeric_limits::max()-1); + session = _qmf::Session::shared_ptr(new _qmf::Session(agent, this, broker.GetVhostObject(), name)); + session->set_fullName(fullName); session->set_attached(true); session->set_detachedLifespan(0); session->clr_expireTime(); diff --git a/qpid/cpp/src/qpid/broker/management-schema.xml b/qpid/cpp/src/qpid/broker/management-schema.xml index d0c901684a..e2690c8f30 100644 --- a/qpid/cpp/src/qpid/broker/management-schema.xml +++ b/qpid/cpp/src/qpid/broker/management-schema.xml @@ -530,6 +530,7 @@ + -- cgit v1.2.1