From: Timo Sirainen Date: Thu, 25 Sep 2014 12:15:20 +0000 (+0300) Subject: lib: Code cleanup - check io_loop_context_add/remove_callbacks() callback parameters. X-Git-Tag: 2.2.14.rc1~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=85b14555888acec410734a16561f2d79c626cad9;p=thirdparty%2Fdovecot%2Fcore.git lib: Code cleanup - check io_loop_context_add/remove_callbacks() callback parameters. --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 3ebbd96958..86f20321d6 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -695,17 +695,13 @@ mail_storage_service_init_post(struct mail_storage_service_ctx *ctx, return 0; } -static void mail_storage_service_io_activate(void *context) +static void mail_storage_service_io_activate(struct mail_storage_service_user *user) { - struct mail_storage_service_user *user = context; - i_set_failure_prefix("%s", user->log_prefix); } -static void mail_storage_service_io_deactivate(void *context) +static void mail_storage_service_io_deactivate(struct mail_storage_service_user *user) { - struct mail_storage_service_user *user = context; - i_set_failure_prefix("%s", user->service_ctx->default_log_prefix); } diff --git a/src/lib/ioloop.c b/src/lib/ioloop.c index e00c7e4fc8..35e592e689 100644 --- a/src/lib/ioloop.c +++ b/src/lib/ioloop.c @@ -674,6 +674,7 @@ void io_loop_context_unref(struct ioloop_context **_ctx) i_free(ctx); } +#undef io_loop_context_add_callbacks void io_loop_context_add_callbacks(struct ioloop_context *ctx, io_callback_t *activate, io_callback_t *deactivate, void *context) @@ -688,6 +689,7 @@ void io_loop_context_add_callbacks(struct ioloop_context *ctx, array_append(&ctx->callbacks, &cb, 1); } +#undef io_loop_context_remove_callbacks void io_loop_context_remove_callbacks(struct ioloop_context *ctx, io_callback_t *activate, io_callback_t *deactivate, void *context) diff --git a/src/lib/ioloop.h b/src/lib/ioloop.h index e0fdd016fb..8cc5577a20 100644 --- a/src/lib/ioloop.h +++ b/src/lib/ioloop.h @@ -142,10 +142,20 @@ void io_loop_context_unref(struct ioloop_context **ctx); void io_loop_context_add_callbacks(struct ioloop_context *ctx, io_callback_t *activate, io_callback_t *deactivate, void *context); +#define io_loop_context_add_callbacks(ctx, activate, deactivate, context) \ + io_loop_context_add_callbacks(ctx, 1 ? (io_callback_t *)activate : \ + CALLBACK_TYPECHECK(activate, void (*)(typeof(context))) + \ + CALLBACK_TYPECHECK(deactivate, void (*)(typeof(context))), \ + (io_callback_t *)deactivate, context) /* Remove callbacks with the given callbacks and context. */ void io_loop_context_remove_callbacks(struct ioloop_context *ctx, io_callback_t *activate, io_callback_t *deactivate, void *context); +#define io_loop_context_remove_callbacks(ctx, activate, deactivate, context) \ + io_loop_context_remove_callbacks(ctx, 1 ? (io_callback_t *)activate : \ + CALLBACK_TYPECHECK(activate, void (*)(typeof(context))) + \ + CALLBACK_TYPECHECK(deactivate, void (*)(typeof(context))), \ + (io_callback_t *)deactivate, context) /* Returns the current context set to ioloop. */ struct ioloop_context *io_loop_get_current_context(struct ioloop *ioloop); diff --git a/src/plugins/stats/stats-plugin.c b/src/plugins/stats/stats-plugin.c index 6f1b2c6a3d..df8b447841 100644 --- a/src/plugins/stats/stats-plugin.c +++ b/src/plugins/stats/stats-plugin.c @@ -201,9 +201,8 @@ void mail_stats_get(struct stats_user *suser, struct mail_stats *stats_r) user_trans_stats_get(suser, &stats_r->trans_stats); } -static void stats_io_activate(void *context) +static void stats_io_activate(struct mail_user *user) { - struct mail_user *user = context; struct stats_user *suser = STATS_USER_CONTEXT(user); if (stats_user_count == 1) { @@ -519,9 +518,8 @@ static void session_stats_refresh_timeout(struct mail_user *user) session_stats_refresh(user); } -static void stats_io_deactivate(void *context) +static void stats_io_deactivate(struct mail_user *user) { - struct mail_user *user = context; struct stats_user *suser = STATS_USER_CONTEXT(user); unsigned int last_update_secs;