[dovecot-cvs] dovecot/src/imap cmd-idle.c,1.3,1.4

cras at procontrol.fi cras at procontrol.fi
Thu Feb 20 21:57:12 EET 2003


Update of /home/cvs/dovecot/src/imap
In directory danu:/tmp/cvs-serv20345/imap

Modified Files:
	cmd-idle.c 
Log Message:
fixes



Index: cmd-idle.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-idle.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmd-idle.c	20 Feb 2003 10:52:10 -0000	1.3
+++ cmd-idle.c	20 Feb 2003 19:57:10 -0000	1.4
@@ -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,




More information about the dovecot-cvs mailing list