diff --git a/services/identity/src/database.rs b/services/identity/src/database.rs --- a/services/identity/src/database.rs +++ b/services/identity/src/database.rs @@ -497,7 +497,8 @@ OlmAccountType::Notification, true, ) - .await?; + .await + .unwrap_or((None, true)); let (content_one_time_key, _) = self .get_one_time_key( user_id, @@ -505,7 +506,8 @@ OlmAccountType::Content, !requested_more_keys, ) - .await?; + .await + .unwrap_or((None, true)); debug!( "Able to get notif one-time key for keyserver {}: {}", @@ -787,7 +789,8 @@ OlmAccountType::Notification, true, ) - .await?; + .await + .unwrap_or((None, true)); (device_keys.content_one_time_key, _) = self .get_one_time_key( user_id, @@ -795,7 +798,8 @@ OlmAccountType::Content, !requested_more_keys, ) - .await?; + .await + .unwrap_or((None, true)); } } diff --git a/services/identity/src/database/one_time_keys.rs b/services/identity/src/database/one_time_keys.rs --- a/services/identity/src/database/one_time_keys.rs +++ b/services/identity/src/database/one_time_keys.rs @@ -14,7 +14,7 @@ DBItemAttributeError, DBItemError, }, }; -use tracing::{debug, error, info}; +use tracing::{debug, error, info, warn}; use crate::{ constants::{ @@ -94,7 +94,7 @@ .await? .pop() else { - return Err(Error::NotEnoughOneTimeKeys); + return Ok((None, requested_more_keys)); }; let delete_otk_operation = otk_row.as_delete_request(); @@ -209,11 +209,7 @@ if let Some(limit) = num_keys { if otk_rows.len() != limit { - error!( - errorType = error_types::OTK_DB_LOG, - "There are fewer one-time keys than the number requested" - ); - return Err(Error::NotEnoughOneTimeKeys); + warn!("There are fewer one-time keys than the number requested"); } }