diff options
author | Jeffrey Stedfast <fejj@ximian.com> | 2003-02-28 07:37:34 +0800 |
---|---|---|
committer | Jeffrey Stedfast <fejj@src.gnome.org> | 2003-02-28 07:37:34 +0800 |
commit | b284896c8c561ff8d431de984725da3c01bfea1e (patch) | |
tree | f4625235ac5cb3cde649e1627522db702a80655b | |
parent | 9abf82080cff93489d63cf6b0b929782b190c2fc (diff) | |
download | gsoc2013-evolution-b284896c8c561ff8d431de984725da3c01bfea1e.tar.gz 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
-rw-r--r-- | camel/ChangeLog | 16 | ||||
-rw-r--r-- | camel/camel-mime-filter-canon.c | 7 | ||||
-rw-r--r-- | camel/camel-stream-filter.c | 22 |
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) { |