dovecot-2.2: imapc: Added imapc_features=gmail-pop3-uidl

dovecot at dovecot.org dovecot at dovecot.org
Tue Jan 20 03:42:41 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/38c70f8ac3dd
changeset: 18185:38c70f8ac3dd
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Jan 20 05:41:23 2015 +0200
description:
imapc: Added imapc_features=gmail-pop3-uidl
This allows imapc to generate GMail POP3 compatible UIDL so that
pop3-migration plugin isn't needed.

diffstat:

 src/lib-storage/index/imapc/imapc-mail.c     |  16 ++++++++++++++++
 src/lib-storage/index/imapc/imapc-settings.c |   1 +
 src/lib-storage/index/imapc/imapc-settings.h |   3 ++-
 3 files changed, 19 insertions(+), 1 deletions(-)

diffs (57 lines):

diff -r ba0b94f11cea -r 38c70f8ac3dd src/lib-storage/index/imapc/imapc-mail.c
--- a/src/lib-storage/index/imapc/imapc-mail.c	Tue Jan 20 04:46:51 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-mail.c	Tue Jan 20 05:41:23 2015 +0200
@@ -463,6 +463,8 @@
 		       const char **value_r)
 {
 	struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box;
+	struct index_mail *imail = (struct index_mail *)_mail;
+	uint64_t num;
 
 	switch (field) {
 	case MAIL_FETCH_GUID:
@@ -473,6 +475,20 @@
 		}
 		*value_r = "";
 		return imapc_mail_get_guid(_mail, value_r);
+	case MAIL_FETCH_UIDL_BACKEND:
+		if (!IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_GMAIL_POP3_UIDL))
+			break;
+		if (imapc_mail_get_guid(_mail, value_r) < 0)
+			return -1;
+		if (str_to_uint64(*value_r, &num) < 0) {
+			mail_storage_set_critical(_mail->box->storage,
+				"X-GM-MSGID not 64bit integer as expected for POP3 UIDL generation: %s", *value_r);
+			return -1;
+		}
+
+		*value_r = p_strdup_printf(imail->mail.data_pool, "GmailId%llx",
+					   (unsigned long long)num);
+		return 0;
 	default:
 		break;
 	}
diff -r ba0b94f11cea -r 38c70f8ac3dd src/lib-storage/index/imapc/imapc-settings.c
--- a/src/lib-storage/index/imapc/imapc-settings.c	Tue Jan 20 04:46:51 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-settings.c	Tue Jan 20 05:41:23 2015 +0200
@@ -81,6 +81,7 @@
 	{ "guid-forced", IMAPC_FEATURE_GUID_FORCED },
 	{ "fetch-headers", IMAPC_FEATURE_FETCH_HEADERS },
 	{ "gmail-labels-keyword", IMAPC_FEATURE_GMAIL_LABELS_KEYWORD },
+	{ "gmail-pop3-uidl", IMAPC_FEATURE_GMAIL_POP3_UIDL },
 	{ NULL, 0 }
 };
 
diff -r ba0b94f11cea -r 38c70f8ac3dd src/lib-storage/index/imapc/imapc-settings.h
--- a/src/lib-storage/index/imapc/imapc-settings.h	Tue Jan 20 04:46:51 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-settings.h	Tue Jan 20 05:41:23 2015 +0200
@@ -6,7 +6,8 @@
 	IMAPC_FEATURE_RFC822_SIZE		= 0x01,
 	IMAPC_FEATURE_GUID_FORCED		= 0x02,
 	IMAPC_FEATURE_FETCH_HEADERS		= 0x04,
-	IMAPC_FEATURE_GMAIL_LABELS_KEYWORD	= 0x08
+	IMAPC_FEATURE_GMAIL_LABELS_KEYWORD	= 0x08,
+	IMAPC_FEATURE_GMAIL_POP3_UIDL		= 0x10
 };
 /* </settings checks> */
 


More information about the dovecot-cvs mailing list