summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2019-05-27 13:04:08 +0000
committerHåvard Pettersen <havardpe@oath.com>2019-05-27 13:04:08 +0000
commit702e69e44831b43e85d9ac1cf1d05da6bd2fc5ce (patch)
tree4eac14eeba90fddee45088ed0859a6a8dac1cbf1 /vespalib
parent6dafac8266a710f77bcbaa444e5d780da1522bce (diff)
use proper singleton for default crypto engine
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.cpp24
-rw-r--r--vespalib/src/vespa/vespalib/net/crypto_engine.h3
2 files changed, 11 insertions, 16 deletions
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
index e6127204ac2..ddc2ff14498 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.cpp
@@ -229,26 +229,24 @@ CryptoEngine::SP create_default_crypto_engine() {
return tls;
}
-} // namespace vespalib::<unnamed>
+CryptoEngine::SP try_create_default_crypto_engine() {
+ try {
+ return create_default_crypto_engine();
+ } catch (net::tls::CryptoException &e) {
+ LOG(error, "failed to create default crypto engine: %s", e.what());
+ std::quick_exit(78);
+ }
+}
-std::mutex CryptoEngine::_shared_lock;
-CryptoEngine::SP CryptoEngine::_shared_default(nullptr);
+} // namespace vespalib::<unnamed>
CryptoEngine::~CryptoEngine() = default;
CryptoEngine::SP
CryptoEngine::get_default()
{
- std::lock_guard guard(_shared_lock);
- if (!_shared_default) {
- try {
- _shared_default = create_default_crypto_engine();
- } catch (net::tls::CryptoException &e) {
- LOG(error, "failed to create default crypto engine: %s", e.what());
- std::quick_exit(78);
- }
- }
- return _shared_default;
+ static const CryptoEngine::SP shared_default = try_create_default_crypto_engine();
+ return shared_default;
}
CryptoSocket::UP
diff --git a/vespalib/src/vespa/vespalib/net/crypto_engine.h b/vespalib/src/vespa/vespalib/net/crypto_engine.h
index 177766fb789..1cb1305e039 100644
--- a/vespalib/src/vespa/vespalib/net/crypto_engine.h
+++ b/vespalib/src/vespa/vespalib/net/crypto_engine.h
@@ -20,9 +20,6 @@ struct CryptoEngine {
virtual CryptoSocket::UP create_crypto_socket(SocketHandle socket, bool is_server) = 0;
virtual ~CryptoEngine();
static CryptoEngine::SP get_default();
-private:
- static std::mutex _shared_lock;
- static CryptoEngine::SP _shared_default;
};
/**