From 6ff8473bf537af9bb34e46842374e4eef2288968 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Thu, 16 Apr 2009 09:54:07 -0400 Subject: Fix by_id enumeration with multiple domains We need to stop parsing domains as soon as a caaandidate is found and let the callback search additional domains if the id is not found. Should fix ticket #21 --- server/responder/nss/nsssrv_cmd.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/server/responder/nss/nsssrv_cmd.c b/server/responder/nss/nsssrv_cmd.c index ba444ccf2..0f0c0b94d 100644 --- a/server/responder/nss/nsssrv_cmd.c +++ b/server/responder/nss/nsssrv_cmd.c @@ -858,6 +858,9 @@ static int nss_cmd_getpwuid(struct cli_ctx *cctx) } cmdctx->id = *((uint32_t *)body); + /* this is a multidomain search */ + cmdctx->check_next = true; + for (dom = cctx->rctx->domains; dom; dom = dom->next) { /* verify this user has not yet been negatively cached, * or has been permanently filtered */ @@ -890,6 +893,8 @@ static int nss_cmd_getpwuid(struct cli_ctx *cctx) if (ret != EOK) { DEBUG(1, ("Failed to make request to our cache!\n")); } + + break; } done: @@ -2205,6 +2210,9 @@ static int nss_cmd_getgrgid(struct cli_ctx *cctx) } cmdctx->id = *((uint32_t *)body); + /* this is a multidomain search */ + cmdctx->check_next = true; + for (dom = cctx->rctx->domains; dom; dom = dom->next) { /* verify this user has not yet been negatively cached, * or has been permanently filtered */ @@ -2237,6 +2245,8 @@ static int nss_cmd_getgrgid(struct cli_ctx *cctx) if (ret != EOK) { DEBUG(1, ("Failed to make request to our cache!\n")); } + + break; } done: -- cgit