From 13890c04a7613c2e8f46ba7452aff4483247d7f4 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Tue, 22 Jan 2019 10:04:08 +0100 Subject: [PATCH] HttpCreds: Warn in log if keychain-write jobs fail #6776 Also, calling deleteLater() on jobs is unnecessary (they autodelete after finished()) and deleting the attached QSettings is also unnecessary because the settings object is parented to the job. --- src/libsync/creds/httpcredentials.cpp | 29 ++++++++++++++++----------- src/libsync/creds/httpcredentials.h | 4 ++-- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/libsync/creds/httpcredentials.cpp b/src/libsync/creds/httpcredentials.cpp index 4fb16792d..c2c28bcb5 100644 --- a/src/libsync/creds/httpcredentials.cpp +++ b/src/libsync/creds/httpcredentials.cpp @@ -480,12 +480,17 @@ void HttpCredentials::persist() job->setBinaryData(_clientSslCertificate.toPem()); job->start(); } else { - slotWriteClientCertPEMJobDone(); + slotWriteClientCertPEMJobDone(nullptr); } } -void HttpCredentials::slotWriteClientCertPEMJobDone() +void HttpCredentials::slotWriteClientCertPEMJobDone(Job *finishedJob) { + if (finishedJob && finishedJob->error() != QKeychain::NoError) { + qCWarning(lcHttpCredentials) << "Could not write client cert to credentials" + << finishedJob->error() << finishedJob->errorString(); + } + // write ssl key if there is one if (!_clientSslKey.isNull()) { auto *job = new WritePasswordJob(Theme::instance()->appName()); @@ -496,12 +501,17 @@ void HttpCredentials::slotWriteClientCertPEMJobDone() job->setBinaryData(_clientSslKey.toPem()); job->start(); } else { - slotWriteClientKeyPEMJobDone(); + slotWriteClientKeyPEMJobDone(nullptr); } } -void HttpCredentials::slotWriteClientKeyPEMJobDone() +void HttpCredentials::slotWriteClientKeyPEMJobDone(Job *finishedJob) { + if (finishedJob && finishedJob->error() != QKeychain::NoError) { + qCWarning(lcHttpCredentials) << "Could not write client key to credentials" + << finishedJob->error() << finishedJob->errorString(); + } + auto *job = new WritePasswordJob(Theme::instance()->appName()); addSettingsToJob(_account, job); job->setInsecureFallback(false); @@ -513,15 +523,10 @@ void HttpCredentials::slotWriteClientKeyPEMJobDone() void HttpCredentials::slotWriteJobDone(QKeychain::Job *job) { - delete job->settings(); - switch (job->error()) { - case NoError: - break; - default: - qCWarning(lcHttpCredentials) << "Error while writing password" << job->errorString(); + if (job && job->error() != QKeychain::NoError) { + qCWarning(lcHttpCredentials) << "Error while writing password" + << job->error() << job->errorString(); } - auto *wjob = qobject_cast(job); - wjob->deleteLater(); } void HttpCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator) diff --git a/src/libsync/creds/httpcredentials.h b/src/libsync/creds/httpcredentials.h index be74f9e51..2ac089f09 100644 --- a/src/libsync/creds/httpcredentials.h +++ b/src/libsync/creds/httpcredentials.h @@ -116,8 +116,8 @@ private Q_SLOTS: void slotReadClientKeyPEMJobDone(QKeychain::Job *); void slotReadJobDone(QKeychain::Job *); - void slotWriteClientCertPEMJobDone(); - void slotWriteClientKeyPEMJobDone(); + void slotWriteClientCertPEMJobDone(QKeychain::Job *); + void slotWriteClientKeyPEMJobDone(QKeychain::Job *); void slotWriteJobDone(QKeychain::Job *); protected: