diff options
Diffstat (limited to 'tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp')
-rw-r--r-- | tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp index 17a3f3a4d0..e85c6b9922 100644 --- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp +++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp @@ -206,6 +206,7 @@ private slots: void ignoreSslErrorsList(); void ignoreSslErrorsListWithSlot_data(); void ignoreSslErrorsListWithSlot(); + void abortOnSslErrors(); void readFromClosedSocket(); void writeBigChunk(); void blacklistedCertificates(); @@ -248,6 +249,11 @@ protected slots: { socket->ignoreSslErrors(); } + void abortOnErrorSlot() + { + QSslSocket *sock = static_cast<QSslSocket *>(sender()); + sock->abort(); + } void untrustedWorkaroundSlot(const QList<QSslError> &errors) { if (errors.size() == 1 && @@ -2305,6 +2311,27 @@ void tst_QSslSocket::ignoreSslErrorsListWithSlot() QSKIP("Skipping flaky test - See QTBUG-29941"); } +void tst_QSslSocket::abortOnSslErrors() +{ + QFETCH_GLOBAL(bool, setProxy); + if (setProxy) + return; + + SslServer server; + QVERIFY(server.listen()); + + QSslSocket clientSocket; + connect(&clientSocket, SIGNAL(sslErrors(QList<QSslError>)), this, SLOT(abortOnErrorSlot())); + clientSocket.connectToHostEncrypted("127.0.0.1", server.serverPort()); + clientSocket.ignoreSslErrors(); + + QEventLoop loop; + QTimer::singleShot(1000, &loop, SLOT(quit())); + loop.exec(); + + QCOMPARE(clientSocket.state(), QAbstractSocket::UnconnectedState); +} + // make sure a closed socket has no bytesAvailable() // related to https://bugs.webkit.org/show_bug.cgi?id=28016 void tst_QSslSocket::readFromClosedSocket() |