From 8751aace6de14f3782765a89555b65e991f340a0 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 3 Dec 2013 15:25:25 +0100 Subject: SUBDOMAINS: Reuse cached results if DP is offline If Data Provider was unable to refresh the subdomain list, the sss_domain_info->subdomains list was NULL. Which meant that no DP request matched any known domain and hence offline authentication was not working correctly. Resolves: https://fedorahosted.org/sssd/ticket/2168 --- src/providers/ad/ad_subdomains.c | 7 +++++++ src/providers/ipa/ipa_subdomains.c | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/providers/ad/ad_subdomains.c b/src/providers/ad/ad_subdomains.c index 9911dfe0f..184145230 100644 --- a/src/providers/ad/ad_subdomains.c +++ b/src/providers/ad/ad_subdomains.c @@ -650,5 +650,12 @@ int ad_subdom_init(struct be_ctx *be_ctx, return EFAULT; } + ret = sysdb_update_subdomains(be_ctx->domain); + if (ret != EOK) { + DEBUG(SSSDBG_MINOR_FAILURE, ("Could not load the list of subdomains. " + "Users from trusted domains might not be resolved correctly\n")); + /* Ignore this error and try to discover the subdomains later */ + } + return EOK; } diff --git a/src/providers/ipa/ipa_subdomains.c b/src/providers/ipa/ipa_subdomains.c index 4f7627edd..416e21913 100644 --- a/src/providers/ipa/ipa_subdomains.c +++ b/src/providers/ipa/ipa_subdomains.c @@ -809,8 +809,6 @@ static void ipa_subdomains_get_conn_done(struct tevent_req *req) DEBUG(SSSDBG_MINOR_FAILURE, ("No IPA server is available, cannot get the " "subdomain list while offline\n")); - -/* FIXME: return saved results ?? */ } else { DEBUG(SSSDBG_OP_FAILURE, ("Failed to connect to IPA server: [%d](%s)\n", @@ -1291,6 +1289,12 @@ int ipa_subdom_init(struct be_ctx *be_ctx, DEBUG(SSSDBG_MINOR_FAILURE, ("Failed to add subdom offline callback")); } + ret = sysdb_update_subdomains(be_ctx->domain); + if (ret != EOK) { + DEBUG(SSSDBG_MINOR_FAILURE, ("Could not load the list of subdomains. " + "Users from trusted domains might not be resolved correctly\n")); + } + return EOK; } -- cgit