kdepim-runtime: update to 21.12.1.
This commit is contained in:
parent
385845a612
commit
8c573fe8b7
2 changed files with 3 additions and 130 deletions
|
@ -1,127 +0,0 @@
|
||||||
From f14fabcefb45790175e209ef8ae394def4a805e9 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 connections
|
|
||||||
|
|
||||||
We need to go into ssl before trying to read from the socket, otherwise
|
|
||||||
nothing works
|
|
||||||
|
|
||||||
BUGS: 446751
|
|
||||||
---
|
|
||||||
resources/pop3/pop3protocol.cpp | 72 ++++++++++++++++++++-------------
|
|
||||||
resources/pop3/pop3protocol.h | 2 +
|
|
||||||
2 files changed, 45 insertions(+), 29 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/resources/pop3/pop3protocol.cpp b/resources/pop3/pop3protocol.cpp
|
|
||||||
index c2d01d33a..15971919e 100644
|
|
||||||
--- a/resources/pop3/pop3protocol.cpp
|
|
||||||
+++ b/resources/pop3/pop3protocol.cpp
|
|
||||||
@@ -535,6 +535,39 @@ Result POP3Protocol::loginPASS()
|
|
||||||
return Result::pass();
|
|
||||||
}
|
|
||||||
|
|
||||||
+Result POP3Protocol::startSsl()
|
|
||||||
+{
|
|
||||||
+ 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.";
|
|
||||||
+ }
|
|
||||||
+ return Result::pass();
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
Result POP3Protocol::openConnection()
|
|
||||||
{
|
|
||||||
m_try_apop = mSettings.authenticationMethod() == MailTransport::Transport::EnumAuthenticationType::APOP;
|
|
||||||
@@ -560,6 +593,13 @@ Result POP3Protocol::openConnection()
|
|
||||||
return Result::fail(mSocket->error(), errorString);
|
|
||||||
}
|
|
||||||
|
|
||||||
+ if (mSettings.useSSL()) {
|
|
||||||
+ const Result res = startSsl();
|
|
||||||
+ if (!res.success) {
|
|
||||||
+ return res;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
mConnected = true;
|
|
||||||
|
|
||||||
greeting_buf = new char[GREETING_BUF_LEN];
|
|
||||||
@@ -608,35 +648,9 @@ Result POP3Protocol::openConnection()
|
|
||||||
"was unsuccessful.\nYou can "
|
|
||||||
"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.";
|
|
||||||
+ const Result res = startSsl();
|
|
||||||
+ if (!res.success) {
|
|
||||||
+ return res;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
diff --git a/resources/pop3/pop3protocol.h b/resources/pop3/pop3protocol.h
|
|
||||||
index 9b40b334f..d01f7ab7a 100644
|
|
||||||
--- a/resources/pop3/pop3protocol.h
|
|
||||||
+++ b/resources/pop3/pop3protocol.h
|
|
||||||
@@ -127,6 +127,8 @@ private:
|
|
||||||
*/
|
|
||||||
Q_REQUIRED_RESULT Result loginPASS();
|
|
||||||
|
|
||||||
+ Q_REQUIRED_RESULT Result startSsl();
|
|
||||||
+
|
|
||||||
const Settings &mSettings;
|
|
||||||
QSslSocket *const mSocket;
|
|
||||||
unsigned short int m_iPort;
|
|
||||||
--
|
|
||||||
GitLab
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# Template file for 'kdepim-runtime'
|
# Template file for 'kdepim-runtime'
|
||||||
pkgname=kdepim-runtime
|
pkgname=kdepim-runtime
|
||||||
version=21.12.0
|
version=21.12.1
|
||||||
revision=2
|
revision=1
|
||||||
build_style=cmake
|
build_style=cmake
|
||||||
# XXX KolabLibraries, Kolabxml
|
# XXX KolabLibraries, Kolabxml
|
||||||
hostmakedepends="extra-cmake-modules python3 kdoctools kdesignerplugin
|
hostmakedepends="extra-cmake-modules python3 kdoctools kdesignerplugin
|
||||||
|
@ -15,7 +15,7 @@ maintainer="John <me@johnnynator.dev>"
|
||||||
license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later, AGPL-3.0-or-later, BSD-3-Clause, BSD-2-Clause"
|
license="GPL-2.0-or-later, GPL-3.0-or-later, LGPL-2.1-or-later, AGPL-3.0-or-later, BSD-3-Clause, BSD-2-Clause"
|
||||||
homepage="https://invent.kde.org/unmaintained/kdepimlibs"
|
homepage="https://invent.kde.org/unmaintained/kdepimlibs"
|
||||||
distfiles="${KDE_SITE}/release-service/${version}/src/${pkgname}-${version}.tar.xz"
|
distfiles="${KDE_SITE}/release-service/${version}/src/${pkgname}-${version}.tar.xz"
|
||||||
checksum=2a0c0caa75aa0aef2f790b044a49d84ff5de22de6e07a4ffe45b990a2947b7d6
|
checksum=3df4111f3a443f0562c3b7a33b76ba1ad14872138ca2a45f67d7293528f869df
|
||||||
|
|
||||||
post_install() {
|
post_install() {
|
||||||
for license in AGPL-3.0-or-later.txt BSD-3-Clause.txt BSD-2-Clause.txt; do
|
for license in AGPL-3.0-or-later.txt BSD-3-Clause.txt BSD-2-Clause.txt; do
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue