diff options
-rw-r--r-- | src/db/sysdb.c | 193 | ||||
-rw-r--r-- | src/db/sysdb.h | 3 | ||||
-rw-r--r-- | src/db/sysdb_private.h | 26 | ||||
-rw-r--r-- | src/providers/ipa/ipa_access.c | 4 | ||||
-rw-r--r-- | src/providers/ldap/sdap_async_accounts.c | 2 | ||||
-rw-r--r-- | src/python/pysss.c | 1 | ||||
-rw-r--r-- | src/responder/pam/pam_LOCAL_domain.c | 1 | ||||
-rw-r--r-- | src/tests/sysdb-tests.c | 1 | ||||
-rw-r--r-- | src/tools/sss_groupshow.c | 5 | ||||
-rw-r--r-- | src/tools/sss_sync_ops.c | 1 | ||||
-rw-r--r-- | src/tools/tools_util.h | 1 |
11 files changed, 1 insertions, 237 deletions
diff --git a/src/db/sysdb.c b/src/db/sysdb.c index 22051da3..1d86c4b3 100644 --- a/src/db/sysdb.c +++ b/src/db/sysdb.c @@ -63,16 +63,6 @@ struct ldb_context *sysdb_ctx_get_ldb(struct sysdb_ctx *ctx) return ctx->ldb; } -struct ldb_context *sysdb_handle_get_ldb(struct sysdb_handle *handle) -{ - return handle->ctx->ldb; -} - -struct sysdb_ctx *sysdb_handle_get_ctx(struct sysdb_handle *handle) -{ - return handle->ctx; -} - struct sysdb_attrs *sysdb_new_attrs(TALLOC_CTX *memctx) { return talloc_zero(memctx, struct sysdb_attrs); @@ -418,117 +408,6 @@ int sysdb_error_to_errno(int ldberr) } } -/* =Internal-Operations-Queue============================================= */ - -static void sysdb_run_operation(struct tevent_context *ev, - struct tevent_timer *te, - struct timeval tv, void *pvt) -{ - struct sysdb_handle *handle = talloc_get_type(pvt, struct sysdb_handle); - - tevent_req_done(handle->subreq); -} - -static void sysdb_schedule_operation(struct sysdb_handle *handle) -{ - struct timeval tv = { 0, 0 }; - struct tevent_timer *te; - - te = tevent_add_timer(handle->ctx->ev, handle, tv, - sysdb_run_operation, handle); - if (!te) { - DEBUG(1, ("Failed to add critical timer to run next handle!\n")); - } -} - -static int sysdb_handle_destructor(void *mem) -{ - struct sysdb_handle *handle = talloc_get_type(mem, struct sysdb_handle); - bool start_next = false; - int ret; - - /* if this was the current op start next */ - if (handle->ctx->queue == handle) { - start_next = true; - } - - DLIST_REMOVE(handle->ctx->queue, handle); - - if (start_next && handle->ctx->queue) { - /* run next */ - sysdb_schedule_operation(handle->ctx->queue); - } - - if (handle->transaction_active) { - ret = ldb_transaction_cancel(handle->ctx->ldb); - if (ret != LDB_SUCCESS) { - DEBUG(1, ("Failed to cancel ldb transaction! (%d)\n", ret)); - } - /* FIXME: abort() ? */ - handle->transaction_active = false; - } - - return 0; -} - -struct sysdb_get_handle_state { - struct tevent_context *ev; - struct sysdb_ctx *ctx; - - struct sysdb_handle *handle; -}; - -struct tevent_req *sysdb_get_handle_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct sysdb_ctx *ctx) -{ - struct tevent_req *req; - struct sysdb_get_handle_state *state; - struct sysdb_handle *handle; - - req = tevent_req_create(mem_ctx, &state, struct sysdb_get_handle_state); - if (!req) return NULL; - - state->ev = ev; - state->ctx = ctx; - - handle = talloc_zero(state, struct sysdb_handle); - if (!handle) { - talloc_zfree(req); - return NULL; - } - - handle->ctx = ctx; - handle->subreq = req; - - talloc_set_destructor((TALLOC_CTX *)handle, sysdb_handle_destructor); - - DLIST_ADD_END(ctx->queue, handle, struct sysdb_handle *); - - if (ctx->queue == handle) { - /* this is the first in the queue, schedule an immediate run */ - sysdb_schedule_operation(handle); - } - - state->handle = handle; - - return req; -} - -static int sysdb_get_handle_recv(struct tevent_req *req, TALLOC_CTX *memctx, - struct sysdb_handle **handle) -{ - struct sysdb_get_handle_state *state = tevent_req_data(req, - struct sysdb_get_handle_state); - - TEVENT_REQ_RETURN_ON_ERROR(req); - - *handle = talloc_steal(memctx, state->handle); - if (!*handle) return ENOMEM; - - return EOK; -} - /* =Transactions========================================================== */ int sysdb_transaction_start(struct sysdb_ctx *ctx) @@ -564,78 +443,6 @@ int sysdb_transaction_cancel(struct sysdb_ctx *ctx) return sysdb_error_to_errno(ret); } -/* =Operations============================================================ */ - -struct sysdb_operation_state { - struct tevent_context *ev; - struct sysdb_ctx *ctx; - - struct sysdb_handle *handle; -}; - -static void sysdb_operation_process(struct tevent_req *subreq); - -struct tevent_req *sysdb_operation_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct sysdb_ctx *ctx) -{ - struct tevent_req *req, *subreq; - struct sysdb_operation_state *state; - - req = tevent_req_create(mem_ctx, &state, struct sysdb_operation_state); - if (!req) return NULL; - - state->ev = ev; - state->ctx = ctx; - - subreq = sysdb_get_handle_send(state, ev, ctx); - if (!subreq) { - talloc_zfree(req); - return NULL; - } - - tevent_req_set_callback(subreq, sysdb_operation_process, req); - - return req; -} - -static void sysdb_operation_process(struct tevent_req *subreq) -{ - struct tevent_req *req = tevent_req_callback_data(subreq, - struct tevent_req); - struct sysdb_operation_state *state = tevent_req_data(req, - struct sysdb_operation_state); - int ret; - - ret = sysdb_get_handle_recv(subreq, state, &state->handle); - talloc_zfree(subreq); - if (ret) { - tevent_req_error(req, ret); - return; - } - - tevent_req_done(req); -} - -int sysdb_operation_recv(struct tevent_req *req, TALLOC_CTX *memctx, - struct sysdb_handle **handle) -{ - struct sysdb_operation_state *state = tevent_req_data(req, - struct sysdb_operation_state); - - TEVENT_REQ_RETURN_ON_ERROR(req); - - *handle = talloc_steal(memctx, state->handle); - if (!*handle) return ENOMEM; - - return EOK; -} - -void sysdb_operation_done(struct sysdb_handle *handle) -{ - talloc_free(handle); -} - /* =Initialization======================================================== */ static int sysdb_domain_init_internal(TALLOC_CTX *mem_ctx, diff --git a/src/db/sysdb.h b/src/db/sysdb.h index 87a5ec56..65e72141 100644 --- a/src/db/sysdb.h +++ b/src/db/sysdb.h @@ -147,7 +147,6 @@ struct confdb_ctx; struct sysdb_ctx_list; struct sysdb_ctx; -struct sysdb_handle; struct sysdb_attrs { int num; @@ -212,8 +211,6 @@ char *sysdb_group_strdn(TALLOC_CTX *memctx, struct ldb_context *sysdb_ctx_get_ldb(struct sysdb_ctx *ctx); -struct ldb_context *sysdb_handle_get_ldb(struct sysdb_handle *handle); -struct sysdb_ctx *sysdb_handle_get_ctx(struct sysdb_handle *handle); int compare_ldb_dn_comp_num(const void *m1, const void *m2); diff --git a/src/db/sysdb_private.h b/src/db/sysdb_private.h index 270cf360..e5494bd6 100644 --- a/src/db/sysdb_private.h +++ b/src/db/sysdb_private.h @@ -61,16 +61,6 @@ #include "db/sysdb.h" -struct sysdb_handle { - struct sysdb_handle *prev; - struct sysdb_handle *next; - - struct sysdb_ctx *ctx; - struct tevent_req *subreq; - - bool transaction_active; -}; - struct sysdb_ctx { struct tevent_context *ev; @@ -79,8 +69,6 @@ struct sysdb_ctx { struct ldb_context *ldb; char *ldb_file; - - struct sysdb_handle *queue; }; struct sysdb_ctx_list { @@ -90,18 +78,4 @@ struct sysdb_ctx_list { char *db_path; }; -/* An operation blocks the transaction queue as well, but does not - * start a transaction, normally useful only for search type calls. - * do *NOT* call within a transaction you'll deadlock sysdb. - * Also make sure to free the handle as soon as the operation is - * finished to avoid stalling or potentially deadlocking sysdb */ - -struct tevent_req *sysdb_operation_send(TALLOC_CTX *mem_ctx, - struct tevent_context *ev, - struct sysdb_ctx *ctx); -int sysdb_operation_recv(struct tevent_req *req, TALLOC_CTX *memctx, - struct sysdb_handle **handle); - -void sysdb_operation_done(struct sysdb_handle *handle); - #endif /* __INT_SYS_DB_H__ */ diff --git a/src/providers/ipa/ipa_access.c b/src/providers/ipa/ipa_access.c index 2d47f8b2..a7058bad 100644 --- a/src/providers/ipa/ipa_access.c +++ b/src/providers/ipa/ipa_access.c @@ -211,7 +211,6 @@ struct hbac_get_host_info_state { struct tevent_context *ev; struct sdap_id_ctx *sdap_ctx; struct sysdb_ctx *sysdb; - struct sysdb_handle *handle; bool offline; char *host_filter; @@ -257,7 +256,6 @@ static struct tevent_req *hbac_get_host_info_send(TALLOC_CTX *memctx, state->ev = ev; state->sdap_ctx = sdap_ctx; state->sysdb = sysdb; - state->handle = NULL; state->offline = offline; state->host_reply_list = NULL; @@ -649,7 +647,6 @@ struct hbac_get_rules_state { struct tevent_context *ev; struct sdap_id_ctx *sdap_ctx; struct sysdb_ctx *sysdb; - struct sysdb_handle *handle; bool offline; const char *host_dn; @@ -699,7 +696,6 @@ static struct tevent_req *hbac_get_rules_send(TALLOC_CTX *memctx, state->offline = offline; state->sdap_ctx = sdap_ctx; state->sysdb = sysdb; - state->handle = NULL; state->host_dn = host_dn; state->memberof = memberof; diff --git a/src/providers/ldap/sdap_async_accounts.c b/src/providers/ldap/sdap_async_accounts.c index 9dca9eb0..bdaa9e9e 100644 --- a/src/providers/ldap/sdap_async_accounts.c +++ b/src/providers/ldap/sdap_async_accounts.c @@ -1302,8 +1302,6 @@ struct sdap_get_initgr_state { const char **grp_attrs; struct sysdb_attrs *orig_user; - - struct sysdb_handle *handle; }; static void sdap_get_initgr_user(struct tevent_req *subreq); diff --git a/src/python/pysss.c b/src/python/pysss.c index cd5c588f..8fa9b9d0 100644 --- a/src/python/pysss.c +++ b/src/python/pysss.c @@ -89,7 +89,6 @@ struct py_sss_transaction { PySssLocalObject *self; struct ops_ctx *ops; - struct sysdb_handle *handle; bool transaction_done; int error; }; diff --git a/src/responder/pam/pam_LOCAL_domain.c b/src/responder/pam/pam_LOCAL_domain.c index a17934ce..d6c532e0 100644 --- a/src/responder/pam/pam_LOCAL_domain.c +++ b/src/responder/pam/pam_LOCAL_domain.c @@ -50,7 +50,6 @@ struct LOCAL_request { struct tevent_context *ev; struct sysdb_ctx *dbctx; struct sysdb_attrs *mod_attrs; - struct sysdb_handle *handle; struct ldb_result *res; int error; diff --git a/src/tests/sysdb-tests.c b/src/tests/sysdb-tests.c index 2a84da94..10d77ff4 100644 --- a/src/tests/sysdb-tests.c +++ b/src/tests/sysdb-tests.c @@ -161,7 +161,6 @@ static int setup_sysdb_tests(struct sysdb_test_ctx **ctx) struct test_data { struct tevent_context *ev; - struct sysdb_handle *handle; struct sysdb_test_ctx *ctx; const char *username; diff --git a/src/tools/sss_groupshow.c b/src/tools/sss_groupshow.c index b6fb1a15..3f72fcef 100644 --- a/src/tools/sss_groupshow.c +++ b/src/tools/sss_groupshow.c @@ -267,7 +267,6 @@ done: struct group_show_state { struct tevent_context *ev; struct sysdb_ctx *sysdb; - struct sysdb_handle *handle; struct sss_domain_info *domain; struct group_info *root; @@ -294,7 +293,6 @@ static int group_show_trim_memberof(TALLOC_CTX *mem_ctx, struct tevent_req *group_show_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct sysdb_ctx *sysdb, - struct sysdb_handle *handle, struct sss_domain_info *domain, bool recursive, const char *name) @@ -315,7 +313,6 @@ struct tevent_req *group_show_send(TALLOC_CTX *mem_ctx, } state->ev = ev; state->sysdb = sysdb; - state->handle = handle; state->domain = domain; state->recursive = recursive; @@ -876,7 +873,7 @@ int main(int argc, const char **argv) goto fini; } - req = group_show_send(tctx, tctx->ev, tctx->sysdb, tctx->handle, + req = group_show_send(tctx, tctx->ev, tctx->sysdb, tctx->local, pc_recursive, tctx->octx->name); if (!req) { ERROR("Cannot initiate search\n"); diff --git a/src/tools/sss_sync_ops.c b/src/tools/sss_sync_ops.c index f3721a01..59e5c604 100644 --- a/src/tools/sss_sync_ops.c +++ b/src/tools/sss_sync_ops.c @@ -114,7 +114,6 @@ done: struct user_mod_state { struct tevent_context *ev; struct sysdb_ctx *sysdb; - struct sysdb_handle *handle; struct sysdb_attrs *attrs; struct ldb_dn *member_dn; diff --git a/src/tools/tools_util.h b/src/tools/tools_util.h index ac882868..2996f5c1 100644 --- a/src/tools/tools_util.h +++ b/src/tools/tools_util.h @@ -47,7 +47,6 @@ struct tools_ctx { struct ops_ctx *octx; - struct sysdb_handle *handle; bool transaction_done; int error; }; |