diff options
author | Ted Ross <tross@apache.org> | 2008-11-13 22:04:59 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2008-11-13 22:04:59 +0000 |
commit | fde0d6af59f7ff8d958c56aab6d57be3b491222a (patch) | |
tree | 15e7f08a879b5809d878ffd3e61b30aaa1b5b487 /cpp/src/qpid/broker/ConnectionHandler.cpp | |
parent | 0272430b4dd7ad2f05492d527d5f5f1bb50e7356 (diff) | |
download | qpid-python-fde0d6af59f7ff8d958c56aab6d57be3b491222a.tar.gz |
QPID-1461 - Added qmf event support for connections.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@713838 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/broker/ConnectionHandler.cpp')
-rw-r--r-- | cpp/src/qpid/broker/ConnectionHandler.cpp | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/cpp/src/qpid/broker/ConnectionHandler.cpp b/cpp/src/qpid/broker/ConnectionHandler.cpp index 8639b7949e..e8e2cc3e3b 100644 --- a/cpp/src/qpid/broker/ConnectionHandler.cpp +++ b/cpp/src/qpid/broker/ConnectionHandler.cpp @@ -28,11 +28,12 @@ #include "qpid/log/Statement.h" #include "qpid/Url.h" #include "AclModule.h" +#include "qmf/org/apache/qpid/broker/EventClientConnectFail.h" using namespace qpid; using namespace qpid::broker; using namespace qpid::framing; - +namespace _qmf = qmf::org::apache::qpid::broker; namespace { @@ -103,7 +104,19 @@ void ConnectionHandler::Handler::startOk(const framing::FieldTable& clientProper const string& response, const string& /*locale*/) { - authenticator->start(mechanism, response); + try { + authenticator->start(mechanism, response); + } catch (std::exception& e) { + management::ManagementAgent* agent = connection.getAgent(); + if (agent) { + string error; + string uid; + authenticator->getError(error); + authenticator->getUid(uid); + agent->raiseEvent(_qmf::EventClientConnectFail(connection.getMgmtId(), uid, error)); + } + throw; + } connection.setFederationLink(clientProperties.get(QPID_FED_LINK)); connection.setFederationPeerTag(clientProperties.getAsString(QPID_FED_TAG)); if (connection.isFederationLink()) { @@ -117,7 +130,19 @@ void ConnectionHandler::Handler::startOk(const framing::FieldTable& clientProper void ConnectionHandler::Handler::secureOk(const string& response) { - authenticator->step(response); + try { + authenticator->step(response); + } catch (std::exception& e) { + management::ManagementAgent* agent = connection.getAgent(); + if (agent) { + string error; + string uid; + authenticator->getError(error); + authenticator->getUid(uid); + agent->raiseEvent(_qmf::EventClientConnectFail(connection.getMgmtId(), uid, error)); + } + throw; + } } void ConnectionHandler::Handler::tuneOk(uint16_t /*channelmax*/, |