improved cache file handling exposed several old bugs related to fetching
mail headers. - iostream handling changes were causing some connections to be disconnected before flushing their output
This commit is contained in:
parent
680863f7be
commit
0c5c743ea0
1
.gitignore
vendored
1
.gitignore
vendored
@ -75,3 +75,4 @@ pigeonhole-snap0592366457df.tar.bz2
|
||||
/dovecot-2.2-pigeonhole-0.4.2.tar.gz
|
||||
/dovecot-2.2.7.tar.gz
|
||||
/dovecot-2.2.8.tar.gz
|
||||
/dovecot-2.2.9.tar.gz
|
||||
|
@ -1,35 +0,0 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Timo Sirainen <tss@iki.fi>
|
||||
# Date 1384952846 -7200
|
||||
# Node ID 47923cfd4b5616f943c8e043c09e64e94b5c24f9
|
||||
# Parent 4ef184875799baa65b4b6048ccde49eefbfd9050
|
||||
lib-storage: mail_get_headers*() returned only the first header from cache.
|
||||
|
||||
diff -r 4ef184875799 -r 47923cfd4b56 src/lib-storage/index/index-mail-headers.c
|
||||
--- a/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:50:53 2013 +0200
|
||||
+++ b/src/lib-storage/index/index-mail-headers.c Wed Nov 20 15:07:26 2013 +0200
|
||||
@@ -603,7 +603,7 @@
|
||||
unsigned char *data;
|
||||
unsigned int field_idx;
|
||||
string_t *dest;
|
||||
- size_t i, len;
|
||||
+ size_t i, len, len2;
|
||||
int ret;
|
||||
ARRAY(const char *) header_values;
|
||||
|
||||
@@ -657,10 +657,10 @@
|
||||
while (i < len && IS_LWSP(data[i])) i++;
|
||||
|
||||
/* @UNSAFE */
|
||||
- len = get_header_size(dest, i);
|
||||
- data[i + len] = '\0';
|
||||
+ len2 = get_header_size(dest, i);
|
||||
+ data[i + len2] = '\0';
|
||||
value = (const char *)data + i;
|
||||
- i += len + 1;
|
||||
+ i += len2 + 1;
|
||||
|
||||
array_append(&header_values, &value, 1);
|
||||
}
|
||||
|
@ -1,24 +0,0 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Timo Sirainen <tss@iki.fi>
|
||||
# Date 1384951853 -7200
|
||||
# Node ID 4ef184875799baa65b4b6048ccde49eefbfd9050
|
||||
# Parent a91437fe94b67fc0b5ef8f3177a9ebe1deccc9e3
|
||||
lib-storage: mail_get_*header*() still didn't handle cached values correctly.
|
||||
If header ends with ":", the ":" shouldn't be returned as part of the value.
|
||||
|
||||
diff -r a91437fe94b6 -r 4ef184875799 src/lib-storage/index/index-mail-headers.c
|
||||
--- a/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:38:55 2013 +0200
|
||||
+++ b/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:50:53 2013 +0200
|
||||
@@ -653,8 +653,8 @@
|
||||
/* cached. skip "header name: " parts in dest. */
|
||||
for (i = 0; i < len; i++) {
|
||||
if (data[i] == ':') {
|
||||
- while (IS_LWSP(data[i+1])) i++;
|
||||
- if (i+1 != len) i++;
|
||||
+ i++;
|
||||
+ while (i < len && IS_LWSP(data[i])) i++;
|
||||
|
||||
/* @UNSAFE */
|
||||
len = get_header_size(dest, i);
|
||||
|
@ -1,32 +0,0 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Timo Sirainen <tss@iki.fi>
|
||||
# Date 1384951135 -7200
|
||||
# Node ID a91437fe94b67fc0b5ef8f3177a9ebe1deccc9e3
|
||||
# Parent f4eb4b5884b2e89e146a32b2d1db1f14f753008f
|
||||
lib-storage: mail_get_*header*() were unnecessarily looking up the headers twice.
|
||||
|
||||
diff -r f4eb4b5884b2 -r a91437fe94b6 src/lib-storage/index/index-mail-headers.c
|
||||
--- a/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:37:44 2013 +0200
|
||||
+++ b/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:38:55 2013 +0200
|
||||
@@ -760,6 +760,9 @@
|
||||
mail_cache_set_corrupted(_mail->box->cache,
|
||||
"Broken header %s for mail UID %u",
|
||||
field, _mail->uid);
|
||||
+ /* retry by parsing the full header */
|
||||
+ } else {
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
@@ -788,6 +791,9 @@
|
||||
mail_cache_set_corrupted(_mail->box->cache,
|
||||
"Broken header %s for mail UID %u",
|
||||
field, _mail->uid);
|
||||
+ /* retry by parsing the full header */
|
||||
+ } else {
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
*value_r = list[0];
|
||||
|
@ -1,23 +0,0 @@
|
||||
|
||||
# HG changeset patch
|
||||
# User Timo Sirainen <tss@iki.fi>
|
||||
# Date 1384951064 -7200
|
||||
# Node ID f4eb4b5884b2e89e146a32b2d1db1f14f753008f
|
||||
# Parent 4a0c03f98ca350634430e5c3bd5f8e5efc030a45
|
||||
lib-storage: mail_get_*header*() didn't remove leading whitespace for headers from cache.
|
||||
But it was removed when the headers were found by parsing the full header.
|
||||
|
||||
diff -r 4a0c03f98ca3 -r f4eb4b5884b2 src/lib-storage/index/index-mail-headers.c
|
||||
--- a/src/lib-storage/index/index-mail-headers.c Tue Nov 19 23:18:11 2013 +0200
|
||||
+++ b/src/lib-storage/index/index-mail-headers.c Wed Nov 20 14:37:44 2013 +0200
|
||||
@@ -653,7 +653,8 @@
|
||||
/* cached. skip "header name: " parts in dest. */
|
||||
for (i = 0; i < len; i++) {
|
||||
if (data[i] == ':') {
|
||||
- if (i+1 != len && data[++i] == ' ') i++;
|
||||
+ while (IS_LWSP(data[i+1])) i++;
|
||||
+ if (i+1 != len) i++;
|
||||
|
||||
/* @UNSAFE */
|
||||
len = get_header_size(dest, i);
|
||||
|
16
dovecot.spec
16
dovecot.spec
@ -3,7 +3,7 @@
|
||||
Summary: Secure imap and pop3 server
|
||||
Name: dovecot
|
||||
Epoch: 1
|
||||
Version: 2.2.8
|
||||
Version: 2.2.9
|
||||
%global prever %{nil}
|
||||
Release: 1%{?dist}
|
||||
#dovecot itself is MIT, a few sources are PD, pigeonhole is LGPLv2
|
||||
@ -36,10 +36,6 @@ Patch5: dovecot-2.1-privatetmp.patch
|
||||
#wait for network
|
||||
Patch6: dovecot-2.1.10-waitonline.patch
|
||||
|
||||
Patch7: dovecot-2.2.8-f4eb4b5884b2.patch
|
||||
Patch8: dovecot-2.2.8-a91437fe94b6.patch
|
||||
Patch9: dovecot-2.2.8-4ef184875799.patch
|
||||
Patch10: dovecot-2.2.8-47923cfd4b56.patch
|
||||
Source15: prestartscript
|
||||
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
@ -136,10 +132,6 @@ This package provides the development files for dovecot.
|
||||
%patch4 -p1 -b .reload
|
||||
%patch5 -p1 -b .privatetmp
|
||||
%patch6 -p1 -b .waitonline
|
||||
%patch7 -p1 -b .f4eb4b5884b2
|
||||
%patch8 -p1 -b .a91437fe94b6
|
||||
%patch9 -p1 -b .4ef184875799
|
||||
%patch10 -p1 -b .47923cfd4b56
|
||||
sed -i '/DEFAULT_INCLUDES *=/s|$| '"$(pkg-config --cflags libclucene-core)|" src/plugins/fts-lucene/Makefile.in
|
||||
|
||||
%build
|
||||
@ -493,6 +485,12 @@ make check
|
||||
%{_libdir}/%{name}/dict/libdriver_pgsql.so
|
||||
|
||||
%changelog
|
||||
* Mon Nov 25 2013 Michal Hlavinka <mhlavink@redhat.com> - 1:2.2.9-1
|
||||
- improved cache file handling exposed several old bugs related to fetching
|
||||
mail headers.
|
||||
- iostream handling changes were causing some connections to be disconnected
|
||||
before flushing their output
|
||||
|
||||
* Wed Nov 20 2013 Michal Hlavinka <mhlavink@redhat.com> - 1:2.2.8-1
|
||||
- Fixed infinite loop in message parsing if message ends with
|
||||
"--boundary" and CR (without LF). Messages saved via SMTP/LMTP can't
|
||||
|
Loading…
Reference in New Issue
Block a user