Mercurial > dovecot > original-hg > dovecot-1.2
changeset 5210:b77a67169fc5 HEAD
While parsing the input stream ignore the mbox hidden headers so that eg.
X-IMAP header won't cause us to crash.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 06 Mar 2007 15:14:09 +0200 |
parents | d5695e137ea4 |
children | 6d4c18b51495 |
files | src/deliver/Makefile.am src/deliver/deliver.c |
diffstat | 2 files changed, 17 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/deliver/Makefile.am Thu Mar 01 14:30:13 2007 +0200 +++ b/src/deliver/Makefile.am Tue Mar 06 15:14:09 2007 +0200 @@ -6,8 +6,10 @@ -I$(top_srcdir)/src/lib \ -I$(top_srcdir)/src/lib-dict \ -I$(top_srcdir)/src/lib-mail \ + -I$(top_srcdir)/src/lib-index \ -I$(top_srcdir)/src/lib-settings \ -I$(top_srcdir)/src/lib-storage \ + -I$(top_srcdir)/src/lib-storage/index \ -I$(top_srcdir)/src/lib-storage/index/mbox \ -DSYSCONFDIR=\""$(sysconfdir)"\" \ -DPKG_RUNDIR=\""$(rundir)"\" \
--- a/src/deliver/deliver.c Thu Mar 01 14:30:13 2007 +0200 +++ b/src/deliver/deliver.c Tue Mar 06 15:14:09 2007 +0200 @@ -16,6 +16,8 @@ #include "strescape.h" #include "var-expand.h" #include "message-address.h" +#include "istream-header-filter.h" +#include "mbox-storage.h" #include "dict-client.h" #include "mbox-from.h" #include "auth-client.h" @@ -366,16 +368,27 @@ static struct istream *create_mbox_stream(int fd, const char *envelope_sender) { const char *mbox_hdr; - struct istream *input_list[4], *input; + struct istream *input_list[4], *input, *input_filter; fd_set_nonblock(fd, FALSE); envelope_sender = address_sanitize(envelope_sender); mbox_hdr = mbox_from_create(envelope_sender, ioloop_time); + input = i_stream_create_file(fd, default_pool, 4096, FALSE); + input_filter = + i_stream_create_header_filter(input, + HEADER_FILTER_EXCLUDE | + HEADER_FILTER_NO_CR, + mbox_hide_headers, + mbox_hide_headers_count, + null_header_filter_callback, + NULL); + i_stream_unref(&input); + input_list[0] = i_stream_create_from_data(default_pool, mbox_hdr, strlen(mbox_hdr)); - input_list[1] = i_stream_create_file(fd, default_pool, 4096, FALSE); + input_list[1] = input_filter; input_list[2] = i_stream_create_from_data(default_pool, "\n", 1); input_list[3] = NULL;