aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--camel/ChangeLog4
-rw-r--r--camel/providers/imap/camel-imap-stream.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index 74b3ce3b8d..6deb5a1d91 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,5 +1,9 @@
2000-07-21 Jeffrey Stedfast <fejj@helixcode.com>
+ * providers/imap/camel-imap-stream.c (stream_read): Updated with some of the
+ same fixes I've made to camel-imap-folder.c like recalculating message part
+ lengths.
+
* providers/imap/camel-imap-store.c (camel_imap_command_extended): Rewrote
the code to check for "* %d RECENT". Still needs to be modified, but should
no longer cause an infinite loop by detecting mis-detecting RECENT messages.
diff --git a/camel/providers/imap/camel-imap-stream.c b/camel/providers/imap/camel-imap-stream.c
index 9f45ed2291..eb0a48a735 100644
--- a/camel/providers/imap/camel-imap-stream.c
+++ b/camel/providers/imap/camel-imap-stream.c
@@ -168,10 +168,10 @@ stream_read (CamelStream *stream, char *buffer, size_t n)
if (*q == '\n')
part_len--;
}
- /* we want to make sure we get up to the last \n */
- for ( ; *q && *q != '\n'; q++, part_len++);
+ /* FIXME: This is a hack for IMAP daemons that send us a UID at the end of each FETCH */
+ for (q--, part_len--; q > p && *(q-1) != '\n'; q--, part_len--);
- imap_stream->cache = g_strndup (p, part_len);
+ imap_stream->cache = g_strndup (p, part_len + 1);
g_free (result);
imap_stream->cache_ptr = imap_stream->cache;