summaryrefslogtreecommitdiffstats
path: root/src/providers/ipa/ipa_subdomains_id.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/providers/ipa/ipa_subdomains_id.c')
-rw-r--r--src/providers/ipa/ipa_subdomains_id.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/providers/ipa/ipa_subdomains_id.c b/src/providers/ipa/ipa_subdomains_id.c
index 7367080e5..65bfd3376 100644
--- a/src/providers/ipa/ipa_subdomains_id.c
+++ b/src/providers/ipa/ipa_subdomains_id.c
@@ -1034,12 +1034,19 @@ errno_t get_object_from_cache(TALLOC_CTX *mem_ctx,
case BE_REQ_INITGROUPS:
case BE_REQ_USER:
case BE_REQ_USER_AND_GROUP:
- ret = sysdb_search_user_by_name(mem_ctx, dom, ar->filter_value,
- attrs, &msg);
- if (ret == ENOENT && (ar->entry_type & BE_REQ_TYPE_MASK)
+ if (ar->extra_value
+ && strcmp(ar->extra_value, EXTRA_NAME_IS_UPN) == 0) {
+ ret = sysdb_search_user_by_upn(mem_ctx, dom, ar->filter_value,
+ attrs, &msg);
+ } else {
+ ret = sysdb_search_user_by_name(mem_ctx, dom, ar->filter_value,
+ attrs, &msg);
+ if (ret == ENOENT && (ar->entry_type & BE_REQ_TYPE_MASK)
== BE_REQ_USER_AND_GROUP) {
- ret = sysdb_search_group_by_name(mem_ctx, dom, ar->filter_value,
- attrs, &msg);
+ ret = sysdb_search_group_by_name(mem_ctx, dom,
+ ar->filter_value, attrs,
+ &msg);
+ }
}
break;
default: