diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-07-23 05:01:40 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-07-23 05:01:40 (GMT) |
commit | d1072c333225ded9e46cf857bef701cc67f6fc1d (patch) | |
tree | d20b15a94385a78f907350a0f74b9faa905eff3d /src/network/ssl/qsslsocket_openssl.cpp | |
parent | 4f35294d737d9059398b2c8f714c8e0ea37079ed (diff) | |
parent | c42f7058dfd7ea551b2d3bca5651b0c802c91259 (diff) | |
download | Qt-d1072c333225ded9e46cf857bef701cc67f6fc1d.zip Qt-d1072c333225ded9e46cf857bef701cc67f6fc1d.tar.gz Qt-d1072c333225ded9e46cf857bef701cc67f6fc1d.tar.bz2 |
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt into kinetic-declarativeui
Conflicts:
configure
configure.exe
src/gui/kernel/qaction.h
Diffstat (limited to 'src/network/ssl/qsslsocket_openssl.cpp')
-rw-r--r-- | src/network/ssl/qsslsocket_openssl.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index ea62a4d..130494e 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -839,7 +839,27 @@ bool QSslSocketBackendPrivate::startHandshake() if (!errors.isEmpty()) { sslErrors = errors; emit q->sslErrors(errors); - if (doVerifyPeer && !ignoreSslErrors) { + + bool doEmitSslError; + if (!ignoreErrorsList.empty()) { + // check whether the errors we got are all in the list of expected errors + // (applies only if the method QSslSocket::ignoreSslErrors(const QList<QSslError> &errors) + // was called) + doEmitSslError = false; + for (int a = 0; a < errors.count(); a++) { + if (!ignoreErrorsList.contains(errors.at(a))) { + doEmitSslError = true; + break; + } + } + } else { + // if QSslSocket::ignoreSslErrors(const QList<QSslError> &errors) was not called and + // we get an SSL error, emit a signal unless we ignored all errors (by calling + // QSslSocket::ignoreSslErrors() ) + doEmitSslError = !ignoreAllSslErrors; + } + // check whether we need to emit an SSL handshake error + if (doVerifyPeer && doEmitSslError) { q->setErrorString(sslErrors.first().errorString()); q->setSocketError(QAbstractSocket::SslHandshakeFailedError); emit q->error(QAbstractSocket::SslHandshakeFailedError); |