From e035d1407a80efc54ae46f9662dcc4fde9196df4 Mon Sep 17 00:00:00 2001 From: Nicolas Werner 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 80d06ae2..437bd658 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -939,33 +939,32 @@ ChatPage::currentPresence() const void ChatPage::ensureOneTimeKeyCount(const std::map &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(err->status_code), + static_cast(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(err->status_code), - static_cast(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(); + }); + } } }