]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Make sure freeing a user doesn't leak a timeout.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 24 Mar 2016 01:07:15 +0000 (10:07 +0900)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 29 Mar 2016 08:21:34 +0000 (11:21 +0300)
src/director/user-directory.c

index 748c12bad54ce667a8afde401f01e96155ec3bc0..67798083d68bd586a5ad99109da3e77603b90398 100644 (file)
@@ -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));