diff options
author | Gordon Sim <gsim@apache.org> | 2009-03-12 15:28:02 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2009-03-12 15:28:02 +0000 |
commit | 20538b5f798445da1105a33b3c63aa4782b35ddb (patch) | |
tree | 0493d60a18c7c8fc9d1f2c853cbe5be4749b9ecf /cpp | |
parent | 449dfd278e6b6dfc49d4855ef224c80ffd809060 (diff) | |
download | qpid-python-20538b5f798445da1105a33b3c63aa4782b35ddb.tar.gz |
QPID-1728: Avoid logging error messages on 'shadow' connections that are outgoing links.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@752897 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/src/qpid/broker/ConnectionHandler.cpp | 38 | ||||
-rw-r--r-- | cpp/src/qpid/broker/ConnectionHandler.h | 12 |
2 files changed, 19 insertions, 31 deletions
diff --git a/cpp/src/qpid/broker/ConnectionHandler.cpp b/cpp/src/qpid/broker/ConnectionHandler.cpp index b79342b86c..63212c7794 100644 --- a/cpp/src/qpid/broker/ConnectionHandler.cpp +++ b/cpp/src/qpid/broker/ConnectionHandler.cpp @@ -24,8 +24,7 @@ #include "Connection.h" #include "SecureConnection.h" #include "qpid/Url.h" -#include "qpid/framing/ClientInvoker.h" -#include "qpid/framing/ServerInvoker.h" +#include "qpid/framing/AllInvoker.h" #include "qpid/framing/enum.h" #include "qpid/log/Statement.h" #include "qpid/sys/SecurityLayer.h" @@ -54,32 +53,25 @@ const int SESSION_FLOW_CONTROL_VER = 1; void ConnectionHandler::close(connection::CloseCode code, const string& text) { - handler->client.close(code, text); + handler->proxy.close(code, text); } void ConnectionHandler::heartbeat() { - handler->client.heartbeat(); + handler->proxy.heartbeat(); } void ConnectionHandler::handle(framing::AMQFrame& frame) { AMQMethodBody* method=frame.getBody()->getMethod(); try{ - bool handled = false; - if (handler->serverMode) { - handled = invoke(static_cast<AMQP_ServerOperations::ConnectionHandler&>(*handler.get()), *method); - } else { - handled = invoke(static_cast<AMQP_ClientOperations::ConnectionHandler&>(*handler.get()), *method); - } - if (!handled) { + if (!invoke(static_cast<AMQP_AllOperations::ConnectionHandler&>(*handler.get()), *method)) { handler->connection.getChannel(frame.getChannel()).in(frame); } - }catch(ConnectionException& e){ - handler->client.close(e.code, e.what()); + handler->proxy.close(e.code, e.what()); }catch(std::exception& e){ - handler->client.close(541/*internal error*/, e.what()); + handler->proxy.close(541/*internal error*/, e.what()); } } @@ -91,7 +83,7 @@ void ConnectionHandler::setSecureConnection(SecureConnection* secured) ConnectionHandler::ConnectionHandler(Connection& connection, bool isClient) : handler(new Handler(connection, isClient)) {} ConnectionHandler::Handler::Handler(Connection& c, bool isClient) : - client(c.getOutput()), server(c.getOutput()), + proxy(c.getOutput()), connection(c), serverMode(!isClient), acl(0), secured(0) { if (serverMode) { @@ -109,7 +101,7 @@ ConnectionHandler::Handler::Handler(Connection& c, bool isClient) : Array locales(0x95); boost::shared_ptr<FieldValue> l(new Str16Value(en_US)); locales.add(l); - client.start(properties, mechanisms, locales); + proxy.start(properties, mechanisms, locales); } } @@ -139,7 +131,7 @@ void ConnectionHandler::Handler::startOk(const framing::FieldTable& clientProper connection.setFederationPeerTag(clientProperties.getAsString(QPID_FED_TAG)); if (connection.isFederationLink()) { if (acl && !acl->authorise(connection.getUserId(),acl::ACT_CREATE,acl::OBJ_LINK,"")){ - client.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,"ACL denied creating a federation link"); + proxy.close(framing::connection::CLOSE_CODE_CONNECTION_FORCED,"ACL denied creating a federation link"); return; } QPID_LOG(info, "Connection is a federation link"); @@ -193,7 +185,7 @@ void ConnectionHandler::Handler::open(const string& /*virtualHost*/, framing::Array array(0x95); // str16 array for (std::vector<Url>::iterator i = urls.begin(); i < urls.end(); ++i) array.add(boost::shared_ptr<Str16Value>(new Str16Value(i->str()))); - client.openOk(array); + proxy.openOk(array); //install security layer if one has been negotiated: if (secured) { @@ -212,7 +204,7 @@ void ConnectionHandler::Handler::close(uint16_t replyCode, const string& replyTe if (replyCode == framing::connection::CLOSE_CODE_CONNECTION_FORCED) connection.notifyConnectionForced(replyText); - client.closeOk(); + proxy.closeOk(); connection.getOutput().close(); } @@ -238,12 +230,12 @@ void ConnectionHandler::Handler::start(const FieldTable& serverProperties, FieldTable ft; ft.setInt(QPID_FED_LINK,1); ft.setString(QPID_FED_TAG, connection.getBroker().getFederationTag()); - server.startOk(ft, mechanism, response, en_US); + proxy.startOk(ft, mechanism, response, en_US); } void ConnectionHandler::Handler::secure(const string& /*challenge*/) { - server.secureOk(""); + proxy.secureOk(""); } void ConnectionHandler::Handler::tune(uint16_t channelMax, @@ -253,8 +245,8 @@ void ConnectionHandler::Handler::tune(uint16_t channelMax, { connection.setFrameMax(frameMax); connection.setHeartbeat(heartbeatMax); - server.tuneOk(channelMax, frameMax, heartbeatMax); - server.open("/", Array(), true); + proxy.tuneOk(channelMax, frameMax, heartbeatMax); + proxy.open("/", Array(), true); } void ConnectionHandler::Handler::openOk(const framing::Array& knownHosts) diff --git a/cpp/src/qpid/broker/ConnectionHandler.h b/cpp/src/qpid/broker/ConnectionHandler.h index b24c10e9e8..ac4816dafa 100644 --- a/cpp/src/qpid/broker/ConnectionHandler.h +++ b/cpp/src/qpid/broker/ConnectionHandler.h @@ -25,10 +25,8 @@ #include "SaslAuthenticator.h" #include "qpid/framing/amqp_types.h" #include "qpid/framing/AMQFrame.h" -#include "qpid/framing/AMQP_ClientOperations.h" -#include "qpid/framing/AMQP_ClientProxy.h" -#include "qpid/framing/AMQP_ServerOperations.h" -#include "qpid/framing/AMQP_ServerProxy.h" +#include "qpid/framing/AMQP_AllOperations.h" +#include "qpid/framing/AMQP_AllProxy.h" #include "qpid/framing/enum.h" #include "qpid/framing/FrameHandler.h" #include "qpid/framing/ProtocolInitiation.h" @@ -44,11 +42,9 @@ class SecureConnection; class ConnectionHandler : public framing::FrameHandler { - struct Handler : public framing::AMQP_ServerOperations::ConnectionHandler, - public framing::AMQP_ClientOperations::ConnectionHandler + struct Handler : public framing::AMQP_AllOperations::ConnectionHandler { - framing::AMQP_ClientProxy::Connection client; - framing::AMQP_ServerProxy::Connection server; + framing::AMQP_AllProxy::Connection proxy; Connection& connection; bool serverMode; std::auto_ptr<SaslAuthenticator> authenticator; |