diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-09-06 00:32:09 +0200 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-09-06 00:32:09 +0200 |
commit | 6490ee3a34c914a4c59125d947afd5b7fc01810d (patch) | |
tree | b9647d71ef4a473986519bcbd3a5ce76a108afde | |
parent | Merge pull request #713 from Thulinma/noMoreDuplicates (diff) | |
download | nheko-6490ee3a34c914a4c59125d947afd5b7fc01810d.tar.xz |
Add workaround for broken key counts
-rw-r--r-- | src/ChatPage.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp index 5d2117cc..c5c27964 100644 --- a/src/ChatPage.cpp +++ b/src/ChatPage.cpp @@ -1001,6 +1001,23 @@ ChatPage::ensureOneTimeKeyCount(const std::map<std::string, uint16_t> &counts) // mark as published anyway, otherwise we may end up in a loop. olm::mark_keys_as_published(); }); + } else if (count->second > 2 * MAX_ONETIME_KEYS) { + nhlog::crypto()->warn("too many one-time keys, deleting 1"); + mtx::requests::ClaimKeys req; + req.one_time_keys[http::client()->user_id().to_string()] + [http::client()->device_id()] = + std::string(mtx::crypto::SIGNED_CURVE25519); + http::client()->claim_keys( + req, [](const mtx::responses::ClaimKeys &, mtx::http::RequestErr err) { + if (err) + nhlog::crypto()->warn( + "failed to clear 1 one-time key: {} {} {}", + err->matrix_error.error, + static_cast<int>(err->status_code), + static_cast<int>(err->error_code)); + else + nhlog::crypto()->info("cleared 1 one-time key"); + }); } } } |