From 87ae9cf0fd747e39d1769e6b432b7f48d41f9302 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 21 May 2019 12:07:34 +0200 Subject: [PATCH 32/48] BE: Change be_refresh_ctx_init to return errno and set be_ctx->refresh_ctx It is a bit odd that a caller to a be_ function would set a property of be_ctx. IMO it is cleaner if the function has a side-effect and sets the property internally and rather returns errno. Related: https://pagure.io/SSSD/sssd/issue/4012 Reviewed-by: Sumit Bose --- src/providers/be_refresh.c | 13 +++++++------ src/providers/be_refresh.h | 4 ++-- src/providers/ldap/sdap_refresh.c | 4 ++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/providers/be_refresh.c b/src/providers/be_refresh.c index 66cc4cf98..8a6e1ba58 100644 --- a/src/providers/be_refresh.c +++ b/src/providers/be_refresh.c @@ -136,8 +136,8 @@ struct be_refresh_ctx { struct be_refresh_cb callbacks[BE_REFRESH_TYPE_SENTINEL]; }; -struct be_refresh_ctx *be_refresh_ctx_init(struct be_ctx *be_ctx, - const char *attr_name) +errno_t be_refresh_ctx_init(struct be_ctx *be_ctx, + const char *attr_name) { struct be_refresh_ctx *ctx = NULL; uint32_t refresh_interval; @@ -145,7 +145,7 @@ struct be_refresh_ctx *be_refresh_ctx_init(struct be_ctx *be_ctx, ctx = talloc_zero(be_ctx, struct be_refresh_ctx); if (ctx == NULL) { - return NULL; + return ENOMEM; } ctx->attr_name = attr_name; @@ -158,17 +158,18 @@ struct be_refresh_ctx *be_refresh_ctx_init(struct be_ctx *be_ctx, ret = be_ptask_create(be_ctx, be_ctx, refresh_interval, 30, 5, 0, refresh_interval, BE_PTASK_OFFLINE_SKIP, 0, be_refresh_send, be_refresh_recv, - be_ctx->refresh_ctx, "Refresh Records", NULL); + ctx, "Refresh Records", NULL); if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Unable to initialize refresh periodic task [%d]: %s\n", ret, sss_strerror(ret)); talloc_free(ctx); - return NULL; + return ret; } } - return ctx; + be_ctx->refresh_ctx = ctx; + return EOK; } errno_t be_refresh_add_cb(struct be_refresh_ctx *ctx, diff --git a/src/providers/be_refresh.h b/src/providers/be_refresh.h index 8c7b1d0ba..980ac7d06 100644 --- a/src/providers/be_refresh.h +++ b/src/providers/be_refresh.h @@ -52,8 +52,8 @@ enum be_refresh_type { struct be_refresh_ctx; -struct be_refresh_ctx *be_refresh_ctx_init(struct be_ctx *be_ctx, - const char *attr_name); +errno_t be_refresh_ctx_init(struct be_ctx *be_ctx, + const char *attr_name); errno_t be_refresh_add_cb(struct be_refresh_ctx *ctx, enum be_refresh_type type, diff --git a/src/providers/ldap/sdap_refresh.c b/src/providers/ldap/sdap_refresh.c index ed04da36a..baa7fa59f 100644 --- a/src/providers/ldap/sdap_refresh.c +++ b/src/providers/ldap/sdap_refresh.c @@ -260,8 +260,8 @@ errno_t sdap_refresh_init(struct be_ctx *be_ctx, { errno_t ret; - be_ctx->refresh_ctx = be_refresh_ctx_init(be_ctx, SYSDB_NAME); - if (be_ctx->refresh_ctx == NULL) { + ret = be_refresh_ctx_init(be_ctx, SYSDB_NAME); + if (ret != EOK) { DEBUG(SSSDBG_FATAL_FAILURE, "Unable to initialize refresh_ctx\n"); return ENOMEM; } -- 2.20.1