]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: Code cleanup - check io_loop_context_add/remove_callbacks() callback parameters.
authorTimo Sirainen <tss@iki.fi>
Thu, 25 Sep 2014 12:15:20 +0000 (15:15 +0300)
committerTimo Sirainen <tss@iki.fi>
Thu, 25 Sep 2014 12:15:20 +0000 (15:15 +0300)
src/lib-storage/mail-storage-service.c
src/lib/ioloop.c
src/lib/ioloop.h
src/plugins/stats/stats-plugin.c

index 3ebbd96958f88c5f6bc05b35cad6bcbcffd256e0..86f20321d6c23fd385dd2e41b59e48a05e25ecca 100644 (file)
@@ -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);
 }
 
index e00c7e4fc82e7d4a05b0ae67372ab9745d93003b..35e592e689189e4d3b1028b89f8da99a68e32c06 100644 (file)
@@ -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)
index e0fdd016fbe549d1a7a06f5e0578fdbf0ccab7c4..8cc5577a20b9c2edac9aaf924dfc8f639f74c2c4 100644 (file)
@@ -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);
 
index 6f1b2c6a3df25dc67fbbe78c959075c44147e3fb..df8b44784113a8eba29096a7a8736b01d92006a1 100644 (file)
@@ -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;