summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/SslPlugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/qpid/sys/SslPlugin.cpp')
-rw-r--r--cpp/src/qpid/sys/SslPlugin.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/cpp/src/qpid/sys/SslPlugin.cpp b/cpp/src/qpid/sys/SslPlugin.cpp
index ab15785492..48baef9042 100644
--- a/cpp/src/qpid/sys/SslPlugin.cpp
+++ b/cpp/src/qpid/sys/SslPlugin.cpp
@@ -96,10 +96,12 @@ typedef SslProtocolFactoryTmpl<SslMuxSocket> SslMuxProtocolFactory;
// Static instance to initialise plugin
static struct SslPlugin : public Plugin {
SslServerOptions options;
+ bool nssInitialized;
Options* getOptions() { return &options; }
- ~SslPlugin() { ssl::shutdownNSS(); }
+ SslPlugin() : nssInitialized(false) {}
+ ~SslPlugin() { if (nssInitialized) ssl::shutdownNSS(); }
void earlyInitialize(Target& target) {
broker::Broker* broker = dynamic_cast<broker::Broker*>(&target);
@@ -129,6 +131,7 @@ static struct SslPlugin : public Plugin {
} else {
try {
ssl::initNSS(options, true);
+ nssInitialized = true;
const broker::Broker::Options& opts = broker->getOptions();