]> 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@dovecot.fi>
Mon, 9 Jul 2018 14:01:08 +0000 (14:01 +0000)
director_user_move_free() will now just free the IPC command, so this isn't
a problem anymore.

src/director/director.c

index 618316092b6d04ae0b1c980c16d53f6b9332c85a..843f8553195da03c9bbec65423b8e80372f72c1d 100644 (file)
@@ -1028,9 +1028,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 */
@@ -1106,7 +1103,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);