Author: gsim
Date: Mon Jul 27 19:59:36 2015
New Revision: 1692936
URL: http://svn.apache.org/r1692936
Log:
QPID-6654, QPID-6592: ensure system info ptr is valid before using it, and
ensure it is valid even if management is disabled
Modified:
qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp?rev=1692936&r1=1692935&r2=1692936&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Broker.cpp Mon Jul 27 19:59:36 2015
@@ -252,6 +252,8 @@ Broker::Broker(const BrokerOptions& conf
if (!dataDir.isEnabled()) {
QPID_LOG (info, "No data directory - Disabling persistent
configuration");
}
+ System* system = new System (dataDir.isEnabled() ? dataDir.getPath() :
string(), this);
+ systemObject = System::shared_ptr(system);
try {
if (conf.enableMgmt) {
QPID_LOG(info, "Management enabled");
@@ -260,9 +262,6 @@ Broker::Broker(const BrokerOptions& conf
managementAgent->setName("apache.org", "qpidd");
_qmf::Package packageInitializer(managementAgent.get());
- System* system = new System (dataDir.isEnabled() ? dataDir.getPath() :
string(), this);
- systemObject = System::shared_ptr(system);
-
mgmtObject = _qmf::Broker::shared_ptr(new
_qmf::Broker(managementAgent.get(), this, system, "amqp-broker"));
mgmtObject->set_systemRef(system->GetManagementObject()->getObjectId());
mgmtObject->set_port(conf.port);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp?rev=1692936&r1=1692935&r2=1692936&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp Mon Jul 27
19:59:36 2015
@@ -123,8 +123,10 @@ ConnectionHandler::Handler::Handler(qpid
properties.setString("product", qpid::product);
properties.setString("version", qpid::version);
- properties.setString("platform", sysInfo->getOsName());
- properties.setString("host", sysInfo->getNodeName());
+ if (sysInfo) {
+ properties.setString("platform", sysInfo->getOsName());
+ properties.setString("host", sysInfo->getNodeName());
+ }
properties.setString(QPID_FED_TAG,
connection.getBroker().getFederationTag());
authenticator = SaslAuthenticator::createAuthenticator(c);
Modified: qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp?rev=1692936&r1=1692935&r2=1692936&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp Mon Jul 27 19:59:36
2015
@@ -353,8 +353,6 @@ void Connection::open()
pn_data_t *props = pn_connection_properties(connection);
if (props) {
boost::shared_ptr<const System> sysInfo = getBroker().getSystem();
- std::string osName(sysInfo->getOsName());
- std::string nodeName(sysInfo->getNodeName());
pn_data_clear(props);
pn_data_put_map(props);
@@ -363,10 +361,14 @@ void Connection::open()
pn_data_put_string(props, pn_bytes(qpid::product.size(),
qpid::product.c_str()));
pn_data_put_symbol(props, pn_bytes(7, "version"));
pn_data_put_string(props, pn_bytes(qpid::version.size(),
qpid::version.c_str()));
- pn_data_put_symbol(props, pn_bytes(8, "platform"));
- pn_data_put_string(props, pn_bytes(osName.size(), osName.c_str()));
- pn_data_put_symbol(props, pn_bytes(4, "host"));
- pn_data_put_string(props, pn_bytes(nodeName.size(), nodeName.c_str()));
+ if (sysInfo) {
+ std::string osName(sysInfo->getOsName());
+ std::string nodeName(sysInfo->getNodeName());
+ pn_data_put_symbol(props, pn_bytes(8, "platform"));
+ pn_data_put_string(props, pn_bytes(osName.size(), osName.c_str()));
+ pn_data_put_symbol(props, pn_bytes(4, "host"));
+ pn_data_put_string(props, pn_bytes(nodeName.size(),
nodeName.c_str()));
+ }
pn_data_exit(props);
pn_data_rewind(props);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]