#endif
#include <folly/Range.h>
-#include <folly/io/async/ssl/OpenSSLPtrTypes.h>
+#include <folly/ssl/OpenSSLPtrTypes.h>
#include <folly/io/async/ssl/OpenSSLUtils.h>
#include <folly/portability/OpenSSL.h>
return ctx_;
}
- enum SSLLockType {
- LOCK_MUTEX,
- LOCK_SPINLOCK,
- LOCK_NONE
- };
+ enum SSLLockType { LOCK_MUTEX, LOCK_SPINLOCK, LOCK_SHAREDMUTEX, LOCK_NONE };
/**
* Set preferences for how to treat locks in OpenSSL. This must be
*/
static void setSSLLockTypes(std::map<int, SSLLockType> lockTypes);
+ /**
+ * Set the lock types and initialize OpenSSL in an atomic fashion. This
+ * aborts if the library has already been initialized.
+ */
+ static void setSSLLockTypesAndInitOpenSSL(
+ std::map<int, SSLLockType> lockTypes);
+
/**
* Determine if the SSL lock with the specified id (i.e.
* CRYPTO_LOCK_SSL_SESSION) is disabled. This should be called after
// Functions are called when locked by the calling function.
static void initializeOpenSSLLocked();
static void cleanupOpenSSLLocked();
+ static void setSSLLockTypesLocked(std::map<int, SSLLockType> inLockTypes);
};
typedef std::shared_ptr<SSLContext> SSLContextPtr;