summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Březina <pbrezina@redhat.com>2013-10-22 16:00:20 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-10-25 22:18:54 +0200
commit6f31312c95a67abe7c77a6ba985e10d58468addb (patch)
treec1d2c75f39d20531e13969f1b9f1f5424e24db78
parentf6dee70e02897aa2d57863d704bf8a3f454a2e23 (diff)
downloadsssd-6f31312c95a67abe7c77a6ba985e10d58468addb.tar.gz
sssd-6f31312c95a67abe7c77a6ba985e10d58468addb.tar.xz
sssd-6f31312c95a67abe7c77a6ba985e10d58468addb.zip
dp: add function to terminate request of specific domain
Resolves: https://fedorahosted.org/sssd/ticket/1968
-rw-r--r--src/providers/data_provider_be.c20
-rw-r--r--src/providers/dp_backend.h3
2 files changed, 23 insertions, 0 deletions
diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index 615b663ac..dd9c8d429 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -207,6 +207,26 @@ void be_req_terminate(struct be_req *be_req,
be_req->fn(be_req, dp_err_type, errnum, errstr);
}
+void be_terminate_domain_requests(struct be_ctx *be_ctx,
+ const char *domain)
+{
+ struct be_req *be_req = NULL;
+
+ DEBUG(SSSDBG_TRACE_FUNC, ("Terminating requests for domain [%s]\n",
+ domain));
+
+ if (domain == NULL) {
+ DEBUG(SSSDBG_CRIT_FAILURE, ("BUG: domain is NULL\n"));
+ return;
+ }
+
+ DLIST_FOR_EACH(be_req, be_ctx->active_requests) {
+ if (strcmp(domain, be_req->domain->name) == 0) {
+ be_req_terminate(be_req, DP_ERR_FATAL, ERR_DOMAIN_NOT_FOUND,
+ sss_strerror(ERR_DOMAIN_NOT_FOUND));
+ }
+ }
+}
struct be_async_req {
be_req_fn_t fn;
diff --git a/src/providers/dp_backend.h b/src/providers/dp_backend.h
index 686b91a25..ed022c207 100644
--- a/src/providers/dp_backend.h
+++ b/src/providers/dp_backend.h
@@ -295,6 +295,9 @@ void *be_req_get_data(struct be_req *be_req);
void be_req_terminate(struct be_req *be_req,
int dp_err_type, int errnum, const char *errstr);
+void be_terminate_domain_requests(struct be_ctx *be_ctx,
+ const char *domain);
+
/* Request account information */
struct tevent_req *
be_get_account_info_send(TALLOC_CTX *mem_ctx,