[dovecot-cvs] dovecot/src/imap cmd-append.c,1.25,1.26 cmd-capability.c,1.3,1.4 cmd-copy.c,1.6,1.7 cmd-fetch.c,1.16,1.17 cmd-search.c,1.15,1.16 cmd-sort.c,1.10,1.11 cmd-store.c,1.13,1.14 cmd-thread.c,1.3,1.4 commands-util.c,1.25,1.26 commands-util.h,1.11,1.12

cras at procontrol.fi cras at procontrol.fi
Sun Jun 15 07:42:31 EEST 2003


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

Modified Files:
	cmd-append.c cmd-capability.c cmd-copy.c cmd-fetch.c 
	cmd-search.c cmd-sort.c cmd-store.c cmd-thread.c 
	commands-util.c commands-util.h 
Log Message:
Only NOOP and CHECK will now always do a real mailbox sync. Other commands
will also do it but no often than once in 5 seconds. Also with maildir we
don't anymore try to sync it before running commands since syncing is now
done automatically whenever we try to access a file that doesn't exist.



Index: cmd-append.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-append.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- cmd-append.c	28 May 2003 11:04:28 -0000	1.25
+++ cmd-append.c	15 Jun 2003 03:42:28 -0000	1.26
@@ -207,7 +207,7 @@
 	box->close(box);
 
 	if (!failed) {
-		client_sync_full(client);
+		client_sync_full_fast(client);
 		client_send_tagline(client, "OK Append completed.");
 	}
 	return TRUE;

Index: cmd-capability.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-capability.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmd-capability.c	5 Jan 2003 13:09:51 -0000	1.3
+++ cmd-capability.c	15 Jun 2003 03:42:28 -0000	1.4
@@ -7,7 +7,7 @@
 {
 	client_send_line(client, "* CAPABILITY " CAPABILITY_STRING);
 
-	client_sync_full(client);
+	client_sync_full_fast(client);
 	client_send_tagline(client, "OK Capability completed.");
 	return TRUE;
 }

Index: cmd-copy.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-copy.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- cmd-copy.c	22 Jan 2003 19:23:28 -0000	1.6
+++ cmd-copy.c	15 Jun 2003 03:42:28 -0000	1.7
@@ -31,14 +31,14 @@
 	ret = client->mailbox->copy(client->mailbox, destbox,
 				    messageset, client->cmd_uid);
 
-	/* sync always - if COPY fails because of expunges they'll get
-	   synced here */
-	client_sync_full(client);
-
-	if (ret)
+	if (ret) {
+		client_sync_full_fast(client);
 		client_send_tagline(client, "OK Copy completed.");
-	else
+	} else {
+		/* if COPY fails because of expunges they'll get synced here */
+		client_sync_full(client);
 		client_send_storage_error(client);
+	}
 
 	destbox->close(destbox);
 	return TRUE;

Index: cmd-fetch.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-fetch.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- cmd-fetch.c	4 Jun 2003 16:35:11 -0000	1.16
+++ cmd-fetch.c	15 Jun 2003 03:42:28 -0000	1.17
@@ -354,7 +354,7 @@
 		if ((client_workarounds &
 		     WORKAROUND_OE6_FETCH_NO_NEWMAIL) == 0) {
 			if (client->cmd_uid)
-				client_sync_full(client);
+				client_sync_full_fast(client);
 			else
 				client_sync_without_expunges(client);
 		}

Index: cmd-search.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-search.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cmd-search.c	21 Feb 2003 18:13:14 -0000	1.15
+++ cmd-search.c	15 Jun 2003 03:42:28 -0000	1.16
@@ -92,7 +92,7 @@
 		client_send_tagline(client, t_strconcat("NO ", error, NULL));
 	} else if (imap_search(client, charset, sargs)) {
 		if (client->cmd_uid)
-			client_sync_full(client);
+			client_sync_full_fast(client);
 		else
 			client_sync_without_expunges(client);
 		client_send_tagline(client, "OK Search completed.");

Index: cmd-sort.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-sort.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- cmd-sort.c	21 Jan 2003 21:51:24 -0000	1.10
+++ cmd-sort.c	15 Jun 2003 03:42:28 -0000	1.11
@@ -123,7 +123,7 @@
 	} else if (imap_sort(client, charset, sargs, sorting)) {
 		/* NOTE: syncing is allowed when returning UIDs */
 		if (client->cmd_uid)
-			client_sync_full(client);
+			client_sync_full_fast(client);
 		else
 			client_sync_without_expunges(client);
 		client_send_tagline(client, "OK Sort completed.");

Index: cmd-store.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-store.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- cmd-store.c	4 Jun 2003 16:35:11 -0000	1.13
+++ cmd-store.c	15 Jun 2003 03:42:28 -0000	1.14
@@ -75,7 +75,7 @@
 					  client->cmd_uid, &flags,
 					  modify_type, !silent, &all_found)) {
 		if (client->cmd_uid)
-			client_sync_full(client);
+			client_sync_full_fast(client);
 		else
 			client_sync_without_expunges(client);
 		client_send_tagline(client, all_found ? "OK Store completed." :

Index: cmd-thread.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/cmd-thread.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- cmd-thread.c	20 Jan 2003 14:52:51 -0000	1.3
+++ cmd-thread.c	15 Jun 2003 03:42:28 -0000	1.4
@@ -65,7 +65,7 @@
 	} else if (imap_thread(client, charset, sargs, threading)) {
 		/* NOTE: syncing is allowed when returning UIDs */
 		if (client->cmd_uid)
-			client_sync_full(client);
+			client_sync_full_fast(client);
 		else
 			client_sync_without_expunges(client);
 		client_send_tagline(client, "OK Search completed.");

Index: commands-util.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap/commands-util.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- commands-util.c	28 Apr 2003 16:31:59 -0000	1.25
+++ commands-util.c	15 Jun 2003 03:42:28 -0000	1.26
@@ -94,7 +94,16 @@
 void client_sync_full(struct client *client)
 {
 	if (client->mailbox != NULL) {
-		if (!client->mailbox->sync(client->mailbox, TRUE))
+		if (!client->mailbox->sync(client->mailbox, 0))
+                        client_send_untagged_storage_error(client);
+	}
+}
+
+void client_sync_full_fast(struct client *client)
+{
+	if (client->mailbox != NULL) {
+		if (!client->mailbox->sync(client->mailbox,
+					   MAIL_SYNC_FLAG_FAST))
                         client_send_untagged_storage_error(client);
 	}
 }
@@ -102,7 +111,9 @@
 void client_sync_without_expunges(struct client *client)
 {
 	if (client->mailbox != NULL) {
-		if (!client->mailbox->sync(client->mailbox, FALSE))
+		if (!client->mailbox->sync(client->mailbox,
+                                           MAIL_SYNC_FLAG_NO_EXPUNGES |
+					   MAIL_SYNC_FLAG_FAST))
 			client_send_untagged_storage_error(client);
 	}
 }

Index: commands-util.h
===================================================================
RCS file: /home/cvs/dovecot/src/imap/commands-util.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- commands-util.h	20 Feb 2003 00:46:17 -0000	1.11
+++ commands-util.h	15 Jun 2003 03:42:28 -0000	1.12
@@ -20,6 +20,9 @@
    FETCH FLAGS, EXISTS and RECENT responses. */
 void client_sync_full(struct client *client);
 
+/* Synchronize fast. */
+void client_sync_full_fast(struct client *client);
+
 /* Synchronize all but expunges with client. */
 void client_sync_without_expunges(struct client *client);
 



More information about the dovecot-cvs mailing list