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();
|