program_client_run_async(ctx->pclient, director_flush_user_continue, ctx);
}
+static void director_user_move_finished(struct director *dir)
+{
+ i_assert(dir->users_moving_count > 0);
+ dir->users_moving_count--;
+
+ director_set_state_changed(dir);
+}
+
static void director_user_move_free(struct user *user)
{
struct director *dir = user->kill_ctx->dir;
i_free(kill_ctx);
user->kill_ctx = NULL;
- i_assert(dir->users_moving_count > 0);
- dir->users_moving_count--;
-
- director_set_state_changed(dir);
+ director_user_move_finished(dir);
}
static void
if (!DIRECTOR_KILL_CONTEXT_IS_VALID(user, ctx)) {
/* user was already freed - ignore */
i_assert(ctx->to_move == NULL);
+ director_user_move_finished(ctx->dir);
i_free(ctx);
} else {
i_assert(ctx->kill_state == USER_KILL_STATE_KILLING ||