summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp5
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h1
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/SslTransport.cpp10
-rw-r--r--qpid/cpp/src/qpid/messaging/amqp/TransportContext.h3
4 files changed, 18 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
index 07367b8aa8..4230a0d644 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
+++ b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp
@@ -819,6 +819,11 @@ qpid::sys::Codec& ConnectionContext::getCodec()
return *this;
}
+const qpid::messaging::ConnectionOptions* ConnectionContext::getOptions()
+{
+ return this;
+}
+
std::size_t ConnectionContext::decode(const char* buffer, std::size_t size)
{
qpid::sys::ScopedLock<qpid::sys::Monitor> l(lock);
diff --git a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h
index 2b5e85a6f5..75afeba46a 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h
+++ b/qpid/cpp/src/qpid/messaging/amqp/ConnectionContext.h
@@ -102,6 +102,7 @@ class ConnectionContext : public qpid::sys::ConnectionCodec, public qpid::messag
void activateOutput();
qpid::sys::Codec& getCodec();
+ const qpid::messaging::ConnectionOptions* getOptions();
//ConnectionCodec interface:
std::size_t decode(const char* buffer, std::size_t size);
std::size_t encode(char* buffer, std::size_t size);
diff --git a/qpid/cpp/src/qpid/messaging/amqp/SslTransport.cpp b/qpid/cpp/src/qpid/messaging/amqp/SslTransport.cpp
index a62a553d90..953e989f5f 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/SslTransport.cpp
+++ b/qpid/cpp/src/qpid/messaging/amqp/SslTransport.cpp
@@ -20,6 +20,7 @@
*/
#include "SslTransport.h"
#include "TransportContext.h"
+#include "qpid/messaging/ConnectionOptions.h"
#include "qpid/sys/ssl/SslSocket.h"
#include "qpid/sys/AsynchIO.h"
#include "qpid/sys/ConnectionCodec.h"
@@ -52,7 +53,14 @@ struct StaticInit
}
-SslTransport::SslTransport(TransportContext& c, boost::shared_ptr<Poller> p) : context(c), connector(0), aio(0), poller(p) {}
+SslTransport::SslTransport(TransportContext& c, boost::shared_ptr<Poller> p) : context(c), connector(0), aio(0), poller(p)
+{
+ const ConnectionOptions* options = context.getOptions();
+ if (options->sslCertName != "") {
+ QPID_LOG(debug, "ssl-cert-name = " << options->sslCertName);
+ socket.setCertName(options->sslCertName);
+ }
+}
void SslTransport::connect(const std::string& host, const std::string& port)
{
diff --git a/qpid/cpp/src/qpid/messaging/amqp/TransportContext.h b/qpid/cpp/src/qpid/messaging/amqp/TransportContext.h
index 57192b5976..3ff353c19c 100644
--- a/qpid/cpp/src/qpid/messaging/amqp/TransportContext.h
+++ b/qpid/cpp/src/qpid/messaging/amqp/TransportContext.h
@@ -26,6 +26,8 @@ namespace sys {
class Codec;
}
namespace messaging {
+class ConnectionOptions;
+
namespace amqp {
/**
@@ -38,6 +40,7 @@ class TransportContext
public:
virtual ~TransportContext() {}
virtual qpid::sys::Codec& getCodec() = 0;
+ virtual const qpid::messaging::ConnectionOptions* getOptions() = 0;
virtual void closed() = 0;
virtual void opened() = 0;
private: