Skip to content

Commit 44ef9df

Browse files
committed
Workaround UUID not found errors
This just ignores those errors when sending to a group. Ideally, this should mark such contacts as unregistered and not send messages to them anymore. But the store does not yet have the capability to do that. Related to whisperfish#110.
1 parent 97e2357 commit 44ef9df

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

Diff for: presage/src/manager/registered.rs

+7-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use libsignal_service::groups_v2::{decrypt_group, Group, GroupsManager, InMemory
1212
use libsignal_service::messagepipe::{Incoming, MessagePipe, ServiceCredentials};
1313
use libsignal_service::models::Contact;
1414
use libsignal_service::prelude::phonenumber::PhoneNumber;
15-
use libsignal_service::prelude::{ProtobufMessage, Uuid};
15+
use libsignal_service::prelude::{MessageSenderError, ProtobufMessage, Uuid};
1616
use libsignal_service::profile_cipher::ProfileCipher;
1717
use libsignal_service::proto::data_message::Delete;
1818
use libsignal_service::proto::{
@@ -962,7 +962,12 @@ impl<S: Store> Manager<S, Registered> {
962962
.await;
963963

964964
// return first error if any
965-
results.into_iter().find(|res| res.is_err()).transpose()?;
965+
// Ignore any NotFound errors, those mean that e.g. some contact in a group deleted his account.
966+
// TODO: Handle the NotFound error in the future by removing all sessions to this UUID and marking it as unregistered, not sending any messages to him anymore.
967+
results
968+
.into_iter()
969+
.find(|res| res.is_err() && !matches!(res, Err(MessageSenderError::NotFound { .. })))
970+
.transpose()?;
966971

967972
let content = Content {
968973
metadata: Metadata {

0 commit comments

Comments
 (0)