Author: kgiusti
Date: Wed Jun 17 12:08:35 2015
New Revision: 1685995
URL: http://svn.apache.org/r1685995
Log:
QPID-6592: include identifying information in the connection handshake
For AMQP 1.0 connections, this patch adds identification information
to the connection properties in the open performative.
For AMQP 0-10 connections, this information is provided in the
server-properties argument of the connection.start control.
Modified:
qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.h
qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp
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=1685995&r1=1685994&r2=1685995&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp Wed Jun 17
12:08:35 2015
@@ -39,6 +39,7 @@
#include "qpid/broker/AclModule.h"
#include "qpid/amqp_0_10/Codecs.h"
#include "qmf/org/apache/qpid/broker/EventClientConnectFail.h"
+#include "qpid/Version.h"
using namespace qpid;
using namespace qpid::broker;
@@ -118,7 +119,12 @@ ConnectionHandler::Handler::Handler(qpid
if (serverMode) {
FieldTable properties;
Array mechanisms(0x95);
+ boost::shared_ptr<const System> sysInfo =
connection.getBroker().getSystem();
+ properties.setString("product", qpid::product);
+ properties.setString("version", qpid::version);
+ 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/ConnectionHandler.h
URL:
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.h?rev=1685995&r1=1685994&r2=1685995&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/ConnectionHandler.h Wed Jun 17 12:08:35
2015
@@ -36,6 +36,8 @@
#include "qpid/framing/ProtocolVersion.h"
#include "qpid/Exception.h"
#include "qpid/sys/SecurityLayer.h"
+#include "qpid/broker/System.h"
+
namespace qpid {
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=1685995&r1=1685994&r2=1685995&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/amqp/Connection.cpp Wed Jun 17 12:08:35
2015
@@ -32,6 +32,7 @@
#include "qpid/sys/Time.h"
#include "qpid/sys/Timer.h"
#include "qpid/sys/OutputControl.h"
+#include "qpid/Version.h"
#include "config.h"
#include <sstream>
extern "C" {
@@ -345,6 +346,31 @@ void Connection::open()
<< " remote=" <<
pn_transport_get_remote_idle_timeout(transport));
}
+ // QPID-6592: put self-identifying information into the connection
+ // properties. Use keys defined by the 0-10 spec, as AMQP 1.0 has yet to
+ // define any.
+ //
+ 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);
+ pn_data_enter(props);
+ pn_data_put_symbol(props, pn_bytes(7, "product"));
+ 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()));
+ pn_data_exit(props);
+ pn_data_rewind(props);
+ }
+
pn_connection_open(connection);
out.connectionEstablished();
opened();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]