]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
pop3: Minor optimization to unexpected client disconnections
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 11 May 2020 15:50:18 +0000 (18:50 +0300)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 20 May 2020 09:54:33 +0000 (12:54 +0300)
There's no need to build deleted messages seqset if it's not used.

src/pop3/pop3-commands.c

index dcbced35897dd316ae7123c4f695aa0e58bd6a98..4c0efa5e3f205f581db35e443e1894377b61129b 100644 (file)
@@ -247,7 +247,7 @@ bool client_update_mails(struct client *client)
        /* translate msgnums to sequences (in case POP3 ordering is
           different) */
        t_array_init(&deleted_msgs, 8);
-       if (client->deleted_bitmask != NULL) {
+       if (client->deleted_bitmask != NULL && client->quit_seen) {
                for (msgnum = 0; msgnum < client->messages_count; msgnum++) {
                        bit = 1 << (msgnum % CHAR_BIT);
                        if ((client->deleted_bitmask[msgnum / CHAR_BIT] & bit) != 0)
@@ -268,7 +268,7 @@ bool client_update_mails(struct client *client)
        mail_search_args_unref(&search_args);
 
        while (mailbox_search_next(ctx, &mail)) {
-               if (client->quit_seen && seq_range_exists(&deleted_msgs, mail->seq))
+               if (seq_range_exists(&deleted_msgs, mail->seq))
                        client_expunge(client, mail);
                else if (seq_range_exists(&seen_msgs, mail->seq))
                        mail_update_flags(mail, MODIFY_ADD, MAIL_SEEN);