diff options
| author | Charles E. Rolke <chug@apache.org> | 2012-06-11 02:09:38 +0000 |
|---|---|---|
| committer | Charles E. Rolke <chug@apache.org> | 2012-06-11 02:09:38 +0000 |
| commit | 9cf12d2df4edb6d2df5f75f0f719c88553b6fa46 (patch) | |
| tree | ae2391200615b39c1525707976bf2eba72cd13c9 /cpp/src/qpid/cluster/ConnectionCodec.cpp | |
| parent | 76f9fb4077321f08893dafddbbedbeceeafaaeec (diff) | |
| download | qpid-python-9cf12d2df4edb6d2df5f75f0f719c88553b6fa46.tar.gz | |
QPID-4022 C++ Broker connection limits by host ip and by user name.
Rework the strategy to deny connections based on configured limits.
All limits checked in one function from points in broker when the
user's authenticated name is known. Denied connections receive the
AMQP exception instead of getting the socket closed.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1348707 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/cluster/ConnectionCodec.cpp')
| -rw-r--r-- | cpp/src/qpid/cluster/ConnectionCodec.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/cpp/src/qpid/cluster/ConnectionCodec.cpp b/cpp/src/qpid/cluster/ConnectionCodec.cpp index d0ba8abfb3..54327fbfe2 100644 --- a/cpp/src/qpid/cluster/ConnectionCodec.cpp +++ b/cpp/src/qpid/cluster/ConnectionCodec.cpp @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -22,6 +22,7 @@ #include "qpid/cluster/Connection.h" #include "qpid/cluster/Cluster.h" #include "qpid/cluster/ProxyInputHandler.h" +#include "qpid/broker/AclModule.h" #include "qpid/broker/Connection.h" #include "qpid/framing/ConnectionCloseBody.h" #include "qpid/framing/ConnectionCloseOkBody.h" @@ -40,17 +41,10 @@ ConnectionCodec::Factory::create(ProtocolVersion v, sys::OutputControl& out, const std::string& id, const qpid::sys::SecuritySettings& external) { - broker::Broker& broker = cluster.getBroker(); - if (broker.getConnectionCounter().allowConnection()) - { - QPID_LOG(error, "Client max connection count limit exceeded: " - << broker.getOptions().maxConnections << " connection refused"); - return 0; - } if (v == ProtocolVersion(0, 10)) return new ConnectionCodec(v, out, id, cluster, false, false, external); else if (v == ProtocolVersion(0x80 + 0, 0x80 + 10)) // Catch-up connection - return new ConnectionCodec(v, out, id, cluster, true, false, external); + return new ConnectionCodec(v, out, id, cluster, true, false, external); return 0; } |
