summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-05-22 22:23:48 +0000
committerGordon Sim <gsim@apache.org>2013-05-22 22:23:48 +0000
commit0e6a0080a8d3f47e07792be7025ea8151cfd9707 (patch)
tree75f514261018e48c69b290ac6e10b1be23bb96b5
parent7f8dc70b43e82d68ef93219b8a98f928161baf43 (diff)
downloadqpid-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.cpp2
-rw-r--r--cpp/src/qpid/broker/amqp/Interconnect.cpp4
-rw-r--r--cpp/src/qpid/broker/amqp/SaslClient.cpp7
-rwxr-xr-x[-rw-r--r--]cpp/src/tests/qpidt0
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