Mercurial > dovecot > core-2.2
changeset 1220:fb8cec12d2ee HEAD
fixes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 20 Feb 2003 21:57:10 +0200 |
parents | e4210f1ea3f1 |
children | bff971233e5d |
files | src/imap/cmd-idle.c |
diffstat | 1 files changed, 11 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/src/imap/cmd-idle.c Thu Feb 20 21:51:44 2003 +0200 +++ b/src/imap/cmd-idle.c Thu Feb 20 21:57:10 2003 +0200 @@ -9,7 +9,7 @@ #define DEFAULT_IDLE_CHECK_INTERVAL 30 -static void idle_finish(struct client *client) +static void idle_finish(struct client *client, int done_ok) { if (client->idle_to != NULL) { timeout_remove(client->idle_to); @@ -25,16 +25,19 @@ client->io = io_add(i_stream_get_fd(client->input), IO_READ, _client_input, client); - _client_reset_command(client); - client->bad_counter = 0; - client->mailbox->auto_sync(client->mailbox, mailbox_check_interval != 0 ? MAILBOX_SYNC_NO_EXPUNGES : MAILBOX_SYNC_NONE, mailbox_check_interval); client_sync_full(client); - client_send_tagline(client, "OK Idle completed."); + if (done_ok) + client_send_tagline(client, "OK Idle completed."); + else + client_send_tagline(client, "BAD Expected DONE."); + + _client_reset_command(client); + client->bad_counter = 0; } static void idle_client_input(void *context) @@ -51,8 +54,7 @@ return; case -2: client->input_skip_line = TRUE; - client_send_line(client, "* BAD Expected DONE."); - idle_finish(client); + idle_finish(client, FALSE); break; } @@ -60,11 +62,7 @@ if (client->input_skip_line) client->input_skip_line = FALSE; else { - if (strcmp(line, "DONE") != 0) { - client_send_line(client, - "* BAD Expected DONE."); - } - idle_finish(client); + idle_finish(client, strcmp(line, "DONE") == 0); break; } } @@ -81,7 +79,7 @@ if (!client->mailbox->get_status(client->mailbox, STATUS_MESSAGES, &status)) { client_send_untagged_storage_error(client); - idle_finish(client); + idle_finish(client, TRUE); } else { client->idle_expunge = status.messages+1; client_send_line(client,