diff options
author | Stephen Gallagher <sgallagh@redhat.com> | 2009-11-19 16:37:51 -0500 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2009-11-23 12:46:30 -0500 |
commit | 64e5787639836a49ddc589eda65be454c4bdff58 (patch) | |
tree | 75fdc5923cd6854547be1cdd62110a0bd602aaab /server/responder/nss | |
parent | 23341562c1cd4baf46cbc4eacaa09d6b6cb00e82 (diff) | |
download | sssd-64e5787639836a49ddc589eda65be454c4bdff58.tar.gz sssd-64e5787639836a49ddc589eda65be454c4bdff58.tar.bz2 sssd-64e5787639836a49ddc589eda65be454c4bdff58.zip |
Speed up user requests while offline
This adds a new boolean option to sss_dp_send_acct_req() called
fast_reply. If we make a request to the backends and we are
currently offline, this option will determine whether we should
immediately return from the cache (acceptable for NSS requests) or
potentially wait for an online check to complete (required for PAM
requests).
Diffstat (limited to 'server/responder/nss')
-rw-r--r-- | server/responder/nss/nsssrv_cmd.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/server/responder/nss/nsssrv_cmd.c b/server/responder/nss/nsssrv_cmd.c index 4473e6c8..97178978 100644 --- a/server/responder/nss/nsssrv_cmd.c +++ b/server/responder/nss/nsssrv_cmd.c @@ -351,7 +351,8 @@ static errno_t check_cache(struct nss_dom_ctx *dctx, */ ret = sss_dp_send_acct_req(cctx->rctx, NULL, NULL, NULL, timeout, dctx->domain->name, - req_type, opt_name, opt_id); + true, req_type, + opt_name, opt_id); if (ret != EOK) { DEBUG(3, ("Failed to dispatch request: %d(%s)\n", ret, strerror(ret))); @@ -376,7 +377,8 @@ static errno_t check_cache(struct nss_dom_ctx *dctx, ret = sss_dp_send_acct_req(cctx->rctx, cmdctx, callback, dctx, timeout, - dctx->domain->name, req_type, + dctx->domain->name, + true, req_type, opt_name, opt_id); if (ret != EOK) { DEBUG(3, ("Failed to dispatch request: %d(%s)\n", @@ -1125,8 +1127,8 @@ static void nss_cmd_setpwent_callback(void *ptr, int status, timeout = SSS_CLI_SOCKET_TIMEOUT; ret = sss_dp_send_acct_req(cctx->rctx, cmdctx, nss_cmd_setpw_dp_callback, dctx, - timeout, dom->name, SSS_DP_USER, - NULL, 0); + timeout, dom->name, true, + SSS_DP_USER, NULL, 0); } else { ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dctx->domain, &sysdb); @@ -1272,8 +1274,8 @@ static int nss_cmd_setpwent_ext(struct cli_ctx *cctx, bool immediate) timeout = SSS_CLI_SOCKET_TIMEOUT; ret = sss_dp_send_acct_req(cctx->rctx, cmdctx, nss_cmd_setpw_dp_callback, dctx, - timeout, dom->name, SSS_DP_USER, - NULL, 0); + timeout, dom->name, true, + SSS_DP_USER, NULL, 0); } else { ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dctx->domain, &sysdb); @@ -2448,8 +2450,8 @@ static void nss_cmd_setgrent_callback(void *ptr, int status, timeout = SSS_CLI_SOCKET_TIMEOUT; ret = sss_dp_send_acct_req(cctx->rctx, cmdctx, nss_cmd_setgr_dp_callback, dctx, - timeout, dom->name, SSS_DP_GROUP, - NULL, 0); + timeout, dom->name, true, + SSS_DP_GROUP, NULL, 0); } else { ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dctx->domain, &sysdb); @@ -2595,8 +2597,8 @@ static int nss_cmd_setgrent_ext(struct cli_ctx *cctx, bool immediate) timeout = SSS_CLI_SOCKET_TIMEOUT; ret = sss_dp_send_acct_req(cctx->rctx, cmdctx, nss_cmd_setgr_dp_callback, dctx, - timeout, dom->name, SSS_DP_GROUP, - NULL, 0); + timeout, dom->name, true, + SSS_DP_GROUP, NULL, 0); } else { ret = sysdb_get_ctx_from_list(cctx->rctx->db_list, dctx->domain, &sysdb); |