summaryrefslogtreecommitdiff
blob: b44b78f2812fa2e56e9d58bb8ca4f80e2598b80f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
diff src/network/qsslsocket_openssl.cpp src/network/qsslsocket_openssl.cpp
--- src/network/qsslsocket_openssl.cpp
+++ src/network/qsslsocket_openssl.cpp
@@ -188,8 +188,8 @@ struct QSslErrorList
 Q_GLOBAL_STATIC(QSslErrorList, _q_sslErrorList)
 static int q_X509Callback(int ok, X509_STORE_CTX *ctx)
 {
-    Q_UNUSED(ok);
-    _q_sslErrorList()->errors << ctx->error;
+    if (!ok)
+        _q_sslErrorList()->errors << ctx->error;
     return ctx->error;
 }
 
@@ -297,6 +297,7 @@ bool QSslSocketBackendPrivate::initSslContext()
 
     // Clear the session.
     q_SSL_clear(ssl);
+    errorList.clear();
 
     // Initialize memory BIOs for encryption and decryption.
     readBio = q_BIO_new(q_BIO_s_mem());
@@ -570,7 +571,7 @@ bool QSslSocketBackendPrivate::testConnection()
     _q_sslErrorList()->mutex.lock();
     _q_sslErrorList()->errors.clear();
     int result = (mode == QSslSocket::SslClientMode) ? q_SSL_connect(ssl) : q_SSL_accept(ssl);
-    QList<int> errorList = _q_sslErrorList()->errors;
+    errorList << _q_sslErrorList()->errors;
     _q_sslErrorList()->mutex.unlock();
 
     // Check if we're encrypted or not.
diff src/network/qsslsocket_openssl_p.h src/network/qsslsocket_openssl_p.h
index be57b87..00b9b45 100644
--- src/network/qsslsocket_openssl_p.h
+++ src/network/qsslsocket_openssl_p.h
@@ -77,6 +77,7 @@ public:
     SSL_SESSION *session;
     X509_STORE *certificateStore;
     X509_STORE_CTX *certificateStoreCtx;
+    QList<int> errorList;
 
     // Platform specific functions
     void startClientEncryption();