aboutsummaryrefslogtreecommitdiff
path: root/lib/connection.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/connection.cpp')
-rw-r--r--lib/connection.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/connection.cpp b/lib/connection.cpp
index 81151135..6e04883e 100644
--- a/lib/connection.cpp
+++ b/lib/connection.cpp
@@ -977,22 +977,22 @@ void Connection::Private::consumeToDeviceEvents(Events&& toDeviceEvents)
if (!toDeviceEvents.empty()) {
qCDebug(E2EE) << "Consuming" << toDeviceEvents.size()
<< "to-device events";
- visitEach(toDeviceEvents, [this](const EncryptedEvent& event) {
- if (event.algorithm() != OlmV1Curve25519AesSha2AlgoKey) {
- qCDebug(E2EE) << "Unsupported algorithm" << event.id()
- << "for event" << event.algorithm();
- return;
- }
- if (isKnownCurveKey(event.senderId(), event.senderKey())) {
- handleEncryptedToDeviceEvent(event);
- return;
+ for (auto&& tdEvt : toDeviceEvents)
+ if (auto&& event = eventCast<EncryptedEvent>(std::move(tdEvt))) {
+ if (event->algorithm() != OlmV1Curve25519AesSha2AlgoKey) {
+ qCDebug(E2EE) << "Unsupported algorithm" << event->id()
+ << "for event" << event->algorithm();
+ return;
+ }
+ if (isKnownCurveKey(event->senderId(), event->senderKey())) {
+ handleEncryptedToDeviceEvent(*event);
+ return;
+ }
+ trackedUsers += event->senderId();
+ outdatedUsers += event->senderId();
+ encryptionUpdateRequired = true;
+ pendingEncryptedEvents.push_back(std::move(event));
}
- trackedUsers += event.senderId();
- outdatedUsers += event.senderId();
- encryptionUpdateRequired = true;
- pendingEncryptedEvents.push_back(
- makeEvent<EncryptedEvent>(event.fullJson()));
- });
}
#endif
}