summaryrefslogtreecommitdiffstats
path: root/src/network/ssl/qsslsocket_opensslpre11.cpp
diff options
context:
space:
mode:
authorTimur Pocheptsov <timur.pocheptsov@qt.io>2018-10-30 10:43:51 +0100
committerTimur Pocheptsov <timur.pocheptsov@qt.io>2018-11-02 05:00:14 +0000
commit611423099667d2dc18e6fb63967cbbfd8a65829c (patch)
tree3e736b682dfadc09377b6c613a6d070f26cced3c /src/network/ssl/qsslsocket_opensslpre11.cpp
parente3a552a130fc09725c8adda3548d297fc96e058a (diff)
Fix supportsSsl() to make it more consistent
Attempts to use QSslSocket and its OpenSSL 1.1 back-end with OpenSSL 1.1.1 in a very peculiar way (for some reason the reporter calls OPENSSL_no_config()) combined with a bug in OpenSSL 1.1.1 resulted in a QSslSocket dead-locking in initialization. This was happening because supportsSsl() first reported false (OpenSSL internally fails to initialize after OPENSSL_no_config()), but we have s_libraryLoaded set to true too early, thus the first supportsSsl() returns false, the second - true. Move setting of s_libraryLoaded later so that we don't claim to support OpenSSL when an earlier ensureLibraryLoaded() attempt failed. Task-number: QTBUG-70956 Task-number: QTBUG-71446 Change-Id: I8ad8763d357c84fc38c62e2ce914366367c2b445 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'src/network/ssl/qsslsocket_opensslpre11.cpp')
-rw-r--r--src/network/ssl/qsslsocket_opensslpre11.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/network/ssl/qsslsocket_opensslpre11.cpp b/src/network/ssl/qsslsocket_opensslpre11.cpp
index 062e03f4e6..bc4fd9dc85 100644
--- a/src/network/ssl/qsslsocket_opensslpre11.cpp
+++ b/src/network/ssl/qsslsocket_opensslpre11.cpp
@@ -215,8 +215,6 @@ bool QSslSocketPrivate::ensureLibraryLoaded()
QMutexLocker locker(openssl_locks()->initLock());
if (!s_libraryLoaded) {
- s_libraryLoaded = true;
-
// Initialize OpenSSL.
q_CRYPTO_set_id_callback(id_function);
q_CRYPTO_set_locking_callback(locking_function);
@@ -235,6 +233,8 @@ bool QSslSocketPrivate::ensureLibraryLoaded()
qWarning("Random number generator not seeded, disabling SSL support");
return false;
}
+
+ s_libraryLoaded = true;
}
return true;
}