mirror of https://github.com/Icinga/icinga2.git
parent
edf82f7b4d
commit
0ea144a64d
|
@ -38,11 +38,9 @@ bool I2_EXPORT TlsStream::m_SSLIndexInitialized = false;
|
|||
* @param sslContext The SSL context for the client.
|
||||
*/
|
||||
TlsStream::TlsStream(const Stream::Ptr& innerStream, TlsRole role, shared_ptr<SSL_CTX> sslContext)
|
||||
: m_InnerStream(innerStream), m_SSLContext(sslContext), m_Role(role)
|
||||
: m_InnerStream(innerStream), m_Role(role)
|
||||
{
|
||||
m_SSL = shared_ptr<SSL>(SSL_new(m_SSLContext.get()), SSL_free);
|
||||
|
||||
m_SSLContext.reset();
|
||||
m_SSL = shared_ptr<SSL>(SSL_new(sslContext.get()), SSL_free);
|
||||
|
||||
if (!m_SSL) {
|
||||
BOOST_THROW_EXCEPTION(openssl_error()
|
||||
|
|
|
@ -59,7 +59,6 @@ public:
|
|||
virtual bool IsEof(void) const;
|
||||
|
||||
private:
|
||||
shared_ptr<SSL_CTX> m_SSLContext;
|
||||
shared_ptr<SSL> m_SSL;
|
||||
BIO *m_BIO;
|
||||
|
||||
|
|
|
@ -23,6 +23,15 @@ namespace icinga
|
|||
{
|
||||
|
||||
static bool l_SSLInitialized = false;
|
||||
static boost::mutex *l_Mutexes;
|
||||
|
||||
static void OpenSSLLockingCallback(int mode, int type, const char *file, int line)
|
||||
{
|
||||
if (mode & CRYPTO_LOCK)
|
||||
l_Mutexes[type].lock();
|
||||
else
|
||||
l_Mutexes[type].unlock();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the OpenSSL library.
|
||||
|
@ -37,6 +46,9 @@ static void InitializeOpenSSL(void)
|
|||
|
||||
SSL_COMP_get_compression_methods();
|
||||
|
||||
l_Mutexes = new boost::mutex[CRYPTO_num_locks()];
|
||||
CRYPTO_set_locking_callback(&OpenSSLLockingCallback);
|
||||
|
||||
l_SSLInitialized = true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue