aboutsummaryrefslogtreecommitdiffstats
path: root/camel
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2003-02-28 07:37:34 +0800
committerJeffrey Stedfast <fejj@src.gnome.org>2003-02-28 07:37:34 +0800
commitb284896c8c561ff8d431de984725da3c01bfea1e (patch)
treef4625235ac5cb3cde649e1627522db702a80655b /camel
parent9abf82080cff93489d63cf6b0b929782b190c2fc (diff)
downloadgsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.gz
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.bz2
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.lz
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.xz
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.zst
gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.zip
Add a 'flushed' state variable to the private struct. (do_read): Set
2003-02-27 Jeffrey Stedfast <fejj@ximian.com> * camel-stream-filter.c: Add a 'flushed' state variable to the private struct. (do_read): Set p->flushed to TRUE after we call camel_mime_filter_complete() on all the filters. (do_reset): Set p->flushed to FALSE. (do_eos): Make sure the filters have been flushed before returning that the stream is at EOS. * camel-mime-filter-canon.c (complete): Don't add a eol - otherwise we will fail to verify some mutt signatures that do not have a blank line before the boundary line (and note that the last \n before the boundary really belongs to the boundary anyway) so #if 0 this code out for now. svn path=/trunk/; revision=20096
Diffstat (limited to 'camel')
-rw-r--r--camel/ChangeLog16
-rw-r--r--camel/camel-mime-filter-canon.c7
-rw-r--r--camel/camel-stream-filter.c22
3 files changed, 40 insertions, 5 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index d9ca59abe6..1e8bfcc94c 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,19 @@
+2003-02-27 Jeffrey Stedfast <fejj@ximian.com>
+
+ * camel-stream-filter.c: Add a 'flushed' state variable to the
+ private struct.
+ (do_read): Set p->flushed to TRUE after we call
+ camel_mime_filter_complete() on all the filters.
+ (do_reset): Set p->flushed to FALSE.
+ (do_eos): Make sure the filters have been flushed before returning
+ that the stream is at EOS.
+
+ * camel-mime-filter-canon.c (complete): Don't add a eol -
+ otherwise we will fail to verify some mutt signatures that do not
+ have a blank line before the boundary line (and note that the last
+ \n before the boundary really belongs to the boundary anyway) so
+ #if 0 this code out for now.
+
2003-02-27 Not Zed <NotZed@Ximian.com>
* camel-multipart-signed.c: Undo jeff's changes.
diff --git a/camel/camel-mime-filter-canon.c b/camel/camel-mime-filter-canon.c
index a72f01c77f..43337ae856 100644
--- a/camel/camel-mime-filter-canon.c
+++ b/camel/camel-mime-filter-canon.c
@@ -195,6 +195,12 @@ complete(CamelMimeFilter *f, char *in, size_t len, size_t prespace, char **out,
while (o>starto && (o[-1] == ' ' || o[-1] == '\t' || o[-1]=='\r'))
o--;
}
+
+#if 0
+ /* Note: #if 0'd out because we do not want to add a
+ * \r\n for PGP/MIME verification if it isn't there in
+ * the original content stream */
+
/* check end of line canonicalisation */
if (o>starto) {
if (flags & CAMEL_MIME_FILTER_CANON_CRLF) {
@@ -208,6 +214,7 @@ complete(CamelMimeFilter *f, char *in, size_t len, size_t prespace, char **out,
/* and always finish with an eol */
*o++ = '\n';
+#endif
*outlen = o - *out;
diff --git a/camel/camel-stream-filter.c b/camel/camel-stream-filter.c
index febfb04e24..0e529c0071 100644
--- a/camel/camel-stream-filter.c
+++ b/camel/camel-stream-filter.c
@@ -19,11 +19,16 @@
* Boston, MA 02111-1307, USA.
*/
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
#include <string.h>
#include "camel-stream-filter.h"
#define d(x)
-/*#include <stdio.h>*/
/* use my malloc debugger? */
/*extern void g_check(void *mp);*/
@@ -45,7 +50,8 @@ struct _CamelStreamFilterPrivate {
char *filtered; /* the filtered data */
size_t filteredlen;
- int last_was_read; /* was the last op read or write? */
+ int last_was_read:1; /* was the last op read or write? */
+ int flushed:1 /* were the filters flushed? */
};
#define READ_PAD (128) /* bytes padded before buffer */
@@ -90,6 +96,7 @@ camel_stream_filter_init (CamelStreamFilter *obj)
p->realbuffer = g_malloc(READ_SIZE + READ_PAD);
p->buffer = p->realbuffer + READ_PAD;
p->last_was_read = TRUE;
+ p->flushed = FALSE;
}
static void
@@ -234,6 +241,7 @@ do_read (CamelStream *stream, char *buffer, size_t n)
f = f->next;
}
size = p->filteredlen;
+ p->flushed = TRUE;
}
if (size <= 0)
return size;
@@ -368,10 +376,13 @@ do_eos (CamelStream *stream)
{
CamelStreamFilter *filter = (CamelStreamFilter *)stream;
struct _CamelStreamFilterPrivate *p = _PRIVATE(filter);
-
+
if (p->filteredlen > 0)
return FALSE;
-
+
+ if (!p->flushed)
+ return FALSE;
+
return camel_stream_eos(filter->source);
}
@@ -383,7 +394,8 @@ do_reset (CamelStream *stream)
struct _filter *f;
p->filteredlen = 0;
-
+ p->flushed = FALSE;
+
/* and reset filters */
f = p->filters;
while (f) {