Sophie

Sophie

distrib > * > 2008.0 > x86_64 > media > main-updates-src > by-pkgid > e2344d49acb1512913347b9a9ddd8517 > files > 17

qt4-4.3.1-12.1mdv2008.0.src.rpm

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