diff options
author | Håvard Pettersen <havardpe@oath.com> | 2019-05-27 13:04:08 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2019-05-27 13:04:08 +0000 |
commit | 702e69e44831b43e85d9ac1cf1d05da6bd2fc5ce (patch) | |
tree | 4eac14eeba90fddee45088ed0859a6a8dac1cbf1 /vespalib | |
parent | 6dafac8266a710f77bcbaa444e5d780da1522bce (diff) |
use proper singleton for default crypto engine
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/net/crypto_engine.cpp | 24 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/net/crypto_engine.h | 3 |
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; }; /** |