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,