URL:
https://github.com/SSSD/sssd/pull/259
Title: #259: RESPONDER: Also populate cr_domains when initializing the responders
sumit-bose commented:
"""
I withdraw my suggested patch. I think @fidencio's patch is the better fix.
But I would like to ask you to include something like:
diff --git a/src/responder/common/cache_req/cache_req.c
b/src/responder/common/cache_req/cache_req.c
index 8cb4032..eecbe6c 100644
--- a/src/responder/common/cache_req/cache_req.c
+++ b/src/responder/common/cache_req/cache_req.c
@@ -843,8 +843,17 @@ static errno_t cache_req_process_input(TALLOC_CTX *mem_ctx,
const char *default_domain;
if (cr->data->name.input == NULL
- || (cr->plugin->parse_name == false || domain != NULL)) {
- return cache_req_update_domains(mem_ctx, req, cr, domain);
+ || cr->plugin->parse_name == false
+ || domain != NULL) {
+ if (cr->rctx->get_domains_last_call.tv_sec == 0) {
+ return cache_req_update_domains(mem_ctx, req, cr, domain);
+ } else {
+ if (cr->data->name.input == NULL) {
+ return EOK;
+ } else {
+ return cache_req_set_name(cr, cr->data->name.input);
+ }
+ }
}
default_domain = NULL;
So that the get_domains request is only send when none so far is finished
(get_domains_last_call.tv_sec == 0). In general this will not cause an extra request
because the common data provider code will detect that the request started during
initialization is still running. But it will prevent that the request is called once a
minute on a server handling many client requests of the type that will trigger it. Feel
free to modify the code if you can think of a better way to handle the nested if -blocks,
I agree that the one above soes not look very nice.
Code which would still run the request e.g. once an hour to make sure that the domain list
gets updated even if no other type of request will trigger an update can imo be added
later in a different PR.
"""
See the full comment at
https://github.com/SSSD/sssd/pull/259#issuecomment-301708029