summaryrefslogtreecommitdiffstats
path: root/src/responder/nss
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2013-10-17 10:20:56 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-10-17 17:46:16 +0200
commit444d8f0077644a3701d8e25cd3041db6def43a62 (patch)
tree646a2e8f93f35445ecf22e8d812d6d8b220ef1f1 /src/responder/nss
parent4cae8609b513c267af11c0409bfe1d17d3a5da2f (diff)
downloadsssd-444d8f0077644a3701d8e25cd3041db6def43a62.tar.gz
sssd-444d8f0077644a3701d8e25cd3041db6def43a62.tar.xz
sssd-444d8f0077644a3701d8e25cd3041db6def43a62.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/responder/nss')
-rw-r--r--src/responder/nss/nsssrv_cmd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c
index 7220e3a35..d37b4707c 100644
--- a/src/responder/nss/nsssrv_cmd.c
+++ b/src/responder/nss/nsssrv_cmd.c
@@ -1039,6 +1039,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,