From: Timo Sirainen Date: Thu, 5 Jul 2018 11:55:38 +0000 (+0300) Subject: director: Allow fully freeing user while waiting for IPC kick to finish X-Git-Tag: 2.2.36.1~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2a6dafff6df682a51920aa8ed4f2335ec8a24766;p=thirdparty%2Fdovecot%2Fcore.git director: Allow fully freeing user while waiting for IPC kick to finish director_user_move_free() will now just free the IPC command, so this isn't a problem anymore. --- diff --git a/src/director/director.c b/src/director/director.c index f4a50d5972..5ed4eb3f48 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -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);