diff options
| author | Gordon Sim <gsim@apache.org> | 2013-05-22 22:23:48 +0000 |
|---|---|---|
| committer | Gordon Sim <gsim@apache.org> | 2013-05-22 22:23:48 +0000 |
| commit | 0e6a0080a8d3f47e07792be7025ea8151cfd9707 (patch) | |
| tree | 75f514261018e48c69b290ac6e10b1be23bb96b5 | |
| parent | 7f8dc70b43e82d68ef93219b8a98f928161baf43 (diff) | |
| download | qpid-python-0e6a0080a8d3f47e07792be7025ea8151cfd9707.tar.gz | |
QPID-4878: fix SASL for connections established by the broker
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1485467 13f79535-47bb-0310-9956-ffa450edef68
| -rw-r--r-- | cpp/src/qpid/broker/amqp/Domain.cpp | 2 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/amqp/Interconnect.cpp | 4 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/amqp/SaslClient.cpp | 7 | ||||
| -rwxr-xr-x[-rw-r--r--] | cpp/src/tests/qpidt | 0 |
4 files changed, 7 insertions, 6 deletions
diff --git a/cpp/src/qpid/broker/amqp/Domain.cpp b/cpp/src/qpid/broker/amqp/Domain.cpp index eb103c3e53..57a86da43b 100644 --- a/cpp/src/qpid/broker/amqp/Domain.cpp +++ b/cpp/src/qpid/broker/amqp/Domain.cpp @@ -168,7 +168,7 @@ qpid::sys::ConnectionCodec* InterconnectFactory::create(qpid::framing::ProtocolV qpid::sys::ConnectionCodec* InterconnectFactory::create(qpid::sys::OutputControl& out, const std::string& id, const qpid::sys::SecuritySettings& t) { bool useSasl = domain.getMechanisms() != NONE; - boost::shared_ptr<Interconnect> connection(new Interconnect(out, id, broker, true, incoming, name, source, target, domain, registry)); + boost::shared_ptr<Interconnect> connection(new Interconnect(out, id, broker, useSasl, incoming, name, source, target, domain, registry)); if (!relay) registry.add(name, connection); else connection->setRelay(relay); diff --git a/cpp/src/qpid/broker/amqp/Interconnect.cpp b/cpp/src/qpid/broker/amqp/Interconnect.cpp index 92a6f75f1e..c30ea25dce 100644 --- a/cpp/src/qpid/broker/amqp/Interconnect.cpp +++ b/cpp/src/qpid/broker/amqp/Interconnect.cpp @@ -41,7 +41,7 @@ namespace amqp { Interconnect::Interconnect(qpid::sys::OutputControl& out, const std::string& id, qpid::broker::Broker& broker, bool saslInUse, bool i, const std::string& n, const std::string& s, const std::string& t, Domain& d, Interconnects& r) - : Connection(out, id, broker, r, saslInUse, std::string()), incoming(i), name(n), source(s), target(t), domain(d), registry(r), headerDiscarded(false), + : Connection(out, id, broker, r, true, std::string()), incoming(i), name(n), source(s), target(t), domain(d), registry(r), headerDiscarded(saslInUse), closeRequested(false), isTransportDeleted(false) {} @@ -62,7 +62,7 @@ size_t Interconnect::encode(char* buffer, size_t size) } else { //The IO 'layer' will write in a protocol header when an //'outgoing' connection is established. However the proton - //potocol engine will also emit one. One needs to be + //protocol engine will also emit one. One needs to be //discarded, here we discard the one the engine emits for //interconnects. headerDiscarded = true; diff --git a/cpp/src/qpid/broker/amqp/SaslClient.cpp b/cpp/src/qpid/broker/amqp/SaslClient.cpp index 7e03ae9450..678fddbba9 100644 --- a/cpp/src/qpid/broker/amqp/SaslClient.cpp +++ b/cpp/src/qpid/broker/amqp/SaslClient.cpp @@ -36,7 +36,7 @@ namespace amqp { SaslClient::SaslClient(qpid::sys::OutputControl& out_, const std::string& id, boost::shared_ptr<Interconnect> c, std::auto_ptr<qpid::Sasl> s, const std::string& hostname_, const std::string& mechs, const qpid::sys::SecuritySettings& t) : qpid::amqp::SaslClient(id), out(out_), connection(c), sasl(s), - hostname(hostname_), allowedMechanisms(mechs), transport(t), readHeader(true), writeHeader(true), haveOutput(false), state(NONE) {} + hostname(hostname_), allowedMechanisms(mechs), transport(t), readHeader(true), writeHeader(false), haveOutput(false), state(NONE) {} SaslClient::~SaslClient() { @@ -103,7 +103,8 @@ void SaslClient::mechanisms(const std::string& offered) std::stringstream intersection; for (std::vector<std::string>::const_iterator i = allowed.begin(); i != allowed.end(); ++i) { if (std::find(supported.begin(), supported.end(), *i) != supported.end()) { - intersection << *i << " "; + if (!intersection.str().empty()) intersection << " "; + intersection << *i; } } mechanisms = intersection.str(); @@ -172,7 +173,7 @@ bool SaslClient::isClosed() const } qpid::framing::ProtocolVersion SaslClient::getVersion() const { - return connection->getVersion(); + return qpid::framing::ProtocolVersion(1,0,qpid::framing::ProtocolVersion::SASL); } }}} // namespace qpid::broker::amqp diff --git a/cpp/src/tests/qpidt b/cpp/src/tests/qpidt index 5bdfb6eefd..5bdfb6eefd 100644..100755 --- a/cpp/src/tests/qpidt +++ b/cpp/src/tests/qpidt |
