From b284896c8c561ff8d431de984725da3c01bfea1e Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Thu, 27 Feb 2003 23:37:34 +0000 Subject: Add a 'flushed' state variable to the private struct. (do_read): Set 2003-02-27 Jeffrey Stedfast * 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 --- camel/ChangeLog | 16 ++++++++++++++++ camel/camel-mime-filter-canon.c | 7 +++++++ camel/camel-stream-filter.c | 22 +++++++++++++++++----- 3 files changed, 40 insertions(+), 5 deletions(-) (limited to 'camel') 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 + + * 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 * 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 +#endif + +#include #include #include "camel-stream-filter.h" #define d(x) -/*#include */ /* 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) { -- cgit v1.2.3