diff options
author | Pavel Březina <pbrezina@redhat.com> | 2013-10-17 10:20:56 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-10-17 17:48:16 +0200 |
commit | 9885fed5dc7b2d2117ddffd9d2e2adb7a4f4441c (patch) | |
tree | 5052116c42db120eaeee6abaac6402cc5c79ae14 /src | |
parent | 7ffb1a2044e4de13fa2cb4520c680d907f42770a (diff) | |
download | sssd-9885fed5dc7b2d2117ddffd9d2e2adb7a4f4441c.tar.gz sssd-9885fed5dc7b2d2117ddffd9d2e2adb7a4f4441c.tar.xz sssd-9885fed5dc7b2d2117ddffd9d2e2adb7a4f4441c.zip |
nss: wait for initial subdomains request to finish
AD provider downloads domain information and initalizes ID mapping
during subdomains request. This information is necessary to lookup
objects without POSIX attributes.
We need to make sure that we postpone all responder requests until
ID mapping is initialized in the provider.
Resolves:
https://fedorahosted.org/sssd/ticket/2092
Diffstat (limited to 'src')
-rw-r--r-- | src/responder/nss/nsssrv_cmd.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index 8f470fb73..b785d916b 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -1038,6 +1038,20 @@ static int nss_cmd_getbynam(enum sss_cli_command cmd, struct cli_ctx *cctx) DEBUG(SSSDBG_TRACE_FUNC, ("Running command [%d] with input [%s].\n", dctx->cmdctx->cmd, rawname)); + /* We need to attach to subdomain request, if the first one is not + * finished yet. We may not be able to lookup object in AD otherwise. */ + if (cctx->rctx->get_domains_last_call.tv_sec == 0) { + req = sss_dp_get_domains_send(cctx->rctx, cctx->rctx, true, NULL); + if (req == NULL) { + ret = ENOMEM; + } else { + dctx->rawname = rawname; + tevent_req_set_callback(req, nss_cmd_getbynam_done, dctx); + ret = EAGAIN; + } + goto done; + } + domname = NULL; ret = sss_parse_name_for_domains(cmdctx, cctx->rctx->domains, cctx->rctx->default_domain, rawname, |