fix: crash on empty search

This commit is contained in:
Timo Kösters 2022-02-04 17:15:21 +01:00
parent f35ad27627
commit eb0b2c429f
No known key found for this signature in database
GPG key ID: 356E705610F626D5
2 changed files with 20 additions and 18 deletions

View file

@ -44,11 +44,12 @@ pub async fn search_events_route(
));
}
let search = db
if let Some(search) = db
.rooms
.search_pdus(&room_id, &search_criteria.search_term)?;
searches.push(search.0.peekable());
.search_pdus(&room_id, &search_criteria.search_term)?
{
searches.push(search.0.peekable());
}
}
let skip = match body.next_batch.as_ref().map(|s| s.parse()) {

View file

@ -2771,7 +2771,7 @@ impl Rooms {
&'a self,
room_id: &RoomId,
search_string: &str,
) -> Result<(impl Iterator<Item = Vec<u8>> + 'a, Vec<String>)> {
) -> Result<Option<(impl Iterator<Item = Vec<u8>> + 'a, Vec<String>)>> {
let prefix = self
.get_shortroomid(room_id)?
.expect("room exists")
@ -2799,19 +2799,20 @@ impl Rooms {
.map(|(key, _)| key[key.len() - size_of::<u64>()..].to_vec())
});
Ok((
utils::common_elements(iterators, |a, b| {
// We compare b with a because we reversed the iterator earlier
b.cmp(a)
})
.unwrap()
.map(move |id| {
let mut pduid = prefix_clone.clone();
pduid.extend_from_slice(&id);
pduid
}),
words,
))
Ok(utils::common_elements(iterators, |a, b| {
// We compare b with a because we reversed the iterator earlier
b.cmp(a)
})
.map(|iter| {
(
iter.map(move |id| {
let mut pduid = prefix_clone.clone();
pduid.extend_from_slice(&id);
pduid
}),
words,
)
}))
}
#[tracing::instrument(skip(self))]