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.3.9~1583 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4e637e1a81236c7eaa2fea6c72e86ccf96063184;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 618316092b..843f855319 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -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);