protocol: Coalesce duplicate recipients in SSv2 parsing

There should be no reason for a client to split up devices of the same
recipient in a non-contiguous manner, but since we'd have to check it
anyway, we might as well accept it. (Duplicating devices within a
recipient can then be checked separately.)
This commit is contained in:
Jordan Rose
2023-11-01 17:13:29 -07:00
parent f47880d5ce
commit 08df716540
5 changed files with 70 additions and 41 deletions

View File

@@ -199,11 +199,12 @@ pub fn initialize_sessions_v4() -> Result<(SessionRecord, SessionRecord), Signal
pub fn extract_single_ssv2_received_message(input: &[u8]) -> (ServiceId, Vec<u8>) {
let message = SealedSenderV2SentMessage::parse(input).expect("valid");
assert_eq!(1, message.recipients.len());
let (service_id, recipient) = message.recipients.first().expect("checked length");
let result = message
.received_message_parts_for_recipient(&message.recipients[0])
.received_message_parts_for_recipient(recipient)
.as_ref()
.concat();
(message.recipients[0].service_id, result)
(*service_id, result)
}
pub enum IdChoice {