]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Allow fully freeing user while waiting for IPC kick to finish
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 5 Jul 2018 11:55:38 +0000 (14:55 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 25 Jan 2019 10:47:18 +0000 (12:47 +0200)
director_user_move_free() will now just free the IPC command, so this isn't
a problem anymore.

src/director/director.c

index f4a50d59720e6b1461f9207f89212f7a4063b185..5ed4eb3f48f6c875c4e8101a162e7da002b2ff87 100644 (file)
@@ -1032,9 +1032,6 @@ static void director_kill_user_callback(enum ipc_client_cmd_state state,
        if (ctx->dir->kick_callback != NULL)
                ctx->dir->kick_callback(ctx->dir);
 
-
-       ctx->callback_pending = FALSE;
-
        user = user_directory_lookup(ctx->tag->users, ctx->username_hash);
        if (!DIRECTOR_KILL_CONTEXT_IS_VALID(user, ctx)) {
                /* user was already freed - ignore */
@@ -1110,7 +1107,6 @@ void director_kill_user(struct director *dir, struct director_host *src,
        if ((old_host != NULL && old_host != user->host) || forced_kick) {
                cmd = t_strdup_printf("proxy\t*\tKICK-DIRECTOR-HASH\t%u",
                                      user->username_hash);
-               ctx->callback_pending = TRUE;
                dir->users_kicking_count++;
                ctx->ipc_cmd = ipc_client_cmd(dir->ipc_proxy, cmd,
                                              director_kill_user_callback, ctx);