]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
pop3: If transcation commit failed at QUIT, don't log any messages as expunged.
authorTimo Sirainen <tss@iki.fi>
Wed, 19 Aug 2015 11:30:09 +0000 (14:30 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 19 Aug 2015 11:30:09 +0000 (14:30 +0300)
src/pop3/pop3-client.c
src/pop3/pop3-client.h
src/pop3/pop3-commands.c

index 7e2b33a59a256088d649af7487644c37f622ac09..32f1fd89293d976b85e041d69acf08fc035a9dc3 100644 (file)
@@ -535,7 +535,8 @@ static const char *client_stats(struct client *client)
        tab[1].value = dec2str(client->top_count);
        tab[2].value = dec2str(client->retr_bytes);
        tab[3].value = dec2str(client->retr_count);
-       tab[4].value = dec2str(client->expunged_count);
+       tab[4].value = client->delete_success ?
+               dec2str(client->deleted_count) : 0;
        tab[5].value = dec2str(client->messages_count);
        tab[6].value = dec2str(client->total_size);
        tab[7].value = dec2str(client->input->v_offset);
index 125eeed75c56d2c1dc36183d82ed57a837fd5988..4184bbf675088bd15a11d90c7e7bf41fe41770c4 100644 (file)
@@ -62,7 +62,7 @@ struct client {
 
        unsigned int uid_validity;
        unsigned int messages_count;
-       unsigned int deleted_count, expunged_count, seen_change_count;
+       unsigned int deleted_count, seen_change_count;
        uoff_t total_size;
        uoff_t deleted_size;
        uint32_t last_seen_pop3_msn, lowest_retr_pop3_msn;
@@ -100,6 +100,7 @@ struct client {
        unsigned int waiting_input:1;
        unsigned int anvil_sent:1;
        unsigned int message_uidls_save:1;
+       unsigned int delete_success:1;
 };
 
 struct pop3_module_register {
index ccb960bf2188e0d12268aab0a5d9d154a7871118..f7bfb65dafb23b60ac975039564861324cadebe3 100644 (file)
@@ -228,7 +228,6 @@ static void client_expunge(struct client *client, struct mail *mail)
                mail_update_keywords(mail, MODIFY_ADD, client->deleted_kw);
                break;
        }
-       client->expunged_count++;
 }
 
 bool client_update_mails(struct client *client)
@@ -297,6 +296,8 @@ static int cmd_quit(struct client *client, const char *args ATTR_UNUSED)
                client_send_storage_error(client);
                client_disconnect(client, "Storage error during logout.");
                return 1;
+       } else {
+               client->delete_success = TRUE;
        }
 
        if (!client->deleted)