diff options
Diffstat (limited to 'source/kde/kde/patch/kdepim-runtime/fb456a2ad77b8d2bd4b0013832591c1dda8bb09a.patch')
-rw-r--r-- | source/kde/kde/patch/kdepim-runtime/fb456a2ad77b8d2bd4b0013832591c1dda8bb09a.patch | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/source/kde/kde/patch/kdepim-runtime/fb456a2ad77b8d2bd4b0013832591c1dda8bb09a.patch b/source/kde/kde/patch/kdepim-runtime/fb456a2ad77b8d2bd4b0013832591c1dda8bb09a.patch new file mode 100644 index 000000000..9aa39dbfe --- /dev/null +++ b/source/kde/kde/patch/kdepim-runtime/fb456a2ad77b8d2bd4b0013832591c1dda8bb09a.patch @@ -0,0 +1,95 @@ +From fb456a2ad77b8d2bd4b0013832591c1dda8bb09a Mon Sep 17 00:00:00 2001 +From: Albert Astals Cid <aacid@kde.org> +Date: Fri, 10 Dec 2021 21:55:13 +0100 +Subject: [PATCH] POP3: Fix SSL/TLS connections + +We need to go into ssl before trying to read from the socket, otherwise +nothing works + +BUGS: 446751 +--- + resources/pop3/pop3protocol.cpp | 61 +++++++++++++++++---------------- + 1 file changed, 31 insertions(+), 30 deletions(-) + +diff --git a/resources/pop3/pop3protocol.cpp b/resources/pop3/pop3protocol.cpp +index c2d01d33a..02fa49770 100644 +--- a/resources/pop3/pop3protocol.cpp ++++ b/resources/pop3/pop3protocol.cpp +@@ -560,6 +560,37 @@ Result POP3Protocol::openConnection() + return Result::fail(mSocket->error(), errorString); + } + ++ if (mSettings.useSSL() || mSettings.useTLS()) { ++ mSocket->ignoreSslErrors(); // Don't worry, errors are handled manually below ++ mSocket->startClientEncryption(); ++ const bool encryptionStarted = mSocket->waitForEncrypted(s_connectTimeout); ++ ++ const QSslCipher cipher = mSocket->sessionCipher(); ++ const QList<QSslError> errors = mSocket->sslHandshakeErrors(); ++ if (!encryptionStarted || !errors.isEmpty() || !mSocket->isEncrypted() || cipher.isNull() || cipher.usedBits() == 0) { ++ QString errorString = std::accumulate(errors.begin(), errors.end(), QString(), [](QString cur, const QSslError &error) { ++ if (!cur.isEmpty()) ++ cur += QLatin1Char('\n'); ++ cur += error.errorString(); ++ return cur; ++ }); ++ ++ qCDebug(POP3_LOG) << "Initial SSL handshake failed. cipher.isNull() is" << cipher.isNull() << ", cipher.usedBits() is" << cipher.usedBits() ++ << ", the socket says:" << mSocket->errorString() << "and the SSL errors are:" << errorString; ++ mContinueAfterSslError = false; ++ Q_EMIT sslError(KSslErrorUiData(mSocket)); ++ if (!mContinueAfterSslError) { ++ if (errorString.isEmpty()) ++ errorString = mSocket->errorString(); ++ qCDebug(POP3_LOG) << "TLS setup has failed. Aborting." << errorString; ++ closeConnection(); ++ return Result::fail(ERR_SSL_FAILURE, i18n("SSL/TLS error: %1", errorString)); ++ } ++ } else { ++ qCDebug(POP3_LOG) << "TLS has been enabled."; ++ } ++ } ++ + mConnected = true; + + greeting_buf = new char[GREETING_BUF_LEN]; +@@ -609,36 +640,6 @@ Result POP3Protocol::openConnection() + "disable TLS in the POP account settings dialog.")); + } + } +- if (mSettings.useSSL() || mSettings.useTLS()) { +- mSocket->ignoreSslErrors(); // Don't worry, errors are handled manually below +- mSocket->startClientEncryption(); +- const bool encryptionStarted = mSocket->waitForEncrypted(s_connectTimeout); +- +- const QSslCipher cipher = mSocket->sessionCipher(); +- const QList<QSslError> errors = mSocket->sslHandshakeErrors(); +- if (!encryptionStarted || !errors.isEmpty() || !mSocket->isEncrypted() || cipher.isNull() || cipher.usedBits() == 0) { +- QString errorString = std::accumulate(errors.begin(), errors.end(), QString(), [](QString cur, const QSslError &error) { +- if (!cur.isEmpty()) +- cur += QLatin1Char('\n'); +- cur += error.errorString(); +- return cur; +- }); +- +- qCDebug(POP3_LOG) << "Initial SSL handshake failed. cipher.isNull() is" << cipher.isNull() << ", cipher.usedBits() is" << cipher.usedBits() +- << ", the socket says:" << mSocket->errorString() << "and the SSL errors are:" << errorString; +- mContinueAfterSslError = false; +- Q_EMIT sslError(KSslErrorUiData(mSocket)); +- if (!mContinueAfterSslError) { +- if (errorString.isEmpty()) +- errorString = mSocket->errorString(); +- qCDebug(POP3_LOG) << "TLS setup has failed. Aborting." << errorString; +- closeConnection(); +- return Result::fail(ERR_SSL_FAILURE, i18n("SSL/TLS error: %1", errorString)); +- } +- } else { +- qCDebug(POP3_LOG) << "TLS has been enabled."; +- } +- } + + if (supports_apop && m_try_apop) { + qCDebug(POP3_LOG) << "Trying APOP"; +-- +GitLab + |