aboutsummaryrefslogtreecommitdiffstats
path: root/ssl/ssl_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'ssl/ssl_init.c')
-rw-r--r--ssl/ssl_init.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/ssl/ssl_init.c b/ssl/ssl_init.c
index 134aa00d54..e7fc63dd11 100644
--- a/ssl/ssl_init.c
+++ b/ssl/ssl_init.c
@@ -301,8 +301,20 @@ static void ssl_library_stop(void)
*/
int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
{
- if (stopped)
+ static int stoperrset = 0;
+
+ if (stopped) {
+ if (!stoperrset) {
+ /*
+ * We only ever set this once to avoid getting into an infinite
+ * loop where the error system keeps trying to init and fails so
+ * sets an error etc
+ */
+ stoperrset = 1;
+ SSLerr(SSL_F_OPENSSL_INIT_SSL_LIBRARY_START, ERR_R_INIT_FAIL);
+ }
return 0;
+ }
if (!OPENSSL_init_crypto(opts | OPENSSL_INIT_ADD_ALL_CIPHERS
| OPENSSL_INIT_ADD_ALL_DIGESTS, settings))