HttpCreds: Warn in log if keychain-write jobs fail #6776
authorChristian Kamm <mail@ckamm.de>
Tue, 22 Jan 2019 09:04:08 +0000 (10:04 +0100)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Tue, 15 Dec 2020 09:58:36 +0000 (10:58 +0100)
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
src/libsync/creds/httpcredentials.h

index 4fb16792d7a94e8882f376c80c3b379112f63f94..c2c28bcb527d6b30fab0adf1a4e3e97e646cc933 100644 (file)
@@ -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<WritePasswordJob *>(job);
-    wjob->deleteLater();
 }
 
 void HttpCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator)
index be74f9e516f8dde9fb8941c64324ec71f3208708..2ac089f09845bfc7b4c109a801dba48d797d2601 100644 (file)
@@ -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: