From e035d1407a80efc54ae46f9662dcc4fde9196df4 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Sun, 5 Sep 2021 23:15:44 +0200
Subject: [PATCH] Conduit does not send count, if it didn't change

---
 src/ChatPage.cpp | 45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index 80d06ae21..437bd6586 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -939,33 +939,32 @@ ChatPage::currentPresence() const
 void
 ChatPage::ensureOneTimeKeyCount(const std::map<std::string, uint16_t> &counts)
 {
-        uint16_t count = 0;
-        if (auto c = counts.find(mtx::crypto::SIGNED_CURVE25519); c != counts.end())
-                count = c->second;
+        if (auto count = counts.find(mtx::crypto::SIGNED_CURVE25519); c != counts.end()) {
+                if (count < MAX_ONETIME_KEYS) {
+                        const int nkeys = MAX_ONETIME_KEYS - count;
 
-        if (count < MAX_ONETIME_KEYS) {
-                const int nkeys = MAX_ONETIME_KEYS - count;
+                        nhlog::crypto()->info(
+                          "uploading {} {} keys", nkeys, mtx::crypto::SIGNED_CURVE25519);
+                        olm::client()->generate_one_time_keys(nkeys);
 
-                nhlog::crypto()->info(
-                  "uploading {} {} keys", nkeys, mtx::crypto::SIGNED_CURVE25519);
-                olm::client()->generate_one_time_keys(nkeys);
-
-                http::client()->upload_keys(
-                  olm::client()->create_upload_keys_request(),
-                  [](const mtx::responses::UploadKeys &, mtx::http::RequestErr err) {
-                          if (err) {
-                                  nhlog::crypto()->warn("failed to update one-time keys: {} {} {}",
-                                                        err->matrix_error.error,
-                                                        static_cast<int>(err->status_code),
-                                                        static_cast<int>(err->error_code));
+                        http::client()->upload_keys(
+                          olm::client()->create_upload_keys_request(),
+                          [](const mtx::responses::UploadKeys &, mtx::http::RequestErr err) {
+                                  if (err) {
+                                          nhlog::crypto()->warn(
+                                            "failed to update one-time keys: {} {} {}",
+                                            err->matrix_error.error,
+                                            static_cast<int>(err->status_code),
+                                            static_cast<int>(err->error_code));
 
-                                  if (err->status_code < 400 || err->status_code >= 500)
-                                          return;
-                          }
+                                          if (err->status_code < 400 || err->status_code >= 500)
+                                                  return;
+                                  }
 
-                          // mark as published anyway, otherwise we may end up in a loop.
-                          olm::mark_keys_as_published();
-                  });
+                                  // mark as published anyway, otherwise we may end up in a loop.
+                                  olm::mark_keys_as_published();
+                          });
+                }
         }
 }
 
-- 
GitLab