From 0ef843e31df394caab89ac1029113f302072467d Mon Sep 17 00:00:00 2001 From: Sumit Bose Date: Thu, 12 Jan 2012 11:53:27 +0100 Subject: [PATCH] Keep sysdb context in domain info struct --- src/confdb/confdb.h | 1 + src/db/sysdb.c | 1 + src/responder/nss/nsssrv_cmd.c | 36 ++++++------------------------------ 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 273166c..9fc4cbf 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -172,6 +172,7 @@ struct sss_domain_info { uint32_t subdomain_count; bool is_subdomain; struct timeval subdomains_last_checked; + struct sysdb_ctx *sysdb; struct sss_domain_info *next; diff --git a/src/db/sysdb.c b/src/db/sysdb.c index f965071..568a97a 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -1091,6 +1091,7 @@ done: talloc_free(tmp_ctx); if (ret == EOK) { *_ctx = sysdb; + domain->sysdb = sysdb; } else { talloc_free(sysdb); } diff --git a/src/responder/nss/nsssrv_cmd.c b/src/responder/nss/nsssrv_cmd.c index fd20d0b..30009b0 100644 --- a/src/responder/nss/nsssrv_cmd.c +++ b/src/responder/nss/nsssrv_cmd.c @@ -800,11 +800,7 @@ static int nss_cmd_getpwnam_search(struct nss_dom_ctx *dctx) DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name)); - ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; ret = sysdb_getpwnam(cmdctx, sysdb, name, &dctx->res); if (ret != EOK) { @@ -1076,11 +1072,7 @@ static int nss_cmd_getpwuid_search(struct nss_dom_ctx *dctx) DEBUG(4, ("Requesting info for [%d@%s]\n", cmdctx->id, dom->name)); - ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; ret = sysdb_getpwuid(cmdctx, sysdb, cmdctx->id, &dctx->res); if (ret != EOK) { @@ -1446,11 +1438,7 @@ static errno_t nss_cmd_setpwent_step(struct setent_step_ctx *step_ctx) DEBUG(6, ("Requesting info for domain [%s]\n", dom->name)); - ret = sysdb_get_ctx_from_list(rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; /* if this is a caching provider (or if we haven't checked the cache * yet) then verify that the cache is uptodate */ @@ -2163,11 +2151,7 @@ static int nss_cmd_getgrnam_search(struct nss_dom_ctx *dctx) DEBUG(4, ("Requesting info for [%s@%s]\n", name, dom->name)); - ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; ret = sysdb_getgrnam(cmdctx, sysdb, name, &dctx->res); if (ret != EOK) { @@ -2439,11 +2423,7 @@ static int nss_cmd_getgrgid_search(struct nss_dom_ctx *dctx) DEBUG(4, ("Requesting info for [%d@%s]\n", cmdctx->id, dom->name)); - ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; ret = sysdb_getgrgid(cmdctx, sysdb, cmdctx->id, &dctx->res); if (ret != EOK) { @@ -2802,11 +2782,7 @@ static errno_t nss_cmd_setgrent_step(struct setent_step_ctx *step_ctx) DEBUG(6, ("Requesting info for domain [%s]\n", dom->name)); - ret = sysdb_get_ctx_from_list(rctx->db_list, dom, &sysdb); - if (ret != EOK) { - DEBUG(0, ("Fatal: Sysdb CTX not found for this domain!\n")); - return EIO; - } + sysdb = dom->sysdb; /* if this is a caching provider (or if we haven't checked the cache * yet) then verify that the cache is uptodate */ -- 1.7.6