cpp: Ensure that hasSecret is correct after update
authorAndre Heinecke <aheinecke@intevation.de>
Fri, 16 Dec 2016 18:09:13 +0000 (19:09 +0100)
committerAndre Heinecke <aheinecke@intevation.de>
Fri, 16 Dec 2016 18:09:13 +0000 (19:09 +0100)
* lang/cpp/src/key.cpp (Key::update): Check for
a secret key first before listing public keys.

--
This is a performance delay but the update should
only be called in a non gui thread anyway. The information
if we have the secret key for this key is important to provide
after update.

lang/cpp/src/key.cpp

index d621a81..4f7ec54 100644 (file)
@@ -341,7 +341,12 @@ void Key::update()
                         KeyListMode::Validate |
                         KeyListMode::WithTofu);
     Error err;
-    auto newKey = ctx->key(primaryFingerprint(), err, hasSecret());
+    auto newKey = ctx->key(primaryFingerprint(), err, true);
+    // Not secret so we get the information from the pubring.
+    if (newKey.isNull())
+      {
+        newKey = ctx->key(primaryFingerprint(), err, false);
+      }
     delete ctx;
     if (err) {
         return;