summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Stedfast <fejj@ximian.com>2003-03-10 16:42:38 +0000
committerJeffrey Stedfast <fejj@src.gnome.org>2003-03-10 16:42:38 +0000
commit524d14d8878afb2f11a156e144ee954b07f4a2c9 (patch)
treed7788fd57962f35d4fbe85d37ad501f2f2894e64
parentece0f2b2021b1bfd710075e0c9692206f5039c48 (diff)
downloadevolution-data-server-524d14d8878afb2f11a156e144ee954b07f4a2c9.tar.gz
Add a CRLF filter to the output stream to convert any CRLF sequences into
2003-03-05 Jeffrey Stedfast <fejj@ximian.com> * providers/sendmail/camel-sendmail-transport.c (sendmail_send_to): Add a CRLF filter to the output stream to convert any CRLF sequences into plain old line-feeds to work around a bug in some local transport programs.
-rw-r--r--camel/ChangeLog7
-rw-r--r--camel/providers/sendmail/camel-sendmail-transport.c11
2 files changed, 18 insertions, 0 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog
index a1eb3c1a3..f1270e39e 100644
--- a/camel/ChangeLog
+++ b/camel/ChangeLog
@@ -1,3 +1,10 @@
+2003-03-05 Jeffrey Stedfast <fejj@ximian.com>
+
+ * providers/sendmail/camel-sendmail-transport.c
+ (sendmail_send_to): Add a CRLF filter to the output stream to
+ convert any CRLF sequences into plain old line-feeds to work
+ around a bug in some local transport programs.
+
2003-02-27 Jeffrey Stedfast <fejj@ximian.com>
* camel-stream-filter.c: Add a 'flushed' state variable to the
diff --git a/camel/providers/sendmail/camel-sendmail-transport.c b/camel/providers/sendmail/camel-sendmail-transport.c
index 7ba567832..f7059198b 100644
--- a/camel/providers/sendmail/camel-sendmail-transport.c
+++ b/camel/providers/sendmail/camel-sendmail-transport.c
@@ -34,6 +34,8 @@
#include <string.h>
#include "camel-sendmail-transport.h"
+#include "camel-mime-filter-crlf.h"
+#include "camel-stream-filter.h"
#include "camel-mime-message.h"
#include "camel-data-wrapper.h"
#include "camel-stream-fs.h"
@@ -88,6 +90,8 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message,
struct _header_raw *header, *savedbcc, *n, *tail;
const char *from_addr, *addr, **argv;
int i, len, fd[2], nullfd, wstat;
+ CamelStreamFilter *filter;
+ CamelMimeFilter *crlf;
sigset_t mask, omask;
CamelStream *out;
pid_t pid;
@@ -185,6 +189,13 @@ sendmail_send_to (CamelTransport *transport, CamelMimeMessage *message,
/* Parent process. Write the message out. */
close (fd[0]);
out = camel_stream_fs_new_with_fd (fd[1]);
+ filter = camel_stream_filter_new_with_stream (out);
+ crlf = camel_mime_filter_crlf_new (CAMEL_MIME_FILTER_CRLF_DECODE, CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
+ camel_stream_filter_add (filter, crlf);
+ camel_object_unref (crlf);
+ camel_object_unref (out);
+
+ out = (CamelStream *) filter;
if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), out) == -1
|| camel_stream_close (out) == -1) {
camel_object_unref (CAMEL_OBJECT (out));