[dovecot-cvs] dovecot/src/lib-imap imap-message-cache.c,1.28,1.29

cras at procontrol.fi cras at procontrol.fi
Fri Dec 27 12:34:16 EET 2002


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

Modified Files:
	imap-message-cache.c 
Log Message:
Caching IMAP_CACHE_MESSAGE_PART failed if it was already in cache.



Index: imap-message-cache.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-imap/imap-message-cache.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- imap-message-cache.c	21 Dec 2002 22:02:58 -0000	1.28
+++ imap-message-cache.c	27 Dec 2002 10:34:14 -0000	1.29
@@ -307,9 +307,9 @@
 
 			msg->part = message_parse(msg->pool, cache->open_stream,
 						  func, msg);
-		} else {
-			failed = TRUE;
 		}
+
+		failed = msg->part == NULL;
 	}
 
 	if ((fields & IMAP_CACHE_MESSAGE_BODY_SIZE) && msg->body_size == NULL) {
@@ -521,12 +521,23 @@
 	}
 
 	message_skip_virtual(stream, virtual_skip, partial, cr_skipped);
+
+	if (*cr_skipped && max_virtual_size != (uoff_t)-1) {
+		/* get_body_size() sees \n first, counting it as \r\n */
+		max_virtual_size++;
+	}
+
 	message_get_body_size(stream, dest, max_virtual_size);
 
 	if (*cr_skipped) {
+		/* extra virtual \r counted, drop it */
 		dest->virtual_size--;
+		/* we'll see \n as first character next time, so make sure
+		   we don't count the (virtual) \r twice. */
 		partial->virtual_size--;
 	}
+
+	// FIXME: add dest to partial
 }
 
 int imap_msgcache_get_rfc822_partial(ImapMessageCache *cache,




More information about the dovecot-cvs mailing list