diff --git a/matrix_sdk_crypto/src/requests.rs b/matrix_sdk_crypto/src/requests.rs index 98a9e3d7..5d0e841a 100644 --- a/matrix_sdk_crypto/src/requests.rs +++ b/matrix_sdk_crypto/src/requests.rs @@ -63,6 +63,14 @@ impl ToDeviceRequest { pub fn txn_id_string(&self) -> String { self.txn_id.to_string() } + + /// Get the number of unique messages this request contains. + /// + /// *Note*: A single message may be sent to multiple devices, so this may or + /// may not be the number of devices that will receive the messages as well. + pub fn message_count(&self) -> usize { + self.messages.values().map(|d| d.len()).sum() + } } /// Request that will publish a cross signing identity. diff --git a/matrix_sdk_crypto/src/session_manager/group_sessions.rs b/matrix_sdk_crypto/src/session_manager/group_sessions.rs index a0051b53..5a576fc3 100644 --- a/matrix_sdk_crypto/src/session_manager/group_sessions.rs +++ b/matrix_sdk_crypto/src/session_manager/group_sessions.rs @@ -251,6 +251,12 @@ impl GroupSessionManager { messages, }; + trace!( + recipient_count = request.message_count(), + transaction_id = ?id, + "Created a to-device request carrying a room_key" + ); + Ok((id, request, changed_sessions)) } @@ -593,9 +599,7 @@ mod test { .await .unwrap(); - let event_count = requests.iter().fold(0, |acc, r| { - acc + r.messages.values().fold(0, |acc, v| acc + v.len()) - }); + let event_count: usize = requests.iter().map(|r| r.message_count()).sum(); // The keys claim response has a couple of one-time keys with invalid // signatures, thus only 148 sessions are actually created, we check