summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2015-01-21 14:50:52 +0000
committerGordon Sim <gsim@apache.org>2015-01-21 14:50:52 +0000
commit05b0237a8bbdb66bc299b73837d691bbfa412ce7 (patch)
tree950ee9fc8c3465d0f734764f97fdbf0814ffea4f
parent6c2d47111003763d0f81cab83e1e7d24544dd852 (diff)
downloadqpid-python-05b0237a8bbdb66bc299b73837d691bbfa412ce7.tar.gz
QPID-6325: further improve 0-10 connection handling logic
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1653547 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/ConnectionHandler.cpp14
-rw-r--r--qpid/cpp/src/qpid/broker/ConnectionHandler.h3
2 files changed, 9 insertions, 8 deletions
diff --git a/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp b/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
index eece59d095..8972040be5 100644
--- a/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
+++ b/qpid/cpp/src/qpid/broker/ConnectionHandler.cpp
@@ -242,17 +242,17 @@ void ConnectionHandler::Handler::open(const string& /*virtualHost*/,
AclModule* acl = connection.getBroker().getAcl();
if (acl && acl->userAclRules()) {
if (!acl->authorise(connection.getUserId(),acl::ACT_CREATE,acl::OBJ_LINK,"")){
- proxy.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,
- QPID_MSG("ACL denied " << connection.getUserId()
- << " creating a federation link"));
+ connection.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,
+ QPID_MSG("ACL denied " << connection.getUserId()
+ << " creating a federation link"));
return;
}
} else {
if (connection.getBroker().isAuthenticating()) {
- proxy.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,
- QPID_MSG("User " << connection.getUserId()
- << " federation connection denied. Systems with authentication "
- "enabled must specify ACL create link rules."));
+ connection.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,
+ QPID_MSG("User " << connection.getUserId()
+ << " federation connection denied. Systems with authentication "
+ "enabled must specify ACL create link rules."));
return;
}
}
diff --git a/qpid/cpp/src/qpid/broker/ConnectionHandler.h b/qpid/cpp/src/qpid/broker/ConnectionHandler.h
index 7af2fe3cb4..30155fb903 100644
--- a/qpid/cpp/src/qpid/broker/ConnectionHandler.h
+++ b/qpid/cpp/src/qpid/broker/ConnectionHandler.h
@@ -100,13 +100,14 @@ class ConnectionHandler : public framing::FrameHandler
std::auto_ptr<Handler> handler;
bool handle(const qpid::framing::AMQMethodBody& method);
+ void close(framing::connection::CloseCode code, const std::string& text);
public:
ConnectionHandler(amqp_0_10::Connection& connection, bool isClient );
- void close(framing::connection::CloseCode code, const std::string& text);
void heartbeat();
void handle(framing::AMQFrame& frame);
void setSecureConnection(SecureConnection* secured);
bool isOpen() { return handler->isOpen; }
+ friend class amqp_0_10::Connection;
};