SOURCES: dovecot-tpop3d-uidl.patch (NEW) - new

arekm arekm at pld-linux.org
Wed Jun 28 23:25:10 CEST 2006


Author: arekm                        Date: Wed Jun 28 21:25:10 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- new

---- Files affected:
SOURCES:
   dovecot-tpop3d-uidl.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/dovecot-tpop3d-uidl.patch
diff -u /dev/null SOURCES/dovecot-tpop3d-uidl.patch:1.1
--- /dev/null	Wed Jun 28 23:25:10 2006
+++ SOURCES/dovecot-tpop3d-uidl.patch	Wed Jun 28 23:25:05 2006
@@ -0,0 +1,127 @@
+diff -ur dovecot-1.0.rc1.org/dovecot-example.conf dovecot-1.0.rc1/dovecot-example.conf
+--- dovecot-1.0.rc1.org/dovecot-example.conf	2006-06-17 17:05:22.000000000 +0200
++++ dovecot-1.0.rc1/dovecot-example.conf	2006-06-28 23:16:11.761125250 +0200
+@@ -556,6 +556,7 @@
+   #  %u - Mail UID
+   #  %m - MD5 sum of the mailbox headers in hex (mbox only)
+   #  %f - filename (maildir only)
++  #  %M - MD5 sum of the filename (like %f) in hex (maildir only)
+   #
+   # If you want UIDL compatibility with other POP3 servers, use:
+   #  UW's ipop3d         : %08Xv%08Xu
+Tylko w dovecot-1.0.rc1: dovecot-example.conf.orig
+Tylko w dovecot-1.0.rc1: dovecot-tpop3d-uidl.patch
+diff -ur dovecot-1.0.rc1.org/src/lib-storage/index/index-mail.c dovecot-1.0.rc1/src/lib-storage/index/index-mail.c
+--- dovecot-1.0.rc1.org/src/lib-storage/index/index-mail.c	2006-05-08 13:40:57.000000000 +0200
++++ dovecot-1.0.rc1/src/lib-storage/index/index-mail.c	2006-06-28 23:16:11.761125250 +0200
+@@ -693,6 +693,7 @@
+ 		return data->envelope;
+ 	case MAIL_FETCH_FROM_ENVELOPE:
+ 	case MAIL_FETCH_UIDL_FILE_NAME:
++	case MAIL_FETCH_UIDL_MD5_FILE_NAME:
+ 		return NULL;
+ 	case MAIL_FETCH_HEADER_MD5:
+ 		if (mail_index_lookup_ext(mail->trans->trans_view, data->seq,
+Tylko w dovecot-1.0.rc1/src/lib-storage/index: index-mail.c.orig
+diff -ur dovecot-1.0.rc1.org/src/lib-storage/index/maildir/maildir-mail.c dovecot-1.0.rc1/src/lib-storage/index/maildir/maildir-mail.c
+--- dovecot-1.0.rc1.org/src/lib-storage/index/maildir/maildir-mail.c	2006-06-18 00:40:53.000000000 +0200
++++ dovecot-1.0.rc1/src/lib-storage/index/maildir/maildir-mail.c	2006-06-28 23:23:02.546797750 +0200
+@@ -164,6 +164,7 @@
+ 	struct maildir_mailbox *mbox = (struct maildir_mailbox *)mail->ibox;
+ 	enum maildir_uidlist_rec_flag flags;
+ 	const char *fname, *end;
++	unsigned char digest[16];
+ 
+ 	if (field == MAIL_FETCH_UIDL_FILE_NAME) {
+ 		if (_mail->uid != 0) {
+@@ -179,6 +180,21 @@
+ 		}
+ 		end = strchr(fname, MAILDIR_INFO_SEP);
+ 		return end == NULL ? fname : t_strdup_until(fname, end);
++	} else if (field == MAIL_FETCH_UIDL_MD5_FILE_NAME) {
++		if (_mail->uid != 0) {
++			fname = maildir_uidlist_lookup(mbox->uidlist,
++							_mail->uid, &flags);
++			if (fname == NULL) {
++				_mail->expunged = TRUE;
++				return NULL;
++			}
++		} else {
++			fname = maildir_save_file_get_path(_mail->transaction,
++							_mail->seq);
++		}
++		end = strchr(fname, MAILDIR_INFO_SEP);
++		md5_get_digest(fname, end == NULL ? strlen(fname) : end - fname, digest);
++		return binary_to_hex(digest, sizeof(digest));
+ 	}
+ 
+ 	return index_mail_get_special(_mail, field);
+diff -ur dovecot-1.0.rc1.org/src/lib-storage/mail-storage.h dovecot-1.0.rc1/src/lib-storage/mail-storage.h
+--- dovecot-1.0.rc1.org/src/lib-storage/mail-storage.h	2006-04-09 17:50:22.000000000 +0200
++++ dovecot-1.0.rc1/src/lib-storage/mail-storage.h	2006-06-28 23:16:11.765125500 +0200
+@@ -120,7 +120,8 @@
+ 	MAIL_FETCH_IMAP_ENVELOPE	= 0x00004000,
+ 	MAIL_FETCH_FROM_ENVELOPE	= 0x00008000,
+ 	MAIL_FETCH_HEADER_MD5		= 0x00010000,
+-	MAIL_FETCH_UIDL_FILE_NAME	= 0x00020000
++	MAIL_FETCH_UIDL_FILE_NAME	= 0x00020000,
++	MAIL_FETCH_UIDL_MD5_FILE_NAME	= 0x00040000
+ };
+ 
+ enum mailbox_transaction_flags {
+Tylko w dovecot-1.0.rc1/src/lib-storage: mail-storage.h.orig
+diff -ur dovecot-1.0.rc1.org/src/pop3/commands.c dovecot-1.0.rc1/src/pop3/commands.c
+--- dovecot-1.0.rc1.org/src/pop3/commands.c	2006-03-06 21:34:42.000000000 +0100
++++ dovecot-1.0.rc1/src/pop3/commands.c	2006-06-28 23:16:11.765125500 +0200
+@@ -514,6 +514,7 @@
+ 		{ 'u', NULL },
+ 		{ 'm', NULL },
+ 		{ 'f', NULL },
++		{ 'M', NULL },
+ 		{ '\0', NULL }
+ 	};
+ 	struct var_expand_table *tab;
+@@ -560,6 +561,17 @@
+ 				break;
+ 			}
+ 		}
++		if ((uidl_keymask & UIDL_MD5_FILE_NAME) != 0) {
++			tab[4].value =
++				mail_get_special(ctx->mail,
++						 MAIL_FETCH_UIDL_MD5_FILE_NAME);
++			if (tab[4].value == NULL) {
++				/* broken */
++				i_error("UIDL: File name not found");
++				t_pop();
++				break;
++			}
++		}
+ 
+ 		str_truncate(str, 0);
+ 		str_printfa(str, ctx->message == 0 ? "%u " : "+OK %u ",
+diff -ur dovecot-1.0.rc1.org/src/pop3/common.h dovecot-1.0.rc1/src/pop3/common.h
+--- dovecot-1.0.rc1.org/src/pop3/common.h	2006-04-27 14:29:14.000000000 +0200
++++ dovecot-1.0.rc1/src/pop3/common.h	2006-06-28 23:16:11.765125500 +0200
+@@ -13,7 +13,8 @@
+ 	UIDL_UIDVALIDITY	= 0x01,
+ 	UIDL_UID		= 0x02,
+ 	UIDL_MD5		= 0x04,
+-	UIDL_FILE_NAME		= 0x08
++	UIDL_FILE_NAME		= 0x08,
++	UIDL_MD5_FILE_NAME	= 0x10
+ };
+ 
+ extern struct ioloop *ioloop;
+diff -ur dovecot-1.0.rc1.org/src/pop3/main.c dovecot-1.0.rc1/src/pop3/main.c
+--- dovecot-1.0.rc1.org/src/pop3/main.c	2006-06-27 23:00:19.000000000 +0200
++++ dovecot-1.0.rc1/src/pop3/main.c	2006-06-28 23:16:11.765125500 +0200
+@@ -101,6 +101,9 @@
+ 			case 'm':
+ 				mask |= UIDL_MD5;
+ 				break;
++			case 'M':
++				mask |= UIDL_MD5_FILE_NAME;
++				break;
+ 			case 'f':
+ 				mask |= UIDL_FILE_NAME;
+ 				break;
================================================================


More information about the pld-cvs-commit mailing list