From 3316f5413382b6969d667ce4e20f8d56123a784d Mon Sep 17 00:00:00 2001 From: Valentin Tolmer Date: Mon, 22 Jan 2024 22:22:44 +0100 Subject: [PATCH] server: don't error on global searches if only one side fails --- server/src/infra/ldap_handler.rs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/server/src/infra/ldap_handler.rs b/server/src/infra/ldap_handler.rs index 27d8ca7..0e96e9a 100644 --- a/server/src/infra/ldap_handler.rs +++ b/server/src/infra/ldap_handler.rs @@ -570,10 +570,27 @@ impl LdapHandler InternalSearchResults::UsersAndGroups( - get_user_list(&request.filter).await?, - get_group_list(&request.filter).await?, - ), + SearchScope::Global => { + let users = get_user_list(&request.filter).await; + let groups = get_group_list(&request.filter).await; + match (users, groups) { + (Ok(users), Err(e)) => { + warn!("Error while getting groups: {:#}", e); + InternalSearchResults::UsersAndGroups(users, Vec::new()) + } + (Err(e), Ok(groups)) => { + warn!("Error while getting users: {:#}", e); + InternalSearchResults::UsersAndGroups(Vec::new(), groups) + } + (Err(user_error), Err(_)) => { + InternalSearchResults::Raw(vec![make_search_error( + user_error.code, + user_error.message, + )]) + } + (Ok(users), Ok(groups)) => InternalSearchResults::UsersAndGroups(users, groups), + } + } SearchScope::Users => InternalSearchResults::UsersAndGroups( get_user_list(&request.filter).await?, Vec::new(),