diff src/lib-imap-storage/imap-msgpart.c @ 20700:d974673e577c

lib-imap-storage: Check that UID is assigned before caching
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Tue, 06 Sep 2016 09:23:54 +0300
parents 3a71ed48cdf7
children 59437f8764c6
line wrap: on
line diff
--- a/src/lib-imap-storage/imap-msgpart.c	Mon Sep 05 15:56:05 2016 +0300
+++ b/src/lib-imap-storage/imap-msgpart.c	Tue Sep 06 09:23:54 2016 +0300
@@ -423,7 +423,7 @@
 
 	if (virtual_skip == 0) {
 		/* no need to seek */
-	} else if (cache->uid == mail->uid &&
+	} else if (mail->uid > 0 && cache->uid == mail->uid &&
 		   cache->physical_start == physical_start &&
 		   cache->virtual_pos < virtual_skip) {
 		/* use cache */
@@ -437,7 +437,8 @@
 		return errinput;
 	}
 
-	if ((msgpart->partial_offset != 0 ||
+	if (mail->uid > 0 &&
+	    (msgpart->partial_offset != 0 ||
 	     msgpart->partial_size != (uoff_t)-1) && !input->eof) {
 		/* update cache */
 		cache->uid = mail->uid;