From: Timo Sirainen Date: Thu, 24 Mar 2016 01:07:15 +0000 (+0900) Subject: director: Make sure freeing a user doesn't leak a timeout. X-Git-Tag: 2.2.23~13 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6f84e4f1b6e4531f1ed3a1c5494fbe086381226a;p=thirdparty%2Fdovecot%2Fcore.git director: Make sure freeing a user doesn't leak a timeout. --- diff --git a/src/director/user-directory.c b/src/director/user-directory.c index 748c12bad5..67798083d6 100644 --- a/src/director/user-directory.c +++ b/src/director/user-directory.c @@ -54,6 +54,11 @@ static void user_free(struct user_directory *dir, struct user *user) i_assert(user->host->user_count > 0); user->host->user_count--; + if (user->to_move != NULL) { + /* director_user_expire is very short. user expired before + moving the user finished or timed out. */ + timeout_remove(&user->to_move); + } user_move_iters(dir, user); hash_table_remove(dir->hash, POINTER_CAST(user->username_hash));