From pigeonhole at rename-it.nl Sat Jan 2 15:14:49 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 16:14:49 +0100 Subject: dovecot-2.2-pigeonhole: test suite: Repeated normal header tests... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/224a8335ad20 changeset: 2187:224a8335ad20 user: Stephan Bosch date: Sat Jan 02 16:14:27 2016 +0100 description: test suite: Repeated normal header tests for the mime extension. diffstat: Makefile.am | 1 + tests/extensions/mime/header.svtest | 224 ++++++++++++++++++++++++++++++++++++ 2 files changed, 225 insertions(+), 0 deletions(-) diffs (239 lines): diff -r 10951146f74f -r 224a8335ad20 Makefile.am --- a/Makefile.am Wed Dec 30 21:38:16 2015 +0100 +++ b/Makefile.am Sat Jan 02 16:14:27 2016 +0100 @@ -167,6 +167,7 @@ tests/extensions/metadata/execute.svtest \ tests/extensions/metadata/errors.svtest \ tests/extensions/mime/errors.svtest \ + tests/extensions/mime/header.svtest \ tests/extensions/mime/execute.svtest \ tests/extensions/mime/content-header.svtest \ tests/extensions/mime/foreverypart.svtest \ diff -r 10951146f74f -r 224a8335ad20 tests/extensions/mime/header.svtest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/extensions/mime/header.svtest Sat Jan 02 16:14:27 2016 +0100 @@ -0,0 +1,224 @@ +require "vnd.dovecot.testsuite"; +require "variables"; +require "mime"; + +/* + * Basic functionality + */ + +test_set "message" text: +From: stephan at example.com +To: nico at nl.example.com, harry at de.example.com +Subject: Frobnitzm +Comments: This is nonsense. +Keywords: nonsense, strange, testing +X-Spam: Yes + +Test. +. +; + +test "Basic functionality" { + /* Must match */ + if not header :mime :anychild :contains ["Subject", "Comments"] "Frobnitzm" { + test_fail "failed to match header (1)"; + } + + if not header :mime :anychild :contains ["Subject", "Comments"] "nonsense" { + test_fail "failed to match header(2)"; + } + + if not header :mime :anychild :matches "Keywords" "*, strange, *" { + test_fail "failed to match header (3)"; + } + + if not header :mime :anychild :is "Comments" "This is nonsense." { + test_fail "failed to match header (4)"; + } + + /* Must not match */ + if header :mime :anychild ["subject", "comments", "keywords"] "idiotic" { + test_fail "matched nonsense"; + } + + /* Match first key */ + if not header :mime :anychild :contains ["keywords"] ["strange", "snot", "vreemd"] { + test_fail "failed to match first key"; + } + + /* Match second key */ + if not header :mime :anychild :contains ["keywords"] ["raar", "strange", "vreemd"] { + test_fail "failed to match second key"; + } + + /* Match last key */ + if not header :mime :anychild :contains ["keywords"] ["raar", "snot", "strange"] { + test_fail "failed to match last key"; + } + + /* First header */ + if not header :mime :anychild :contains ["keywords", "subject"] + ["raar", "strange", "vreemd"] { + test_fail "failed to match first header"; + } + + /* Second header */ + if not header :mime :anychild :contains ["subject", "keywords"] + ["raar", "strange", "vreemd"] { + test_fail "failed to match second header"; + } +} + +/* + * Matching empty key + */ + +test_set "message" text: +From: stephan at example.org +To: nico at frop.example.com +X-Caffeine: C8H10N4O2 +Subject: I need coffee! +Comments: + +Text +. +; + +test "Matching empty key" { + if header :mime :anychild :is "X-Caffeine" "" { + test_fail ":is-matched non-empty header with empty string"; + } + + if not header :mime :anychild :contains "X-Caffeine" "" { + test_fail "failed to match existing header with empty string"; + } + + if not header :mime :anychild :is "comments" "" { + test_fail "failed to match empty header :mime :anychild with empty string"; + } + + if header :mime :anychild :contains "X-Nonsense" "" { + test_fail ":contains-matched non-existent header with empty string"; + } +} + +/* + * Ignoring whitespace + */ + +test_set "message" text: +From: stephan at example.org +To: nico at frop.example.com +Subject: Help +X-A: Text +X-B: Text + +Text +. +; + +test "Ignoring whitespace" { + if not header :mime :anychild :is "x-a" "Text" { + if header :mime :anychild :matches "x-a" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip leading whitespace (header=`${header}`)"; + } + + if not header :mime :anychild :is "x-b" "Text" { + if header :mime :anychild :matches "x-b" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip trailing whitespace (header=`${header}`)"; + } + + if not header :mime :anychild :is "subject" "Help" { + if header :mime :anychild :matches "subject" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip both leading and trailing whitespace (header=`${header}`)"; + } +} + +/* + * Absent or empty header + */ + +test_set "message" text: +From: stephan at example.org +To: nico at frop.example.com +CC: harry at nonsense.ex +Subject: +Comments: + +Text +. +; + +test "Absent or empty header" { + if not header :mime :anychild :matches "Cc" "?*" { + test_fail "CC header is not absent or empty"; + } + + if header :mime :anychild :matches "Subject" "?*" { + test_fail "Subject header is empty, but matched otherwise"; + } + + if header :mime :anychild :matches "Comment" "?*" { + test_fail "Comment header is empty, but matched otherwise"; + } +} + +/* + * Invalid header name + */ + +test_set "message" text: +From: stephan at example.org +To: nico at frop.example.com +Subject: Valid message +X-Multiline: This is a multi-line + header body, which should be + unfolded correctly. + +Text +. +; + +test "Invalid header name" { + if header :mime :anychild :contains "subject:" "" { + test_fail "matched invalid header name"; + } + + if header :mime :anychild :contains "to!" "" { + test_fail "matched invalid header name"; + } +} + +/* + * Folded headers + */ + +/* "Header lines are unfolded as described in [RFC 2822] section 2.2.3. + * ... + * " + */ + +test_set "message" text: +From: stephan at example.org +To: nico at frop.example.com +Subject: Not enough space on a line! +X-Multiline: This is a multi-line + header body, which should be + unfolded correctly. + +Text +. +; + +test "Folded header" { + if not header :mime :anychild :is "x-multiline" + "This is a multi-line header body, which should be unfolded correctly." { + test_fail "failed to properly unfold folded header."; + } +} From pigeonhole at rename-it.nl Sat Jan 2 17:27:18 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 18:27:18 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Forgot to enable header unfol... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/70a1773bd1cf changeset: 2188:70a1773bd1cf user: Stephan Bosch date: Sat Jan 02 17:13:00 2016 +0100 description: lib-sieve: Forgot to enable header unfolding for (mime) headers parsed from the whole message. diffstat: src/lib-sieve/sieve-message.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diffs (34 lines): diff -r 224a8335ad20 -r 70a1773bd1cf src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Sat Jan 02 16:14:27 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Sat Jan 02 17:13:00 2016 +0100 @@ -1078,6 +1078,7 @@ struct mail *mail = sieve_message_get_mail(renv->msgctx); enum message_parser_flags mparser_flags = MESSAGE_PARSER_FLAG_INCLUDE_MULTIPART_BLOCKS; + enum message_header_parser_flags hparser_flags = 0; ARRAY(struct sieve_message_header) headers; struct sieve_message_part *body_part, *header_part, *last_part; struct message_parser_ctx *parser; @@ -1114,6 +1115,7 @@ if (iter_all) { t_array_init(&headers, 64); hdr_content = t_str_new(512); + hparser_flags |= MESSAGE_HEADER_PARSER_FLAG_CLEAN_ONELINE; } else { memset(&headers, 0, sizeof(headers)); } @@ -1122,10 +1124,10 @@ decoder = message_decoder_init(NULL, 0); // FIXME: currently not tested with edit-mail. - //parser = message_parser_init_from_parts(parts, input, 0, - //mparser_flags); - parser = message_parser_init - (pool_datastack_create(), input, 0, mparser_flags); + //parser = message_parser_init_from_parts(parts, input, + // hparser_flags, mparser_flags); + parser = message_parser_init(pool_datastack_create(), + input, hparser_flags, mparser_flags); while ( (ret=message_parser_parse_next_block (parser, &block)) > 0 ) { struct sieve_message_part **body_part_idx; From pigeonhole at rename-it.nl Sat Jan 2 17:27:18 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 18:27:18 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Added our own string trimming... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/6c58f65dcb3f changeset: 2189:6c58f65dcb3f user: Stephan Bosch date: Sat Jan 02 18:27:14 2016 +0100 description: lib-sieve: Added our own string trimming functions for until equivalents get added in Dovecot. diffstat: src/lib-sieve/sieve-settings.c | 33 ++---------- src/lib-sieve/util/Makefile.am | 6 +- src/lib-sieve/util/strtrim.c | 104 +++++++++++++++++++++++++++++++++++++++++ src/lib-sieve/util/strtrim.h | 13 +++++ 4 files changed, 127 insertions(+), 29 deletions(-) diffs (225 lines): diff -r 70a1773bd1cf -r 6c58f65dcb3f src/lib-sieve/sieve-settings.c --- a/src/lib-sieve/sieve-settings.c Sat Jan 02 17:13:00 2016 +0100 +++ b/src/lib-sieve/sieve-settings.c Sat Jan 02 18:27:14 2016 +0100 @@ -3,6 +3,8 @@ #include "lib.h" +#include "strtrim.h" + #include "sieve-common.h" #include "sieve-limits.h" #include "sieve-error.h" @@ -10,29 +12,6 @@ #include -// FIXME: move to Dovecot -static const char *pg_t_str_trim(const char *str, const char *chars) -{ - const char *p, *pend, *begin; - - pend = str + strlen(str); - if (pend == str) - return ""; - - p = str; - while (p < pend && strchr(chars, *p) != NULL) - p++; - begin = p; - - p = pend - 1; - while (p > begin && strchr(chars, *p) != NULL) - p--; - - if (p <= begin) - return ""; - return t_strdup_until(begin, p+1); -} - /* * Access to settings */ @@ -143,7 +122,7 @@ if ( str_value == NULL ) return FALSE; - str_value = pg_t_str_trim(str_value, "\t "); + str_value = ph_t_str_trim(str_value, "\t "); if ( *str_value == '\0' ) return FALSE; @@ -175,7 +154,7 @@ if ( str_value == NULL ) return FALSE; - str_value = pg_t_str_trim(str_value, "\t "); + str_value = ph_t_str_trim(str_value, "\t "); if ( *str_value == '\0' ) return FALSE; @@ -228,7 +207,7 @@ if ( str_value == NULL ) return FALSE; - str_value = pg_t_str_trim(str_value, "\t "); + str_value = ph_t_str_trim(str_value, "\t "); str_value = t_str_lcase(str_value); set_len = strlen(str_value); if ( set_len > 0 ) { @@ -245,7 +224,7 @@ } else if ( str_value[0] == '<' && str_value[set_len-1] == '>') { sender->source = SIEVE_MAIL_SENDER_SOURCE_EXPLICIT; - str_value = pg_t_str_trim(t_strndup(str_value+1, set_len-2), "\t "); + str_value = ph_t_str_trim(t_strndup(str_value+1, set_len-2), "\t "); sender->address = NULL; if ( *str_value != '\0' ) sender->address = p_strdup(pool, str_value); diff -r 70a1773bd1cf -r 6c58f65dcb3f src/lib-sieve/util/Makefile.am --- a/src/lib-sieve/util/Makefile.am Sat Jan 02 17:13:00 2016 +0100 +++ b/src/lib-sieve/util/Makefile.am Sat Jan 02 18:27:14 2016 +0100 @@ -13,14 +13,16 @@ program-client-local.c \ program-client-remote.c \ program-client.c \ - realpath.c + realpath.c \ + strtrim.c headers = \ edit-mail.h \ rfc2822.h \ program-client-private.h \ program-client.h \ - realpath.h + realpath.h \ + strtrim.h pkginc_libdir=$(dovecot_pkgincludedir)/sieve pkginc_lib_HEADERS = $(headers) diff -r 70a1773bd1cf -r 6c58f65dcb3f src/lib-sieve/util/strtrim.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib-sieve/util/strtrim.c Sat Jan 02 18:27:14 2016 +0100 @@ -0,0 +1,104 @@ +/* Copyright (c) 2002-2015 Dovecot authors, see the included COPYING file */ + +#include "lib.h" +#include "strtrim.h" + +enum _str_trim_sides { + STR_TRIM_LEFT = BIT(0), + STR_TRIM_RIGHT = BIT(1), +}; + +static void ph_str_trim_parse(const char *str, + const char *chars, enum _str_trim_sides sides, + const char **begin_r, const char **end_r) +{ + const char *p, *pend, *begin, *end; + + *begin_r = *end_r = NULL; + + pend = str + strlen(str); + if (pend == str) + return; + + p = str; + if ((sides & STR_TRIM_LEFT) != 0) { + while (p < pend && strchr(chars, *p) != NULL) + p++; + } + begin = p; + + p = pend - 1; + if ((sides & STR_TRIM_RIGHT) != 0) { + while (p > begin && strchr(chars, *p) != NULL) + p--; + } + if (p <= begin) + return; + end = p + 1; + + *begin_r = begin; + *end_r = end; +} + +const char *ph_t_str_trim(const char *str, const char *chars) +{ + const char *begin, *end; + + ph_str_trim_parse(str, chars, + STR_TRIM_LEFT | STR_TRIM_RIGHT, &begin, &end); + if (begin == NULL) + return ""; + return t_strdup_until(begin, end); +} + +const char *ph_p_str_trim(pool_t pool, const char *str, const char *chars) +{ + const char *begin, *end; + + ph_str_trim_parse(str, chars, + STR_TRIM_LEFT | STR_TRIM_RIGHT, &begin, &end); + if (begin == NULL) + return ""; + return p_strdup_until(pool, begin, end); +} + +const char *ph_str_ltrim(const char *str, const char *chars) +{ + const char *begin, *end; + + ph_str_trim_parse(str, chars, STR_TRIM_LEFT, &begin, &end); + if (begin == NULL) + return ""; + return begin; +} + +const char *ph_t_str_ltrim(const char *str, const char *chars) +{ + return t_strdup(str_ltrim(str, chars)); +} + +const char *ph_p_str_ltrim(pool_t pool, const char *str, const char *chars) +{ + return p_strdup(pool, str_ltrim(str, chars)); +} + +const char *ph_t_str_rtrim(const char *str, const char *chars) +{ + const char *begin, *end; + + ph_str_trim_parse(str, chars, STR_TRIM_RIGHT, &begin, &end); + if (begin == NULL) + return ""; + return t_strdup_until(begin, end); +} + +const char *ph_p_str_rtrim(pool_t pool, const char *str, const char *chars) +{ + const char *begin, *end; + + ph_str_trim_parse(str, chars, STR_TRIM_RIGHT, &begin, &end); + if (begin == NULL) + return ""; + return p_strdup_until(pool, begin, end); +} + diff -r 70a1773bd1cf -r 6c58f65dcb3f src/lib-sieve/util/strtrim.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib-sieve/util/strtrim.h Sat Jan 02 18:27:14 2016 +0100 @@ -0,0 +1,13 @@ +#ifndef STRTRIM_H +#define STRTRIM_H + +/* Trim matching chars from either side of the string */ +const char *ph_t_str_trim(const char *str, const char *chars); +const char *ph_p_str_trim(pool_t pool, const char *str, const char *chars); +const char *ph_str_ltrim(const char *str, const char *chars); +const char *ph_t_str_ltrim(const char *str, const char *chars); +const char *ph_p_str_ltrim(pool_t pool, const char *str, const char *chars); +const char *ph_t_str_rtrim(const char *str, const char *chars); +const char *ph_p_str_rtrim(pool_t pool, const char *str, const char *chars); + +#endif From pigeonhole at rename-it.nl Sat Jan 2 18:36:06 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 19:36:06 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: message body: Forgot to trim ... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/123020846e51 changeset: 2191:123020846e51 user: Stephan Bosch date: Sat Jan 02 19:35:24 2016 +0100 description: lib-sieve: message body: Forgot to trim header values. diffstat: src/lib-sieve/sieve-message.c | 41 +++++++++++++++++++++++++---------------- 1 files changed, 25 insertions(+), 16 deletions(-) diffs (86 lines): diff -r c5c60d8f2936 -r 123020846e51 src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Sat Jan 02 19:34:58 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Sat Jan 02 19:35:24 2016 +0100 @@ -547,6 +547,7 @@ return &hdrlist->hdrlist; } +// NOTE: get rid of this once we have a proper Sieve string type static inline string_t *_header_right_trim(const char *raw) { string_t *result; @@ -1078,7 +1079,8 @@ struct mail *mail = sieve_message_get_mail(renv->msgctx); enum message_parser_flags mparser_flags = MESSAGE_PARSER_FLAG_INCLUDE_MULTIPART_BLOCKS; - enum message_header_parser_flags hparser_flags = 0; + enum message_header_parser_flags hparser_flags = + MESSAGE_HEADER_PARSER_FLAG_SKIP_INITIAL_LWSP; ARRAY(struct sieve_message_header) headers; struct sieve_message_part *body_part, *header_part, *last_part; struct message_parser_ctx *parser; @@ -1296,29 +1298,37 @@ } if ( iter_all && !array_is_created(&body_part->headers) ) { + const unsigned char *value, *vp; + size_t vlen; + /* Add header */ header = array_append_space(&headers); header->name = p_strdup(pool, hdr->name); - // FIXME: trim header values + /* Trim end of field value (not done by parser) */ + value = hdr->full_value; + vp = value + hdr->full_value_len; + while ( vp > value && + (vp[-1] == '\t' || vp[-1] == ' ') ) + vp--; + vlen = (size_t)(vp - value); /* Decode MIME encoded-words. */ str_truncate(hdr_content, 0); message_header_decode_utf8 - (hdr->full_value, hdr->full_value_len, hdr_content, NULL); - if ( hdr->full_value_len != str_len(hdr_content) || - strncmp(str_c(hdr_content), (const char *)hdr->full_value, - hdr->full_value_len) != 0 ) { + (value, vlen, hdr_content, NULL); + if ( vlen != str_len(hdr_content) || + strncmp(str_c(hdr_content), (const char *)value, + vlen) != 0 ) { if ( strlen(str_c(hdr_content)) != str_len(hdr_content) ) { /* replace NULs with spaces */ str_replace_nuls(hdr_content); } /* store raw */ - data = p_malloc(pool, hdr->full_value_len + 1); - data[hdr->full_value_len] = '\0'; - header->value = memcpy(data, - hdr->full_value, hdr->full_value_len); - header->value_len = hdr->full_value_len; + data = p_malloc(pool, vlen + 1); + data[vlen] = '\0'; + header->value = memcpy(data, value, vlen); + header->value_len = vlen; /* store decoded */ data = p_malloc(pool, str_len(hdr_content) + 1); data[str_len(hdr_content)] = '\0'; @@ -1327,12 +1337,11 @@ header->utf8_value_len = str_len(hdr_content); } else { /* raw == decoded */ - data = p_malloc(pool, hdr->full_value_len + 1); - data[hdr->full_value_len] = '\0'; + data = p_malloc(pool, vlen + 1); + data[vlen] = '\0'; header->value = header->utf8_value = - memcpy(data, hdr->full_value, hdr->full_value_len); - header->value_len = header->utf8_value_len = - hdr->full_value_len; + memcpy(data, value, vlen); + header->value_len = header->utf8_value_len = vlen; } if ( hdr_field == _HDR_OTHER ) From pigeonhole at rename-it.nl Sat Jan 2 18:36:06 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 19:36:06 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Fixed an off-by-one error in ... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/c5c60d8f2936 changeset: 2190:c5c60d8f2936 user: Stephan Bosch date: Sat Jan 02 19:34:58 2016 +0100 description: lib-sieve: Fixed an off-by-one error in the previously committed string trimming functions. diffstat: src/lib-sieve/util/strtrim.c | 12 +++++++----- 1 files changed, 7 insertions(+), 5 deletions(-) diffs (28 lines): diff -r 6c58f65dcb3f -r c5c60d8f2936 src/lib-sieve/util/strtrim.c --- a/src/lib-sieve/util/strtrim.c Sat Jan 02 18:27:14 2016 +0100 +++ b/src/lib-sieve/util/strtrim.c Sat Jan 02 19:34:58 2016 +0100 @@ -24,17 +24,19 @@ if ((sides & STR_TRIM_LEFT) != 0) { while (p < pend && strchr(chars, *p) != NULL) p++; + if (p == pend) + return; } begin = p; - p = pend - 1; + p = pend; if ((sides & STR_TRIM_RIGHT) != 0) { - while (p > begin && strchr(chars, *p) != NULL) + while (p > begin && strchr(chars, *(p-1)) != NULL) p--; + if (p == begin) + return; } - if (p <= begin) - return; - end = p + 1; + end = p; *begin_r = begin; *end_r = end; From pigeonhole at rename-it.nl Sat Jan 2 18:36:06 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sat, 02 Jan 2016 19:36:06 +0100 Subject: dovecot-2.2-pigeonhole: test suite: mime extension: Improved hea... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/b5edf3efbdbb changeset: 2192:b5edf3efbdbb user: Stephan Bosch date: Sat Jan 02 19:36:01 2016 +0100 description: test suite: mime extension: Improved header test cases to catch header trimming and folding problems. diffstat: tests/extensions/mime/header.svtest | 168 ++++++++++++++++++++++++++++++++++- 1 files changed, 163 insertions(+), 5 deletions(-) diffs (223 lines): diff -r 123020846e51 -r b5edf3efbdbb tests/extensions/mime/header.svtest --- a/tests/extensions/mime/header.svtest Sat Jan 02 19:35:24 2016 +0100 +++ b/tests/extensions/mime/header.svtest Sat Jan 02 19:36:01 2016 +0100 @@ -1,5 +1,6 @@ require "vnd.dovecot.testsuite"; require "variables"; +require "foreverypart"; require "mime"; /* @@ -70,6 +71,63 @@ } /* + * Basic functionality - foreverypart + */ + +test "Basic functionality - foreverypart" { + foreverypart { + /* Must match */ + if not header :mime :anychild :contains ["Subject", "Comments"] "Frobnitzm" { + test_fail "failed to match header (1)"; + } + + if not header :mime :anychild :contains ["Subject", "Comments"] "nonsense" { + test_fail "failed to match header(2)"; + } + + if not header :mime :anychild :matches "Keywords" "*, strange, *" { + test_fail "failed to match header (3)"; + } + + if not header :mime :anychild :is "Comments" "This is nonsense." { + test_fail "failed to match header (4)"; + } + + /* Must not match */ + if header :mime :anychild ["subject", "comments", "keywords"] "idiotic" { + test_fail "matched nonsense"; + } + + /* Match first key */ + if not header :mime :anychild :contains ["keywords"] ["strange", "snot", "vreemd"] { + test_fail "failed to match first key"; + } + + /* Match second key */ + if not header :mime :anychild :contains ["keywords"] ["raar", "strange", "vreemd"] { + test_fail "failed to match second key"; + } + + /* Match last key */ + if not header :mime :anychild :contains ["keywords"] ["raar", "snot", "strange"] { + test_fail "failed to match last key"; + } + + /* First header */ + if not header :mime :anychild :contains ["keywords", "subject"] + ["raar", "strange", "vreemd"] { + test_fail "failed to match first header"; + } + + /* Second header */ + if not header :mime :anychild :contains ["subject", "keywords"] + ["raar", "strange", "vreemd"] { + test_fail "failed to match second header"; + } + } +} + +/* * Matching empty key */ @@ -103,6 +161,30 @@ } /* + * Matching empty key - foreverypart + */ + +test "Matching empty key - foreverypart" { + foreverypart { + if header :mime :anychild :is "X-Caffeine" "" { + test_fail ":is-matched non-empty header with empty string"; + } + + if not header :mime :anychild :contains "X-Caffeine" "" { + test_fail "failed to match existing header with empty string"; + } + + if not header :mime :anychild :is "comments" "" { + test_fail "failed to match empty header :mime :anychild with empty string"; + } + + if header :mime :anychild :contains "X-Nonsense" "" { + test_fail ":contains-matched non-existent header with empty string"; + } + } +} + +/* * Ignoring whitespace */ @@ -141,6 +223,35 @@ } /* + * Ignoring whitespace - foreverypart + */ + +test "Ignoring whitespace - foreverypart" { + foreverypart { + if not header :mime :anychild :is "x-a" "Text" { + if header :mime :anychild :matches "x-a" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip leading whitespace (header=`${header}`)"; + } + + if not header :mime :anychild :is "x-b" "Text" { + if header :mime :anychild :matches "x-b" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip trailing whitespace (header=`${header}`)"; + } + + if not header :mime :anychild :is "subject" "Help" { + if header :mime :anychild :matches "subject" "*" { + set "header" "${1}"; + } + test_fail "header :mime :anychild test does not strip both leading and trailing whitespace (header=`${header}`)"; + } + } +} + +/* * Absent or empty header */ @@ -170,6 +281,27 @@ } /* + * Absent or empty header - foreverypart + */ + +test "Absent or empty header - foreverypart" { + foreverypart { + if not header :mime :anychild :matches "Cc" "?*" { + test_fail "CC header is not absent or empty"; + } + + if header :mime :anychild :matches "Subject" "?*" { + test_fail "Subject header is empty, but matched otherwise"; + } + + if header :mime :anychild :matches "Comment" "?*" { + test_fail "Comment header is empty, but matched otherwise"; + } + } +} + + +/* * Invalid header name */ @@ -196,12 +328,23 @@ } /* - * Folded headers + * Invalid header name - foreverypart */ -/* "Header lines are unfolded as described in [RFC 2822] section 2.2.3. - * ... - * " +test "Invalid header name - foreverypart" { + foreverypart { + if header :mime :anychild :contains "subject:" "" { + test_fail "matched invalid header name"; + } + + if header :mime :anychild :contains "to!" "" { + test_fail "matched invalid header name"; + } + } +} + +/* + * Folded headers */ test_set "message" text: @@ -216,9 +359,24 @@ . ; -test "Folded header" { +test "Folded headers" { if not header :mime :anychild :is "x-multiline" "This is a multi-line header body, which should be unfolded correctly." { test_fail "failed to properly unfold folded header."; } } + +/* + * Folded headers - foreverypart + */ + +test "Folded headers - foreverypart" { + foreverypart { + if not header :mime :anychild :is "x-multiline" + "This is a multi-line header body, which should be unfolded correctly." { + test_fail "failed to properly unfold folded header."; + } + } +} + + From pigeonhole at rename-it.nl Sun Jan 3 15:35:15 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 16:35:15 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Fixed duplication of discard ... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/d6dd01a2d367 changeset: 2193:d6dd01a2d367 user: Stephan Bosch date: Sun Jan 03 16:29:30 2016 +0100 description: lib-sieve: Fixed duplication of discard actions in result. No duplicate check function was implemented, so that the discard action would be duplicated each time it is invoked. This only affects the action limits (each discard invocation is counted as another new action). The result of the script execution would be identical. diffstat: src/lib-sieve/cmd-discard.c | 25 +++++++++++++++++++++++++ 1 files changed, 25 insertions(+), 0 deletions(-) diffs (49 lines): diff -r b5edf3efbdbb -r d6dd01a2d367 src/lib-sieve/cmd-discard.c --- a/src/lib-sieve/cmd-discard.c Sat Jan 02 19:36:01 2016 +0100 +++ b/src/lib-sieve/cmd-discard.c Sun Jan 03 16:29:30 2016 +0100 @@ -55,6 +55,13 @@ * Discard actions */ +static bool act_discard_equals + (const struct sieve_script_env *senv, const struct sieve_action *act1, + const struct sieve_action *act2); +static int act_discard_check_duplicate + (const struct sieve_runtime_env *renv, + const struct sieve_action *act, + const struct sieve_action *act_other); static void act_discard_print (const struct sieve_action *action, const struct sieve_result_print_env *rpenv, bool *keep); @@ -64,6 +71,8 @@ const struct sieve_action_def act_discard = { .name = "discard", + .equals = act_discard_equals, + .check_duplicate = act_discard_check_duplicate, .print = act_discard_print, .commit = act_discard_commit, }; @@ -115,6 +124,22 @@ * Action implementation */ +static bool act_discard_equals +(const struct sieve_script_env *senv ATTR_UNUSED, + const struct sieve_action *act1 ATTR_UNUSED, + const struct sieve_action *act2 ATTR_UNUSED) +{ + return TRUE; +} + +static int act_discard_check_duplicate +(const struct sieve_runtime_env *renv ATTR_UNUSED, + const struct sieve_action *act ATTR_UNUSED, + const struct sieve_action *act_other ATTR_UNUSED) +{ + return 1; +} + static void act_discard_print (const struct sieve_action *action ATTR_UNUSED, const struct sieve_result_print_env *rpenv, bool *keep) From pigeonhole at rename-it.nl Sun Jan 3 15:35:16 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 16:35:16 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: message body: Fixed erroneous... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/dc9bf28c241b changeset: 2194:dc9bf28c241b user: Stephan Bosch date: Sun Jan 03 16:32:27 2016 +0100 description: lib-sieve: message body: Fixed erroneous changes to the message part tree structure performed when re-parsing the message. diffstat: src/lib-sieve/sieve-message.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (18 lines): diff -r d6dd01a2d367 -r dc9bf28c241b src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Sun Jan 03 16:29:30 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Sun Jan 03 16:32:27 2016 +0100 @@ -1205,12 +1205,12 @@ struct sieve_message_part *child = parent->children; while (child->next != NULL && child != body_part) child = child->next; - if (child->next == NULL) + if (child != body_part) child->next = body_part; } } - last_part = body_part; } + last_part = body_part; /* If this is message/rfc822 content, retain the enveloping part for * storing headers as content. From pigeonhole at rename-it.nl Sun Jan 3 15:35:16 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 16:35:16 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: mime extension: Fixed the hea... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/1d2a29f9799b changeset: 2195:1d2a29f9799b user: Stephan Bosch date: Sun Jan 03 16:33:39 2016 +0100 description: lib-sieve: mime extension: Fixed the header :mime :anychild test to work properly outside a foreverypart loop. diffstat: src/lib-sieve/plugins/mime/tag-mime.c | 18 +++++++-- src/lib-sieve/sieve-message.c | 53 +++++++++++++++++++------- src/lib-sieve/sieve-message.h | 7 +++- tests/extensions/mime/foreverypart.svtest | 5 -- tests/extensions/mime/header.svtest | 62 +++++++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 25 deletions(-) diffs (280 lines): diff -r dc9bf28c241b -r 1d2a29f9799b src/lib-sieve/plugins/mime/tag-mime.c --- a/src/lib-sieve/plugins/mime/tag-mime.c Sun Jan 03 16:32:27 2016 +0100 +++ b/src/lib-sieve/plugins/mime/tag-mime.c Sun Jan 03 16:33:39 2016 +0100 @@ -699,6 +699,7 @@ struct ext_foreverypart_runtime_loop *sfploop; struct sieve_header_list *headers; struct sieve_stringlist *values; + int ret; sieve_runtime_trace(renv, SIEVE_TRLVL_MATCHING, "header mime override:"); @@ -713,13 +714,22 @@ } sfploop = ext_foreverypart_runtime_loop_get_current(renv); - if ( sfploop == NULL ) { - headers = sieve_message_header_list_create - (renv, *headers_r, mime_decode); - } else { + if ( sfploop != NULL ) { headers = sieve_mime_header_list_create (renv, *headers_r, &sfploop->part_iter, mime_decode, ctx->anychild); + } else if ( ctx->anychild ) { + struct sieve_message_part_iter part_iter; + + if ( (ret=sieve_message_part_iter_init + (&part_iter, renv)) <= 0 ) + return ret; + + headers = sieve_mime_header_list_create + (renv, *headers_r, &part_iter, mime_decode, TRUE); + } else { + headers = sieve_message_header_list_create + (renv, *headers_r, mime_decode); } values = &headers->strlist; diff -r dc9bf28c241b -r 1d2a29f9799b src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Sun Jan 03 16:32:27 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Sun Jan 03 16:33:39 2016 +0100 @@ -1572,6 +1572,7 @@ memset(iter, 0, sizeof(*iter)); iter->renv = renv; iter->index = 0; + iter->offset = 0; parts = array_get(&msgctx->cached_body_parts, &count); if (count == 0) @@ -1582,6 +1583,24 @@ return SIEVE_EXEC_OK; } +void sieve_message_part_iter_subtree(struct sieve_message_part_iter *iter, + struct sieve_message_part_iter *subtree) +{ + const struct sieve_runtime_env *renv = iter->renv; + struct sieve_message_context *msgctx = renv->msgctx; + struct sieve_message_part *const *parts; + unsigned int count; + + *subtree = *iter; + + parts = array_get(&msgctx->cached_body_parts, &count); + if ( subtree->index >= count) + subtree->root = NULL; + else + subtree->root = parts[subtree->index]; + subtree->offset = subtree->index; +} + void sieve_message_part_iter_children(struct sieve_message_part_iter *iter, struct sieve_message_part_iter *child) { @@ -1593,10 +1612,11 @@ *child = *iter; parts = array_get(&msgctx->cached_body_parts, &count); - if ( child->index >= count || parts[child->index]->children == NULL) + if ( (child->index+1) >= count || parts[child->index]->children == NULL) child->root = NULL; - else + else child->root = parts[child->index++]; + child->offset = child->index; } struct sieve_message_part *sieve_message_part_iter_current @@ -1614,10 +1634,10 @@ if ( iter->index >= count ) return NULL; do { - if ( parts[iter->index] == iter->root->next || - parts[iter->index] == iter->root->parent ) { + if ( parts[iter->index] == iter->root->next ) return NULL; - } + if ( parts[iter->index] == iter->root->parent ) + return NULL; } while ( parts[iter->index]->epilogue && ++iter->index < count ); if ( iter->index >= count ) return NULL; @@ -1637,6 +1657,12 @@ return sieve_message_part_iter_current(iter); } +void sieve_message_part_iter_reset +(struct sieve_message_part_iter *iter) +{ + iter->index = iter->offset; +} + /* * MIME header list */ @@ -1658,14 +1684,14 @@ struct sieve_stringlist *field_names; - struct sieve_message_part_iter *part_iter, child_iter; + struct sieve_message_part_iter part_iter; const char *header_name; const struct sieve_message_header *headers; unsigned int headers_index, headers_count; unsigned int mime_decode:1; - unsigned int children; + unsigned int children:1; }; struct sieve_header_list *sieve_mime_header_list_create @@ -1683,10 +1709,11 @@ hdrlist->hdrlist.strlist.reset = sieve_mime_header_list_reset; hdrlist->hdrlist.next_item = sieve_mime_header_list_next_item; hdrlist->field_names = field_names; - hdrlist->part_iter = part_iter; hdrlist->mime_decode = mime_decode; hdrlist->children = children; + sieve_message_part_iter_subtree(part_iter, &hdrlist->part_iter); + return &hdrlist->hdrlist; } @@ -1697,12 +1724,8 @@ { struct sieve_message_part *mpart; - if ( hdrlist->children ) { - sieve_message_part_iter_children - (hdrlist->part_iter, &hdrlist->child_iter); - } - - mpart = sieve_message_part_iter_current(hdrlist->part_iter); + sieve_message_part_iter_reset(&hdrlist->part_iter); + mpart = sieve_message_part_iter_current(&hdrlist->part_iter); if ( mpart != NULL && array_is_created(&mpart->headers) ) { hdrlist->headers = array_get @@ -1740,7 +1763,7 @@ if ( hdrlist->header_name != NULL && hdrlist->children ) { struct sieve_message_part *mpart; - mpart = sieve_message_part_iter_next(&hdrlist->child_iter); + mpart = sieve_message_part_iter_next(&hdrlist->part_iter); if ( mpart != NULL && array_is_created(&mpart->headers) ) { hdrlist->headers = array_get (&mpart->headers, &hdrlist->headers_count); diff -r dc9bf28c241b -r 1d2a29f9799b src/lib-sieve/sieve-message.h --- a/src/lib-sieve/sieve-message.h Sun Jan 03 16:32:27 2016 +0100 +++ b/src/lib-sieve/sieve-message.h Sun Jan 03 16:33:39 2016 +0100 @@ -233,12 +233,14 @@ struct sieve_message_part_iter { const struct sieve_runtime_env *renv; struct sieve_message_part *root; - unsigned int index; + unsigned int index, offset; }; int sieve_message_part_iter_init (struct sieve_message_part_iter *iter, const struct sieve_runtime_env *renv); +void sieve_message_part_iter_subtree(struct sieve_message_part_iter *iter, + struct sieve_message_part_iter *subtree); void sieve_message_part_iter_children(struct sieve_message_part_iter *iter, struct sieve_message_part_iter *child); @@ -247,6 +249,9 @@ struct sieve_message_part *sieve_message_part_iter_next (struct sieve_message_part_iter *iter); +void sieve_message_part_iter_reset +(struct sieve_message_part_iter *iter); + /* * MIME header list */ diff -r dc9bf28c241b -r 1d2a29f9799b tests/extensions/mime/foreverypart.svtest --- a/tests/extensions/mime/foreverypart.svtest Sun Jan 03 16:32:27 2016 +0100 +++ b/tests/extensions/mime/foreverypart.svtest Sun Jan 03 16:33:39 2016 +0100 @@ -176,8 +176,3 @@ } } - - - - - diff -r dc9bf28c241b -r 1d2a29f9799b tests/extensions/mime/header.svtest --- a/tests/extensions/mime/header.svtest Sun Jan 03 16:32:27 2016 +0100 +++ b/tests/extensions/mime/header.svtest Sun Jan 03 16:33:39 2016 +0100 @@ -379,4 +379,66 @@ } } +/* + * Multipart anychild + */ +test_set "message" text: +From: Hendrik +To: Harrie +Date: Sat, 11 Oct 2010 00:31:44 +0200 +Subject: Harrie is een prutser +Content-Type: multipart/mixed; boundary=AA +X-Test: AA + +This is a multi-part message in MIME format. +--AA +Content-Type: multipart/mixed; boundary=BB +X-Test: BB + +This is a multi-part message in MIME format. +--BB +Content-Type: text/plain; charset="us-ascii" +X-Test: CC + +Hello + +--BB +Content-Type: text/plain; charset="us-ascii" +X-Test: DD + +Hello again + +--BB-- +This is the end of MIME multipart. + +--AA +Content-Type: text/plain; charset="us-ascii" +X-Test: EE + +And again + +--AA-- +This is the end of MIME multipart. +. +; + +test "Multipart anychild" { + if not header :mime :anychild "X-Test" "AA" { + test_fail "No AA"; + } + if not header :mime :anychild "X-Test" "BB" { + test_fail "No BB"; + } + if not header :mime :anychild "X-Test" "CC" { + test_fail "No CC"; + } + if not header :mime :anychild "X-Test" "DD" { + test_fail "No DD"; + } + if not header :mime :anychild "X-Test" "EE" { + test_fail "No EE"; + } +} + + From pigeonhole at rename-it.nl Sun Jan 3 17:20:57 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 18:20:57 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Fixed segfault occurring when... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/ebc034a52f6f changeset: 2196:ebc034a52f6f user: Stephan Bosch date: Sun Jan 03 18:20:51 2016 +0100 description: lib-sieve: Fixed segfault occurring when default match type of a test is not :is. Would not occur in Pigeonhole itself. diffstat: src/lib-sieve/sieve-match-types.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-) diffs (23 lines): diff -r 1d2a29f9799b -r ebc034a52f6f src/lib-sieve/sieve-match-types.c --- a/src/lib-sieve/sieve-match-types.c Sun Jan 03 16:33:39 2016 +0100 +++ b/src/lib-sieve/sieve-match-types.c Sun Jan 03 18:20:51 2016 +0100 @@ -481,14 +481,16 @@ /* Verify the default match type if none is specified explicitly */ if ( mt_arg == NULL || mt_arg->argument == NULL || - mt_arg->argument->data == NULL ) { - mtctx = NULL; + mt_arg->argument->data == NULL ) { mcht = sieve_match_type_copy(sieve_command_pool(cmd), mcht_default); + mtctx = t_new(struct sieve_match_type_context, 1); + mtctx->command = cmd; + mtctx->match_type = mcht; } else { mtctx = (struct sieve_match_type_context *) mt_arg->argument->data; mcht = mtctx->match_type; - mtctx->comparator = cmp; } + mtctx->comparator = cmp; /* Check whether this match type requires additional validation. * Additional validation can override the match type recorded in the context From pigeonhole at rename-it.nl Sun Jan 3 17:37:43 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 18:37:43 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: message body: Fixed parsing o... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/ceaf31d7bd5a changeset: 2197:ceaf31d7bd5a user: Stephan Bosch date: Sun Jan 03 18:37:39 2016 +0100 description: lib-sieve: message body: Fixed parsing of content-disposition header. diffstat: src/lib-sieve/sieve-message.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff -r ebc034a52f6f -r ceaf31d7bd5a src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Sun Jan 03 18:20:51 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Sun Jan 03 18:37:39 2016 +0100 @@ -1280,7 +1280,7 @@ if ( strcasecmp(hdr->name, "Content-Type" ) == 0 ) hdr_field = _HDR_CONTENT_TYPE; - else if ( strcasecmp(hdr->name, "Content-Disposition" ) != 0 ) + else if ( strcasecmp(hdr->name, "Content-Disposition" ) == 0 ) hdr_field = _HDR_CONTENT_DISPOSITION; else if ( iter_all && !array_is_created(&body_part->headers) ) hdr_field = _HDR_OTHER; From pigeonhole at rename-it.nl Sun Jan 3 18:39:38 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 19:39:38 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: mime extensions: Updated stat... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/658ddaa1457f changeset: 2198:658ddaa1457f user: Stephan Bosch date: Sun Jan 03 19:39:32 2016 +0100 description: lib-sieve: mime extensions: Updated status from development to experimental. diffstat: src/lib-sieve/plugins/mime/ext-foreverypart.c | 6 +++--- src/lib-sieve/plugins/mime/ext-mime.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diffs (32 lines): diff -r ceaf31d7bd5a -r 658ddaa1457f src/lib-sieve/plugins/mime/ext-foreverypart.c --- a/src/lib-sieve/plugins/mime/ext-foreverypart.c Sun Jan 03 18:37:39 2016 +0100 +++ b/src/lib-sieve/plugins/mime/ext-foreverypart.c Sun Jan 03 19:39:32 2016 +0100 @@ -5,9 +5,9 @@ * ---------------------- * * Authors: Stephan Bosch - * Specification: RFC 5703,Section 3 - * Implementation: skeleton - * Status: development + * Specification: RFC 5703, Section 3 + * Implementation: full + * Status: experimental * */ diff -r ceaf31d7bd5a -r 658ddaa1457f src/lib-sieve/plugins/mime/ext-mime.c --- a/src/lib-sieve/plugins/mime/ext-mime.c Sun Jan 03 18:37:39 2016 +0100 +++ b/src/lib-sieve/plugins/mime/ext-mime.c Sun Jan 03 19:39:32 2016 +0100 @@ -5,9 +5,9 @@ * -------------- * * Authors: Stephan Bosch - * Specification: RFC 5703,Section 4 - * Implementation: skeleton - * Status: development + * Specification: RFC 5703, Section 4 + * Implementation: full + * Status: experimental * */ From pigeonhole at rename-it.nl Sun Jan 3 21:06:55 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Sun, 03 Jan 2016 22:06:55 +0100 Subject: dovecot-2.2-pigeonhole: test suite: mime extension: Added more t... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/2ccde5ca8fd4 changeset: 2199:2ccde5ca8fd4 user: Stephan Bosch date: Sun Jan 03 22:06:50 2016 +0100 description: test suite: mime extension: Added more test for exists and address tests with :mime tag. diffstat: Makefile.am | 2 + tests/extensions/mime/address.svtest | 281 +++++++++++++++++++++++++++++++++++ tests/extensions/mime/exists.svtest | 237 +++++++++++++++++++++++++++++ 3 files changed, 520 insertions(+), 0 deletions(-) diffs (truncated from 538 to 300 lines): diff -r 658ddaa1457f -r 2ccde5ca8fd4 Makefile.am --- a/Makefile.am Sun Jan 03 19:39:32 2016 +0100 +++ b/Makefile.am Sun Jan 03 22:06:50 2016 +0100 @@ -168,6 +168,8 @@ tests/extensions/metadata/errors.svtest \ tests/extensions/mime/errors.svtest \ tests/extensions/mime/header.svtest \ + tests/extensions/mime/exists.svtest \ + tests/extensions/mime/address.svtest \ tests/extensions/mime/execute.svtest \ tests/extensions/mime/content-header.svtest \ tests/extensions/mime/foreverypart.svtest \ diff -r 658ddaa1457f -r 2ccde5ca8fd4 tests/extensions/mime/address.svtest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/extensions/mime/address.svtest Sun Jan 03 22:06:50 2016 +0100 @@ -0,0 +1,281 @@ +require "vnd.dovecot.testsuite"; +require "mime"; +require "foreverypart"; + +/* + * Basic functionionality + */ + +test_set "message" text: +From: stephan at example.com +To: nico at nl.example.com, harry at de.example.com +cc: Timo +Subject: Frobnitzm + +Test. +. +; + +test "Basic functionality" { + /* Must match */ + if not address :mime :anychild :contains ["to", "from"] "harry" { + test_fail "failed to match address (1)"; + } + + if not address :mime :anychild :contains ["to", "from"] "de.example" { + test_fail "failed to match address (2)"; + } + + if not address :mime :anychild :matches "to" "*@*.example.com" { + test_fail "failed to match address (3)"; + } + + if not address :mime :anychild :is "to" "harry at de.example.com" { + test_fail "failed to match address (4)"; + } + + /* Must not match */ + if address :mime :anychild :is ["to", "from"] "nonsense at example.com" { + test_fail "matches erroneous address"; + } + + /* Match first key */ + if not address :mime :anychild :contains ["to"] ["nico", "fred", "henk"] { + test_fail "failed to match first key"; + } + + /* Match second key */ + if not address :mime :anychild :contains ["to"] ["fred", "nico", "henk"] { + test_fail "failed to match second key"; + } + + /* Match last key */ + if not address :mime :anychild :contains ["to"] ["fred", "henk", "nico"] { + test_fail "failed to match last key"; + } + + /* First header */ + if not address :mime :anychild :contains + ["to", "from"] ["fred", "nico", "henk"] { + test_fail "failed to match first header"; + } + + /* Second header */ + if not address :mime :anychild :contains + ["from", "to"] ["fred", "nico", "henk"] { + test_fail "failed to match second header"; + } + + /* Comment */ + if not address :mime :anychild :is "cc" "tss at fi.iki" { + test_fail "failed to ignore comment in address"; + } +} + +/* + * Basic functionionality - foreverypart + */ + +test "Basic functionality - foreverypart" { + foreverypart { + /* Must match */ + if not address :mime :anychild :contains ["to", "from"] "harry" { + test_fail "failed to match address (1)"; + } + + if not address :mime :anychild :contains ["to", "from"] "de.example" { + test_fail "failed to match address (2)"; + } + + if not address :mime :anychild :matches "to" "*@*.example.com" { + test_fail "failed to match address (3)"; + } + + if not address :mime :anychild :is "to" "harry at de.example.com" { + test_fail "failed to match address (4)"; + } + + /* Must not match */ + if address :mime :anychild :is ["to", "from"] "nonsense at example.com" { + test_fail "matches erroneous address"; + } + + /* Match first key */ + if not address :mime :anychild :contains ["to"] ["nico", "fred", "henk"] { + test_fail "failed to match first key"; + } + + /* Match second key */ + if not address :mime :anychild :contains ["to"] ["fred", "nico", "henk"] { + test_fail "failed to match second key"; + } + + /* Match last key */ + if not address :mime :anychild :contains ["to"] ["fred", "henk", "nico"] { + test_fail "failed to match last key"; + } + + /* First header */ + if not address :mime :anychild :contains + ["to", "from"] ["fred", "nico", "henk"] { + test_fail "failed to match first header"; + } + + /* Second header */ + if not address :mime :anychild :contains + ["from", "to"] ["fred", "nico", "henk"] { + test_fail "failed to match second header"; + } + + /* Comment */ + if not address :mime :anychild :is "cc" "tss at fi.iki" { + test_fail "failed to ignore comment in address"; + } + } +} + +/* + * Address headers + */ + +test_set "message" text: +From: stephan at friep.frop +To: henk at tukkerland.ex +CC: ivo at boer.ex +Bcc: joop at hooibaal.ex +Sender: s.bosch at friep.frop +Resent-From: ivo at boer.ex +Resent-To: idioot at dombo.ex +Subject: Berichtje + +Test. +. +; + +test "Address headers" { + if not address :mime :anychild "from" "stephan at friep.frop" { + test_fail "from header not recognized"; + } + + if not address :mime :anychild "to" "henk at tukkerland.ex" { + test_fail "to header not recognized"; + } + + if not address :mime :anychild "cc" "ivo at boer.ex" { + test_fail "cc header not recognized"; + } + + if not address :mime :anychild "bcc" "joop at hooibaal.ex" { + test_fail "bcc header not recognized"; + } + + if not address :mime :anychild "sender" "s.bosch at friep.frop" { + test_fail "sender header not recognized"; + } + + if not address :mime :anychild "resent-from" "ivo at boer.ex" { + test_fail "resent-from header not recognized"; + } + + if not address :mime :anychild "resent-to" "idioot at dombo.ex" { + test_fail "resent-to header not recognized"; + } +} + +/* + * Address headers - foreverypart + */ + +test "Address headers - foreverypart" { + foreverypart { + if not address :mime :anychild "from" "stephan at friep.frop" { + test_fail "from header not recognized"; + } + + if not address :mime :anychild "to" "henk at tukkerland.ex" { + test_fail "to header not recognized"; + } + + if not address :mime :anychild "cc" "ivo at boer.ex" { + test_fail "cc header not recognized"; + } + + if not address :mime :anychild "bcc" "joop at hooibaal.ex" { + test_fail "bcc header not recognized"; + } + + if not address :mime :anychild "sender" "s.bosch at friep.frop" { + test_fail "sender header not recognized"; + } + + if not address :mime :anychild "resent-from" "ivo at boer.ex" { + test_fail "resent-from header not recognized"; + } + + if not address :mime :anychild "resent-to" "idioot at dombo.ex" { + test_fail "resent-to header not recognized"; + } + } +} + +/* + * Multipart anychild + */ + +test_set "message" text: +From: Hendrik +To: Harrie +Date: Sat, 11 Oct 2010 00:31:44 +0200 +Subject: Harrie is een prutser +Content-Type: multipart/mixed; boundary=AA +CC: AA at example.com + +This is a multi-part message in MIME format. +--AA +Content-Type: multipart/mixed; boundary=BB +CC: BB at example.com + +This is a multi-part message in MIME format. +--BB +Content-Type: text/plain; charset="us-ascii" +CC: CC at example.com + +Hello + +--BB +Content-Type: text/plain; charset="us-ascii" +CC: DD at example.com + +Hello again + +--BB-- +This is the end of MIME multipart. + +--AA +Content-Type: text/plain; charset="us-ascii" +CC: EE at example.com + +And again + +--AA-- +This is the end of MIME multipart. +. +; + +test "Multipart anychild" { + if not address :mime :anychild :localpart "Cc" "AA" { + test_fail "AA Cc repient does not exist"; + } + if not address :mime :anychild :localpart "Cc" "BB" { + test_fail "BB Cc repient does not exist"; + } + if not address :mime :anychild :localpart "Cc" "CC" { + test_fail "CC Cc repient does not exist"; + } + if not address :mime :anychild :localpart "Cc" "DD" { + test_fail "DD Cc repient does not exist"; + } + if not address :mime :anychild :localpart "Cc" "EE" { + test_fail "EE Cc repient does not exist"; + } +} diff -r 658ddaa1457f -r 2ccde5ca8fd4 tests/extensions/mime/exists.svtest --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/extensions/mime/exists.svtest Sun Jan 03 22:06:50 2016 +0100 From pigeonhole at rename-it.nl Sun Jan 3 23:20:16 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Mon, 04 Jan 2016 00:20:16 +0100 Subject: dovecot-2.2-pigeonhole: Updated copyright notices to include the... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/8282b6cd6629 changeset: 2200:8282b6cd6629 user: Stephan Bosch date: Mon Jan 04 00:19:02 2016 +0100 description: Updated copyright notices to include the year 2016. diffstat: doc/man/doveadm-sieve.1.in | 2 +- doc/man/pigeonhole.7.in | 2 +- doc/man/sieve-dump.1.in | 2 +- doc/man/sieve-filter.1.in | 2 +- doc/man/sieve-test.1.in | 2 +- doc/man/sievec.1.in | 2 +- src/lib-managesieve/managesieve-arg.c | 2 +- src/lib-managesieve/managesieve-arg.h | 2 +- src/lib-managesieve/managesieve-parser.c | 2 +- src/lib-managesieve/managesieve-parser.h | 2 +- src/lib-managesieve/managesieve-quote.c | 2 +- src/lib-managesieve/managesieve-quote.h | 2 +- src/lib-sieve-tool/mail-raw.c | 2 +- src/lib-sieve-tool/mail-raw.h | 2 +- src/lib-sieve-tool/sieve-tool.c | 2 +- src/lib-sieve-tool/sieve-tool.h | 2 +- src/lib-sieve/cmd-discard.c | 2 +- src/lib-sieve/cmd-if.c | 2 +- src/lib-sieve/cmd-keep.c | 2 +- src/lib-sieve/cmd-redirect.c | 2 +- src/lib-sieve/cmd-require.c | 2 +- src/lib-sieve/cmd-stop.c | 2 +- src/lib-sieve/cmp-i-ascii-casemap.c | 2 +- src/lib-sieve/cmp-i-octet.c | 2 +- src/lib-sieve/ext-encoded-character.c | 2 +- src/lib-sieve/ext-envelope.c | 2 +- src/lib-sieve/ext-fileinto.c | 2 +- src/lib-sieve/ext-reject.c | 2 +- src/lib-sieve/mcht-contains.c | 2 +- src/lib-sieve/mcht-is.c | 2 +- src/lib-sieve/mcht-matches.c | 2 +- src/lib-sieve/plugins/body/ext-body-common.c | 2 +- src/lib-sieve/plugins/body/ext-body-common.h | 2 +- src/lib-sieve/plugins/body/ext-body.c | 2 +- src/lib-sieve/plugins/body/tst-body.c | 2 +- src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c | 2 +- src/lib-sieve/plugins/copy/ext-copy.c | 2 +- src/lib-sieve/plugins/copy/sieve-ext-copy.h | 2 +- src/lib-sieve/plugins/date/ext-date-common.c | 2 +- src/lib-sieve/plugins/date/ext-date-common.h | 2 +- src/lib-sieve/plugins/date/ext-date.c | 2 +- src/lib-sieve/plugins/date/tst-date.c | 2 +- src/lib-sieve/plugins/duplicate/ext-duplicate-common.c | 2 +- src/lib-sieve/plugins/duplicate/ext-duplicate-common.h | 2 +- src/lib-sieve/plugins/duplicate/ext-duplicate.c | 2 +- src/lib-sieve/plugins/duplicate/tst-duplicate.c | 2 +- src/lib-sieve/plugins/editheader/cmd-addheader.c | 2 +- src/lib-sieve/plugins/editheader/cmd-deleteheader.c | 2 +- src/lib-sieve/plugins/editheader/ext-editheader-common.c | 2 +- src/lib-sieve/plugins/editheader/ext-editheader-common.h | 2 +- src/lib-sieve/plugins/editheader/ext-editheader-limits.h | 2 +- src/lib-sieve/plugins/editheader/ext-editheader.c | 2 +- src/lib-sieve/plugins/enotify/cmd-notify.c | 2 +- src/lib-sieve/plugins/enotify/ext-enotify-common.c | 2 +- src/lib-sieve/plugins/enotify/ext-enotify-common.h | 2 +- src/lib-sieve/plugins/enotify/ext-enotify-limits.h | 2 +- src/lib-sieve/plugins/enotify/ext-enotify.c | 2 +- src/lib-sieve/plugins/enotify/mailto/ntfy-mailto.c | 2 +- src/lib-sieve/plugins/enotify/mailto/uri-mailto.c | 2 +- src/lib-sieve/plugins/enotify/mailto/uri-mailto.h | 2 +- src/lib-sieve/plugins/enotify/sieve-ext-enotify.h | 2 +- src/lib-sieve/plugins/enotify/tst-notify-method-capability.c | 2 +- src/lib-sieve/plugins/enotify/tst-valid-notify-method.c | 2 +- src/lib-sieve/plugins/enotify/vmodf-encodeurl.c | 2 +- src/lib-sieve/plugins/environment/ext-environment-common.c | 2 +- src/lib-sieve/plugins/environment/ext-environment-common.h | 2 +- src/lib-sieve/plugins/environment/ext-environment.c | 2 +- src/lib-sieve/plugins/environment/sieve-ext-environment.h | 2 +- src/lib-sieve/plugins/environment/tst-environment.c | 2 +- src/lib-sieve/plugins/ihave/cmd-error.c | 2 +- src/lib-sieve/plugins/ihave/ext-ihave-binary.c | 2 +- src/lib-sieve/plugins/ihave/ext-ihave-binary.h | 2 +- src/lib-sieve/plugins/ihave/ext-ihave-common.c | 2 +- src/lib-sieve/plugins/ihave/ext-ihave-common.h | 2 +- src/lib-sieve/plugins/ihave/ext-ihave.c | 2 +- src/lib-sieve/plugins/ihave/tst-ihave.c | 2 +- src/lib-sieve/plugins/imap4flags/cmd-flag.c | 2 +- src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c | 2 +- src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h | 2 +- src/lib-sieve/plugins/imap4flags/ext-imap4flags.c | 2 +- src/lib-sieve/plugins/imap4flags/ext-imapflags.c | 2 +- src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h | 2 +- src/lib-sieve/plugins/imap4flags/tag-flags.c | 2 +- src/lib-sieve/plugins/imap4flags/tst-hasflag.c | 2 +- src/lib-sieve/plugins/include/cmd-global.c | 2 +- src/lib-sieve/plugins/include/cmd-include.c | 2 +- src/lib-sieve/plugins/include/cmd-return.c | 2 +- src/lib-sieve/plugins/include/ext-include-binary.c | 2 +- src/lib-sieve/plugins/include/ext-include-binary.h | 2 +- src/lib-sieve/plugins/include/ext-include-common.c | 2 +- src/lib-sieve/plugins/include/ext-include-common.h | 2 +- src/lib-sieve/plugins/include/ext-include-limits.h | 2 +- src/lib-sieve/plugins/include/ext-include-variables.c | 2 +- src/lib-sieve/plugins/include/ext-include-variables.h | 2 +- src/lib-sieve/plugins/include/ext-include.c | 2 +- src/lib-sieve/plugins/index/ext-index-common.c | 2 +- src/lib-sieve/plugins/index/ext-index-common.h | 2 +- src/lib-sieve/plugins/index/ext-index.c | 2 +- src/lib-sieve/plugins/index/tag-index.c | 2 +- src/lib-sieve/plugins/mailbox/ext-mailbox-common.h | 2 +- src/lib-sieve/plugins/mailbox/ext-mailbox.c | 2 +- src/lib-sieve/plugins/mailbox/sieve-ext-mailbox.h | 2 +- src/lib-sieve/plugins/mailbox/tag-mailbox-create.c | 2 +- src/lib-sieve/plugins/mailbox/tst-mailboxexists.c | 2 +- src/lib-sieve/plugins/metadata/ext-metadata-common.h | 2 +- src/lib-sieve/plugins/metadata/ext-metadata.c | 2 +- src/lib-sieve/plugins/metadata/tst-metadata.c | 2 +- src/lib-sieve/plugins/metadata/tst-metadataexists.c | 2 +- src/lib-sieve/plugins/mime/cmd-break.c | 2 +- src/lib-sieve/plugins/mime/cmd-foreverypart.c | 2 +- src/lib-sieve/plugins/mime/ext-foreverypart.c | 2 +- src/lib-sieve/plugins/mime/ext-mime-common.c | 2 +- src/lib-sieve/plugins/mime/ext-mime-common.h | 2 +- src/lib-sieve/plugins/mime/ext-mime.c | 2 +- src/lib-sieve/plugins/mime/tag-mime.c | 2 +- src/lib-sieve/plugins/notify/cmd-denotify.c | 2 +- src/lib-sieve/plugins/notify/cmd-notify.c | 2 +- src/lib-sieve/plugins/notify/ext-notify-common.c | 2 +- src/lib-sieve/plugins/notify/ext-notify-common.h | 2 +- src/lib-sieve/plugins/notify/ext-notify-limits.h | 2 +- src/lib-sieve/plugins/notify/ext-notify.c | 2 +- src/lib-sieve/plugins/regex/ext-regex-common.c | 2 +- src/lib-sieve/plugins/regex/ext-regex-common.h | 2 +- src/lib-sieve/plugins/regex/ext-regex.c | 2 +- src/lib-sieve/plugins/regex/mcht-regex.c | 2 +- src/lib-sieve/plugins/relational/ext-relational-common.c | 2 +- src/lib-sieve/plugins/relational/ext-relational-common.h | 2 +- src/lib-sieve/plugins/relational/ext-relational.c | 2 +- src/lib-sieve/plugins/relational/mcht-count.c | 2 +- src/lib-sieve/plugins/relational/mcht-value.c | 2 +- src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.c | 2 +- src/lib-sieve/plugins/spamvirustest/ext-spamvirustest-common.h | 2 +- src/lib-sieve/plugins/spamvirustest/ext-spamvirustest.c | 2 +- src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c | 2 +- src/lib-sieve/plugins/subaddress/ext-subaddress.c | 2 +- src/lib-sieve/plugins/vacation/cmd-vacation.c | 2 +- src/lib-sieve/plugins/vacation/ext-vacation-common.c | 2 +- src/lib-sieve/plugins/vacation/ext-vacation-common.h | 2 +- src/lib-sieve/plugins/vacation/ext-vacation-seconds.c | 2 +- src/lib-sieve/plugins/vacation/ext-vacation.c | 2 +- src/lib-sieve/plugins/variables/cmd-set.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-arguments.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-arguments.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-common.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-common.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-dump.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-dump.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-limits.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-modifiers.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-modifiers.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-name.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-name.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-namespaces.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-namespaces.h | 2 +- src/lib-sieve/plugins/variables/ext-variables-operands.c | 2 +- src/lib-sieve/plugins/variables/ext-variables-operands.h | 2 +- src/lib-sieve/plugins/variables/ext-variables.c | 2 +- src/lib-sieve/plugins/variables/sieve-ext-variables.h | 2 +- src/lib-sieve/plugins/variables/tst-string.c | 2 +- src/lib-sieve/plugins/vnd.dovecot/debug/cmd-debug-log.c | 2 +- src/lib-sieve/plugins/vnd.dovecot/debug/ext-debug-common.h | 2 +- src/lib-sieve/plugins/vnd.dovecot/debug/ext-debug.c | 2 +- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-common.h | 2 +- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-items.c | 2 +- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c | 2 +- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment.c | 2 +- src/lib-sieve/sieve-actions.c | 2 +- src/lib-sieve/sieve-actions.h | 2 +- src/lib-sieve/sieve-address-parts.c | 2 +- src/lib-sieve/sieve-address-parts.h | 2 +- src/lib-sieve/sieve-address.c | 2 +- src/lib-sieve/sieve-address.h | 2 +- src/lib-sieve/sieve-ast.c | 2 +- src/lib-sieve/sieve-ast.h | 2 +- src/lib-sieve/sieve-binary-code.c | 2 +- src/lib-sieve/sieve-binary-debug.c | 2 +- src/lib-sieve/sieve-binary-dumper.c | 2 +- src/lib-sieve/sieve-binary-dumper.h | 2 +- src/lib-sieve/sieve-binary-file.c | 2 +- src/lib-sieve/sieve-binary-private.h | 2 +- src/lib-sieve/sieve-binary.c | 2 +- src/lib-sieve/sieve-binary.h | 2 +- src/lib-sieve/sieve-code-dumper.c | 2 +- src/lib-sieve/sieve-code-dumper.h | 2 +- src/lib-sieve/sieve-code.c | 2 +- src/lib-sieve/sieve-code.h | 2 +- src/lib-sieve/sieve-commands.c | 2 +- src/lib-sieve/sieve-commands.h | 2 +- src/lib-sieve/sieve-common.h | 2 +- src/lib-sieve/sieve-comparators.c | 2 +- src/lib-sieve/sieve-comparators.h | 2 +- src/lib-sieve/sieve-config.h | 2 +- src/lib-sieve/sieve-dump.h | 2 +- src/lib-sieve/sieve-error-private.h | 2 +- src/lib-sieve/sieve-error.c | 2 +- src/lib-sieve/sieve-error.h | 2 +- src/lib-sieve/sieve-extensions.c | 2 +- src/lib-sieve/sieve-extensions.h | 2 +- src/lib-sieve/sieve-generator.c | 2 +- src/lib-sieve/sieve-generator.h | 2 +- src/lib-sieve/sieve-interpreter.c | 2 +- src/lib-sieve/sieve-interpreter.h | 2 +- src/lib-sieve/sieve-lexer.c | 2 +- src/lib-sieve/sieve-lexer.h | 2 +- src/lib-sieve/sieve-limits.h | 2 +- src/lib-sieve/sieve-match-types.c | 2 +- src/lib-sieve/sieve-match-types.h | 2 +- src/lib-sieve/sieve-match.c | 2 +- src/lib-sieve/sieve-match.h | 2 +- src/lib-sieve/sieve-message.c | 2 +- src/lib-sieve/sieve-message.h | 2 +- src/lib-sieve/sieve-objects.c | 2 +- src/lib-sieve/sieve-objects.h | 2 +- src/lib-sieve/sieve-parser.c | 2 +- src/lib-sieve/sieve-parser.h | 2 +- src/lib-sieve/sieve-plugins.c | 2 +- src/lib-sieve/sieve-plugins.h | 2 +- src/lib-sieve/sieve-result.c | 2 +- src/lib-sieve/sieve-result.h | 2 +- src/lib-sieve/sieve-runtime-trace.c | 2 +- src/lib-sieve/sieve-runtime-trace.h | 2 +- src/lib-sieve/sieve-runtime.h | 2 +- src/lib-sieve/sieve-script-private.h | 2 +- src/lib-sieve/sieve-script.c | 2 +- src/lib-sieve/sieve-script.h | 2 +- src/lib-sieve/sieve-settings.c | 2 +- src/lib-sieve/sieve-settings.h | 2 +- src/lib-sieve/sieve-smtp.c | 2 +- src/lib-sieve/sieve-smtp.h | 2 +- src/lib-sieve/sieve-storage-private.h | 2 +- src/lib-sieve/sieve-storage-sync.c | 2 +- src/lib-sieve/sieve-storage.c | 2 +- src/lib-sieve/sieve-storage.h | 2 +- src/lib-sieve/sieve-stringlist.c | 2 +- src/lib-sieve/sieve-stringlist.h | 2 +- src/lib-sieve/sieve-types.h | 2 +- src/lib-sieve/sieve-validator.c | 2 +- src/lib-sieve/sieve-validator.h | 2 +- src/lib-sieve/sieve.c | 2 +- src/lib-sieve/sieve.h | 2 +- src/lib-sieve/storage/dict/sieve-dict-script.c | 2 +- src/lib-sieve/storage/dict/sieve-dict-storage.c | 2 +- src/lib-sieve/storage/dict/sieve-dict-storage.h | 2 +- src/lib-sieve/storage/file/sieve-file-script-sequence.c | 2 +- src/lib-sieve/storage/file/sieve-file-script.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage-active.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage-list.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage-quota.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage-save.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage.c | 2 +- src/lib-sieve/storage/file/sieve-file-storage.h | 2 +- src/lib-sieve/storage/ldap/sieve-ldap-db.c | 2 +- src/lib-sieve/storage/ldap/sieve-ldap-script.c | 2 +- src/lib-sieve/storage/ldap/sieve-ldap-storage-settings.c | 2 +- src/lib-sieve/storage/ldap/sieve-ldap-storage.c | 2 +- src/lib-sieve/storage/ldap/sieve-ldap-storage.h | 2 +- src/lib-sieve/tst-address.c | 2 +- src/lib-sieve/tst-allof.c | 2 +- src/lib-sieve/tst-anyof.c | 2 +- src/lib-sieve/tst-exists.c | 2 +- src/lib-sieve/tst-header.c | 2 +- src/lib-sieve/tst-not.c | 2 +- src/lib-sieve/tst-size.c | 2 +- src/lib-sieve/tst-truefalse.c | 2 +- src/lib-sieve/util/edit-mail.c | 2 +- src/lib-sieve/util/edit-mail.h | 2 +- src/lib-sieve/util/program-client-local.c | 2 +- src/lib-sieve/util/program-client-private.h | 2 +- src/lib-sieve/util/program-client-remote.c | 2 +- src/lib-sieve/util/program-client.c | 2 +- src/lib-sieve/util/program-client.h | 2 +- src/lib-sieve/util/realpath.c | 2 +- src/lib-sieve/util/rfc2822.c | 2 +- src/lib-sieve/util/rfc2822.h | 2 +- src/lib-sieve/util/strtrim.c | 2 +- src/managesieve-login/client-authenticate.c | 2 +- src/managesieve-login/client-authenticate.h | 2 +- src/managesieve-login/client.c | 2 +- src/managesieve-login/client.h | 2 +- src/managesieve-login/managesieve-login-settings-plugin.c | 2 +- src/managesieve-login/managesieve-login-settings-plugin.h | 2 +- src/managesieve-login/managesieve-login-settings.c | 2 +- src/managesieve-login/managesieve-login-settings.h | 2 +- src/managesieve-login/managesieve-proxy.c | 2 +- src/managesieve-login/managesieve-proxy.h | 2 +- src/managesieve/cmd-capability.c | 2 +- src/managesieve/cmd-deletescript.c | 2 +- src/managesieve/cmd-getscript.c | 2 +- src/managesieve/cmd-havespace.c | 2 +- src/managesieve/cmd-listscripts.c | 2 +- src/managesieve/cmd-logout.c | 2 +- src/managesieve/cmd-noop.c | 2 +- src/managesieve/cmd-putscript.c | 2 +- src/managesieve/cmd-renamescript.c | 2 +- src/managesieve/cmd-setactive.c | 2 +- src/managesieve/main.c | 2 +- src/managesieve/managesieve-capabilities.c | 2 +- src/managesieve/managesieve-capabilities.h | 2 +- src/managesieve/managesieve-client.c | 2 +- src/managesieve/managesieve-client.h | 2 +- src/managesieve/managesieve-commands.c | 2 +- src/managesieve/managesieve-commands.h | 2 +- src/managesieve/managesieve-common.h | 2 +- src/managesieve/managesieve-quota.c | 2 +- src/managesieve/managesieve-quota.h | 2 +- src/managesieve/managesieve-settings.c | 2 +- src/managesieve/managesieve-settings.h | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-activate.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-delete.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-get.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-list.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-put.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd-rename.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-cmd.h | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-plugin.c | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-plugin.h | 2 +- src/plugins/doveadm-sieve/doveadm-sieve-sync.c | 2 +- src/plugins/lda-sieve/lda-sieve-log.c | 2 +- src/plugins/lda-sieve/lda-sieve-log.h | 2 +- src/plugins/lda-sieve/lda-sieve-plugin.c | 2 +- src/plugins/lda-sieve/lda-sieve-plugin.h | 2 +- src/plugins/settings/pigeonhole-settings.c | 2 +- src/plugins/sieve-extprograms/cmd-execute.c | 2 +- src/plugins/sieve-extprograms/cmd-filter.c | 2 +- src/plugins/sieve-extprograms/cmd-pipe.c | 2 +- src/plugins/sieve-extprograms/ext-execute.c | 2 +- src/plugins/sieve-extprograms/ext-filter.c | 2 +- src/plugins/sieve-extprograms/ext-pipe.c | 2 +- src/plugins/sieve-extprograms/sieve-extprograms-common.c | 2 +- src/plugins/sieve-extprograms/sieve-extprograms-common.h | 2 +- src/plugins/sieve-extprograms/sieve-extprograms-plugin.c | 2 +- src/plugins/sieve-extprograms/sieve-extprograms-plugin.h | 2 +- src/sieve-tools/sieve-dump.c | 2 +- src/sieve-tools/sieve-filter.c | 2 +- src/sieve-tools/sieve-test.c | 2 +- src/sieve-tools/sievec.c | 2 +- src/testsuite/cmd-test-binary.c | 2 +- src/testsuite/cmd-test-config.c | 2 +- src/testsuite/cmd-test-fail.c | 2 +- src/testsuite/cmd-test-imap-metadata.c | 2 +- src/testsuite/cmd-test-mailbox.c | 2 +- src/testsuite/cmd-test-message.c | 2 +- src/testsuite/cmd-test-result.c | 2 +- src/testsuite/cmd-test-set.c | 2 +- src/testsuite/cmd-test.c | 2 +- src/testsuite/ext-testsuite.c | 2 +- src/testsuite/testsuite-arguments.c | 2 +- src/testsuite/testsuite-arguments.h | 2 +- src/testsuite/testsuite-binary.c | 2 +- src/testsuite/testsuite-binary.h | 2 +- src/testsuite/testsuite-common.c | 2 +- src/testsuite/testsuite-common.h | 2 +- src/testsuite/testsuite-log.c | 2 +- src/testsuite/testsuite-log.h | 2 +- src/testsuite/testsuite-mailstore.c | 2 +- src/testsuite/testsuite-mailstore.h | 2 +- src/testsuite/testsuite-message.c | 2 +- src/testsuite/testsuite-message.h | 2 +- src/testsuite/testsuite-objects.c | 2 +- src/testsuite/testsuite-objects.h | 2 +- src/testsuite/testsuite-result.c | 2 +- src/testsuite/testsuite-result.h | 2 +- src/testsuite/testsuite-script.c | 2 +- src/testsuite/testsuite-script.h | 2 +- src/testsuite/testsuite-settings.c | 2 +- src/testsuite/testsuite-settings.h | 2 +- src/testsuite/testsuite-smtp.c | 2 +- src/testsuite/testsuite-smtp.h | 2 +- src/testsuite/testsuite-substitutions.c | 2 +- src/testsuite/testsuite-substitutions.h | 2 +- src/testsuite/testsuite-variables.c | 2 +- src/testsuite/testsuite-variables.h | 2 +- src/testsuite/testsuite.c | 2 +- src/testsuite/tst-test-error.c | 2 +- src/testsuite/tst-test-multiscript.c | 2 +- src/testsuite/tst-test-result-action.c | 2 +- src/testsuite/tst-test-result-execute.c | 2 +- src/testsuite/tst-test-script-compile.c | 2 +- src/testsuite/tst-test-script-run.c | 2 +- 380 files changed, 380 insertions(+), 380 deletions(-) diffs (truncated from 3420 to 300 lines): diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/doveadm-sieve.1.in --- a/doc/man/doveadm-sieve.1.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/doveadm-sieve.1.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH DOVEADM\-SIEVE 1 "2015-02-21" "Pigeonhole v0.4 for Dovecot v2.2" "Pigeonhole" .SH NAME doveadm\-sieve \- Commands related to handling Sieve scripts diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/pigeonhole.7.in --- a/doc/man/pigeonhole.7.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/pigeonhole.7.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH "PIGEONHOLE" 7 "2015-02-21" "Pigeonhole v0.4 for Dovecot v2.2" "Pigeonhole" .\"------------------------------------------------------------------------ .SH NAME diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/sieve-dump.1.in --- a/doc/man/sieve-dump.1.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/sieve-dump.1.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH "SIEVE\-DUMP" 1 "2014-01-01" "Pigeonhole for Dovecot v2.2" "Pigeonhole" .\"------------------------------------------------------------------------ .SH NAME diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/sieve-filter.1.in --- a/doc/man/sieve-filter.1.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/sieve-filter.1.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH "SIEVE\-FILTER" 1 "2014-01-01" "Pigeonhole for Dovecot v2.2" "Pigeonhole" .SH NAME sieve\-filter \- Pigeonhole\(aqs Sieve mailbox filter tool diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/sieve-test.1.in --- a/doc/man/sieve-test.1.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/sieve-test.1.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH "SIEVE\-TEST" 1 "2014-01-01" "Pigeonhole for Dovecot v2.2" "Pigeonhole" .SH NAME sieve\-test \- Pigeonhole\(aqs Sieve script tester diff -r 2ccde5ca8fd4 -r 8282b6cd6629 doc/man/sievec.1.in --- a/doc/man/sievec.1.in Sun Jan 03 22:06:50 2016 +0100 +++ b/doc/man/sievec.1.in Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -.\" Copyright (c) 2010-2015 Pigeonhole authors, see the included COPYING file +.\" Copyright (c) 2010-2016 Pigeonhole authors, see the included COPYING file .TH "SIEVEC" 1 "2014-01-01" "Pigeonhole for Dovecot v2.2" "Pigeonhole" .\"------------------------------------------------------------------------ .SH NAME diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-arg.c --- a/src/lib-managesieve/managesieve-arg.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-arg.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-arg.h --- a/src/lib-managesieve/managesieve-arg.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-arg.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __MANAGESIEVE_ARG_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-parser.c --- a/src/lib-managesieve/managesieve-parser.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-parser.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-parser.h --- a/src/lib-managesieve/managesieve-parser.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-parser.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __MANAGESIEVE_PARSER_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-quote.c --- a/src/lib-managesieve/managesieve-quote.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-quote.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-managesieve/managesieve-quote.h --- a/src/lib-managesieve/managesieve-quote.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-managesieve/managesieve-quote.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __IMAP_QUOTE_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve-tool/mail-raw.c --- a/src/lib-sieve-tool/mail-raw.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve-tool/mail-raw.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve-tool/mail-raw.h --- a/src/lib-sieve-tool/mail-raw.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve-tool/mail-raw.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __MAIL_RAW_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve-tool/sieve-tool.c --- a/src/lib-sieve-tool/sieve-tool.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve-tool/sieve-tool.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve-tool/sieve-tool.h --- a/src/lib-sieve-tool/sieve-tool.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve-tool/sieve-tool.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __SIEVE_TOOL_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-discard.c --- a/src/lib-sieve/cmd-discard.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-discard.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-if.c --- a/src/lib-sieve/cmd-if.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-if.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "sieve-common.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-keep.c --- a/src/lib-sieve/cmd-keep.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-keep.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-redirect.c --- a/src/lib-sieve/cmd-redirect.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-redirect.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-require.c --- a/src/lib-sieve/cmd-require.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-require.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmd-stop.c --- a/src/lib-sieve/cmd-stop.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmd-stop.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "sieve-common.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmp-i-ascii-casemap.c --- a/src/lib-sieve/cmp-i-ascii-casemap.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmp-i-ascii-casemap.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Comparator 'i;ascii-casemap': diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/cmp-i-octet.c --- a/src/lib-sieve/cmp-i-octet.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/cmp-i-octet.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Comparator 'i;octet': diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/ext-encoded-character.c --- a/src/lib-sieve/ext-encoded-character.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/ext-encoded-character.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Extension encoded-character diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/ext-envelope.c --- a/src/lib-sieve/ext-envelope.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/ext-envelope.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Extension envelope diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/ext-fileinto.c --- a/src/lib-sieve/ext-fileinto.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/ext-fileinto.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Extension fileinto diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/ext-reject.c --- a/src/lib-sieve/ext-reject.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/ext-reject.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Extension reject diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/mcht-contains.c --- a/src/lib-sieve/mcht-contains.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/mcht-contains.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Match-type ':contains' diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/mcht-is.c --- a/src/lib-sieve/mcht-is.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/mcht-is.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Match-type ':is': diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/mcht-matches.c --- a/src/lib-sieve/mcht-matches.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/mcht-matches.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ /* Match-type ':matches' diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/plugins/body/ext-body-common.c --- a/src/lib-sieve/plugins/body/ext-body-common.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/plugins/body/ext-body-common.c Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #include "lib.h" diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/plugins/body/ext-body-common.h --- a/src/lib-sieve/plugins/body/ext-body-common.h Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/plugins/body/ext-body-common.h Mon Jan 04 00:19:02 2016 +0100 @@ -1,4 +1,4 @@ -/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file +/* Copyright (c) 2002-2016 Pigeonhole authors, see the included COPYING file */ #ifndef __EXT_BODY_COMMON_H diff -r 2ccde5ca8fd4 -r 8282b6cd6629 src/lib-sieve/plugins/body/ext-body.c --- a/src/lib-sieve/plugins/body/ext-body.c Sun Jan 03 22:06:50 2016 +0100 +++ b/src/lib-sieve/plugins/body/ext-body.c Mon Jan 04 00:19:02 2016 +0100 From pigeonhole at rename-it.nl Mon Jan 4 00:14:33 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Mon, 04 Jan 2016 01:14:33 +0100 Subject: dovecot-2.2-pigeonhole: Added tag 0.4.11.rc1 for changeset ce96b... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/61bcb1757a8f changeset: 2202:61bcb1757a8f user: Stephan Bosch date: Mon Jan 04 01:14:24 2016 +0100 description: Added tag 0.4.11.rc1 for changeset ce96bdac1f74 diffstat: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r ce96bdac1f74 -r 61bcb1757a8f .hgtags --- a/.hgtags Mon Jan 04 01:14:15 2016 +0100 +++ b/.hgtags Mon Jan 04 01:14:24 2016 +0100 @@ -36,3 +36,4 @@ a795304eb4331a31d00a0835e22aa951e28a4b99 0.4.10.rc1 9b7f6f14a3502cb39f414d12a0f5003ab97bb3a7 0.4.10.rc2 7e19bcfc0c169939101b1657a21a15b6881fa0f7 0.4.10 +ce96bdac1f74612133a55c6df9f63dd7dd34230b 0.4.11.rc1 From pigeonhole at rename-it.nl Mon Jan 4 00:14:33 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Mon, 04 Jan 2016 01:14:33 +0100 Subject: dovecot-2.2-pigeonhole: Released v0.4.11.rc1 for Dovecot v2.2.21. Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/ce96bdac1f74 changeset: 2201:ce96bdac1f74 user: Stephan Bosch date: Mon Jan 04 01:14:15 2016 +0100 description: Released v0.4.11.rc1 for Dovecot v2.2.21. diffstat: NEWS | 28 ++++++++++++++++++++++++++++ configure.ac | 2 +- 2 files changed, 29 insertions(+), 1 deletions(-) diffs (44 lines): diff -r 8282b6cd6629 -r ce96bdac1f74 NEWS --- a/NEWS Mon Jan 04 00:19:02 2016 +0100 +++ b/NEWS Mon Jan 04 01:14:15 2016 +0100 @@ -1,3 +1,31 @@ +v0.4.11 xx-01-2016 Stephan Bosch + + - Sieve mime extension: Fixed the header :mime :anychild test to work properly + outside a foreverypart loop. + - Several fixes in message body part handling: + - Fixed assert failure occurring when text extraction is attempted on a + empty or broken text part. + - Fixed assert failure in handling of body parts that are converted to text. + - Fixed header unfolding for (mime) headers parsed from any mime part. + - Fixed trimming for (mime) headers parsed from any mime part. + - Fixed erroneous changes to the message part tree structure performed when + re-parsing the message. + - LDA Sieve plugin: Fixed logging of actions; sometimes the configured log + format was not followed. + - LDA Sieve plugin: Fixed bug in error handling of script storage + initialization. + - Sieve Extprograms plugin: Ignored ENOTCONN error in shutdown(fd, SHUT_WR) + call. + - Fixed duplication of discard actions in the script result. Each discard was + counted as a separate action, which means that action limit would be crossed + too early. + - Made sure that quota errors never get logged as errors in syslog. + - Fixed handling of implicit keep for a partially executed transaction that + yielded a temporary failure. + - Fixed handling of global errors. If master and user error handler were + identical, in some cases the log message could be lost. + - Fixed AIX compile issue in message body parser. + v0.4.10 13-12-2015 Stephan Bosch + Implemented the Sieve mime and foreverypart extensions (RFC 5703). These diff -r 8282b6cd6629 -r ce96bdac1f74 configure.ac --- a/configure.ac Mon Jan 04 00:19:02 2016 +0100 +++ b/configure.ac Mon Jan 04 01:14:15 2016 +0100 @@ -1,4 +1,4 @@ -AC_INIT([Pigeonhole], [0.4.10], [dovecot at dovecot.org], [dovecot-2.2-pigeonhole]) +AC_INIT([Pigeonhole], [0.4.11.rc1], [dovecot at dovecot.org], [dovecot-2.2-pigeonhole]) AC_DEFINE_UNQUOTED([PIGEONHOLE_ABI_VERSION], "0.4.ABIv1($PACKAGE_VERSION)", [Pigeonhole ABI version]) AC_CONFIG_AUX_DIR([.]) From pigeonhole at rename-it.nl Mon Jan 4 00:15:23 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Mon, 04 Jan 2016 01:15:23 +0100 Subject: dovecot-2.2-pigeonhole: Added signature for changeset ce96bdac1f74 Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/00608fdd9826 changeset: 2203:00608fdd9826 user: Stephan Bosch date: Mon Jan 04 01:19:02 2016 +0100 description: Added signature for changeset ce96bdac1f74 diffstat: .hgsigs | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r 61bcb1757a8f -r 00608fdd9826 .hgsigs --- a/.hgsigs Mon Jan 04 01:14:24 2016 +0100 +++ b/.hgsigs Mon Jan 04 01:19:02 2016 +0100 @@ -30,3 +30,4 @@ a795304eb4331a31d00a0835e22aa951e28a4b99 0 iQEcBAABAgAGBQJWYiaIAAoJEATWKx49+7T0iUMIALKlWbqPmkOoHpFkHrH4WB/whDXoHnEW4galT2s2a5dq6dNMHNCsLSwS776yxHoeRO4UvgeeehGFqYcFp64ZTps7clQvQC+7fopSduFLHz77A6LAPl7oUUDOBLElmSwLyUY1jJ/gSFyLEb2gfAKObWorUtSJ+IttnmJ4xYVuTOcJY+z6GoNgfQiS4eRs6wCiNMRb1CR7y14XcSxcg8F4htvTGbtLcv5JRZqZDqxFLoEFqLsT8eXdMeZvZY3Qf64BDRvsS/ZU98N4GImQZlpDvW5g/EQBYfsaRAfuw5y7OFOfvgCcoXh7p/Z8JXMqursR5AVr3VzeZOKUN92lhcVsBpk= 9b7f6f14a3502cb39f414d12a0f5003ab97bb3a7 0 iQEcBAABAgAGBQJWZhg6AAoJEATWKx49+7T08bYH/AyG5yzGVofqzozEede9mNZ2RTRHTDuAuDem2ftgJrTofHd6R/UMHYMbMzOjpo4tkMofBbtoovG7dbWzjqdUuxc646Tkvi85mFLatChfhh1situ45gEqDactLuU2PLXTFPRnAHadHcvxGlAHFOcaLsN9gp5cQlueDoIyM5k1u2v8DQSBeAQOq9ewsmLd749crm5gQ7Z0leqOm+MjztmgHllIC684wpJf1A86QrulUnBwigN/CgfLQUjNUgi8xAfOX3VxuP+SMKjulBABIR42oa0yokjV6NLaY+CaOCx6Ig+m6By1cwBwnTIN0AHz/oG3fz6N55IO+Lcxf91OMmfxmwE= 7e19bcfc0c169939101b1657a21a15b6881fa0f7 0 iQEcBAABAgAGBQJWbgkAAAoJEATWKx49+7T0ehkH/j39koLddRS3jvNCm2/8ytgiJrYcUpC40poJlZDI/oUX6WZWbxOEJia/TVwdWfQxX19y1UEzZJMusszlVP/JXqX3A4MS4SY4GZrH4kxYq9RRns0Gy6CuAQDgcLDePY52dWkK6JYjnO0BHiuTHM7V9bzS9lLdfSVu9KhdnQ7dKteATk2qwAN1iy9sMYPLwp9FTC5DqTt/NTm+FF3ZysgTVSdRL4JeBtZDyBYil0g6Z9my7iuahzKnAPFG8/8iGxWrs+q1zhe4MIER4yIAyae9g9pNgLLyodM6Mb4boTBYIODPkDARZBCDhp9Wg1QIg06CKJQn4K0SyUbval2zI5HymEg= +ce96bdac1f74612133a55c6df9f63dd7dd34230b 0 iQEcBAABAgAGBQJWibpyAAoJEATWKx49+7T0DWwH/0IH5BbhnecJ5xGvUBNXsuDOWgifjISQsbqIxthzcge0+UU/Key6BWNIdD2ruANW6V9NsGbbm+UamTw/P3CvlRhowUGNIggJhoeFEbfnRpXuzv76xUhAHoj/PYsltk5wvX2eTABsDQYv1fPE8cRWapMwniVCCICHlNCDL8bQceD4QoFy2DH4cGQ4rTLXHeU2Ki51Zs2w9Wnle5Yf6QTwd7HpezvFBZAHNkhSD+BrrLfaYW6DyOOh63kh4ta91cTLcbMWi4rUvbnVvUnJf7G/jQot+Desv3BN8gNgC9ux8ktqyhAgHtROYCQljuWtOKq1RWWvZ0SVlQ/WOKk6SzTzk4U= From pigeonhole at rename-it.nl Fri Jan 8 16:26:16 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 17:26:16 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: util: realpath: Make Coverity... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/6ddf62b87f60 changeset: 2205:6ddf62b87f60 user: Stephan Bosch date: Thu Jan 07 22:20:21 2016 +0100 description: lib-sieve: util: realpath: Make Coverity happier. diffstat: src/lib-sieve/util/realpath.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diffs (16 lines): diff -r 59a9b4f2d056 -r 6ddf62b87f60 src/lib-sieve/util/realpath.c --- a/src/lib-sieve/util/realpath.c Thu Jan 07 22:09:50 2016 +0100 +++ b/src/lib-sieve/util/realpath.c Thu Jan 07 22:20:21 2016 +0100 @@ -144,8 +144,11 @@ /* attempt to read the link */ if ((ret=readlink(npath, npath_link, lsize)) < 0) return -1; - if ((size_t)ret < lsize) + if ((size_t)ret < lsize) { + /* make static analyzers happy */ + npath_link[ret] = '\0'; break; + } /* sum of new symlink content length and path tail length may not exeed maximum */ From pigeonhole at rename-it.nl Fri Jan 8 16:26:16 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 17:26:16 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: util: Fixed source code inden... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/59a9b4f2d056 changeset: 2204:59a9b4f2d056 user: Stephan Bosch date: Thu Jan 07 22:09:50 2016 +0100 description: lib-sieve: util: Fixed source code indentation in realpath.c. diffstat: src/lib-sieve/util/realpath.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) diffs (68 lines): diff -r 00608fdd9826 -r 59a9b4f2d056 src/lib-sieve/util/realpath.c --- a/src/lib-sieve/util/realpath.c Mon Jan 04 01:19:02 2016 +0100 +++ b/src/lib-sieve/util/realpath.c Thu Jan 07 22:09:50 2016 +0100 @@ -67,7 +67,7 @@ /* find end of path segment */ for (segend = p; *segend != '\0' && *segend != '/'; segend++); - + if (segend == p) break; /* '\0' */ seglen = segend - p; @@ -87,11 +87,11 @@ /* allocate space if necessary */ if ((npath_pos + seglen + 1) >= (npath + asize)) { - ptrdiff_t npath_offset = npath_pos - npath; + ptrdiff_t npath_offset = npath_pos - npath; asize = nearest_power(npath_offset + seglen + 2); npath = t_buffer_reget(npath, asize); - npath_pos = npath + npath_offset; - } + npath_pos = npath + npath_offset; + } /* copy segment to normalized path */ (void)memmove(npath_pos, p, seglen); @@ -102,7 +102,7 @@ /* stat path up to here (segend points to tail) */ *npath_pos = '\0'; if (lstat(npath, &st) < 0) - return -1; + return -1; if (S_ISLNK (st.st_mode)) { /* symlink */ @@ -112,7 +112,7 @@ ssize_t ret; /* limit link dereferences */ - if (++link_count > REALPATH_MAX_SYMLINKS) { + if (++link_count > REALPATH_MAX_SYMLINKS) { errno = ELOOP; return -1; } @@ -129,7 +129,7 @@ asize = nearest_power((npath_offset + espace + lsize) + 1); lsize = asize - (npath_offset + espace); npath = t_buffer_reget(npath, asize); - npath_pos = npath + npath_offset; + npath_pos = npath + npath_offset; } if (ltlen > 0) { @@ -146,10 +146,10 @@ return -1; if ((size_t)ret < lsize) break; - + /* sum of new symlink content length and path tail length may not - exeed maximum */ - if ((size_t)(ret + tlen) >= REALPATH_MAX_PATH) { + exeed maximum */ + if ((size_t)(ret + tlen) >= REALPATH_MAX_PATH) { errno = ENAMETOOLONG; return -1; } From pigeonhole at rename-it.nl Fri Jan 8 19:02:54 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:02:54 +0100 Subject: dovecot-2.2-pigeonhole: Added tag 0.4.11 for changeset 80146e7670e9 Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/0ad0d66b1127 changeset: 2207:0ad0d66b1127 user: Stephan Bosch date: Fri Jan 08 19:15:44 2016 +0100 description: Added tag 0.4.11 for changeset 80146e7670e9 diffstat: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r 80146e7670e9 -r 0ad0d66b1127 .hgtags --- a/.hgtags Fri Jan 08 19:15:33 2016 +0100 +++ b/.hgtags Fri Jan 08 19:15:44 2016 +0100 @@ -37,3 +37,4 @@ 9b7f6f14a3502cb39f414d12a0f5003ab97bb3a7 0.4.10.rc2 7e19bcfc0c169939101b1657a21a15b6881fa0f7 0.4.10 ce96bdac1f74612133a55c6df9f63dd7dd34230b 0.4.11.rc1 +80146e7670e9615acd20a0c8748c66b19c458de5 0.4.11 From pigeonhole at rename-it.nl Fri Jan 8 19:02:54 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:02:54 +0100 Subject: dovecot-2.2-pigeonhole: Released v0.4.11 for Dovecot v2.2.21. Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/80146e7670e9 changeset: 2206:80146e7670e9 user: Stephan Bosch date: Fri Jan 08 19:15:33 2016 +0100 description: Released v0.4.11 for Dovecot v2.2.21. diffstat: NEWS | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diffs (18 lines): diff -r 6ddf62b87f60 -r 80146e7670e9 NEWS --- a/NEWS Thu Jan 07 22:20:21 2016 +0100 +++ b/NEWS Fri Jan 08 19:15:33 2016 +0100 @@ -1,4 +1,4 @@ -v0.4.11 xx-01-2016 Stephan Bosch +v0.4.11 08-01-2016 Stephan Bosch - Sieve mime extension: Fixed the header :mime :anychild test to work properly outside a foreverypart loop. diff -r 6ddf62b87f60 -r 80146e7670e9 configure.ac --- a/configure.ac Thu Jan 07 22:20:21 2016 +0100 +++ b/configure.ac Fri Jan 08 19:15:33 2016 +0100 @@ -1,4 +1,4 @@ -AC_INIT([Pigeonhole], [0.4.11.rc1], [dovecot at dovecot.org], [dovecot-2.2-pigeonhole]) +AC_INIT([Pigeonhole], [0.4.11], [dovecot at dovecot.org], [dovecot-2.2-pigeonhole]) AC_DEFINE_UNQUOTED([PIGEONHOLE_ABI_VERSION], "0.4.ABIv1($PACKAGE_VERSION)", [Pigeonhole ABI version]) AC_CONFIG_AUX_DIR([.]) From pigeonhole at rename-it.nl Fri Jan 8 19:04:30 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:04:30 +0100 Subject: dovecot-2.2-pigeonhole: Added signature for changeset 80146e7670e9 Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/7c9e740b8653 changeset: 2208:7c9e740b8653 user: Stephan Bosch date: Fri Jan 08 20:07:51 2016 +0100 description: Added signature for changeset 80146e7670e9 diffstat: .hgsigs | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff -r 0ad0d66b1127 -r 7c9e740b8653 .hgsigs --- a/.hgsigs Fri Jan 08 19:15:44 2016 +0100 +++ b/.hgsigs Fri Jan 08 20:07:51 2016 +0100 @@ -31,3 +31,4 @@ 9b7f6f14a3502cb39f414d12a0f5003ab97bb3a7 0 iQEcBAABAgAGBQJWZhg6AAoJEATWKx49+7T08bYH/AyG5yzGVofqzozEede9mNZ2RTRHTDuAuDem2ftgJrTofHd6R/UMHYMbMzOjpo4tkMofBbtoovG7dbWzjqdUuxc646Tkvi85mFLatChfhh1situ45gEqDactLuU2PLXTFPRnAHadHcvxGlAHFOcaLsN9gp5cQlueDoIyM5k1u2v8DQSBeAQOq9ewsmLd749crm5gQ7Z0leqOm+MjztmgHllIC684wpJf1A86QrulUnBwigN/CgfLQUjNUgi8xAfOX3VxuP+SMKjulBABIR42oa0yokjV6NLaY+CaOCx6Ig+m6By1cwBwnTIN0AHz/oG3fz6N55IO+Lcxf91OMmfxmwE= 7e19bcfc0c169939101b1657a21a15b6881fa0f7 0 iQEcBAABAgAGBQJWbgkAAAoJEATWKx49+7T0ehkH/j39koLddRS3jvNCm2/8ytgiJrYcUpC40poJlZDI/oUX6WZWbxOEJia/TVwdWfQxX19y1UEzZJMusszlVP/JXqX3A4MS4SY4GZrH4kxYq9RRns0Gy6CuAQDgcLDePY52dWkK6JYjnO0BHiuTHM7V9bzS9lLdfSVu9KhdnQ7dKteATk2qwAN1iy9sMYPLwp9FTC5DqTt/NTm+FF3ZysgTVSdRL4JeBtZDyBYil0g6Z9my7iuahzKnAPFG8/8iGxWrs+q1zhe4MIER4yIAyae9g9pNgLLyodM6Mb4boTBYIODPkDARZBCDhp9Wg1QIg06CKJQn4K0SyUbval2zI5HymEg= ce96bdac1f74612133a55c6df9f63dd7dd34230b 0 iQEcBAABAgAGBQJWibpyAAoJEATWKx49+7T0DWwH/0IH5BbhnecJ5xGvUBNXsuDOWgifjISQsbqIxthzcge0+UU/Key6BWNIdD2ruANW6V9NsGbbm+UamTw/P3CvlRhowUGNIggJhoeFEbfnRpXuzv76xUhAHoj/PYsltk5wvX2eTABsDQYv1fPE8cRWapMwniVCCICHlNCDL8bQceD4QoFy2DH4cGQ4rTLXHeU2Ki51Zs2w9Wnle5Yf6QTwd7HpezvFBZAHNkhSD+BrrLfaYW6DyOOh63kh4ta91cTLcbMWi4rUvbnVvUnJf7G/jQot+Desv3BN8gNgC9ux8ktqyhAgHtROYCQljuWtOKq1RWWvZ0SVlQ/WOKk6SzTzk4U= +80146e7670e9615acd20a0c8748c66b19c458de5 0 iQEcBAABAgAGBQJWkAkAAAoJEATWKx49+7T0ZO0IAKd8dRlDBzP3k7b4UW/jZ/vFJOcFOu3H3K5bURi6W/fGy2lmQfWCnDFKqGsMaq9rctUwpeaXYumSY9cBRAan5HBi1b0zzNxbl2assBGPjX2UEVarBgypL/NLcEWF/YVUDj8/XkSXGCbDxLBwPTWrN0eQQqMP6sFYosBCsh+3qNhbwXkvWeX0nBywOJTvrYGuBFrW1F+3+L+S1t/C+89EM84C/iRSWuMjpL/i0Fp3Ho/9vBQOa3V9ygFcwXDMg0tvi9TzHh5ESLFsettCWSpoWFxRFtJEMG4YKWsPAElYCezwgkEFD2oW6SbCpoWVToPNUEvJGYs925lOOvJp1CqsrPU= From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Cleaned up command definition... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/08a93ad9f84f changeset: 2210:08a93ad9f84f user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: Cleaned up command definitions using newer C99 syntax. diffstat: src/lib-sieve/cmd-discard.c | 13 +- src/lib-sieve/cmd-if.c | 52 ++++++----- src/lib-sieve/cmd-keep.c | 13 +- src/lib-sieve/cmd-redirect.c | 16 +- src/lib-sieve/cmd-require.c | 13 +- src/lib-sieve/cmd-stop.c | 16 +- src/lib-sieve/ext-envelope.c | 18 ++-- src/lib-sieve/ext-fileinto.c | 16 +- src/lib-sieve/ext-reject.c | 32 +++--- src/lib-sieve/plugins/body/tst-body.c | 18 ++-- src/lib-sieve/plugins/date/tst-date.c | 36 ++++---- src/lib-sieve/plugins/duplicate/tst-duplicate.c | 15 +- src/lib-sieve/plugins/editheader/cmd-addheader.c | 18 ++-- src/lib-sieve/plugins/editheader/cmd-deleteheader.c | 19 ++-- src/lib-sieve/plugins/enotify/cmd-notify.c | 19 ++-- src/lib-sieve/plugins/enotify/tst-notify-method-capability.c | 18 ++-- src/lib-sieve/plugins/enotify/tst-valid-notify-method.c | 16 +- src/lib-sieve/plugins/environment/tst-environment.c | 18 ++-- src/lib-sieve/plugins/ihave/cmd-error.c | 16 +- src/lib-sieve/plugins/ihave/tst-ihave.c | 15 +- src/lib-sieve/plugins/imap4flags/cmd-flag.c | 51 +++++------ src/lib-sieve/plugins/imap4flags/ext-imapflags.c | 26 +++-- src/lib-sieve/plugins/imap4flags/tst-hasflag.c | 19 ++-- src/lib-sieve/plugins/include/cmd-global.c | 48 +++++----- src/lib-sieve/plugins/include/cmd-include.c | 19 ++-- src/lib-sieve/plugins/include/cmd-return.c | 13 +- src/lib-sieve/plugins/mailbox/tst-mailboxexists.c | 16 +- src/lib-sieve/plugins/metadata/tst-metadata.c | 36 ++++---- src/lib-sieve/plugins/metadata/tst-metadataexists.c | 33 +++--- src/lib-sieve/plugins/mime/cmd-break.c | 19 ++-- src/lib-sieve/plugins/mime/cmd-foreverypart.c | 19 ++-- src/lib-sieve/plugins/notify/cmd-denotify.c | 19 ++-- src/lib-sieve/plugins/notify/cmd-notify.c | 19 ++-- src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c | 36 ++++---- src/lib-sieve/plugins/vacation/cmd-vacation.c | 19 ++-- src/lib-sieve/plugins/variables/cmd-set.c | 19 ++-- src/lib-sieve/plugins/variables/tst-string.c | 18 ++-- src/lib-sieve/plugins/vnd.dovecot/debug/cmd-debug-log.c | 16 +- src/lib-sieve/sieve-commands.h | 2 +- src/lib-sieve/sieve-validator.c | 11 +- src/lib-sieve/tst-address.c | 18 ++-- src/lib-sieve/tst-allof.c | 15 +- src/lib-sieve/tst-anyof.c | 15 +- src/lib-sieve/tst-exists.c | 17 +-- src/lib-sieve/tst-header.c | 18 ++-- src/lib-sieve/tst-not.c | 15 +- src/lib-sieve/tst-size.c | 19 ++-- src/lib-sieve/tst-truefalse.c | 30 +++--- src/plugins/sieve-extprograms/cmd-execute.c | 19 ++-- src/plugins/sieve-extprograms/cmd-filter.c | 17 +-- src/plugins/sieve-extprograms/cmd-pipe.c | 19 ++-- src/testsuite/cmd-test-binary.c | 34 +++---- src/testsuite/cmd-test-config.c | 47 +++++----- src/testsuite/cmd-test-fail.c | 16 +- src/testsuite/cmd-test-imap-metadata.c | 18 ++-- src/testsuite/cmd-test-mailbox.c | 32 +++--- src/testsuite/cmd-test-message.c | 32 +++--- src/testsuite/cmd-test-result.c | 26 +++-- src/testsuite/cmd-test-set.c | 16 +- src/testsuite/cmd-test.c | 16 +- src/testsuite/tst-test-error.c | 18 ++-- src/testsuite/tst-test-multiscript.c | 16 +- src/testsuite/tst-test-result-action.c | 18 ++-- src/testsuite/tst-test-result-execute.c | 13 +- src/testsuite/tst-test-script-compile.c | 16 +- src/testsuite/tst-test-script-run.c | 15 +- 66 files changed, 706 insertions(+), 684 deletions(-) diffs (truncated from 2195 to 300 lines): diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-discard.c --- a/src/lib-sieve/cmd-discard.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-discard.c Fri Jan 08 20:49:39 2016 +0100 @@ -26,12 +26,13 @@ struct sieve_command *ctx ATTR_UNUSED); const struct sieve_command_def cmd_discard = { - "discard", - SCT_COMMAND, - 0, 0, FALSE, FALSE, - NULL, NULL, NULL, NULL, - cmd_discard_generate, - NULL + .identifier = "discard", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .generate = cmd_discard_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-if.c --- a/src/lib-sieve/cmd-if.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-if.c Fri Jan 08 20:49:39 2016 +0100 @@ -31,14 +31,15 @@ */ const struct sieve_command_def cmd_if = { - "if", - SCT_COMMAND, - 0, 1, TRUE, TRUE, - NULL, NULL, - cmd_if_validate, - cmd_if_validate_const, - cmd_if_generate, - NULL + .identifier = "if", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 1, + .block_allowed = TRUE, + .block_required = TRUE, + .validate = cmd_if_validate, + .validate_const = cmd_if_validate_const, + .generate = cmd_if_generate }; /* ElsIf command @@ -48,14 +49,15 @@ */ const struct sieve_command_def cmd_elsif = { - "elsif", - SCT_COMMAND, - 0, 1, TRUE, TRUE, - NULL, NULL, - cmd_elsif_validate, - cmd_if_validate_const, - cmd_if_generate, - NULL + .identifier = "elsif", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 1, + .block_allowed = TRUE, + .block_required = TRUE, + .validate = cmd_elsif_validate, + .validate_const = cmd_if_validate_const, + .generate = cmd_if_generate }; /* Else command @@ -64,16 +66,16 @@ * else */ - const struct sieve_command_def cmd_else = { - "else", - SCT_COMMAND, - 0, 0, TRUE, TRUE, - NULL, NULL, - cmd_elsif_validate, - cmd_if_validate_const, - cmd_else_generate, - NULL + .identifier = "else", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 0, + .block_allowed = TRUE, + .block_required = TRUE, + .validate = cmd_elsif_validate, + .validate_const = cmd_if_validate_const, + .generate = cmd_else_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-keep.c --- a/src/lib-sieve/cmd-keep.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-keep.c Fri Jan 08 20:49:39 2016 +0100 @@ -25,12 +25,13 @@ (const struct sieve_codegen_env *cgenv, struct sieve_command *cmd); const struct sieve_command_def cmd_keep = { - "keep", - SCT_COMMAND, - 0, 0, FALSE, FALSE, - NULL, NULL, NULL, NULL, - cmd_keep_generate, - NULL + .identifier = "keep", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .generate = cmd_keep_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-redirect.c --- a/src/lib-sieve/cmd-redirect.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-redirect.c Fri Jan 08 20:49:39 2016 +0100 @@ -48,14 +48,14 @@ (const struct sieve_codegen_env *cgenv, struct sieve_command *cmd); const struct sieve_command_def cmd_redirect = { - "redirect", - SCT_COMMAND, - 1, 0, FALSE, FALSE, - NULL, NULL, - cmd_redirect_validate, - NULL, - cmd_redirect_generate, - NULL + .identifier = "redirect", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_redirect_validate, + .generate = cmd_redirect_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-require.c --- a/src/lib-sieve/cmd-require.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-require.c Fri Jan 08 20:49:39 2016 +0100 @@ -20,12 +20,13 @@ (struct sieve_validator *valdtr, struct sieve_command *cmd); const struct sieve_command_def cmd_require = { - "require", - SCT_COMMAND, - 1, 0, FALSE, FALSE, - NULL, NULL, - cmd_require_validate, - NULL, NULL, NULL + .identifier = "require", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_require_validate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/cmd-stop.c --- a/src/lib-sieve/cmd-stop.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-stop.c Fri Jan 08 20:49:39 2016 +0100 @@ -21,14 +21,14 @@ (struct sieve_validator *valdtr, struct sieve_command *cmd); const struct sieve_command_def cmd_stop = { - "stop", - SCT_COMMAND, - 0, 0, FALSE, FALSE, - NULL, NULL, - cmd_stop_validate, - NULL, - cmd_stop_generate, - NULL + .identifier = "stop", + .type = SCT_COMMAND, + .positional_args = 0, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_stop_validate, + .generate = cmd_stop_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/ext-envelope.c --- a/src/lib-sieve/ext-envelope.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-envelope.c Fri Jan 08 20:49:39 2016 +0100 @@ -79,15 +79,15 @@ (const struct sieve_codegen_env *cgenv, struct sieve_command *ctx); static const struct sieve_command_def envelope_test = { - "envelope", - SCT_TEST, - 2, 0, FALSE, FALSE, - tst_envelope_registered, - NULL, - tst_envelope_validate, - NULL, - tst_envelope_generate, - NULL + .identifier = "envelope", + .type = SCT_TEST, + .positional_args= 2, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .registered = tst_envelope_registered, + .validate = tst_envelope_validate, + .generate = tst_envelope_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/ext-fileinto.c --- a/src/lib-sieve/ext-fileinto.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-fileinto.c Fri Jan 08 20:49:39 2016 +0100 @@ -71,14 +71,14 @@ (const struct sieve_codegen_env *cgenv, struct sieve_command *ctx); static const struct sieve_command_def fileinto_command = { - "fileinto", - SCT_COMMAND, - 1, 0, FALSE, FALSE, - NULL, NULL, - cmd_fileinto_validate, - NULL, - cmd_fileinto_generate, - NULL + .identifier = "fileinto", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_fileinto_validate, + .generate = cmd_fileinto_generate }; /* diff -r 65bc76bb3345 -r 08a93ad9f84f src/lib-sieve/ext-reject.c --- a/src/lib-sieve/ext-reject.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-reject.c Fri Jan 08 20:49:39 2016 +0100 @@ -108,14 +108,14 @@ */ static const struct sieve_command_def reject_command = { - "reject", - SCT_COMMAND, - 1, 0, FALSE, FALSE, - NULL, NULL, - cmd_reject_validate, - NULL, - cmd_reject_generate, - NULL + .identifier = "reject", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_reject_validate, + .generate = cmd_reject_generate }; /* EReject command @@ -125,14 +125,14 @@ */ static const struct sieve_command_def ereject_command = { - "ereject", - SCT_COMMAND, - 1, 0, FALSE, FALSE, - NULL, NULL, - cmd_reject_validate, - NULL, - cmd_reject_generate, - NULL + .identifier = "ereject", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .validate = cmd_reject_validate, + .generate = cmd_reject_generate, }; From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Cleaned up byte code operand ... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/63d838bb5184 changeset: 2211:63d838bb5184 user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: Cleaned up byte code operand and operation definitions using newer C99 syntax. diffstat: src/lib-sieve/cmd-discard.c | 9 +- src/lib-sieve/cmd-keep.c | 9 +- src/lib-sieve/cmd-redirect.c | 9 +- src/lib-sieve/cmd-stop.c | 8 +- src/lib-sieve/ext-envelope.c | 9 +- src/lib-sieve/ext-fileinto.c | 9 +- src/lib-sieve/ext-reject.c | 18 +- src/lib-sieve/plugins/body/tst-body.c | 9 +- src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c | 9 +- src/lib-sieve/plugins/copy/ext-copy.c | 9 +- src/lib-sieve/plugins/date/tst-date.c | 20 +- src/lib-sieve/plugins/duplicate/tst-duplicate.c | 8 +- src/lib-sieve/plugins/editheader/cmd-addheader.c | 10 +- src/lib-sieve/plugins/editheader/cmd-deleteheader.c | 10 +- src/lib-sieve/plugins/enotify/cmd-notify.c | 10 +- src/lib-sieve/plugins/enotify/tst-notify-method-capability.c | 10 +- src/lib-sieve/plugins/enotify/tst-valid-notify-method.c | 10 +- src/lib-sieve/plugins/enotify/vmodf-encodeurl.c | 9 +- src/lib-sieve/plugins/environment/tst-environment.c | 9 +- src/lib-sieve/plugins/ihave/cmd-error.c | 9 +- src/lib-sieve/plugins/imap4flags/cmd-flag.c | 30 ++-- src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.h | 8 +- src/lib-sieve/plugins/imap4flags/tag-flags.c | 9 +- src/lib-sieve/plugins/imap4flags/tst-hasflag.c | 10 +- src/lib-sieve/plugins/include/cmd-global.c | 10 +- src/lib-sieve/plugins/include/cmd-include.c | 10 +- src/lib-sieve/plugins/include/cmd-return.c | 9 +- src/lib-sieve/plugins/index/tag-index.c | 9 +- src/lib-sieve/plugins/mailbox/tag-mailbox-create.c | 9 +- src/lib-sieve/plugins/mailbox/tst-mailboxexists.c | 9 +- src/lib-sieve/plugins/metadata/tst-metadata.c | 20 +- src/lib-sieve/plugins/metadata/tst-metadataexists.c | 20 +- src/lib-sieve/plugins/mime/cmd-break.c | 10 +- src/lib-sieve/plugins/mime/cmd-foreverypart.c | 20 +- src/lib-sieve/plugins/mime/tag-mime.c | 9 +- src/lib-sieve/plugins/notify/cmd-denotify.c | 10 +- src/lib-sieve/plugins/notify/cmd-notify.c | 10 +- src/lib-sieve/plugins/regex/ext-regex-common.c | 11 +- src/lib-sieve/plugins/relational/ext-relational-common.c | 17 +- src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c | 19 +- src/lib-sieve/plugins/subaddress/ext-subaddress.c | 8 +- src/lib-sieve/plugins/vacation/cmd-vacation.c | 9 +- src/lib-sieve/plugins/variables/cmd-set.c | 10 +- src/lib-sieve/plugins/variables/ext-variables-modifiers.c | 10 +- src/lib-sieve/plugins/variables/ext-variables-namespaces.c | 10 +- src/lib-sieve/plugins/variables/ext-variables-operands.c | 20 +- src/lib-sieve/plugins/variables/tst-string.c | 10 +- src/lib-sieve/plugins/vnd.dovecot/debug/cmd-debug-log.c | 9 +- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c | 9 +- src/lib-sieve/sieve-address-parts.c | 8 +- src/lib-sieve/sieve-code.c | 65 ++++----- src/lib-sieve/sieve-comparators.c | 9 +- src/lib-sieve/sieve-match-types.c | 9 +- src/lib-sieve/tst-address.c | 9 +- src/lib-sieve/tst-exists.c | 9 +- src/lib-sieve/tst-header.c | 9 +- src/lib-sieve/tst-size.c | 18 +- src/plugins/sieve-extprograms/cmd-execute.c | 8 +- src/plugins/sieve-extprograms/cmd-filter.c | 8 +- src/plugins/sieve-extprograms/cmd-pipe.c | 7 +- src/testsuite/cmd-test-binary.c | 20 +- src/testsuite/cmd-test-config.c | 30 ++-- src/testsuite/cmd-test-fail.c | 10 +- src/testsuite/cmd-test-imap-metadata.c | 10 +- src/testsuite/cmd-test-mailbox.c | 20 +- src/testsuite/cmd-test-message.c | 30 ++-- src/testsuite/cmd-test-result.c | 18 +- src/testsuite/cmd-test-set.c | 10 +- src/testsuite/cmd-test.c | 19 +- src/testsuite/testsuite-objects.c | 10 +- src/testsuite/testsuite-substitutions.c | 10 +- src/testsuite/testsuite-variables.c | 10 +- src/testsuite/tst-test-error.c | 10 +- src/testsuite/tst-test-multiscript.c | 10 +- src/testsuite/tst-test-result-action.c | 10 +- src/testsuite/tst-test-result-execute.c | 9 +- src/testsuite/tst-test-script-compile.c | 10 +- src/testsuite/tst-test-script-run.c | 10 +- 78 files changed, 465 insertions(+), 507 deletions(-) diffs (truncated from 1900 to 300 lines): diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/cmd-discard.c --- a/src/lib-sieve/cmd-discard.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-discard.c Fri Jan 08 20:49:39 2016 +0100 @@ -45,11 +45,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def cmd_discard_operation = { - "DISCARD", - NULL, - SIEVE_OPERATION_DISCARD, - cmd_discard_operation_dump, - cmd_discard_operation_execute + .mnemonic = "DISCARD", + .code = SIEVE_OPERATION_DISCARD, + .dump = cmd_discard_operation_dump, + .execute = cmd_discard_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/cmd-keep.c --- a/src/lib-sieve/cmd-keep.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-keep.c Fri Jan 08 20:49:39 2016 +0100 @@ -44,11 +44,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def cmd_keep_operation = { - "KEEP", - NULL, - SIEVE_OPERATION_KEEP, - cmd_keep_operation_dump, - cmd_keep_operation_execute + .mnemonic = "KEEP", + .code = SIEVE_OPERATION_KEEP, + .dump = cmd_keep_operation_dump, + .execute = cmd_keep_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/cmd-redirect.c --- a/src/lib-sieve/cmd-redirect.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-redirect.c Fri Jan 08 20:49:39 2016 +0100 @@ -68,11 +68,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def cmd_redirect_operation = { - "REDIRECT", - NULL, - SIEVE_OPERATION_REDIRECT, - cmd_redirect_operation_dump, - cmd_redirect_operation_execute + .mnemonic = "REDIRECT", + .code = SIEVE_OPERATION_REDIRECT, + .dump = cmd_redirect_operation_dump, + .execute = cmd_redirect_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/cmd-stop.c --- a/src/lib-sieve/cmd-stop.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmd-stop.c Fri Jan 08 20:49:39 2016 +0100 @@ -39,11 +39,9 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def cmd_stop_operation = { - "STOP", - NULL, - SIEVE_OPERATION_STOP, - NULL, - opc_stop_execute + .mnemonic = "STOP", + .code = SIEVE_OPERATION_STOP, + .execute = opc_stop_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/ext-envelope.c --- a/src/lib-sieve/ext-envelope.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-envelope.c Fri Jan 08 20:49:39 2016 +0100 @@ -100,11 +100,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def envelope_operation = { - "ENVELOPE", - &envelope_extension, - 0, - ext_envelope_operation_dump, - ext_envelope_operation_execute + .mnemonic = "ENVELOPE", + .ext_def = &envelope_extension, + .dump = ext_envelope_operation_dump, + .execute = ext_envelope_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/ext-fileinto.c --- a/src/lib-sieve/ext-fileinto.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-fileinto.c Fri Jan 08 20:49:39 2016 +0100 @@ -91,11 +91,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def fileinto_operation = { - "FILEINTO", - &fileinto_extension, - 0, - ext_fileinto_operation_dump, - ext_fileinto_operation_execute + .mnemonic = "FILEINTO", + .ext_def = &fileinto_extension, + .dump = ext_fileinto_operation_dump, + .execute = ext_fileinto_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/ext-reject.c --- a/src/lib-sieve/ext-reject.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/ext-reject.c Fri Jan 08 20:49:39 2016 +0100 @@ -149,21 +149,19 @@ /* Reject operation */ static const struct sieve_operation_def reject_operation = { - "REJECT", - &reject_extension, - 0, - ext_reject_operation_dump, - ext_reject_operation_execute + .mnemonic = "REJECT", + .ext_def = &reject_extension, + .dump = ext_reject_operation_dump, + .execute = ext_reject_operation_execute }; /* EReject operation */ static const struct sieve_operation_def ereject_operation = { - "EREJECT", - &ereject_extension, - 0, - ext_reject_operation_dump, - ext_reject_operation_execute + .mnemonic = "EREJECT", + .ext_def = &ereject_extension, + .dump = ext_reject_operation_dump, + .execute = ext_reject_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/body/tst-body.c --- a/src/lib-sieve/plugins/body/tst-body.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/body/tst-body.c Fri Jan 08 20:49:39 2016 +0100 @@ -56,11 +56,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def body_operation = { - "body", - &body_extension, - 0, - ext_body_operation_dump, - ext_body_operation_execute + .mnemonic = "body", + .ext_def = &body_extension, + .dump = ext_body_operation_dump, + .execute = ext_body_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c --- a/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c Fri Jan 08 20:49:39 2016 +0100 @@ -58,11 +58,10 @@ SIEVE_EXT_DEFINE_COMPARATOR(i_ascii_numeric_comparator); static const struct sieve_operand_def my_comparator_operand = { - "comparator-i;ascii-numeric", - &comparator_i_ascii_numeric_extension, - 0, - &sieve_comparator_operand_class, - &ext_comparators + .name = "comparator-i;ascii-numeric", + .ext_def = &comparator_i_ascii_numeric_extension, + .class = &sieve_comparator_operand_class, + .interface = &ext_comparators }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/copy/ext-copy.c --- a/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:49:39 2016 +0100 @@ -105,11 +105,10 @@ SIEVE_EXT_DEFINE_SIDE_EFFECT(copy_side_effect); static const struct sieve_operand_def copy_side_effect_operand = { - "copy operand", - ©_extension, - 0, - &sieve_side_effect_operand_class, - &ext_side_effects + .name = "copy operand", + .ext_def = ©_extension, + .class = &sieve_side_effect_operand_class, + .interface = &ext_side_effects }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/date/tst-date.c --- a/src/lib-sieve/plugins/date/tst-date.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/date/tst-date.c Fri Jan 08 20:49:39 2016 +0100 @@ -115,19 +115,19 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def date_operation = { - "DATE", - &date_extension, - EXT_DATE_OPERATION_DATE, - tst_date_operation_dump, - tst_date_operation_execute + .mnemonic = "DATE", + .ext_def = &date_extension, + .code = EXT_DATE_OPERATION_DATE, + .dump = tst_date_operation_dump, + .execute = tst_date_operation_execute }; const struct sieve_operation_def currentdate_operation = { - "CURRENTDATE", - &date_extension, - EXT_DATE_OPERATION_CURRENTDATE, - tst_date_operation_dump, - tst_date_operation_execute + .mnemonic = "CURRENTDATE", + .ext_def = &date_extension, + .code = EXT_DATE_OPERATION_CURRENTDATE, + .dump = tst_date_operation_dump, + .execute = tst_date_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/duplicate/tst-duplicate.c --- a/src/lib-sieve/plugins/duplicate/tst-duplicate.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/duplicate/tst-duplicate.c Fri Jan 08 20:49:39 2016 +0100 @@ -102,10 +102,10 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def tst_duplicate_operation = { - "DUPLICATE", &duplicate_extension, - 0, - tst_duplicate_operation_dump, - tst_duplicate_operation_execute + .mnemonic = "DUPLICATE", + .ext_def = &duplicate_extension, + .dump = tst_duplicate_operation_dump, + .execute = tst_duplicate_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/editheader/cmd-addheader.c --- a/src/lib-sieve/plugins/editheader/cmd-addheader.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/editheader/cmd-addheader.c Fri Jan 08 20:49:39 2016 +0100 @@ -75,11 +75,11 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def addheader_operation = { - "ADDHEADER", - &editheader_extension, - EXT_EDITHEADER_OPERATION_ADDHEADER, - cmd_addheader_operation_dump, - cmd_addheader_operation_execute + .mnemonic = "ADDHEADER", + .ext_def = &editheader_extension, + .code = EXT_EDITHEADER_OPERATION_ADDHEADER, + .dump = cmd_addheader_operation_dump, + .execute = cmd_addheader_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/editheader/cmd-deleteheader.c --- a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c Fri Jan 08 20:49:39 2016 +0100 @@ -94,11 +94,11 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); const struct sieve_operation_def deleteheader_operation = { - "DELETEHEADER", - &editheader_extension, - EXT_EDITHEADER_OPERATION_DELETEHEADER, - cmd_deleteheader_operation_dump, - cmd_deleteheader_operation_execute + .mnemonic = "DELETEHEADER", + .ext_def = &editheader_extension, + .code = EXT_EDITHEADER_OPERATION_DELETEHEADER, + .dump = cmd_deleteheader_operation_dump, + .execute = cmd_deleteheader_operation_execute }; /* diff -r 08a93ad9f84f -r 63d838bb5184 src/lib-sieve/plugins/enotify/cmd-notify.c --- a/src/lib-sieve/plugins/enotify/cmd-notify.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/enotify/cmd-notify.c Fri Jan 08 20:49:39 2016 +0100 @@ -109,11 +109,11 @@ (const struct sieve_runtime_env *renv, sieve_size_t *address); From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: foreverypart extension: Impro... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/f7b5ea4ddd48 changeset: 2214:f7b5ea4ddd48 user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: foreverypart extension: Improved byte code generated around break command. Prevents useless jumps after break operation. diffstat: src/lib-sieve/plugins/mime/cmd-break.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (11 lines): diff -r 1f8ce0c29ef4 -r f7b5ea4ddd48 src/lib-sieve/plugins/mime/cmd-break.c --- a/src/lib-sieve/plugins/mime/cmd-break.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/mime/cmd-break.c Fri Jan 08 20:49:39 2016 +0100 @@ -184,6 +184,7 @@ return FALSE; } + sieve_command_exit_block_unconditionally(cmd); return TRUE; } From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: message body: Amended messaag... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/46a974ebd896 changeset: 2215:46a974ebd896 user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: message body: Amended messaage part API with some more access functions. Added support for getting message part information and content. diffstat: src/lib-sieve/sieve-message.c | 74 +++++++++++++++++++++++++++++++++++++++++++ src/lib-sieve/sieve-message.h | 28 +++++++++++++++- 2 files changed, 101 insertions(+), 1 deletions(-) diffs (131 lines): diff -r f7b5ea4ddd48 -r 46a974ebd896 src/lib-sieve/sieve-message.c --- a/src/lib-sieve/sieve-message.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/sieve-message.c Fri Jan 08 20:49:39 2016 +0100 @@ -849,6 +849,80 @@ } /* + * Message part + */ + +struct sieve_message_part *sieve_message_part_parent +(struct sieve_message_part *mpart) +{ + return mpart->parent; +} + +struct sieve_message_part *sieve_message_part_next +(struct sieve_message_part *mpart) +{ + return mpart->next; +} + +struct sieve_message_part *sieve_message_part_children +(struct sieve_message_part *mpart) +{ + return mpart->children; +} + +const char *sieve_message_part_content_type +(struct sieve_message_part *mpart) +{ + return mpart->content_type; +} + +const char *sieve_message_part_content_disposition +(struct sieve_message_part *mpart) +{ + return mpart->content_disposition; +} + +int sieve_message_part_get_first_header +(struct sieve_message_part *mpart, const char *field, + const char **value_r) +{ + const struct sieve_message_header *headers; + unsigned int i, count; + + headers = array_get(&mpart->headers, &count); + for ( i = 0; i < count; i++ ) { + if ( strcasecmp( headers[i].name, field) == 0 ) { + i_assert( headers[i].value[headers[i].value_len] == '\0' ); + *value_r = (const char *)headers[i].value; + return 1; + } + } + + *value_r = NULL; + return 0; +} + +void sieve_message_part_get_data +(struct sieve_message_part *mpart, + struct sieve_message_part_data *data, bool text) +{ + memset(data, 0, sizeof(*data)); + data->content_type = mpart->content_type; + data->content_disposition = mpart->content_disposition; + + if ( !text ) { + data->content = mpart->decoded_body; + data->size = mpart->decoded_body_size; + } else if ( mpart->children != NULL ) { + data->content = ""; + data->size = 0; + } else { + data->content = mpart->text_body; + data->size = mpart->text_body_size; + } +} + +/* * Message body */ diff -r f7b5ea4ddd48 -r 46a974ebd896 src/lib-sieve/sieve-message.h --- a/src/lib-sieve/sieve-message.h Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/sieve-message.h Fri Jan 08 20:49:39 2016 +0100 @@ -204,9 +204,11 @@ bool mime_decode, struct sieve_stringlist **fields_r); /* - * Message body + * Message part */ +struct sieve_message_part; + struct sieve_message_part_data { const char *content_type; const char *content_disposition; @@ -215,6 +217,30 @@ unsigned long size; }; +struct sieve_message_part *sieve_message_part_parent + (struct sieve_message_part *mpart) ATTR_PURE; +struct sieve_message_part *sieve_message_part_next + (struct sieve_message_part *mpart) ATTR_PURE; +struct sieve_message_part *sieve_message_part_children + (struct sieve_message_part *mpart) ATTR_PURE; + +const char *sieve_message_part_content_type + (struct sieve_message_part *mpart) ATTR_PURE; +const char *sieve_message_part_content_disposition + (struct sieve_message_part *mpart) ATTR_PURE; + +int sieve_message_part_get_first_header + (struct sieve_message_part *mpart, const char *field, + const char **value_r); + +void sieve_message_part_get_data + (struct sieve_message_part *mpart, + struct sieve_message_part_data *data, bool text); + +/* + * Message body + */ + int sieve_message_body_get_content (const struct sieve_runtime_env *renv, const char * const *content_types, From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Cleaned up command argument d... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/65bc76bb3345 changeset: 2209:65bc76bb3345 user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: Cleaned up command argument definitions using newer C99 syntax. diffstat: src/lib-sieve/ext-encoded-character.c | 6 +- src/lib-sieve/plugins/body/tst-body.c | 24 +++----- src/lib-sieve/plugins/copy/ext-copy.c | 8 +- src/lib-sieve/plugins/date/tst-date.c | 16 ++--- src/lib-sieve/plugins/duplicate/tst-duplicate.c | 33 +++------- src/lib-sieve/plugins/editheader/cmd-addheader.c | 3 +- src/lib-sieve/plugins/editheader/cmd-deleteheader.c | 12 +-- src/lib-sieve/plugins/enotify/cmd-notify.c | 24 ++----- src/lib-sieve/plugins/imap4flags/tag-flags.c | 15 ++--- src/lib-sieve/plugins/include/cmd-include.c | 25 ++----- src/lib-sieve/plugins/index/tag-index.c | 15 +--- src/lib-sieve/plugins/mailbox/tag-mailbox-create.c | 8 +- src/lib-sieve/plugins/mime/cmd-break.c | 6 +- src/lib-sieve/plugins/mime/cmd-foreverypart.c | 6 +- src/lib-sieve/plugins/mime/tag-mime.c | 38 ++++-------- src/lib-sieve/plugins/notify/cmd-denotify.c | 7 +- src/lib-sieve/plugins/notify/cmd-notify.c | 24 ++----- src/lib-sieve/plugins/notify/ext-notify-common.c | 18 ++---- src/lib-sieve/plugins/spamvirustest/tst-spamvirustest.c | 6 +- src/lib-sieve/plugins/vacation/cmd-vacation.c | 42 ++++--------- src/lib-sieve/plugins/variables/cmd-set.c | 7 +- src/lib-sieve/plugins/variables/ext-variables-arguments.c | 18 ++--- src/lib-sieve/plugins/variables/ext-variables-namespaces.c | 5 +- src/lib-sieve/sieve-address-parts.c | 9 +- src/lib-sieve/sieve-commands.c | 18 ++--- src/lib-sieve/sieve-comparators.c | 8 +- src/lib-sieve/sieve-match-types.c | 9 +- src/lib-sieve/sieve-validator.c | 6 +- src/lib-sieve/tst-size.c | 12 +-- src/plugins/sieve-extprograms/cmd-execute.c | 22 ++---- src/plugins/sieve-extprograms/cmd-pipe.c | 3 +- src/testsuite/cmd-test-config.c | 6 +- src/testsuite/cmd-test-imap-metadata.c | 6 +- src/testsuite/cmd-test-message.c | 12 +-- src/testsuite/testsuite-arguments.c | 8 +- src/testsuite/testsuite-objects.c | 5 +- src/testsuite/testsuite-substitutions.c | 5 +- src/testsuite/tst-test-error.c | 6 +- src/testsuite/tst-test-result-action.c | 6 +- src/testsuite/tst-test-script-run.c | 3 +- 40 files changed, 181 insertions(+), 329 deletions(-) diffs (truncated from 1057 to 300 lines): diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/ext-encoded-character.c --- a/src/lib-sieve/ext-encoded-character.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/ext-encoded-character.c Fri Jan 08 20:49:39 2016 +0100 @@ -41,10 +41,8 @@ struct sieve_command *context); const struct sieve_argument_def encoded_string_argument = { - "@encoded-string", - NULL, - arg_encoded_string_validate, - NULL, NULL, NULL + .identifier = "@encoded-string", + .validate = arg_encoded_string_validate }; /* Parsing */ diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/body/tst-body.c --- a/src/lib-sieve/plugins/body/tst-body.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/body/tst-body.c Fri Jan 08 20:49:39 2016 +0100 @@ -87,27 +87,21 @@ /* Argument objects */ static const struct sieve_argument_def body_raw_tag = { - "raw", - NULL, - tag_body_transform_validate, - NULL, NULL, - tag_body_transform_generate + .identifier = "raw", + .validate = tag_body_transform_validate, + .generate = tag_body_transform_generate }; static const struct sieve_argument_def body_content_tag = { - "content", - NULL, - tag_body_transform_validate, - NULL, NULL, - tag_body_transform_generate + .identifier = "content", + .validate = tag_body_transform_validate, + .generate = tag_body_transform_generate }; static const struct sieve_argument_def body_text_tag = { - "text", - NULL, - tag_body_transform_validate, - NULL, NULL, - tag_body_transform_generate + .identifier = "text", + .validate = tag_body_transform_validate, + .generate = tag_body_transform_generate }; /* Argument implementation */ diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/copy/ext-copy.c --- a/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:49:39 2016 +0100 @@ -92,11 +92,9 @@ struct sieve_command *cmd); static const struct sieve_argument_def copy_tag = { - "copy", - NULL, - tag_copy_validate, - NULL, NULL, - tag_copy_generate + .identifier = "copy", + .validate = tag_copy_validate, + .generate = tag_copy_generate }; /* diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/date/tst-date.c --- a/src/lib-sieve/plugins/date/tst-date.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/date/tst-date.c Fri Jan 08 20:49:39 2016 +0100 @@ -94,19 +94,15 @@ /* Argument objects */ static const struct sieve_argument_def date_zone_tag = { - "zone", - NULL, - tag_zone_validate, - NULL, NULL, - tag_zone_generate + .identifier = "zone", + .validate = tag_zone_validate, + .generate = tag_zone_generate }; static const struct sieve_argument_def date_originalzone_tag = { - "originalzone", - NULL, - tag_zone_validate, - NULL, NULL, - tag_zone_generate + .identifier = "originalzone", + .validate = tag_zone_validate, + .generate = tag_zone_generate }; /* diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/duplicate/tst-duplicate.c --- a/src/lib-sieve/plugins/duplicate/tst-duplicate.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/duplicate/tst-duplicate.c Fri Jan 08 20:49:39 2016 +0100 @@ -52,43 +52,32 @@ struct sieve_command *cmd); static const struct sieve_argument_def duplicate_seconds_tag = { - "seconds", - NULL, - tst_duplicate_validate_number_tag, - NULL, NULL, NULL, + .identifier = "seconds", + .validate = tst_duplicate_validate_number_tag }; static const struct sieve_argument_def duplicate_header_tag = { - "header", - NULL, - tst_duplicate_validate_string_tag, - NULL, NULL, NULL + .identifier = "header", + .validate = tst_duplicate_validate_string_tag }; static const struct sieve_argument_def duplicate_uniqueid_tag = { - "uniqueid", - NULL, - tst_duplicate_validate_string_tag, - NULL, NULL, NULL + .identifier = "uniqueid", + .validate = tst_duplicate_validate_string_tag }; static const struct sieve_argument_def duplicate_value_tag = { - "value", /* vnd.dovecot.duplicate (deprecated) */ - NULL, - tst_duplicate_validate_string_tag, - NULL, NULL, NULL + .identifier = "value", /* vnd.dovecot.duplicate (deprecated) */ + .validate = tst_duplicate_validate_string_tag }; static const struct sieve_argument_def duplicate_handle_tag = { - "handle", - NULL, - tst_duplicate_validate_string_tag, - NULL, NULL, NULL + .identifier = "handle", + .validate = tst_duplicate_validate_string_tag }; static const struct sieve_argument_def duplicate_last_tag = { - "last", - NULL, NULL, NULL, NULL, NULL + .identifier = "last" }; /* Codes for optional arguments */ diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/editheader/cmd-addheader.c --- a/src/lib-sieve/plugins/editheader/cmd-addheader.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/editheader/cmd-addheader.c Fri Jan 08 20:49:39 2016 +0100 @@ -55,8 +55,7 @@ /* Argument objects */ static const struct sieve_argument_def addheader_last_tag = { - "last", - NULL, NULL, NULL, NULL, NULL + .identifier = "last" }; /* Codes for optional arguments */ diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/editheader/cmd-deleteheader.c --- a/src/lib-sieve/plugins/editheader/cmd-deleteheader.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/editheader/cmd-deleteheader.c Fri Jan 08 20:49:39 2016 +0100 @@ -69,17 +69,13 @@ /* Argument objects */ static const struct sieve_argument_def deleteheader_index_tag = { - "index", - NULL, - cmd_deleteheader_validate_index_tag, - NULL, NULL, NULL + .identifier = "index", + .validate = cmd_deleteheader_validate_index_tag }; static const struct sieve_argument_def deleteheader_last_tag = { - "last", - NULL, - cmd_deleteheader_validate_last_tag, - NULL, NULL, NULL + .identifier = "last", + .validate = cmd_deleteheader_validate_last_tag }; /* Codes for optional arguments */ diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/enotify/cmd-notify.c --- a/src/lib-sieve/plugins/enotify/cmd-notify.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/enotify/cmd-notify.c Fri Jan 08 20:49:39 2016 +0100 @@ -79,31 +79,23 @@ /* Argument objects */ static const struct sieve_argument_def notify_from_tag = { - "from", - NULL, - cmd_notify_validate_string_tag, - NULL, NULL, NULL + .identifier = "from", + .validate = cmd_notify_validate_string_tag }; static const struct sieve_argument_def notify_options_tag = { - "options", - NULL, - cmd_notify_validate_stringlist_tag, - NULL, NULL, NULL + .identifier = "options", + .validate = cmd_notify_validate_stringlist_tag }; static const struct sieve_argument_def notify_message_tag = { - "message", - NULL, - cmd_notify_validate_string_tag, - NULL, NULL, NULL + .identifier = "message", + .validate = cmd_notify_validate_string_tag }; static const struct sieve_argument_def notify_importance_tag = { - "importance", - NULL, - cmd_notify_validate_importance_tag, - NULL, NULL, NULL + .identifier = "importance", + .validate = cmd_notify_validate_importance_tag }; /* diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/imap4flags/tag-flags.c --- a/src/lib-sieve/plugins/imap4flags/tag-flags.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/imap4flags/tag-flags.c Fri Jan 08 20:49:39 2016 +0100 @@ -36,18 +36,15 @@ struct sieve_command *cmd); const struct sieve_argument_def tag_flags = { - "flags", - NULL, - tag_flags_validate, - NULL, NULL, - tag_flags_generate + .identifier = "flags", + .validate = tag_flags_validate, + .generate = tag_flags_generate }; const struct sieve_argument_def tag_flags_implicit = { - "flags-implicit", - NULL, NULL, NULL, - tag_flags_validate_persistent, - tag_flags_generate + .identifier = "flags-implicit", + .validate_persistent = tag_flags_validate_persistent, + .generate = tag_flags_generate }; /* diff -r 7c9e740b8653 -r 65bc76bb3345 src/lib-sieve/plugins/include/cmd-include.c --- a/src/lib-sieve/plugins/include/cmd-include.c Fri Jan 08 20:07:51 2016 +0100 +++ b/src/lib-sieve/plugins/include/cmd-include.c Fri Jan 08 20:49:39 2016 +0100 @@ -91,17 +91,13 @@ struct sieve_command *cmd); static const struct sieve_argument_def include_personal_tag = { - "personal", - NULL, - cmd_include_validate_location_tag, - NULL, NULL, NULL + .identifier = "personal", + .validate = cmd_include_validate_location_tag }; static const struct sieve_argument_def include_global_tag = { - "global", - NULL, - cmd_include_validate_location_tag, - NULL, NULL, NULL + .identifier = "global", + .validate = cmd_include_validate_location_tag }; static bool cmd_include_validate_boolean_tag @@ -109,20 +105,15 @@ struct sieve_command *cmd); static const struct sieve_argument_def include_once_tag = { - "once", From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: Implemented Sieve extracttext extension. Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/fe174b9f29ad changeset: 2216:fe174b9f29ad user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: Implemented Sieve extracttext extension. diffstat: Makefile.am | 1 + src/lib-sieve/plugins/mime/Makefile.am | 12 +- src/lib-sieve/plugins/mime/cmd-extracttext.c | 367 ++++++++++++++ src/lib-sieve/plugins/mime/ext-extracttext.c | 126 ++++ src/lib-sieve/plugins/mime/ext-mime-common.h | 8 + src/lib-sieve/plugins/variables/cmd-set.c | 233 +------- src/lib-sieve/plugins/variables/ext-variables-modifiers.c | 255 +++++++++- src/lib-sieve/plugins/variables/sieve-ext-variables.h | 41 +- src/lib-sieve/sieve-extensions.c | 4 +- tests/extensions/mime/errors.svtest | 31 + tests/extensions/mime/errors/extracttext-nofep.sieve | 4 + tests/extensions/mime/errors/extracttext-novar.sieve | 6 + tests/extensions/mime/errors/extracttext.sieve | 42 + tests/extensions/mime/extracttext.svtest | 143 +++++ 14 files changed, 1061 insertions(+), 212 deletions(-) diffs (truncated from 1561 to 300 lines): diff -r 46a974ebd896 -r fe174b9f29ad Makefile.am --- a/Makefile.am Fri Jan 08 20:49:39 2016 +0100 +++ b/Makefile.am Fri Jan 08 20:49:39 2016 +0100 @@ -173,6 +173,7 @@ tests/extensions/mime/execute.svtest \ tests/extensions/mime/content-header.svtest \ tests/extensions/mime/foreverypart.svtest \ + tests/extensions/mime/extracttext.svtest \ tests/extensions/mime/calendar-example.svtest \ tests/extensions/vnd.dovecot/debug/execute.svtest \ tests/extensions/vnd.dovecot/environment/basic.svtest \ diff -r 46a974ebd896 -r fe174b9f29ad src/lib-sieve/plugins/mime/Makefile.am --- a/src/lib-sieve/plugins/mime/Makefile.am Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/mime/Makefile.am Fri Jan 08 20:49:39 2016 +0100 @@ -3,21 +3,27 @@ AM_CPPFLAGS = \ -I$(srcdir)/../.. \ -I$(srcdir)/../../util \ + -I$(srcdir)/../variables \ $(LIBDOVECOT_INCLUDE) commands = \ cmd-foreverypart.c \ - cmd-break.c + cmd-break.c \ + cmd-extracttext.c tags = \ tag-mime.c -libsieve_ext_mime_la_SOURCES = \ +extensions = \ ext-mime.c \ ext-foreverypart.c \ + ext-extracttext.c + +libsieve_ext_mime_la_SOURCES = \ ext-mime-common.c \ $(commands) \ - $(tags) + $(tags) \ + $(extensions) noinst_HEADERS = \ ext-mime-common.h diff -r 46a974ebd896 -r fe174b9f29ad src/lib-sieve/plugins/mime/cmd-extracttext.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/lib-sieve/plugins/mime/cmd-extracttext.c Fri Jan 08 20:49:39 2016 +0100 @@ -0,0 +1,367 @@ +/* Copyright (c) 2002-2015 Pigeonhole authors, see the included COPYING file + */ + +#include "lib.h" +#include "str.h" +#include "array.h" + +#include "sieve-common.h" +#include "sieve-extensions.h" +#include "sieve-code.h" +#include "sieve-ast.h" +#include "sieve-commands.h" +#include "sieve-binary.h" +#include "sieve-message.h" +#include "sieve-validator.h" +#include "sieve-generator.h" +#include "sieve-interpreter.h" +#include "sieve-dump.h" + +#include "sieve-ext-variables.h" + +#include "ext-mime-common.h" + +/* + * Extracttext command + * + * Syntax: + * extracttext [MODIFIER] [":first" number] + */ + +static bool cmd_extracttext_registered + (struct sieve_validator *valdtr, const struct sieve_extension *ext, + struct sieve_command_registration *cmd_reg); +static bool cmd_extracttext_validate + (struct sieve_validator *valdtr, struct sieve_command *cmd); +static bool cmd_extracttext_generate + (const struct sieve_codegen_env *cgenv, struct sieve_command *ctx); + +const struct sieve_command_def cmd_extracttext = { + .identifier = "extracttext", + .type = SCT_COMMAND, + .positional_args = 1, + .subtests = 0, + .block_allowed = FALSE, + .block_required = FALSE, + .registered = cmd_extracttext_registered, + .validate = cmd_extracttext_validate, + .generate = cmd_extracttext_generate +}; + +/* + * Extracttext command tags + */ + +enum cmd_extracttext_optional { + CMD_EXTRACTTEXT_OPT_END, + CMD_EXTRACTTEXT_OPT_FIRST +}; + +static bool cmd_extracttext_validate_first_tag + (struct sieve_validator *valdtr, struct sieve_ast_argument **arg, + struct sieve_command *cmd); + +static const struct sieve_argument_def extracttext_from_tag = { + .identifier = "first", + .validate = cmd_extracttext_validate_first_tag +}; + +/* + * Extracttext operation + */ + +static bool cmd_extracttext_operation_dump + (const struct sieve_dumptime_env *denv, sieve_size_t *address); +static int cmd_extracttext_operation_execute + (const struct sieve_runtime_env *renv, sieve_size_t *address); + +const struct sieve_operation_def extracttext_operation = { + .mnemonic = "EXTRACTTEXT", + .ext_def = &extracttext_extension, + .dump = cmd_extracttext_operation_dump, + .execute = cmd_extracttext_operation_execute +}; + +/* + * Compiler context + */ + +struct cmd_extracttext_context { + ARRAY_TYPE(sieve_variables_modifier) modifiers; +}; + +/* + * Tag validation + */ + +static bool cmd_extracttext_validate_first_tag +(struct sieve_validator *valdtr, struct sieve_ast_argument **arg, + struct sieve_command *cmd) +{ + struct sieve_ast_argument *tag = *arg; + + /* Detach the tag itself */ + *arg = sieve_ast_arguments_detach(*arg,1); + + /* Check syntax: + * :first + */ + if ( !sieve_validate_tag_parameter + (valdtr, cmd, tag, *arg, NULL, 0, SAAT_NUMBER, FALSE) ) + return FALSE; + + /* Skip parameter */ + *arg = sieve_ast_argument_next(*arg); + + return TRUE; +} + +/* Command registration */ + +static bool cmd_extracttext_registered +(struct sieve_validator *valdtr, const struct sieve_extension *ext, + struct sieve_command_registration *cmd_reg) +{ + struct ext_extracttext_context *ectx = + (struct ext_extracttext_context *)ext->context; + + sieve_validator_register_tag(valdtr, cmd_reg, ext, + &extracttext_from_tag, CMD_EXTRACTTEXT_OPT_FIRST); + sieve_variables_modifiers_link_tag + (valdtr, ectx->var_ext, cmd_reg); + return TRUE; +} + +/* + * Command validation + */ + +static bool cmd_extracttext_validate(struct sieve_validator *valdtr, + struct sieve_command *cmd) +{ + const struct sieve_extension *this_ext = cmd->ext; + struct ext_extracttext_context *ectx = + (struct ext_extracttext_context *)this_ext->context; + struct sieve_ast_node *node = cmd->ast_node; + struct sieve_ast_argument *arg = cmd->first_positional; + pool_t pool = sieve_command_pool(cmd); + struct cmd_extracttext_context *sctx; + + /* Create command context */ + sctx = p_new(pool, struct cmd_extracttext_context, 1); + p_array_init(&sctx->modifiers, pool, 4); + cmd->data = (void *) sctx; + + /* Validate modifiers */ + if ( !sieve_variables_modifiers_validate + (valdtr, cmd, &sctx->modifiers) ) + return FALSE; + + /* Validate varname argument */ + if ( !sieve_validate_positional_argument + (valdtr, cmd, arg, "varname", 1, SAAT_STRING) ) { + return FALSE; + } + if ( !sieve_variable_argument_activate + (ectx->var_ext, valdtr, cmd, arg, TRUE) ) + return FALSE; + + /* Check foreverypart context */ + i_assert(node != NULL); + while ( node != NULL ) { + if ( node->command != NULL && + sieve_command_is(node->command, cmd_foreverypart) ) + break; + node = sieve_ast_node_parent(node); + } + + if ( node == NULL ) { + sieve_command_validate_error(valdtr, cmd, + "the extracttext command is not placed inside " + "a foreverypart loop"); + return FALSE; + } + return TRUE; +} + +/* + * Code generation + */ + +static bool cmd_extracttext_generate + (const struct sieve_codegen_env *cgenv, struct sieve_command *cmd) +{ + const struct sieve_extension *this_ext = cmd->ext; + struct sieve_binary_block *sblock = cgenv->sblock; + struct cmd_extracttext_context *sctx = + (struct cmd_extracttext_context *) cmd->data; + + sieve_operation_emit(sblock, this_ext, &extracttext_operation); + + /* Generate arguments */ + if ( !sieve_generate_arguments(cgenv, cmd, NULL) ) + return FALSE; + + /* Generate modifiers */ + if ( !sieve_variables_modifiers_generate + (cgenv, &sctx->modifiers) ) + return FALSE; + + return TRUE; +} + +/* + * Code dump + */ + +static bool cmd_extracttext_operation_dump +(const struct sieve_dumptime_env *denv, sieve_size_t *address) +{ + int opt_code = 0; + + sieve_code_dumpf(denv, "EXTRACTTEXT"); + sieve_code_descend(denv); + + /* Dump optional operands */ + + for (;;) { + int opt; + bool opok = TRUE; + + if ( (opt=sieve_opr_optional_dump(denv, address, &opt_code)) < 0 ) + return FALSE; + if ( opt == 0 ) break; + + switch ( opt_code ) { + case CMD_EXTRACTTEXT_OPT_FIRST: + opok = sieve_opr_number_dump(denv, address, "first"); + break; + default: + return FALSE; + } + if ( !opok ) return FALSE; + } + + /* Print both variable name and string value */ + if ( !sieve_opr_string_dump(denv, address, "varname") ) + return FALSE; + + return sieve_variables_modifiers_code_dump(denv, address); +} + From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Cleaned up object definitions... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/9748a6055d2c changeset: 2212:9748a6055d2c user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: Cleaned up object definitions using newer C99 syntax. diffstat: src/lib-sieve/cmp-i-ascii-casemap.c | 17 +++++---- src/lib-sieve/cmp-i-octet.c | 16 +++++--- src/lib-sieve/mcht-contains.c | 10 ++--- src/lib-sieve/mcht-is.c | 7 +-- src/lib-sieve/mcht-matches.c | 10 ++--- src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c | 11 +++-- src/lib-sieve/plugins/copy/ext-copy.c | 9 +--- src/lib-sieve/plugins/include/ext-include-variables.c | 9 ++-- src/lib-sieve/plugins/mailbox/tag-mailbox-create.c | 8 +-- src/lib-sieve/plugins/regex/mcht-regex.c | 11 ++---- src/lib-sieve/plugins/relational/mcht-count.c | 14 +++---- src/lib-sieve/plugins/relational/mcht-value.c | 14 +++---- src/lib-sieve/plugins/subaddress/ext-subaddress.c | 8 ++- src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c | 8 ++-- src/lib-sieve/sieve-address-parts.c | 15 +++++--- src/lib-sieve/sieve-objects.h | 8 +++- src/testsuite/testsuite-objects.c | 17 ++++----- src/testsuite/testsuite-substitutions.c | 13 +++---- 18 files changed, 101 insertions(+), 104 deletions(-) diffs (truncated from 414 to 300 lines): diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/cmp-i-ascii-casemap.c --- a/src/lib-sieve/cmp-i-ascii-casemap.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmp-i-ascii-casemap.c Fri Jan 08 20:49:39 2016 +0100 @@ -30,13 +30,16 @@ */ const struct sieve_comparator_def i_ascii_casemap_comparator = { - SIEVE_OBJECT - ("i;ascii-casemap", &comparator_operand, SIEVE_COMPARATOR_I_ASCII_CASEMAP), - SIEVE_COMPARATOR_FLAG_ORDERING | SIEVE_COMPARATOR_FLAG_EQUALITY | - SIEVE_COMPARATOR_FLAG_SUBSTRING_MATCH | SIEVE_COMPARATOR_FLAG_PREFIX_MATCH, - cmp_i_ascii_casemap_compare, - cmp_i_ascii_casemap_char_match, - sieve_comparator_octet_skip + SIEVE_OBJECT("i;ascii-casemap", + &comparator_operand, SIEVE_COMPARATOR_I_ASCII_CASEMAP), + .flags = + SIEVE_COMPARATOR_FLAG_ORDERING | + SIEVE_COMPARATOR_FLAG_EQUALITY | + SIEVE_COMPARATOR_FLAG_SUBSTRING_MATCH | + SIEVE_COMPARATOR_FLAG_PREFIX_MATCH, + .compare = cmp_i_ascii_casemap_compare, + .char_match = cmp_i_ascii_casemap_char_match, + .char_skip = sieve_comparator_octet_skip }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/cmp-i-octet.c --- a/src/lib-sieve/cmp-i-octet.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/cmp-i-octet.c Fri Jan 08 20:49:39 2016 +0100 @@ -29,12 +29,16 @@ */ const struct sieve_comparator_def i_octet_comparator = { - SIEVE_OBJECT("i;octet", &comparator_operand, SIEVE_COMPARATOR_I_OCTET), - SIEVE_COMPARATOR_FLAG_ORDERING | SIEVE_COMPARATOR_FLAG_EQUALITY | - SIEVE_COMPARATOR_FLAG_SUBSTRING_MATCH | SIEVE_COMPARATOR_FLAG_PREFIX_MATCH, - cmp_i_octet_compare, - cmp_i_octet_char_match, - sieve_comparator_octet_skip + SIEVE_OBJECT("i;octet", + &comparator_operand, SIEVE_COMPARATOR_I_OCTET), + .flags = + SIEVE_COMPARATOR_FLAG_ORDERING | + SIEVE_COMPARATOR_FLAG_EQUALITY | + SIEVE_COMPARATOR_FLAG_SUBSTRING_MATCH | + SIEVE_COMPARATOR_FLAG_PREFIX_MATCH, + .compare = cmp_i_octet_compare, + .char_match = cmp_i_octet_char_match, + .char_skip = sieve_comparator_octet_skip }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/mcht-contains.c --- a/src/lib-sieve/mcht-contains.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/mcht-contains.c Fri Jan 08 20:49:39 2016 +0100 @@ -26,12 +26,10 @@ */ const struct sieve_match_type_def contains_match_type = { - SIEVE_OBJECT("contains", &match_type_operand, SIEVE_MATCH_TYPE_CONTAINS), - NULL, - sieve_match_substring_validate_context, - NULL, NULL, NULL, - mcht_contains_match_key, - NULL + SIEVE_OBJECT("contains", + &match_type_operand, SIEVE_MATCH_TYPE_CONTAINS), + .validate_context = sieve_match_substring_validate_context, + .match_key = mcht_contains_match_key }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/mcht-is.c --- a/src/lib-sieve/mcht-is.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/mcht-is.c Fri Jan 08 20:49:39 2016 +0100 @@ -26,10 +26,9 @@ */ const struct sieve_match_type_def is_match_type = { - SIEVE_OBJECT("is", &match_type_operand, SIEVE_MATCH_TYPE_IS), - NULL, NULL, NULL, NULL, NULL, - mcht_is_match_key, - NULL + SIEVE_OBJECT("is", + &match_type_operand, SIEVE_MATCH_TYPE_IS), + .match_key = mcht_is_match_key }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/mcht-matches.c --- a/src/lib-sieve/mcht-matches.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/mcht-matches.c Fri Jan 08 20:49:39 2016 +0100 @@ -27,12 +27,10 @@ */ const struct sieve_match_type_def matches_match_type = { - SIEVE_OBJECT("matches", &match_type_operand, SIEVE_MATCH_TYPE_MATCHES), - NULL, - sieve_match_substring_validate_context, - NULL, NULL, NULL, - mcht_matches_match_key, - NULL + SIEVE_OBJECT("matches", + &match_type_operand, SIEVE_MATCH_TYPE_MATCHES), + .validate_context = sieve_match_substring_validate_context, + .match_key = mcht_matches_match_key }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c --- a/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/comparator-i-ascii-numeric/ext-cmp-i-ascii-numeric.c Fri Jan 08 20:49:39 2016 +0100 @@ -77,11 +77,12 @@ /* Comparator object */ const struct sieve_comparator_def i_ascii_numeric_comparator = { - SIEVE_OBJECT("i;ascii-numeric", &my_comparator_operand, 0), - SIEVE_COMPARATOR_FLAG_ORDERING | SIEVE_COMPARATOR_FLAG_EQUALITY, - cmp_i_ascii_numeric_compare, - NULL, - NULL + SIEVE_OBJECT("i;ascii-numeric", + &my_comparator_operand, 0), + .flags = + SIEVE_COMPARATOR_FLAG_ORDERING | + SIEVE_COMPARATOR_FLAG_EQUALITY, + .compare = cmp_i_ascii_numeric_compare }; /* Comparator implementation */ diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/copy/ext-copy.c --- a/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/copy/ext-copy.c Fri Jan 08 20:49:39 2016 +0100 @@ -72,12 +72,9 @@ const struct sieve_side_effect_def copy_side_effect = { SIEVE_OBJECT("copy", ©_side_effect_operand, 0), - &act_store, - NULL, NULL, NULL, - seff_copy_print, - NULL, NULL, - seff_copy_post_commit, - NULL + .to_action = &act_store, + .print = seff_copy_print, + .post_commit = seff_copy_post_commit }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/include/ext-include-variables.c --- a/src/lib-sieve/plugins/include/ext-include-variables.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/include/ext-include-variables.c Fri Jan 08 20:49:39 2016 +0100 @@ -160,14 +160,13 @@ const struct sieve_variables_namespace *nspc, struct sieve_ast_argument *arg, struct sieve_command *cmd, void *var_data); -static const struct sieve_variables_namespace_def global_variables_namespace = { +static const struct sieve_variables_namespace_def +global_variables_namespace = { SIEVE_OBJECT("global", NULL, 0), - vnspc_global_variables_validate, - vnspc_global_variables_generate, - NULL, NULL + .validate = vnspc_global_variables_validate, + .generate = vnspc_global_variables_generate }; - bool vnspc_global_variables_validate (struct sieve_validator *valdtr, const struct sieve_variables_namespace *nspc, struct sieve_ast_argument *arg, diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/mailbox/tag-mailbox-create.c --- a/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/mailbox/tag-mailbox-create.c Fri Jan 08 20:49:39 2016 +0100 @@ -46,11 +46,9 @@ const struct sieve_side_effect_def mailbox_create_side_effect = { SIEVE_OBJECT("create", &mailbox_create_operand, 0), - &act_store, - NULL, NULL, NULL, - seff_mailbox_create_print, - seff_mailbox_create_pre_execute, - NULL, NULL, NULL + .to_action = &act_store, + .print = seff_mailbox_create_print, + .pre_execute = seff_mailbox_create_pre_execute }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/regex/mcht-regex.c --- a/src/lib-sieve/plugins/regex/mcht-regex.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/regex/mcht-regex.c Fri Jan 08 20:49:39 2016 +0100 @@ -50,13 +50,10 @@ const struct sieve_match_type_def regex_match_type = { SIEVE_OBJECT("regex", ®ex_match_type_operand, 0), - NULL, - mcht_regex_validate_context, - NULL, - mcht_regex_match_init, - mcht_regex_match_keys, - NULL, - mcht_regex_match_deinit + .validate_context = mcht_regex_validate_context, + .match_init = mcht_regex_match_init, + .match_keys = mcht_regex_match_keys, + .match_deinit = mcht_regex_match_deinit }; /* diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/relational/mcht-count.c --- a/src/lib-sieve/plugins/relational/mcht-count.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/relational/mcht-count.c Fri Jan 08 20:49:39 2016 +0100 @@ -37,19 +37,17 @@ */ const struct sieve_match_type_def count_match_type = { - SIEVE_OBJECT("count", &rel_match_type_operand, RELATIONAL_COUNT), - mcht_relational_validate, - NULL, NULL, NULL, NULL, NULL, NULL + SIEVE_OBJECT("count", + &rel_match_type_operand, RELATIONAL_COUNT), + .validate = mcht_relational_validate }; #define COUNT_MATCH_TYPE(name, rel_match) \ const struct sieve_match_type_def rel_match_count_ ## name = { \ - SIEVE_OBJECT( \ - "count-" #name, &rel_match_type_operand, \ + SIEVE_OBJECT("count-" #name, \ + &rel_match_type_operand, \ REL_MATCH_INDEX(RELATIONAL_COUNT, rel_match)), \ - NULL, NULL, \ - mcht_count_match, \ - NULL, NULL, NULL, NULL \ + .match = mcht_count_match, \ } COUNT_MATCH_TYPE(gt, REL_MATCH_GREATER); diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/relational/mcht-value.c --- a/src/lib-sieve/plugins/relational/mcht-value.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/relational/mcht-value.c Fri Jan 08 20:49:39 2016 +0100 @@ -24,19 +24,17 @@ */ const struct sieve_match_type_def value_match_type = { - SIEVE_OBJECT("value", &rel_match_type_operand, RELATIONAL_VALUE), - mcht_relational_validate, - NULL, NULL, NULL, NULL, NULL, NULL + SIEVE_OBJECT("value", + &rel_match_type_operand, RELATIONAL_VALUE), + .validate = mcht_relational_validate }; #define VALUE_MATCH_TYPE(name, rel_match) \ const struct sieve_match_type_def rel_match_value_ ## name = { \ - SIEVE_OBJECT( \ - "value-" #name, &rel_match_type_operand, \ + SIEVE_OBJECT("value-" #name, \ + &rel_match_type_operand, \ REL_MATCH_INDEX(RELATIONAL_VALUE, rel_match)), \ - NULL, NULL, NULL, NULL, NULL, \ - mcht_value_match_key, \ - NULL \ + .match_key = mcht_value_match_key, \ } VALUE_MATCH_TYPE(gt, REL_MATCH_GREATER); diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/subaddress/ext-subaddress.c --- a/src/lib-sieve/plugins/subaddress/ext-subaddress.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/subaddress/ext-subaddress.c Fri Jan 08 20:49:39 2016 +0100 @@ -124,13 +124,15 @@ /* Address part objects */ const struct sieve_address_part_def user_address_part = { - SIEVE_OBJECT("user", &subaddress_operand, SUBADDRESS_USER), + SIEVE_OBJECT("user", + &subaddress_operand, SUBADDRESS_USER), subaddress_user_extract_from }; const struct sieve_address_part_def detail_address_part = { - SIEVE_OBJECT("detail", &subaddress_operand, SUBADDRESS_DETAIL), - subaddress_detail_extract_from + SIEVE_OBJECT("detail", + &subaddress_operand, SUBADDRESS_DETAIL), + .extract_from = subaddress_detail_extract_from }; /* Address part implementation */ diff -r 63d838bb5184 -r 9748a6055d2c src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c --- a/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/vnd.dovecot/environment/ext-vnd-environment-variables.c Fri Jan 08 20:49:39 2016 +0100 @@ -42,10 +42,10 @@ static const struct sieve_variables_namespace_def environment_namespace = { SIEVE_OBJECT("env", &environment_namespace_operand, 0), - vnspc_vnd_environment_validate, - vnspc_vnd_environment_generate, From pigeonhole at rename-it.nl Fri Jan 8 19:51:28 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 20:51:28 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: Added support for having mult... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/1f8ce0c29ef4 changeset: 2213:1f8ce0c29ef4 user: Stephan Bosch date: Fri Jan 08 20:49:39 2016 +0100 description: lib-sieve: Added support for having multiple instances of a single tag (type) within a single command. diffstat: src/lib-sieve/sieve-commands.h | 6 ++++++ src/lib-sieve/sieve-validator.c | 40 +++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 19 deletions(-) diffs (71 lines): diff -r 9748a6055d2c -r 1f8ce0c29ef4 src/lib-sieve/sieve-commands.h --- a/src/lib-sieve/sieve-commands.h Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/sieve-commands.h Fri Jan 08 20:49:39 2016 +0100 @@ -13,8 +13,14 @@ * Argument definition */ +enum sieve_argument_flag { + /* More than one of this (type of) tagged argument is allowed */ + SIEVE_ARGUMENT_FLAG_MULTIPLE = (1 << 0) +}; + struct sieve_argument_def { const char *identifier; + enum sieve_argument_flag flags; bool (*is_instance_of) (struct sieve_validator *valdtr, struct sieve_command *cmd, diff -r 9748a6055d2c -r 1f8ce0c29ef4 src/lib-sieve/sieve-validator.c --- a/src/lib-sieve/sieve-validator.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/sieve-validator.c Fri Jan 08 20:49:39 2016 +0100 @@ -939,28 +939,30 @@ struct sieve_ast_argument *parg; /* Scan backwards for any duplicates */ - parg = sieve_ast_argument_prev(arg); - while ( parg != NULL ) { - if ( (sieve_ast_argument_type(parg) == SAAT_TAG && - parg->argument->def == tag_def) - || (arg->argument->id_code > 0 && parg->argument != NULL && - parg->argument->id_code == arg->argument->id_code) ) - { - const char *tag_id = sieve_ast_argument_tag(arg); - const char *tag_desc = - strcmp(tag_def->identifier, tag_id) != 0 ? - t_strdup_printf("%s argument (:%s)", tag_def->identifier, tag_id) : - t_strdup_printf(":%s argument", tag_def->identifier); + if ( (tag_def->flags & SIEVE_ARGUMENT_FLAG_MULTIPLE) == 0 ) { + parg = sieve_ast_argument_prev(arg); + while ( parg != NULL ) { + if ( (sieve_ast_argument_type(parg) == SAAT_TAG && + parg->argument->def == tag_def) + || (arg->argument->id_code > 0 && parg->argument != NULL && + parg->argument->id_code == arg->argument->id_code) ) + { + const char *tag_id = sieve_ast_argument_tag(arg); + const char *tag_desc = + strcmp(tag_def->identifier, tag_id) != 0 ? + t_strdup_printf("%s argument (:%s)", tag_def->identifier, tag_id) : + t_strdup_printf(":%s argument", tag_def->identifier); - sieve_argument_validate_error(valdtr, arg, - "encountered duplicate %s for the %s %s", - tag_desc, sieve_command_identifier(cmd), - sieve_command_type_name(cmd)); + sieve_argument_validate_error(valdtr, arg, + "encountered duplicate %s for the %s %s", + tag_desc, sieve_command_identifier(cmd), + sieve_command_type_name(cmd)); - return FALSE; + return FALSE; + } + + parg = sieve_ast_argument_prev(parg); } - - parg = sieve_ast_argument_prev(parg); } /* Call the validation function for the tag (if present) From pigeonhole at rename-it.nl Fri Jan 8 21:05:08 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 22:05:08 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: imap4flags extension: Made fl... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/7b079abc1680 changeset: 2217:7b079abc1680 user: Stephan Bosch date: Fri Jan 08 22:05:03 2016 +0100 description: lib-sieve: imap4flags extension: Made flag syntax checking available to other extensions. diffstat: src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c | 28 ++++------------ src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h | 6 +++ 2 files changed, 13 insertions(+), 21 deletions(-) diffs (93 lines): diff -r fe174b9f29ad -r 7b079abc1680 src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c --- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Fri Jan 08 22:05:03 2016 +0100 @@ -5,6 +5,7 @@ #include "str.h" #include "str-sanitize.h" #include "mail-storage.h" +#include "imap-arg.h" #include "sieve-common.h" #include "sieve-commands.h" @@ -22,12 +23,6 @@ #include "ext-imap4flags-common.h" /* - * Forward declarations - */ - -static bool flag_is_valid(const char *flag); - -/* * Tagged arguments */ @@ -132,9 +127,9 @@ ext_imap4flags_iter_init(&fiter, sieve_ast_argument_str(arg)); while ( (flag=ext_imap4flags_iter_get_flag(&fiter)) != NULL ) { - if ( !flag_is_valid(flag) ) { + if ( !sieve_ext_imap4flags_flag_is_valid(flag) ) { sieve_argument_validate_warning(valdtr, arg, - "IMAP flag '%s' specified for the %s command is invalid " + "IMAP flag '%s' specified for the %s command is invalid " "and will be ignored (only first invalid is reported)", str_sanitize(flag, 64), sieve_command_identifier(cmd)); break; @@ -265,7 +260,7 @@ * flags, making the internal or variable flag list indefinitely long */ -static bool flag_is_valid(const char *flag) +bool sieve_ext_imap4flags_flag_is_valid(const char *flag) { if (*flag == '\\') { /* System flag */ @@ -288,20 +283,10 @@ * Syntax (IMAP4rev1, RFC 3501, Section 9. Formal Syntax) : * flag-keyword = atom * atom = 1*ATOM-CHAR - * ATOM-CHAR = - * atom-specials = "(" / ")" / "{" / SP / CTL / list-wildcards / - * quoted-specials / resp-specials - * CTL = %x00-1F / %x7F - * list-wildcards = "%" / "*" - * quoted-specials = DQUOTE / "\" - * resp-specials = "]" */ - p = flag; while ( *p != '\0' ) { - if ( *p == '(' || *p == ')' || *p == '{' || *p == ' ' || - *p <= 0x1F || *p == 0x7F || *p == '%' || *p == '*' || - *p == '"' || *p == '\\' || *p == ']' ) + if ( !IS_ATOM_CHAR(*p) ) return FALSE; p++; } @@ -449,7 +434,8 @@ ext_imap4flags_iter_init(&flit, flags); while ( (flg=ext_imap4flags_iter_get_flag(&flit)) != NULL ) { - if ( flag_is_valid(flg) && !flags_list_flag_exists(flags_list, flg) ) { + if ( sieve_ext_imap4flags_flag_is_valid(flg) && + !flags_list_flag_exists(flags_list, flg) ) { if ( str_len(flags_list) != 0 ) str_append_c(flags_list, ' '); str_append(flags_list, flg); diff -r fe174b9f29ad -r 7b079abc1680 src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h --- a/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h Fri Jan 08 20:49:39 2016 +0100 +++ b/src/lib-sieve/plugins/imap4flags/sieve-ext-imap4flags.h Fri Jan 08 22:05:03 2016 +0100 @@ -23,6 +23,12 @@ } /* + * Flag syntax + */ + +bool sieve_ext_imap4flags_flag_is_valid(const char *flag); + +/* * Flag manipulation */ From pigeonhole at rename-it.nl Fri Jan 8 21:27:42 2016 From: pigeonhole at rename-it.nl (pigeonhole at rename-it.nl) Date: Fri, 08 Jan 2016 22:27:42 +0100 Subject: dovecot-2.2-pigeonhole: lib-sieve: imap4flags extension: Forgot ... Message-ID: details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/801b4b6ba339 changeset: 2218:801b4b6ba339 user: Stephan Bosch date: Fri Jan 08 22:27:34 2016 +0100 description: lib-sieve: imap4flags extension: Forgot to check for empty flag/keyword in new flag checking function. diffstat: src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diffs (15 lines): diff -r 7b079abc1680 -r 801b4b6ba339 src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c --- a/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Fri Jan 08 22:05:03 2016 +0100 +++ b/src/lib-sieve/plugins/imap4flags/ext-imap4flags-common.c Fri Jan 08 22:27:34 2016 +0100 @@ -262,7 +262,10 @@ bool sieve_ext_imap4flags_flag_is_valid(const char *flag) { - if (*flag == '\\') { + if ( *flag == '\0' ) + return FALSE; + + if ( *flag == '\\' ) { /* System flag */ const char *atom = t_str_ucase(flag); From noreply at github.com Sun Jan 10 01:11:37 2016 From: noreply at github.com (GitHub) Date: Sat, 09 Jan 2016 17:11:37 -0800 Subject: [dovecot/pigeonhole] 3f32cd: Updated description of user log in the README file... Message-ID: <5691afc98d3b9_5b383fa762eef2c0136015@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 3f32cd003da28085a0dadcb75796eeb500811fa3 https://github.com/dovecot/pigeonhole/commit/3f32cd003da28085a0dadcb75796eeb500811fa3 Author: Stephan Bosch Date: 2016-01-10 (Sun, 10 Jan 2016) Changed paths: M README Log Message: ----------- Updated description of user log in the README file. From noreply at github.com Mon Jan 11 17:02:06 2016 From: noreply at github.com (GitHub) Date: Mon, 11 Jan 2016 09:02:06 -0800 Subject: [dovecot/core] 46ce4d: lib: i_stream_get_error() now returns "EOF" if str... Message-ID: <5693e00e88c4b_43863fe6b7a4b2c0758ae@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 46ce4d9273e6df12ef1912bbdb1c8b84b104f394 https://github.com/dovecot/core/commit/46ce4d9273e6df12ef1912bbdb1c8b84b104f394 Author: Timo Sirainen Date: 2016-01-11 (Mon, 11 Jan 2016) Changed paths: M src/lib/istream.c M src/lib/istream.h Log Message: ----------- lib: i_stream_get_error() now returns "EOF" if stream_errno==0 and eof==TRUE. This can be used to replace a lot of code like: input->stream_errno == 0 ? "EOF" : i_stream_get_error(input) with simply: i_stream_get_error(input) From noreply at github.com Tue Jan 12 22:41:06 2016 From: noreply at github.com (GitHub) Date: Tue, 12 Jan 2016 14:41:06 -0800 Subject: [dovecot/core] 40bdcc: lib-fts: Create library for development packages. Message-ID: <56958102a710c_713e3f9ce73b92a0715c0@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 40bdcc2e50b6969596b10f848d1fbe23820666f9 https://github.com/dovecot/core/commit/40bdcc2e50b6969596b10f848d1fbe23820666f9 Author: Teemu Huovila Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M Makefile.am M src/lib-fts/Makefile.am Log Message: ----------- lib-fts: Create library for development packages. From noreply at github.com Wed Jan 13 09:24:06 2016 From: noreply at github.com (GitHub) Date: Wed, 13 Jan 2016 01:24:06 -0800 Subject: [dovecot/core] 43bdd9: lib-storage: Fixed autoexpunge=yes to work with na... Message-ID: <569617b6f3995_612f3fd52a1112c013532a@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 43bdd923915368a6eaa32695ac2aec448574c18b https://github.com/dovecot/core/commit/43bdd923915368a6eaa32695ac2aec448574c18b Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/lib-storage/mail-autoexpunge.c Log Message: ----------- lib-storage: Fixed autoexpunge=yes to work with namespace's root mailbox. namespace { mailbox "" { autoexpunge = .. } } From noreply at github.com Wed Jan 13 10:25:08 2016 From: noreply at github.com (GitHub) Date: Wed, 13 Jan 2016 02:25:08 -0800 Subject: [dovecot/core] 02c335: global: freshen copyright Message-ID: <569626049c7e3_30ef3f9fd44e32bc1196bf@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 02c335c23bf5fa225a467c19f2c063fb0dc7b8c3 https://github.com/dovecot/core/commit/02c335c23bf5fa225a467c19f2c063fb0dc7b8c3 Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M doc/man/doveadm-acl.1.in M doc/man/doveadm-altmove.1.in M doc/man/doveadm-auth.1.in M doc/man/doveadm-batch.1.in M doc/man/doveadm-deduplicate.1.in M doc/man/doveadm-director.1.in M doc/man/doveadm-dump.1.in M doc/man/doveadm-exec.1.in M doc/man/doveadm-expunge.1.in M doc/man/doveadm-fetch.1.in M doc/man/doveadm-flags.1.in M doc/man/doveadm-force-resync.1.in M doc/man/doveadm-fts.1.in M doc/man/doveadm-help.1.in M doc/man/doveadm-import.1.in M doc/man/doveadm-index.1.in M doc/man/doveadm-instance.1.in M doc/man/doveadm-kick.1.in M doc/man/doveadm-log.1.in M doc/man/doveadm-mailbox.1.in M doc/man/doveadm-mount.1.in M doc/man/doveadm-move.1.in M doc/man/doveadm-penalty.1.in M doc/man/doveadm-proxy.1.in M doc/man/doveadm-purge.1.in M doc/man/doveadm-pw.1.in M doc/man/doveadm-quota.1.in M doc/man/doveadm-replicator.1.in M doc/man/doveadm-search-query.7 M doc/man/doveadm-search.1.in M doc/man/doveadm-sync.1.in M doc/man/doveadm-user.1.in M doc/man/doveadm-who.1.in M doc/man/doveadm.1.in M doc/man/doveconf.1.in M doc/man/dovecot-lda.1.in M doc/man/dovecot.1.in M src/anvil/anvil-connection.c M src/anvil/anvil-settings.c M src/anvil/connect-limit.c M src/anvil/main.c M src/anvil/penalty.c M src/anvil/test-penalty.c M src/auth/auth-cache.c M src/auth/auth-client-connection.c M src/auth/auth-fields.c M src/auth/auth-master-connection.c M src/auth/auth-penalty.c M src/auth/auth-postfix-connection.c M src/auth/auth-request-handler.c M src/auth/auth-request-var-expand.c M src/auth/auth-request.c M src/auth/auth-settings.c M src/auth/auth-token.c M src/auth/auth-worker-client.c M src/auth/auth-worker-server.c M src/auth/auth.c M src/auth/db-checkpassword.c M src/auth/db-dict-cache-key.c M src/auth/db-dict.c M src/auth/db-ldap.c M src/auth/db-passwd-file.c M src/auth/db-sql.c M src/auth/main.c M src/auth/mech-anonymous.c M src/auth/mech-cram-md5.c M src/auth/mech-digest-md5.c M src/auth/mech-dovecot-token.c M src/auth/mech-external.c M src/auth/mech-plain.c M src/auth/mech-scram-sha1.c M src/auth/mech.c M src/auth/passdb-blocking.c M src/auth/passdb-bsdauth.c M src/auth/passdb-cache.c M src/auth/passdb-checkpassword.c M src/auth/passdb-dict.c M src/auth/passdb-imap.c M src/auth/passdb-ldap.c M src/auth/passdb-passwd-file.c M src/auth/passdb-passwd.c M src/auth/passdb-shadow.c M src/auth/passdb-sql.c M src/auth/passdb-static.c M src/auth/passdb-template.c M src/auth/passdb-vpopmail.c M src/auth/passdb.c M src/auth/password-scheme-crypt.c M src/auth/password-scheme.c M src/auth/test-auth-cache.c M src/auth/test-auth-request-var-expand.c M src/auth/test-db-dict.c M src/auth/userdb-blocking.c M src/auth/userdb-checkpassword.c M src/auth/userdb-dict.c M src/auth/userdb-ldap.c M src/auth/userdb-nss.c M src/auth/userdb-passwd-file.c M src/auth/userdb-passwd.c M src/auth/userdb-prefetch.c M src/auth/userdb-sql.c M src/auth/userdb-static.c M src/auth/userdb-template.c M src/auth/userdb-vpopmail.c M src/auth/userdb.c M src/config/config-connection.c M src/config/config-filter.c M src/config/config-parser.c M src/config/config-request.c M src/config/config-settings.c M src/config/doveconf.c M src/config/main.c M src/config/old-set-parser.c M src/config/sysinfo-get.c M src/dict/dict-commands.c M src/dict/dict-connection.c M src/dict/dict-settings.c M src/dict/main.c M src/director/auth-connection.c M src/director/director-connection.c M src/director/director-host.c M src/director/director-request.c M src/director/director-settings.c M src/director/director-test.c M src/director/director.c M src/director/doveadm-connection.c M src/director/login-connection.c M src/director/mail-host.c M src/director/main.c M src/director/notify-connection.c M src/director/test-user-directory.c M src/director/user-directory.c M src/dns/dns-client-settings.c M src/dns/dns-client.c M src/doveadm/client-connection.c M src/doveadm/doveadm-auth.c M src/doveadm/doveadm-cmd.c M src/doveadm/doveadm-dict.c M src/doveadm/doveadm-director.c M src/doveadm/doveadm-dsync.c M src/doveadm/doveadm-dump-dbox.c M src/doveadm/doveadm-dump-index.c M src/doveadm/doveadm-dump-log.c M src/doveadm/doveadm-dump-mailboxlog.c M src/doveadm/doveadm-dump-thread.c M src/doveadm/doveadm-dump.c M src/doveadm/doveadm-fs.c M src/doveadm/doveadm-instance.c M src/doveadm/doveadm-kick.c M src/doveadm/doveadm-log.c M src/doveadm/doveadm-mail-altmove.c M src/doveadm/doveadm-mail-batch.c M src/doveadm/doveadm-mail-copymove.c M src/doveadm/doveadm-mail-deduplicate.c M src/doveadm/doveadm-mail-expunge.c M src/doveadm/doveadm-mail-fetch.c M src/doveadm/doveadm-mail-flags.c M src/doveadm/doveadm-mail-import.c M src/doveadm/doveadm-mail-index.c M src/doveadm/doveadm-mail-iter.c M src/doveadm/doveadm-mail-mailbox-metadata.c M src/doveadm/doveadm-mail-mailbox-status.c M src/doveadm/doveadm-mail-mailbox.c M src/doveadm/doveadm-mail-save.c M src/doveadm/doveadm-mail-search.c M src/doveadm/doveadm-mail-server.c M src/doveadm/doveadm-mail.c M src/doveadm/doveadm-mailbox-list-iter.c M src/doveadm/doveadm-master.c M src/doveadm/doveadm-mount.c M src/doveadm/doveadm-mutf7.c M src/doveadm/doveadm-penalty.c M src/doveadm/doveadm-print-flow.c M src/doveadm/doveadm-print-pager.c M src/doveadm/doveadm-print-server.c M src/doveadm/doveadm-print-tab.c M src/doveadm/doveadm-print-table.c M src/doveadm/doveadm-print.c M src/doveadm/doveadm-proxy.c M src/doveadm/doveadm-pw.c M src/doveadm/doveadm-replicator.c M src/doveadm/doveadm-settings.c M src/doveadm/doveadm-sis.c M src/doveadm/doveadm-stats.c M src/doveadm/doveadm-util.c M src/doveadm/doveadm-who.c M src/doveadm/doveadm-zlib.c M src/doveadm/doveadm.c M src/doveadm/dsync/dsync-brain-mailbox-tree-sync.c M src/doveadm/dsync/dsync-brain-mailbox-tree.c M src/doveadm/dsync/dsync-brain-mailbox.c M src/doveadm/dsync/dsync-brain-mails.c M src/doveadm/dsync/dsync-brain.c M src/doveadm/dsync/dsync-deserializer.c M src/doveadm/dsync/dsync-ibc-pipe.c M src/doveadm/dsync/dsync-ibc-stream.c M src/doveadm/dsync/dsync-ibc.c M src/doveadm/dsync/dsync-mail.c M src/doveadm/dsync/dsync-mailbox-export.c M src/doveadm/dsync/dsync-mailbox-import.c M src/doveadm/dsync/dsync-mailbox-state.c M src/doveadm/dsync/dsync-mailbox-tree-fill.c M src/doveadm/dsync/dsync-mailbox-tree-sync.c M src/doveadm/dsync/dsync-mailbox-tree.c M src/doveadm/dsync/dsync-mailbox.c M src/doveadm/dsync/dsync-serializer.c M src/doveadm/dsync/dsync-transaction-log-scan.c M src/doveadm/dsync/test-dsync-mailbox-tree-sync.c M src/doveadm/main.c M src/doveadm/server-connection.c M src/imap-hibernate/imap-client.c M src/imap-hibernate/imap-hibernate-client.c M src/imap-hibernate/imap-hibernate-settings.c M src/imap-hibernate/imap-master-connection.c M src/imap-hibernate/main.c M src/imap-login/client-authenticate.c M src/imap-login/client.c M src/imap-login/imap-login-settings.c M src/imap-login/imap-proxy.c M src/imap-urlauth/imap-urlauth-client.c M src/imap-urlauth/imap-urlauth-login-settings.c M src/imap-urlauth/imap-urlauth-login.c M src/imap-urlauth/imap-urlauth-settings.c M src/imap-urlauth/imap-urlauth-worker-settings.c M src/imap-urlauth/imap-urlauth-worker.c M src/imap-urlauth/imap-urlauth.c M src/imap/cmd-append.c M src/imap/cmd-cancelupdate.c M src/imap/cmd-capability.c M src/imap/cmd-check.c M src/imap/cmd-close.c M src/imap/cmd-copy.c M src/imap/cmd-create.c M src/imap/cmd-delete.c M src/imap/cmd-enable.c M src/imap/cmd-examine.c M src/imap/cmd-expunge.c M src/imap/cmd-fetch.c M src/imap/cmd-genurlauth.c M src/imap/cmd-getmetadata.c M src/imap/cmd-id.c M src/imap/cmd-idle.c M src/imap/cmd-list.c M src/imap/cmd-logout.c M src/imap/cmd-lsub.c M src/imap/cmd-namespace.c M src/imap/cmd-noop.c M src/imap/cmd-notify.c M src/imap/cmd-rename.c M src/imap/cmd-resetkey.c M src/imap/cmd-search.c M src/imap/cmd-select.c M src/imap/cmd-setmetadata.c M src/imap/cmd-sort.c M src/imap/cmd-status.c M src/imap/cmd-store.c M src/imap/cmd-subscribe.c M src/imap/cmd-thread.c M src/imap/cmd-unselect.c M src/imap/cmd-unsubscribe.c M src/imap/cmd-urlfetch.c M src/imap/cmd-x-cancel.c M src/imap/cmd-x-state.c M src/imap/imap-client-hibernate.c M src/imap/imap-client.c M src/imap/imap-commands-util.c M src/imap/imap-commands.c M src/imap/imap-expunge.c M src/imap/imap-fetch-body.c M src/imap/imap-fetch.c M src/imap/imap-list.c M src/imap/imap-master-client.c M src/imap/imap-notify.c M src/imap/imap-search-args.c M src/imap/imap-search.c M src/imap/imap-settings.c M src/imap/imap-state.c M src/imap/imap-status.c M src/imap/imap-sync.c M src/imap/mail-storage-callbacks.c M src/imap/main.c M src/indexer/indexer-client.c M src/indexer/indexer-queue.c M src/indexer/indexer-settings.c M src/indexer/indexer-worker-settings.c M src/indexer/indexer-worker.c M src/indexer/indexer.c M src/indexer/master-connection.c M src/indexer/worker-connection.c M src/indexer/worker-pool.c M src/ipc/client.c M src/ipc/ipc-connection.c M src/ipc/ipc-group.c M src/ipc/ipc-settings.c M src/ipc/main.c M src/lda/main.c M src/lib-auth/auth-client-request.c M src/lib-auth/auth-client.c M src/lib-auth/auth-master.c M src/lib-auth/auth-server-connection.c M src/lib-charset/charset-iconv.c M src/lib-charset/charset-utf8.c M src/lib-charset/test-charset.c M src/lib-compression/compression.c M src/lib-compression/istream-bzlib.c M src/lib-compression/istream-lz4.c M src/lib-compression/istream-lzma.c M src/lib-compression/istream-zlib.c M src/lib-compression/ostream-bzlib.c M src/lib-compression/ostream-lz4.c M src/lib-compression/ostream-lzma.c M src/lib-compression/ostream-zlib.c M src/lib-compression/test-compression.c M src/lib-dict/dict-cdb.c M src/lib-dict/dict-client.c M src/lib-dict/dict-db.c M src/lib-dict/dict-file.c M src/lib-dict/dict-fs.c M src/lib-dict/dict-memcached-ascii.c M src/lib-dict/dict-memcached.c M src/lib-dict/dict-redis.c M src/lib-dict/dict-register.c M src/lib-dict/dict-sql-settings.c M src/lib-dict/dict-sql.c M src/lib-dict/dict-transaction-memory.c M src/lib-dict/dict.c M src/lib-dict/test-dict.c M src/lib-dns/dns-lookup.c M src/lib-fs/fs-api.c M src/lib-fs/fs-dict.c M src/lib-fs/fs-metawrap.c M src/lib-fs/fs-posix.c M src/lib-fs/fs-randomfail.c M src/lib-fs/fs-sis-common.c M src/lib-fs/fs-sis-queue.c M src/lib-fs/fs-sis.c M src/lib-fs/istream-fs-file.c M src/lib-fs/istream-fs-stats.c M src/lib-fs/istream-metawrap.c M src/lib-fs/ostream-cmp.c M src/lib-fs/ostream-metawrap.c M src/lib-fts/fts-filter-contractions.c M src/lib-fts/fts-filter-english-possessive.c M src/lib-fts/fts-filter-lowercase.c M src/lib-fts/fts-filter-normalizer-icu.c M src/lib-fts/fts-filter-stemmer-snowball.c M src/lib-fts/fts-filter-stopwords.c M src/lib-fts/fts-filter.c M src/lib-fts/fts-icu.c M src/lib-fts/fts-language.c M src/lib-fts/fts-tokenizer-address.c M src/lib-fts/fts-tokenizer-generic.c M src/lib-fts/fts-tokenizer.c M src/lib-fts/test-fts-filter.c M src/lib-fts/test-fts-icu.c M src/lib-fts/test-fts-language.c M src/lib-fts/test-fts-tokenizer.c M src/lib-http/http-auth.c M src/lib-http/http-client-connection.c M src/lib-http/http-client-host.c M src/lib-http/http-client-peer.c M src/lib-http/http-client-queue.c M src/lib-http/http-client-request.c M src/lib-http/http-client.c M src/lib-http/http-date.c M src/lib-http/http-header-parser.c M src/lib-http/http-header.c M src/lib-http/http-message-parser.c M src/lib-http/http-parser.c M src/lib-http/http-request-parser.c M src/lib-http/http-response-parser.c M src/lib-http/http-server-connection.c M src/lib-http/http-server-request.c M src/lib-http/http-server-response.c M src/lib-http/http-server.c M src/lib-http/http-transfer-chunked.c M src/lib-http/http-url.c M src/lib-http/test-http-auth.c M src/lib-http/test-http-client.c M src/lib-http/test-http-date.c M src/lib-http/test-http-header-parser.c M src/lib-http/test-http-request-parser.c M src/lib-http/test-http-response-parser.c M src/lib-http/test-http-server.c M src/lib-http/test-http-transfer.c M src/lib-http/test-http-url.c M src/lib-imap-client/imapc-client.c M src/lib-imap-client/imapc-connection.c M src/lib-imap-client/imapc-msgmap.c M src/lib-imap-storage/imap-metadata.c M src/lib-imap-storage/imap-msgpart-url.c M src/lib-imap-storage/imap-msgpart.c M src/lib-imap-urlauth/imap-urlauth-backend.c M src/lib-imap-urlauth/imap-urlauth-connection.c M src/lib-imap-urlauth/imap-urlauth-fetch.c M src/lib-imap-urlauth/imap-urlauth.c M src/lib-imap/imap-arg.c M src/lib-imap/imap-base-subject.c M src/lib-imap/imap-bodystructure.c M src/lib-imap/imap-date.c M src/lib-imap/imap-envelope.c M src/lib-imap/imap-id.c M src/lib-imap/imap-keepalive.c M src/lib-imap/imap-match.c M src/lib-imap/imap-parser.c M src/lib-imap/imap-quote.c M src/lib-imap/imap-seqset.c M src/lib-imap/imap-url.c M src/lib-imap/imap-utf7.c M src/lib-imap/imap-util.c M src/lib-imap/test-imap-bodystructure.c M src/lib-imap/test-imap-match.c M src/lib-imap/test-imap-parser.c M src/lib-imap/test-imap-quote.c M src/lib-imap/test-imap-url.c M src/lib-imap/test-imap-utf7.c M src/lib-imap/test-imap-util.c M src/lib-index/mail-cache-compress.c M src/lib-index/mail-cache-decisions.c M src/lib-index/mail-cache-fields.c M src/lib-index/mail-cache-lookup.c M src/lib-index/mail-cache-sync-update.c M src/lib-index/mail-cache-transaction.c M src/lib-index/mail-cache.c M src/lib-index/mail-index-alloc-cache.c M src/lib-index/mail-index-dummy-view.c M src/lib-index/mail-index-fsck.c M src/lib-index/mail-index-lock.c M src/lib-index/mail-index-map-hdr.c M src/lib-index/mail-index-map-read.c M src/lib-index/mail-index-map.c M src/lib-index/mail-index-modseq.c M src/lib-index/mail-index-strmap.c M src/lib-index/mail-index-sync-ext.c M src/lib-index/mail-index-sync-keywords.c M src/lib-index/mail-index-sync-update.c M src/lib-index/mail-index-sync.c M src/lib-index/mail-index-transaction-export.c M src/lib-index/mail-index-transaction-finish.c M src/lib-index/mail-index-transaction-sort-appends.c M src/lib-index/mail-index-transaction-update.c M src/lib-index/mail-index-transaction-view.c M src/lib-index/mail-index-transaction.c M src/lib-index/mail-index-util.c M src/lib-index/mail-index-view-sync.c M src/lib-index/mail-index-view.c M src/lib-index/mail-index-write.c M src/lib-index/mail-index.c M src/lib-index/mail-transaction-log-append.c M src/lib-index/mail-transaction-log-file.c M src/lib-index/mail-transaction-log-view.c M src/lib-index/mail-transaction-log.c M src/lib-index/mailbox-log.c M src/lib-index/test-mail-index-sync-ext.c M src/lib-index/test-mail-index-transaction-finish.c M src/lib-index/test-mail-index-transaction-update.c M src/lib-index/test-mail-transaction-log-append.c M src/lib-index/test-mail-transaction-log-view.c M src/lib-lda/duplicate.c M src/lib-lda/lda-settings.c M src/lib-lda/lmtp-client.c M src/lib-lda/mail-deliver.c M src/lib-lda/mail-send.c M src/lib-lda/smtp-client.c M src/lib-mail/istream-attachment-connector.c M src/lib-mail/istream-attachment-extractor.c M src/lib-mail/istream-binary-converter.c M src/lib-mail/istream-dot.c M src/lib-mail/istream-header-filter.c M src/lib-mail/istream-nonuls.c M src/lib-mail/istream-qp-decoder.c M src/lib-mail/mail-html2text.c M src/lib-mail/mail-user-hash.c M src/lib-mail/mbox-from.c M src/lib-mail/message-address.c M src/lib-mail/message-binary-part.c M src/lib-mail/message-date.c M src/lib-mail/message-decoder.c M src/lib-mail/message-header-decode.c M src/lib-mail/message-header-encode.c M src/lib-mail/message-header-parser.c M src/lib-mail/message-id.c M src/lib-mail/message-parser.c M src/lib-mail/message-part-serialize.c M src/lib-mail/message-part.c M src/lib-mail/message-search.c M src/lib-mail/message-size.c M src/lib-mail/message-snippet.c M src/lib-mail/ostream-dot.c M src/lib-mail/qp-decoder.c M src/lib-mail/quoted-printable.c M src/lib-mail/rfc2231-parser.c M src/lib-mail/rfc822-parser.c M src/lib-mail/test-istream-attachment.c M src/lib-mail/test-istream-binary-converter.c M src/lib-mail/test-istream-dot.c M src/lib-mail/test-istream-header-filter.c M src/lib-mail/test-istream-qp-decoder.c M src/lib-mail/test-mail-html2text.c M src/lib-mail/test-mbox-from.c M src/lib-mail/test-message-address.c M src/lib-mail/test-message-date.c M src/lib-mail/test-message-decoder.c M src/lib-mail/test-message-header-decode.c M src/lib-mail/test-message-header-encode.c M src/lib-mail/test-message-header-parser.c M src/lib-mail/test-message-id.c M src/lib-mail/test-message-parser.c M src/lib-mail/test-message-part.c M src/lib-mail/test-message-snippet.c M src/lib-mail/test-ostream-dot.c M src/lib-mail/test-qp-decoder.c M src/lib-mail/test-quoted-printable.c M src/lib-mail/test-rfc2231-parser.c M src/lib-mail/test-rfc822-parser.c M src/lib-master/anvil-client.c M src/lib-master/ipc-client.c M src/lib-master/ipc-server.c M src/lib-master/master-auth.c M src/lib-master/master-instance.c M src/lib-master/master-login-auth.c M src/lib-master/master-login.c M src/lib-master/master-service-haproxy.c M src/lib-master/master-service-settings-cache.c M src/lib-master/master-service-settings.c M src/lib-master/master-service-ssl-settings.c M src/lib-master/master-service-ssl.c M src/lib-master/master-service.c M src/lib-master/mountpoint-list.c M src/lib-master/syslog-util.c M src/lib-master/test-master-service-settings-cache.c M src/lib-sasl/dsasl-client.c M src/lib-sasl/mech-login.c M src/lib-sasl/mech-plain.c M src/lib-settings/settings-parser.c M src/lib-settings/settings.c M src/lib-sql/driver-cassandra.c M src/lib-sql/driver-mysql.c M src/lib-sql/driver-pgsql.c M src/lib-sql/driver-sqlite.c M src/lib-sql/driver-sqlpool.c M src/lib-sql/sql-api.c M src/lib-sql/sql-db-cache.c M src/lib-ssl-iostream/iostream-openssl-common.c M src/lib-ssl-iostream/iostream-openssl-context.c M src/lib-ssl-iostream/iostream-openssl-params.c M src/lib-ssl-iostream/iostream-openssl.c M src/lib-ssl-iostream/iostream-ssl.c M src/lib-ssl-iostream/istream-openssl.c M src/lib-ssl-iostream/ostream-openssl.c M src/lib-stats/stats-parser.c M src/lib-stats/stats.c M src/lib-storage/fail-mail-storage.c M src/lib-storage/fail-mail.c M src/lib-storage/fail-mailbox.c M src/lib-storage/index/cydir/cydir-mail.c M src/lib-storage/index/cydir/cydir-save.c M src/lib-storage/index/cydir/cydir-storage.c M src/lib-storage/index/cydir/cydir-sync.c M src/lib-storage/index/dbox-common/dbox-attachment.c M src/lib-storage/index/dbox-common/dbox-file-fix.c M src/lib-storage/index/dbox-common/dbox-file.c M src/lib-storage/index/dbox-common/dbox-mail.c M src/lib-storage/index/dbox-common/dbox-save.c M src/lib-storage/index/dbox-common/dbox-storage.c M src/lib-storage/index/dbox-multi/mdbox-deleted-storage.c M src/lib-storage/index/dbox-multi/mdbox-file.c M src/lib-storage/index/dbox-multi/mdbox-mail.c M src/lib-storage/index/dbox-multi/mdbox-map.c M src/lib-storage/index/dbox-multi/mdbox-purge.c M src/lib-storage/index/dbox-multi/mdbox-save.c M src/lib-storage/index/dbox-multi/mdbox-settings.c M src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c M src/lib-storage/index/dbox-multi/mdbox-storage.c M src/lib-storage/index/dbox-multi/mdbox-sync.c M src/lib-storage/index/dbox-single/sdbox-copy.c M src/lib-storage/index/dbox-single/sdbox-file.c M src/lib-storage/index/dbox-single/sdbox-mail.c M src/lib-storage/index/dbox-single/sdbox-save.c M src/lib-storage/index/dbox-single/sdbox-storage.c M src/lib-storage/index/dbox-single/sdbox-sync-rebuild.c M src/lib-storage/index/dbox-single/sdbox-sync.c M src/lib-storage/index/imapc/imapc-list.c M src/lib-storage/index/imapc/imapc-mail-fetch.c M src/lib-storage/index/imapc/imapc-mail.c M src/lib-storage/index/imapc/imapc-mailbox.c M src/lib-storage/index/imapc/imapc-save.c M src/lib-storage/index/imapc/imapc-search.c M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-storage.c M src/lib-storage/index/imapc/imapc-sync.c M src/lib-storage/index/index-attachment.c M src/lib-storage/index/index-attribute.c M src/lib-storage/index/index-mail-binary.c M src/lib-storage/index/index-mail-headers.c M src/lib-storage/index/index-mail.c M src/lib-storage/index/index-mailbox-size.c M src/lib-storage/index/index-rebuild.c M src/lib-storage/index/index-search-result.c M src/lib-storage/index/index-search.c M src/lib-storage/index/index-sort-string.c M src/lib-storage/index/index-sort.c M src/lib-storage/index/index-status.c M src/lib-storage/index/index-storage.c M src/lib-storage/index/index-sync-changes.c M src/lib-storage/index/index-sync-pvt.c M src/lib-storage/index/index-sync-search.c M src/lib-storage/index/index-sync.c M src/lib-storage/index/index-thread-finish.c M src/lib-storage/index/index-thread-links.c M src/lib-storage/index/index-thread.c M src/lib-storage/index/index-transaction.c M src/lib-storage/index/istream-mail.c M src/lib-storage/index/maildir/maildir-copy.c M src/lib-storage/index/maildir/maildir-filename-flags.c M src/lib-storage/index/maildir/maildir-filename.c M src/lib-storage/index/maildir/maildir-keywords.c M src/lib-storage/index/maildir/maildir-mail.c M src/lib-storage/index/maildir/maildir-save.c M src/lib-storage/index/maildir/maildir-settings.c M src/lib-storage/index/maildir/maildir-storage.c M src/lib-storage/index/maildir/maildir-sync-index.c M src/lib-storage/index/maildir/maildir-sync.c M src/lib-storage/index/maildir/maildir-uidlist.c M src/lib-storage/index/maildir/maildir-util.c M src/lib-storage/index/mbox/istream-raw-mbox.c M src/lib-storage/index/mbox/mbox-file.c M src/lib-storage/index/mbox/mbox-lock.c M src/lib-storage/index/mbox/mbox-mail.c M src/lib-storage/index/mbox/mbox-md5-all.c M src/lib-storage/index/mbox/mbox-md5-apop3d.c M src/lib-storage/index/mbox/mbox-save.c M src/lib-storage/index/mbox/mbox-settings.c M src/lib-storage/index/mbox/mbox-storage.c M src/lib-storage/index/mbox/mbox-sync-list-index.c M src/lib-storage/index/mbox/mbox-sync-parse.c M src/lib-storage/index/mbox/mbox-sync-rewrite.c M src/lib-storage/index/mbox/mbox-sync-update.c M src/lib-storage/index/mbox/mbox-sync.c M src/lib-storage/index/pop3c/pop3c-client.c M src/lib-storage/index/pop3c/pop3c-mail.c M src/lib-storage/index/pop3c/pop3c-settings.c M src/lib-storage/index/pop3c/pop3c-storage.c M src/lib-storage/index/pop3c/pop3c-sync.c M src/lib-storage/index/raw/raw-mail.c M src/lib-storage/index/raw/raw-storage.c M src/lib-storage/index/raw/raw-sync.c M src/lib-storage/index/shared/shared-list.c M src/lib-storage/index/shared/shared-storage.c M src/lib-storage/list/mailbox-list-delete.c M src/lib-storage/list/mailbox-list-fs-flags.c M src/lib-storage/list/mailbox-list-fs-iter.c M src/lib-storage/list/mailbox-list-fs.c M src/lib-storage/list/mailbox-list-index-backend.c M src/lib-storage/list/mailbox-list-index-iter.c M src/lib-storage/list/mailbox-list-index-notify.c M src/lib-storage/list/mailbox-list-index-status.c M src/lib-storage/list/mailbox-list-index-sync.c M src/lib-storage/list/mailbox-list-index.c M src/lib-storage/list/mailbox-list-iter.c M src/lib-storage/list/mailbox-list-maildir-iter.c M src/lib-storage/list/mailbox-list-maildir.c M src/lib-storage/list/mailbox-list-none.c M src/lib-storage/list/mailbox-list-notify-tree.c M src/lib-storage/list/mailbox-list-subscriptions.c M src/lib-storage/list/subscription-file.c M src/lib-storage/mail-autoexpunge.c M src/lib-storage/mail-copy.c M src/lib-storage/mail-error.c M src/lib-storage/mail-namespace.c M src/lib-storage/mail-search-args-cmdline.c M src/lib-storage/mail-search-args-imap.c M src/lib-storage/mail-search-args-simplify.c M src/lib-storage/mail-search-build.c M src/lib-storage/mail-search-parser-cmdline.c M src/lib-storage/mail-search-parser-imap.c M src/lib-storage/mail-search-parser.c M src/lib-storage/mail-search-register-human.c M src/lib-storage/mail-search-register-imap.c M src/lib-storage/mail-search-register.c M src/lib-storage/mail-search.c M src/lib-storage/mail-storage-hooks.c M src/lib-storage/mail-storage-service.c M src/lib-storage/mail-storage-settings.c M src/lib-storage/mail-storage.c M src/lib-storage/mail-thread.c M src/lib-storage/mail-user.c M src/lib-storage/mail.c M src/lib-storage/mailbox-attribute-internal.c M src/lib-storage/mailbox-attribute.c M src/lib-storage/mailbox-get.c M src/lib-storage/mailbox-guid-cache.c M src/lib-storage/mailbox-header.c M src/lib-storage/mailbox-keywords.c M src/lib-storage/mailbox-list-notify.c M src/lib-storage/mailbox-list.c M src/lib-storage/mailbox-recent-flags.c M src/lib-storage/mailbox-search-result.c M src/lib-storage/mailbox-tree.c M src/lib-storage/mailbox-uidvalidity.c M src/lib-storage/mailbox-watch.c M src/lib-storage/test-mail-search-args-imap.c M src/lib-storage/test-mail-search-args-simplify.c M src/lib-storage/test-mailbox-get.c M src/lib-test/test-common.c M src/lib/abspath.c M src/lib/aqueue.c M src/lib/array.c M src/lib/askpass.c M src/lib/backtrace-string.c M src/lib/base32.c M src/lib/base64.c M src/lib/bits.c M src/lib/bsearch-insert-pos.c M src/lib/buffer.c M src/lib/child-wait.c M src/lib/compat.c M src/lib/connection.c M src/lib/crc32.c M src/lib/data-stack.c M src/lib/eacces-error.c M src/lib/env-util.c M src/lib/execv-const.c M src/lib/failures.c M src/lib/fd-close-on-exec.c M src/lib/fd-set-nonblock.c M src/lib/fdatasync-path.c M src/lib/fdpass.c M src/lib/file-cache.c M src/lib/file-copy.c M src/lib/file-create-locked.c M src/lib/file-dotlock.c M src/lib/file-lock.c M src/lib/file-set-size.c M src/lib/guid.c M src/lib/hash-format.c M src/lib/hash-method.c M src/lib/hash.c M src/lib/hash2.c M src/lib/hex-binary.c M src/lib/hex-dec.c M src/lib/hmac.c M src/lib/home-expand.c M src/lib/hostpid.c M src/lib/imem.c M src/lib/ioloop-epoll.c M src/lib/ioloop-notify-fd.c M src/lib/ioloop-notify-inotify.c M src/lib/ioloop-notify-none.c M src/lib/ioloop-poll.c M src/lib/ioloop-select.c M src/lib/ioloop.c M src/lib/iostream-rawlog.c M src/lib/iostream-temp.c M src/lib/iostream.c M src/lib/ipwd.c M src/lib/iso8601-date.c M src/lib/istream-base64-decoder.c M src/lib/istream-base64-encoder.c M src/lib/istream-callback.c M src/lib/istream-chain.c M src/lib/istream-concat.c M src/lib/istream-crlf.c M src/lib/istream-data.c M src/lib/istream-failure-at.c M src/lib/istream-file.c M src/lib/istream-hash.c M src/lib/istream-jsonstr.c M src/lib/istream-limit.c M src/lib/istream-mmap.c M src/lib/istream-rawlog.c M src/lib/istream-seekable.c M src/lib/istream-sized.c M src/lib/istream-tee.c M src/lib/istream-timeout.c M src/lib/istream-unix.c M src/lib/istream.c M src/lib/json-parser.c M src/lib/json-tree.c M src/lib/lib-signals.c M src/lib/lib.c M src/lib/mempool-alloconly.c M src/lib/mempool-datastack.c M src/lib/mempool-system.c M src/lib/mempool-unsafe-datastack.c M src/lib/mempool.c M src/lib/mkdir-parents.c M src/lib/mmap-anon.c M src/lib/mmap-util.c M src/lib/module-dir.c M src/lib/mountpoint.c M src/lib/net.c M src/lib/nfs-workarounds.c M src/lib/numpack.c M src/lib/ostream-buffer.c M src/lib/ostream-failure-at.c M src/lib/ostream-file.c M src/lib/ostream-hash.c M src/lib/ostream-rawlog.c M src/lib/ostream.c M src/lib/primes.c M src/lib/printf-format-fix.c M src/lib/priorityq.c M src/lib/process-title.c M src/lib/rand.c M src/lib/randgen.c M src/lib/read-full.c M src/lib/restrict-access.c M src/lib/restrict-process-size.c M src/lib/safe-memset.c M src/lib/safe-mkdir.c M src/lib/safe-mkstemp.c M src/lib/sendfile-util.c M src/lib/seq-range-array.c M src/lib/str-find.c M src/lib/str-sanitize.c M src/lib/str-table.c M src/lib/str.c M src/lib/strescape.c M src/lib/strfuncs.c M src/lib/strnum.c M src/lib/test-aqueue.c M src/lib/test-array.c M src/lib/test-base32.c M src/lib/test-base64.c M src/lib/test-bits.c M src/lib/test-bsearch-insert-pos.c M src/lib/test-buffer.c M src/lib/test-crc32.c M src/lib/test-data-stack.c M src/lib/test-failures.c M src/lib/test-guid.c M src/lib/test-hash-format.c M src/lib/test-hash-method.c M src/lib/test-hash.c M src/lib/test-hex-binary.c M src/lib/test-ioloop.c M src/lib/test-iso8601-date.c M src/lib/test-istream-base64-decoder.c M src/lib/test-istream-base64-encoder.c M src/lib/test-istream-concat.c M src/lib/test-istream-crlf.c M src/lib/test-istream-failure-at.c M src/lib/test-istream-seekable.c M src/lib/test-istream-tee.c M src/lib/test-istream-unix.c M src/lib/test-istream.c M src/lib/test-json-parser.c M src/lib/test-json-tree.c M src/lib/test-lib.c M src/lib/test-llist.c M src/lib/test-mempool-alloconly.c M src/lib/test-net.c M src/lib/test-numpack.c M src/lib/test-ostream-failure-at.c M src/lib/test-ostream-file.c M src/lib/test-primes.c M src/lib/test-printf-format-fix.c M src/lib/test-priorityq.c M src/lib/test-seq-range-array.c M src/lib/test-str-find.c M src/lib/test-str-sanitize.c M src/lib/test-str-table.c M src/lib/test-str.c M src/lib/test-strescape.c M src/lib/test-strfuncs.c M src/lib/test-strnum.c M src/lib/test-time-util.c M src/lib/test-timing.c M src/lib/test-unichar.c M src/lib/test-utc-mktime.c M src/lib/test-var-expand.c M src/lib/test-wildcard-match.c M src/lib/time-util.c M src/lib/timing.c M src/lib/unichar.c M src/lib/unix-socket-create.c M src/lib/unlink-directory.c M src/lib/unlink-old-files.c M src/lib/uri-util.c M src/lib/utc-mktime.c M src/lib/utc-offset.c M src/lib/var-expand.c M src/lib/write-full.c M src/lmtp/client.c M src/lmtp/commands.c M src/lmtp/lmtp-proxy.c M src/lmtp/lmtp-settings.c M src/lmtp/main.c M src/log/doveadm-connection.c M src/log/log-connection.c M src/log/log-error-buffer.c M src/log/log-settings.c M src/log/main.c M src/login-common/access-lookup.c M src/login-common/client-common-auth.c M src/login-common/client-common.c M src/login-common/login-proxy-state.c M src/login-common/login-proxy.c M src/login-common/login-settings.c M src/login-common/main.c M src/login-common/sasl-server.c M src/login-common/ssl-proxy-gnutls.c M src/login-common/ssl-proxy-openssl.c M src/login-common/ssl-proxy.c M src/master/capabilities-posix.c M src/master/dup2-array.c M src/master/main.c M src/master/master-settings.c M src/master/service-anvil.c M src/master/service-listen.c M src/master/service-log.c M src/master/service-monitor.c M src/master/service-process-notify.c M src/master/service-process.c M src/master/service.c M src/plugins/acl/acl-api.c M src/plugins/acl/acl-attributes.c M src/plugins/acl/acl-backend-vfile-acllist.c M src/plugins/acl/acl-backend-vfile-update.c M src/plugins/acl/acl-backend-vfile.c M src/plugins/acl/acl-backend.c M src/plugins/acl/acl-cache.c M src/plugins/acl/acl-global-file.c M src/plugins/acl/acl-lookup-dict.c M src/plugins/acl/acl-mailbox-list.c M src/plugins/acl/acl-mailbox.c M src/plugins/acl/acl-plugin.c M src/plugins/acl/acl-shared-storage.c M src/plugins/acl/acl-storage.c M src/plugins/acl/doveadm-acl.c M src/plugins/autocreate/autocreate-plugin.c M src/plugins/expire/doveadm-expire.c M src/plugins/expire/expire-plugin.c M src/plugins/expire/expire-set.c M src/plugins/fs-compress/fs-compress.c M src/plugins/fts-lucene/doveadm-fts-lucene.c M src/plugins/fts-lucene/fts-backend-lucene.c M src/plugins/fts-lucene/fts-lucene-plugin.c M src/plugins/fts-lucene/lucene-wrapper.cc M src/plugins/fts-solr/fts-backend-solr-old.c M src/plugins/fts-solr/fts-backend-solr.c M src/plugins/fts-solr/fts-solr-plugin.c M src/plugins/fts-solr/solr-connection.c M src/plugins/fts-squat/fts-backend-squat.c M src/plugins/fts-squat/fts-squat-plugin.c M src/plugins/fts-squat/squat-test.c M src/plugins/fts-squat/squat-trie.c M src/plugins/fts-squat/squat-uidlist.c M src/plugins/fts/doveadm-dump-fts-expunge-log.c M src/plugins/fts/doveadm-fts.c M src/plugins/fts/fts-api.c M src/plugins/fts/fts-build-mail.c M src/plugins/fts/fts-expunge-log.c M src/plugins/fts/fts-indexer.c M src/plugins/fts/fts-parser-html.c M src/plugins/fts/fts-parser-script.c M src/plugins/fts/fts-parser-tika.c M src/plugins/fts/fts-parser.c M src/plugins/fts/fts-plugin.c M src/plugins/fts/fts-search-args.c M src/plugins/fts/fts-search-serialize.c M src/plugins/fts/fts-search.c M src/plugins/fts/fts-storage.c M src/plugins/fts/fts-user.c M src/plugins/fts/xml2text.c M src/plugins/imap-acl/imap-acl-plugin.c M src/plugins/imap-quota/imap-quota-plugin.c M src/plugins/imap-stats/imap-stats-plugin.c M src/plugins/imap-zlib/imap-zlib-plugin.c M src/plugins/last-login/last-login-plugin.c M src/plugins/lazy-expunge/lazy-expunge-plugin.c M src/plugins/listescape/listescape-plugin.c M src/plugins/mail-filter/istream-ext-filter.c M src/plugins/mail-filter/mail-filter-plugin.c M src/plugins/mail-filter/ostream-ext-filter.c M src/plugins/mail-log/mail-log-plugin.c M src/plugins/mailbox-alias/mailbox-alias-plugin.c M src/plugins/notify/notify-plugin.c M src/plugins/notify/notify-storage.c M src/plugins/pop3-migration/pop3-migration-plugin.c M src/plugins/pop3-migration/test-pop3-migration-plugin.c M src/plugins/push-notification/push-notification-driver-dlog.c M src/plugins/push-notification/push-notification-driver-ox.c M src/plugins/push-notification/push-notification-drivers.c M src/plugins/push-notification/push-notification-drivers.h M src/plugins/push-notification/push-notification-event-flagsclear.c M src/plugins/push-notification/push-notification-event-flagsclear.h M src/plugins/push-notification/push-notification-event-flagsset.c M src/plugins/push-notification/push-notification-event-flagsset.h M src/plugins/push-notification/push-notification-event-mailboxcreate.c M src/plugins/push-notification/push-notification-event-mailboxcreate.h M src/plugins/push-notification/push-notification-event-mailboxdelete.c M src/plugins/push-notification/push-notification-event-mailboxdelete.h M src/plugins/push-notification/push-notification-event-mailboxrename.c M src/plugins/push-notification/push-notification-event-mailboxrename.h M src/plugins/push-notification/push-notification-event-mailboxsubscribe.c M src/plugins/push-notification/push-notification-event-mailboxsubscribe.h M src/plugins/push-notification/push-notification-event-mailboxunsubscribe.c M src/plugins/push-notification/push-notification-event-mailboxunsubscribe.h M src/plugins/push-notification/push-notification-event-message-common.h M src/plugins/push-notification/push-notification-event-messageappend.c M src/plugins/push-notification/push-notification-event-messageappend.h M src/plugins/push-notification/push-notification-event-messageexpunge.c M src/plugins/push-notification/push-notification-event-messageexpunge.h M src/plugins/push-notification/push-notification-event-messagenew.c M src/plugins/push-notification/push-notification-event-messagenew.h M src/plugins/push-notification/push-notification-event-messageread.c M src/plugins/push-notification/push-notification-event-messageread.h M src/plugins/push-notification/push-notification-event-messagetrash.c M src/plugins/push-notification/push-notification-event-messagetrash.h M src/plugins/push-notification/push-notification-events-rfc5423.c M src/plugins/push-notification/push-notification-events-rfc5423.h M src/plugins/push-notification/push-notification-events.c M src/plugins/push-notification/push-notification-events.h M src/plugins/push-notification/push-notification-plugin.c M src/plugins/push-notification/push-notification-plugin.h M src/plugins/push-notification/push-notification-triggers.c M src/plugins/push-notification/push-notification-triggers.h M src/plugins/push-notification/push-notification-txn-mbox.c M src/plugins/push-notification/push-notification-txn-mbox.h M src/plugins/push-notification/push-notification-txn-msg.c M src/plugins/push-notification/push-notification-txn-msg.h M src/plugins/quota-clone/quota-clone-plugin.c M src/plugins/quota/doveadm-quota.c M src/plugins/quota/quota-count.c M src/plugins/quota/quota-dict.c M src/plugins/quota/quota-dirsize.c M src/plugins/quota/quota-fs.c M src/plugins/quota/quota-maildir.c M src/plugins/quota/quota-plugin.c M src/plugins/quota/quota-status.c M src/plugins/quota/quota-storage.c M src/plugins/quota/quota-util.c M src/plugins/quota/quota.c M src/plugins/quota/test-quota-util.c M src/plugins/replication/replication-plugin.c M src/plugins/snarf/snarf-plugin.c M src/plugins/stats/mail-stats-fill.c M src/plugins/stats/mail-stats.c M src/plugins/stats/stats-connection.c M src/plugins/stats/stats-plugin.c M src/plugins/trash/trash-plugin.c M src/plugins/virtual/virtual-config.c M src/plugins/virtual/virtual-mail.c M src/plugins/virtual/virtual-plugin.c M src/plugins/virtual/virtual-save.c M src/plugins/virtual/virtual-search.c M src/plugins/virtual/virtual-storage.c M src/plugins/virtual/virtual-sync.c M src/plugins/virtual/virtual-transaction.c M src/plugins/zlib/zlib-plugin.c M src/pop3-login/client-authenticate.c M src/pop3-login/client.c M src/pop3-login/pop3-login-settings.c M src/pop3-login/pop3-proxy.c M src/pop3/main.c M src/pop3/pop3-client.c M src/pop3/pop3-commands.c M src/pop3/pop3-settings.c M src/replication/aggregator/aggregator-settings.c M src/replication/aggregator/aggregator.c M src/replication/aggregator/notify-connection.c M src/replication/aggregator/replicator-connection.c M src/replication/replicator/doveadm-connection.c M src/replication/replicator/dsync-client.c M src/replication/replicator/notify-connection.c M src/replication/replicator/replicator-brain.c M src/replication/replicator/replicator-queue-auth.c M src/replication/replicator/replicator-queue.c M src/replication/replicator/replicator-settings.c M src/replication/replicator/replicator.c M src/ssl-params/main.c M src/ssl-params/ssl-params-settings.c M src/ssl-params/ssl-params.c M src/stats/client-export.c M src/stats/client.c M src/stats/global-memory.c M src/stats/mail-command.c M src/stats/mail-domain.c M src/stats/mail-ip.c M src/stats/mail-server-connection.c M src/stats/mail-session.c M src/stats/mail-stats.c M src/stats/mail-user.c M src/stats/main.c M src/stats/stats-settings.c M src/util/gdbhelper.c M src/util/maildirlock.c M src/util/rawlog.c M src/util/script-login.c M src/util/script.c M src/util/tcpwrap-settings.c M src/util/tcpwrap.c Log Message: ----------- global: freshen copyright git ls-files | xargs perl -p -i -e 's/(\d+)-201[0-5]/$1-2016/g;s/ (201[0-5]) Dovecot/ $1-2016 Dovecot/' From noreply at github.com Wed Jan 13 12:43:07 2016 From: noreply at github.com (GitHub) Date: Wed, 13 Jan 2016 04:43:07 -0800 Subject: [dovecot/core] fb297d: virtual plugin: Minor cleanup/fix - find the names... Message-ID: <5696465baaede_12463fd49e7632b8105295@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: fb297df915b623e8d83632abcd42182cbd86174a https://github.com/dovecot/core/commit/fb297df915b623e8d83632abcd42182cbd86174a Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/plugins/virtual/virtual-config.c Log Message: ----------- virtual plugin: Minor cleanup/fix - find the namespace after we have processed special prefixes. We already skipped over them earlier, but the logic wasn't exactly the same as when they were actually being processed, so there could have been some unexpected mismatches. Commit: 77a2367051db01c6fc8cc575242d8a7f5b2c1d42 https://github.com/dovecot/core/commit/77a2367051db01c6fc8cc575242d8a7f5b2c1d42 Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/plugins/virtual/virtual-config.c M src/plugins/virtual/virtual-storage.h Log Message: ----------- virtual plugin: Don't treat "+-box" as a negative entry. This was already documented by wiki to work as a mailbox named "-box", although it didn't actually work that way. There wasn't any practical difference between "+-box" and "-box", so this change is unlikely to break anyone's config. It was mainly done as code cleanup. Commit: 28d6a9ec6b055ad6141f0961fe971543f781d4a6 https://github.com/dovecot/core/commit/28d6a9ec6b055ad6141f0961fe971543f781d4a6 Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/plugins/virtual/virtual-config.c Log Message: ----------- virtual plugin: Cleaned up behavior of '!' prefix with '+' and '-' It makes a bit more sense now. Mainly the difference is that "!foo*" means to save mails to a mailbox called "foo*", instead of including mailboxes matching "!foo*" pattern to the virtual mailbox. It's unlikely anyone was relying on this behavior. Commit: bffa23c1beaa139d63ae033f9c1da5de05281565 https://github.com/dovecot/core/commit/bffa23c1beaa139d63ae033f9c1da5de05281565 Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/lib-imap-storage/imap-metadata.c Log Message: ----------- lib-imap-storage: imap_metadata_get*() returned 1 also when value wasn't found. Commit: 27f174f3b836b18cb81cd1e6534031f1f3355348 https://github.com/dovecot/core/commit/27f174f3b836b18cb81cd1e6534031f1f3355348 Author: Timo Sirainen Date: 2016-01-13 (Wed, 13 Jan 2016) Changed paths: M src/plugins/virtual/Makefile.am M src/plugins/virtual/virtual-config.c M src/plugins/virtual/virtual-storage.h Log Message: ----------- virtual plugin: Added support for filtering mailboxes by METADATA entries. Usage: [-]/: There can be multiple metadata entries. All the entries must match. For example: * /private/vendor/vendor.dovecot/virtual:* -/private/vendor/vendor.dovecot/virtual:ignore This matches all mailboxes, which contain a virtual METADATA entry that has any value except "ignore". Note that the current implementation requires still opening all the mailboxes before matching the METADATA entries. This could be avoided in v2.3 with some lib-storage API changes. Compare: https://github.com/dovecot/core/compare/02c335c23bf5...27f174f3b836 From noreply at github.com Thu Jan 14 16:53:05 2016 From: noreply at github.com (GitHub) Date: Thu, 14 Jan 2016 08:53:05 -0800 Subject: [dovecot/core] be3b93: imapc: Don't duplicate standard mailbox flags in L... Message-ID: <5697d271ba00f_21b03f99c0a032c01264ce@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: be3b9374c9cd7f5fbe1e9f9280ed483286dcc04b https://github.com/dovecot/core/commit/be3b9374c9cd7f5fbe1e9f9280ed483286dcc04b Author: Timo Sirainen Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-list.c M src/lib-storage/mailbox-list.h Log Message: ----------- imapc: Don't duplicate standard mailbox flags in LIST replies. We added the standard \NoSelect, \NonExistent, \NoInferiors and \Subscribed to special_use string, which caused them to be sent duplicated. Commit: a4e2101473cfd7ce960fc49b3ce097c3f89ec2ad https://github.com/dovecot/core/commit/a4e2101473cfd7ce960fc49b3ce097c3f89ec2ad Author: Timo Sirainen Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-storage/mailbox-list-private.h M src/lib-storage/mailbox-list.c Log Message: ----------- lib-storage: Added mailbox_list_[un]escape_name_params() This allows calling the mailbox_list_[un]escape_name() with wanted parameters instead of taking them from mailbox_list. Commit: f97b503210435b74de3b26cba07315cbc9ea1dfc https://github.com/dovecot/core/commit/f97b503210435b74de3b26cba07315cbc9ea1dfc Author: Timo Sirainen Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-list.c M src/lib-storage/index/imapc/imapc-list.h M src/lib-storage/index/imapc/imapc-save.c M src/lib-storage/index/imapc/imapc-storage.c M src/lib-storage/index/imapc/imapc-storage.h Log Message: ----------- imapc: Fixed escaping/unescaping mailbox names. This fixes accessing mailbox names with '%' (the escape_char). It also fixes local namespace separator being different from the remote separator. Commit: 6e2bb07ff164bbac054cc53a4b4ca0d8aee909d1 https://github.com/dovecot/core/commit/6e2bb07ff164bbac054cc53a4b4ca0d8aee909d1 Author: Timo Sirainen Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-list.c M src/lib-storage/index/imapc/imapc-storage.c Log Message: ----------- imapc: Fixed mailbox name escaping for CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE Compare: https://github.com/dovecot/core/compare/27f174f3b836...6e2bb07ff164 From noreply at github.com Fri Jan 15 13:05:06 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 05:05:06 -0800 Subject: [dovecot/core] e21baa: imapc: Fixed mailbox name escaping for STATUS Message-ID: <5698ee822ac69_385b3ff55d1b52a017771b@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: e21baa33b4f1e7ad095566341515e65f51acadf6 https://github.com/dovecot/core/commit/e21baa33b4f1e7ad095566341515e65f51acadf6 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-storage.c Log Message: ----------- imapc: Fixed mailbox name escaping for STATUS From noreply at github.com Fri Jan 15 13:14:05 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 05:14:05 -0800 Subject: [dovecot/core] 9d7f23: dsync: Fixed syncing subscription state with dovea... Message-ID: <5698f09d45c94_679f3fcb05bef2c01685d6@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 9d7f23fa2334e037c09d8cf90cc80b3c89ecea27 https://github.com/dovecot/core/commit/9d7f23fa2334e037c09d8cf90cc80b3c89ecea27 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/doveadm/dsync/dsync-mailbox-tree-sync.c Log Message: ----------- dsync: Fixed syncing subscription state with doveadm backup. If DSYNC_MAILBOX_TREES_SYNC_TYPE_PRESERVE_REMOTE was set, we could still have preserved the local subscription state. Also cleaned up the code a bit to make it clearer. From noreply at github.com Fri Jan 15 13:42:06 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 05:42:06 -0800 Subject: [dovecot/core] df596e: imapc: Added imapc_features = no-examine Message-ID: <5698f72ec3bdb_3b383fc7cfdb52a016827d@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: df596e34b604e6ac873de9ca92fb5df2a5fed45f https://github.com/dovecot/core/commit/df596e34b604e6ac873de9ca92fb5df2a5fed45f Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-settings.h M src/lib-storage/index/imapc/imapc-storage.c Log Message: ----------- imapc: Added imapc_features = no-examine From noreply at github.com Fri Jan 15 13:57:05 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 05:57:05 -0800 Subject: [dovecot/core] fa68ab: *-login: Changed -D parameter to mean a more gener... Message-ID: <5698fab1aa9ea_650d3fa2cf9632bc196294@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: fa68ab23880118e31ba3acb75e342c6597e11a6a https://github.com/dovecot/core/commit/fa68ab23880118e31ba3acb75e342c6597e11a6a Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/login-common/login-common.h M src/login-common/main.c Log Message: ----------- *-login: Changed -D parameter to mean a more generic login_debug option. From noreply at github.com Fri Jan 15 14:22:06 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 06:22:06 -0800 Subject: [dovecot/core] 7d8862: Added v2.2.21 to NEWS. Message-ID: <5699008ea1870_42593f8db19a52bc904bf@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 7d8862f4bb87b79f8957629582d84bcff7d00e6c https://github.com/dovecot/core/commit/7d8862f4bb87b79f8957629582d84bcff7d00e6c Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M NEWS Log Message: ----------- Added v2.2.21 to NEWS. From noreply at github.com Fri Jan 15 16:32:06 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 08:32:06 -0800 Subject: [dovecot/core] 481948: *-login: Added login_plugins and login_plugin_dir ... Message-ID: <56991f06a3fa4_650d3fa2cf9632bc1986e1@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 4819488364b20ee82a9d60177d15c79d0b5abbe0 https://github.com/dovecot/core/commit/4819488364b20ee82a9d60177d15c79d0b5abbe0 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/login-common/Makefile.am M src/login-common/login-settings.c M src/login-common/login-settings.h M src/login-common/main.c Log Message: ----------- *-login: Added login_plugins and login_plugin_dir settings. Commit: ba7db1e008078bfbed489e17bee00309e0a7b1f0 https://github.com/dovecot/core/commit/ba7db1e008078bfbed489e17bee00309e0a7b1f0 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/imap-login/Makefile.am M src/imap-login/client.c A src/imap-login/imap-login-commands.c A src/imap-login/imap-login-commands.h Log Message: ----------- imap-login: Added API for registering/unregistering commands (for plugins). Commit: 0af9ef2e9bb71a426bba236e74ceec30be699fb7 https://github.com/dovecot/core/commit/0af9ef2e9bb71a426bba236e74ceec30be699fb7 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/imap-login/Makefile.am M src/imap-login/client-authenticate.c R src/imap-login/client.c R src/imap-login/client.h A src/imap-login/imap-login-client.c A src/imap-login/imap-login-client.h M src/imap-login/imap-proxy.c Log Message: ----------- imap-login: Renamed client.[ch] to imap-login-client.[ch] This allows installing the imap-login-client.h without conflicting. Commit: 98035bde0d047d105d719df2648d9bd64c0d6a55 https://github.com/dovecot/core/commit/98035bde0d047d105d719df2648d9bd64c0d6a55 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/imap-login/Makefile.am Log Message: ----------- imap-login: Install imap-login-*.h headers so plugins can use them. Commit: ad24c034031b26b95e11d6bb9421e10fa2af477f https://github.com/dovecot/core/commit/ad24c034031b26b95e11d6bb9421e10fa2af477f Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M dovecot-config.in.in M dovecot.m4 Log Message: ----------- dovecot-config: Added LIBDOVECOT_{AUTH/POP3/IMAP_LOGIN}_INCLUDE Commit: 9132f9df4e12ed5293c70957813aa3736444a13c https://github.com/dovecot/core/commit/9132f9df4e12ed5293c70957813aa3736444a13c Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/login-common/client-common.c M src/login-common/client-common.h M src/login-common/login-common.h M src/login-common/main.c Log Message: ----------- *-login: Allow plugins to hook into client allocation and add module-specific contexts to client. Compare: https://github.com/dovecot/core/compare/7d8862f4bb87...9132f9df4e12 From noreply at github.com Fri Jan 15 17:12:06 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 09:12:06 -0800 Subject: [dovecot/core] 7d4c80: lib-fts: Add lib-fts to CPPFLAGS as include dir Message-ID: <569928664d0c8_39a73fb93836929c13088b@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 7d4c8041ab63e6a1bf17a9b2bb11dd18634971e2 https://github.com/dovecot/core/commit/7d4c8041ab63e6a1bf17a9b2bb11dd18634971e2 Author: Aki Tuomi Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/lib-fts/Makefile.am Log Message: ----------- lib-fts: Add lib-fts to CPPFLAGS as include dir Without this, VPATH builds fail because the includes cannot be found as they are not on same directory. From noreply at github.com Fri Jan 15 17:15:07 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 09:15:07 -0800 Subject: [dovecot/core] 75b12a: lib-stats: Add stats_reset function Message-ID: <5699291b5377a_5acf3ff6f62172bc13896f@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 75b12af3852681010792cb6f69a98487d960c57e https://github.com/dovecot/core/commit/75b12af3852681010792cb6f69a98487d960c57e Author: Aki Tuomi Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/lib-stats/stats.c M src/lib-stats/stats.h Log Message: ----------- lib-stats: Add stats_reset function Commit: 63393b70c3dc17afffa44f81801e21aa37ff0d4d https://github.com/dovecot/core/commit/63393b70c3dc17afffa44f81801e21aa37ff0d4d Author: Aki Tuomi Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/stats/Makefile.am A src/stats/client-reset.c A src/stats/client-reset.h M src/stats/client.c Log Message: ----------- stats: Add RESET call to stats client Commit: f970f2afa1dad882b7fc0f97f9315e01309cef03 https://github.com/dovecot/core/commit/f970f2afa1dad882b7fc0f97f9315e01309cef03 Author: Aki Tuomi Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/doveadm/doveadm-cmd.h M src/doveadm/doveadm-stats.c M src/doveadm/doveadm.c Log Message: ----------- doveadm-stats: Add stats reset command line Commit: 102af99302e83d0590a57194f2b10d8b82ce8247 https://github.com/dovecot/core/commit/102af99302e83d0590a57194f2b10d8b82ce8247 Author: Aki Tuomi Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M .gitignore M doc/man/Makefile.am A doc/man/doveadm-stats.1.in M doc/man/doveadm.1.in Log Message: ----------- doveadm-stats: Add documentation about stats subcommand Compare: https://github.com/dovecot/core/compare/7d4c8041ab63...102af99302e8 From noreply at github.com Fri Jan 15 17:38:07 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 09:38:07 -0800 Subject: [dovecot/core] f8567d: stats: Added missing #include forgotten in 63393b7... Message-ID: <56992e7f56cf9_506b3f83635ad2c02998b@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: f8567d895899d76c34708e4eb77085f94b40b7d8 https://github.com/dovecot/core/commit/f8567d895899d76c34708e4eb77085f94b40b7d8 Author: Timo Sirainen Date: 2016-01-15 (Fri, 15 Jan 2016) Changed paths: M src/stats/client.c Log Message: ----------- stats: Added missing #include forgotten in 63393b70 From noreply at github.com Fri Jan 15 21:07:32 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 13:07:32 -0800 Subject: [dovecot/pigeonhole] a66a4a: lib-sieve: storage: Local variable in sieve_storag... Message-ID: <56995f9456b0d_62543ffd5c2d32c0118648@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: a66a4af8f5f13b8c463c02870bf200e8903cdd44 https://github.com/dovecot/pigeonhole/commit/a66a4af8f5f13b8c463c02870bf200e8903cdd44 Author: Stephan Bosch Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-sieve/sieve-storage.c Log Message: ----------- lib-sieve: storage: Local variable in sieve_storage_active_script_is_default() wasn't always properly initialized. This was a LLVM scan-build report. Commit: 62279853dfed86337ab8868da3d661a8999af657 https://github.com/dovecot/pigeonhole/commit/62279853dfed86337ab8868da3d661a8999af657 Author: Stephan Bosch Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/lib-sieve/storage/ldap/sieve-ldap-db.c Log Message: ----------- lib-sieve: ldap storage: Prevent segfault occurring when assigning global configuration options. Commit: cf873f14a62f3b03f6585cbefacb13942427b1b8 https://github.com/dovecot/pigeonhole/commit/cf873f14a62f3b03f6585cbefacb13942427b1b8 Author: Stephan Bosch Date: 2016-01-14 (Thu, 14 Jan 2016) Changed paths: M src/plugins/lda-sieve/lda-sieve-plugin.c Log Message: ----------- LDA Sieve plugin: Removed useless assignment. Addresses LLVM scan-build report. Compare: https://github.com/dovecot/pigeonhole/compare/3f32cd003da2...cf873f14a62f From noreply at github.com Fri Jan 15 23:10:35 2016 From: noreply at github.com (GitHub) Date: Fri, 15 Jan 2016 15:10:35 -0800 Subject: [dovecot/pigeonhole] 16362a: lib-sieve: multiscript: Fixed bug in handling of (... Message-ID: <56997c6bdd22d_1d843f82d79c52b865542@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 16362ac8fbe4b2a62018f93991dd51e98c03997d https://github.com/dovecot/pigeonhole/commit/16362ac8fbe4b2a62018f93991dd51e98c03997d Author: Stephan Bosch Date: 2016-01-16 (Sat, 16 Jan 2016) Changed paths: M Makefile.am M src/lib-sieve/sieve-result.c M src/lib-sieve/sieve-result.h M src/lib-sieve/sieve.c A tests/extensions/editheader/execute.svtest A tests/extensions/editheader/execute/multiscript-after.sieve A tests/extensions/editheader/execute/multiscript-before.sieve A tests/extensions/editheader/execute/multiscript-personal.sieve Log Message: ----------- lib-sieve: multiscript: Fixed bug in handling of (implicit) keep; final keep action was executed as though there was a failure. Among other things, this caused the keep action to revert back to the initial message, causing editheader actions to be ignored. Commit: 3a29a26777651411f730d6386f6962f936120744 https://github.com/dovecot/pigeonhole/commit/3a29a26777651411f730d6386f6962f936120744 Author: Stephan Bosch Date: 2016-01-16 (Sat, 16 Jan 2016) Changed paths: M src/lib-sieve/storage/ldap/sieve-ldap-db.c M src/plugins/lda-sieve/lda-sieve-plugin.c Log Message: ----------- Merge branch 'master' of git.dovecot.net:pigeonhole/core Compare: https://github.com/dovecot/pigeonhole/compare/cf873f14a62f...3a29a2677765 From noreply at github.com Sat Jan 16 19:34:06 2016 From: noreply at github.com (GitHub) Date: Sat, 16 Jan 2016 11:34:06 -0800 Subject: [dovecot/core] bd06c7: imapc: Added support for PROXYAUTH command by sett... Message-ID: <569a9b2e9f805_2efa3ffaa0b552b813833d@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: bd06c77a12bb02871b25dceb749fa955f4a272ff https://github.com/dovecot/core/commit/bd06c77a12bb02871b25dceb749fa955f4a272ff Author: Timo Sirainen Date: 2016-01-16 (Sat, 16 Jan 2016) Changed paths: M src/lib-imap-client/imapc-client.c M src/lib-imap-client/imapc-client.h M src/lib-imap-client/imapc-connection.c M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-settings.h M src/lib-storage/index/imapc/imapc-storage.c Log Message: ----------- imapc: Added support for PROXYAUTH command by setting imapc_features = proxyauth This can be useful when talking to Sun/Oracle IMAP server, which wants you to use LOGIN+PROXYAUTH to perform master user logins, instead of supporting the standard SASL PLAIN authentication. From noreply at github.com Sat Jan 16 19:50:06 2016 From: noreply at github.com (GitHub) Date: Sat, 16 Jan 2016 11:50:06 -0800 Subject: [dovecot/core] 47a53a: lib-http: Assign an ID for each HTTP request and l... Message-ID: <569a9eeec171c_3db73fec34ac32c0225690@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 47a53a80656dc400ff8effdc1432a69fbf5ae8ba https://github.com/dovecot/core/commit/47a53a80656dc400ff8effdc1432a69fbf5ae8ba Author: Timo Sirainen Date: 2016-01-16 (Sat, 16 Jan 2016) Changed paths: M src/lib-http/http-client-private.h M src/lib-http/http-client-request.c Log Message: ----------- lib-http: Assign an ID for each HTTP request and log it in debug lines. The ID stays the same when request is retried. Added a "Req" prefix so it's easier to search for the IDs. Based on patch by Stephan Bosch. From noreply at github.com Sun Jan 17 19:09:27 2016 From: noreply at github.com (GitHub) Date: Sun, 17 Jan 2016 11:09:27 -0800 Subject: [dovecot/pigeonhole] 9e93a5: Fixed the document name of the vnd.dovecot.environ... Message-ID: <569be6e79d1bb_39a53fab8410b2a01786e3@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 9e93a502b273a79ce6856fce1466b7cfaa0723a3 https://github.com/dovecot/pigeonhole/commit/9e93a502b273a79ce6856fce1466b7cfaa0723a3 Author: Stephan Bosch Date: 2016-01-17 (Sun, 17 Jan 2016) Changed paths: M doc/rfc/spec-bosch-sieve-dovecot-environment.txt M doc/rfc/xml/spec-bosch-sieve-dovecot-environment.xml Log Message: ----------- Fixed the document name of the vnd.dovecot.environment specification. From noreply at github.com Mon Jan 18 10:33:08 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 02:33:08 -0800 Subject: [dovecot/core] c80cf5: quota: Fixed namespace filtering for dict and coun... Message-ID: <569cbf6425e50_30283fcb12a632a0953ef@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: c80cf58a347d1b6777e12b3bdd38cc52f6a45f73 https://github.com/dovecot/core/commit/c80cf58a347d1b6777e12b3bdd38cc52f6a45f73 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/plugins/quota/quota-count.c Log Message: ----------- quota: Fixed namespace filtering for dict and count backends. From noreply at github.com Mon Jan 18 11:29:05 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 03:29:05 -0800 Subject: [dovecot/core] 96c800: lib-storage: Ignore ACLs when autoexpunging. Message-ID: <569ccc8144f43_5b0d3fed13d8f2bc893e1@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 96c8008467f4b1ab167f4db3a4d9af4b793f038d https://github.com/dovecot/core/commit/96c8008467f4b1ab167f4db3a4d9af4b793f038d Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/lib-storage/mail-autoexpunge.c Log Message: ----------- lib-storage: Ignore ACLs when autoexpunging. From noreply at github.com Mon Jan 18 12:42:08 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 04:42:08 -0800 Subject: [dovecot/core] 5c7c62: ChangeLog: Generate mercurial style changelogs Message-ID: <569cdda04d08f_71843fdeb48792b853374@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 5c7c62f1e68d6c5f05a630d6a5ceae2d9d47e580 https://github.com/dovecot/core/commit/5c7c62f1e68d6c5f05a630d6a5ceae2d9d47e580 Author: Aki Tuomi Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M Makefile.am M autogen.sh Log Message: ----------- ChangeLog: Generate mercurial style changelogs From noreply at github.com Mon Jan 18 13:01:05 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 05:01:05 -0800 Subject: [dovecot/core] d45a4c: lib-mail: Added message_header_line_write() Message-ID: <569ce211abe93_6d563f907770929c362e6@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: d45a4c7d1df04dd93d57aa8a29b76b55d4905341 https://github.com/dovecot/core/commit/d45a4c7d1df04dd93d57aa8a29b76b55d4905341 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/lib-mail/message-header-parser.c M src/lib-mail/message-header-parser.h Log Message: ----------- lib-mail: Added message_header_line_write() Commit: 498eecf19b1b408d5321cb048697744d7cee90b2 https://github.com/dovecot/core/commit/498eecf19b1b408d5321cb048697744d7cee90b2 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/lib-mail/test-message-parser.c Log Message: ----------- lib-mail: message-parser unit test now verifies that parsed block parts match input. Commit: 1e6170b4c4bc8ed15a6ca47d8dbc056a1e8c9db4 https://github.com/dovecot/core/commit/1e6170b4c4bc8ed15a6ca47d8dbc056a1e8c9db4 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/lib-mail/istream-binary-converter.c M src/lib-mail/test-istream-binary-converter.c Log Message: ----------- lib-mail: istream-binary-converter lost last few chars from root-level binary content. Commit: 741a7e61d484bcc975b4d47a51548ac76334e1c1 https://github.com/dovecot/core/commit/741a7e61d484bcc975b4d47a51548ac76334e1c1 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/lib-fs/fs-api.c Log Message: ----------- lib-fs: Added default implementations for fs_iter_*(), fs_copy() and fs_stat() The backends can now leave them as NULL, and the callers will get an error that they're not supported. Compare: https://github.com/dovecot/core/compare/5c7c62f1e68d...741a7e61d484 From noreply at github.com Mon Jan 18 15:09:06 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 07:09:06 -0800 Subject: [dovecot/core] c21ce7: *-login: Typofix for login_plugins error messages. Message-ID: <569d0012b79d1_21b03f99c0a032c016708e@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: c21ce74d570e1dc1383169314fe41a1bf815c4e4 https://github.com/dovecot/core/commit/c21ce74d570e1dc1383169314fe41a1bf815c4e4 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/login-common/main.c Log Message: ----------- *-login: Typofix for login_plugins error messages. From noreply at github.com Mon Jan 18 15:41:06 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 07:41:06 -0800 Subject: [dovecot/core] aabc4a: auth: If passdbs are required, don't allow only ma... Message-ID: <569d079224f2c_3db73fec34ac32c02366e4@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: aabc4ae9943c55fcb80963b3a3d3698d4488ba20 https://github.com/dovecot/core/commit/aabc4ae9943c55fcb80963b3a3d3698d4488ba20 Author: Timo Sirainen Date: 2016-01-18 (Mon, 18 Jan 2016) Changed paths: M src/auth/auth.c Log Message: ----------- auth: If passdbs are required, don't allow only master=yes passdbs. This fixes a crash: Panic: file auth-request.c: line 743 (auth_request_is_disabled_master_user): assertion failed: (request->requested_login_user != NULL) Which would happen because request->passdb=NULL because there are only master passdbs. Even if only master passdb is actually needed, there should still be a non-master passdb for non-master logins to specify what happens to them. From noreply at github.com Tue Jan 19 00:27:05 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 16:27:05 -0800 Subject: [dovecot/core] 56b13d: pop3c: Improve authentication debug log messages a... Message-ID: <569d82d9afb92_32483fc0b2f1d29c21450@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 56b13d0e6ab03b6ea20c23cdf84577194db40af3 https://github.com/dovecot/core/commit/56b13d0e6ab03b6ea20c23cdf84577194db40af3 Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-client.c Log Message: ----------- pop3c: Improve authentication debug log messages a bit. From noreply at github.com Tue Jan 19 00:32:07 2016 From: noreply at github.com (GitHub) Date: Mon, 18 Jan 2016 16:32:07 -0800 Subject: [dovecot/core] 934f04: pop3c: If authentication fails, log if it was done... Message-ID: <569d84073f87d_25fb3ffce9ce72c02131f9@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 934f04e8a86c14a425f82ec7c74c169492093f98 https://github.com/dovecot/core/commit/934f04e8a86c14a425f82ec7c74c169492093f98 Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-client.c Log Message: ----------- pop3c: If authentication fails, log if it was done with USER+PASS or AUTH PLAIN From noreply at github.com Tue Jan 19 13:22:06 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 05:22:06 -0800 Subject: [dovecot/core] 5da08a: quota-clone: Fixed update-recursion crash when clo... Message-ID: <569e387e4a013_48de3fdc5635529c262618@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 5da08ab71623953f248b24a21d45b02555bbb24b https://github.com/dovecot/core/commit/5da08ab71623953f248b24a21d45b02555bbb24b Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/plugins/quota-clone/quota-clone-plugin.c Log Message: ----------- quota-clone: Fixed update-recursion crash when closing mailbox. We need to avoid recursing for all mailboxes that quota recalculation might open and close, not just the one that triggered the recalculation. Commit: d861bc0977b229cdaeb3fb77377e2a2bd9d40d3d https://github.com/dovecot/core/commit/d861bc0977b229cdaeb3fb77377e2a2bd9d40d3d Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/plugins/quota-clone/quota-clone-plugin.c Log Message: ----------- quota-clone: Avoid leaving a dict transaction open for unnecessarily long. Even though the earlier change should fix the dict assert crash due to opening multiple transactions when recursing back, this makes sure of it. It could also be helpful for some dict backends to not keep the transaction open for unnecessarily long. Compare: https://github.com/dovecot/core/compare/934f04e8a86c...d861bc0977b2 From noreply at github.com Tue Jan 19 13:40:09 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 05:40:09 -0800 Subject: [dovecot/core] 0df899: config: Improved error messages for wrong order of... Message-ID: <569e3cb91f01e_72283f9a89bb32b81214c8@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 0df899feada1f406122d7658894c77eeb10225a3 https://github.com/dovecot/core/commit/0df899feada1f406122d7658894c77eeb10225a3 Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/config/config-parser.c Log Message: ----------- config: Improved error messages for wrong order of nested local/remote/protocol { .. } blocks From noreply at github.com Tue Jan 19 18:51:05 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 10:51:05 -0800 Subject: [dovecot/core] 29ca4c: lib: Don't crash if getenv() is called after proce... Message-ID: <569e8599bf88b_4d5f3fea18c7d2a0843f5@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 29ca4c8015b4936378d49937f97049f33d3aaaf9 https://github.com/dovecot/core/commit/29ca4c8015b4936378d49937f97049f33d3aaaf9 Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/lib/process-title.c Log Message: ----------- lib: Don't crash if getenv() is called after process_title_deinit() with Linux/OSX PROCTITLE_HACK Right now the only known issue is GNUTLS's lib_deinit(): e = getenv("GNUTLS_NO_EXPLICIT_INIT"); But we likely never want that to be set. Alternative ways to solve this are more annoying than our clearing the environment. Libraries probably shouldn't rely on it much anyway, because some parts of Dovecot clear the whole environment while running. From noreply at github.com Tue Jan 19 21:04:15 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 13:04:15 -0800 Subject: [dovecot/pigeonhole] 2bb0c6: Fixed recurring language mistake. Message-ID: <569ea4cf605dc_278b3f8bfd4e72bc12376e@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 2bb0c6246d2d595d29265e4551e35b7f30875906 https://github.com/dovecot/pigeonhole/commit/2bb0c6246d2d595d29265e4551e35b7f30875906 Author: Stephan Bosch Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M NEWS M doc/extensions/spamtest-virustest.txt M doc/man/sieve-test.1.in M src/lib-sieve/plugins/variables/ext-variables-name.h M src/managesieve-login/managesieve-proxy.c M tests/compile/errors/if.sieve Log Message: ----------- Fixed recurring language mistake. From noreply at github.com Tue Jan 19 21:35:37 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 13:35:37 -0800 Subject: [dovecot/pigeonhole] 71e908: managesieve-login: Fixed proxy to allow SASL mecha... Message-ID: <569eac29ad4ec_133e3fc843ee32c01365f3@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 71e908a1d60838525f257530fc55cc466d60d372 https://github.com/dovecot/pigeonhole/commit/71e908a1d60838525f257530fc55cc466d60d372 Author: Stephan Bosch Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/managesieve-login/client.h M src/managesieve-login/managesieve-proxy.c Log Message: ----------- managesieve-login: Fixed proxy to allow SASL mechanisms other than PLAIN. Also made sure that any capability-derived state information is reset properly before a new capability reply is to be parsed. From noreply at github.com Tue Jan 19 21:49:06 2016 From: noreply at github.com (GitHub) Date: Tue, 19 Jan 2016 13:49:06 -0800 Subject: [dovecot/core] 52fe79: imap-login: If LOGINDISABLED capability is adverti... Message-ID: <569eaf523d60f_15fe3fe4168092bc152669@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 52fe791133ad838c3aca3f1c88f96aab755950f8 https://github.com/dovecot/core/commit/52fe791133ad838c3aca3f1c88f96aab755950f8 Author: Timo Sirainen Date: 2016-01-19 (Tue, 19 Jan 2016) Changed paths: M src/imap-login/imap-login-client.h M src/imap-login/imap-proxy.c Log Message: ----------- imap-login: If LOGINDISABLED capability is advertised in banner, don't try to LOGIN without SSL/TLS. This avoids accidentally sending the password in plaintext. Also the server should fail the LOGIN in any case. From noreply at github.com Wed Jan 20 11:31:05 2016 From: noreply at github.com (GitHub) Date: Wed, 20 Jan 2016 03:31:05 -0800 Subject: [dovecot/core] ec0105: lib-storage: Don't set internal error to storage w... Message-ID: <569f6ff924092_1db83f8d2176f2bc336ac@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: ec0105e124d34a0dba6b657e8fd4fc2bc3cb8c98 https://github.com/dovecot/core/commit/ec0105e124d34a0dba6b657e8fd4fc2bc3cb8c98 Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M src/lib-storage/index/index-storage.c Log Message: ----------- lib-storage: Don't set internal error to storage when there's nothing to sync. This may also wrongly overwrite an existing error. Commit: ebeb528dfc186053f6a06d7a154b791ba5bbdec8 https://github.com/dovecot/core/commit/ebeb528dfc186053f6a06d7a154b791ba5bbdec8 Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M src/lib-storage/list/mailbox-list-index-status.c Log Message: ----------- lib-storage: Fixed updating first-saved-uid to mailbox list index when first mails were just expunged. Commit: 8c68d9320a15bca0c3eace61605c9f9d4156b502 https://github.com/dovecot/core/commit/8c68d9320a15bca0c3eace61605c9f9d4156b502 Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M src/lib-storage/list/mailbox-list-index-status.c Log Message: ----------- lib-storage: Fixed looking up MAILBOX_METADATA_FIRST_SAVE_DATE from mailbox list index. If the mailbox was cached as empty, we didn't check if it had since received new messages. This caused the first-save-date to be returned as nonexistent, which caused autoexpunging to not always work. Commit: 8cca3b43b28365cfee4dc733c00caaeab8ecd2ad https://github.com/dovecot/core/commit/8cca3b43b28365cfee4dc733c00caaeab8ecd2ad Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M src/lib-storage/mail-storage-service.c M src/lib-storage/mail-storage-service.h M src/lib-storage/mail-user.c M src/lib-storage/mail-user.h Log Message: ----------- lib-storage: Enable autoexpunge only when MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE is set. Commit: 1fba10ff6f401ee03b0bc8a70150440baf4486cf https://github.com/dovecot/core/commit/1fba10ff6f401ee03b0bc8a70150440baf4486cf Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M src/imap/main.c M src/lmtp/main.c M src/pop3/main.c Log Message: ----------- imap, pop3, lmtp: Enable MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE Compare: https://github.com/dovecot/core/compare/52fe791133ad...1fba10ff6f40 From noreply at github.com Wed Jan 20 17:36:06 2016 From: noreply at github.com (GitHub) Date: Wed, 20 Jan 2016 09:36:06 -0800 Subject: [dovecot/core] 8eac84: Makefile: Fixed ChangeLog generation with older gi... Message-ID: <569fc586ee77e_64fb3fc42d71529c818fe@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 8eac84684c4dd761ac9f18ba822837e8dc39c482 https://github.com/dovecot/core/commit/8eac84684c4dd761ac9f18ba822837e8dc39c482 Author: Timo Sirainen Date: 2016-01-20 (Wed, 20 Jan 2016) Changed paths: M Makefile.am Log Message: ----------- Makefile: Fixed ChangeLog generation with older git versions that don't support --since Changed the oldest changeset to be the v2.0.0 release commit. From noreply at github.com Thu Jan 21 12:00:09 2016 From: noreply at github.com (GitHub) Date: Thu, 21 Jan 2016 04:00:09 -0800 Subject: [dovecot/core] 7ab22f: lib-auth: Error message typofix Message-ID: <56a0c849bd9b3_74243f7e32a812a071224@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 7ab22fc4793e174b3455bc0d2afdb128a73efaa5 https://github.com/dovecot/core/commit/7ab22fc4793e174b3455bc0d2afdb128a73efaa5 Author: Timo Sirainen Date: 2016-01-21 (Thu, 21 Jan 2016) Changed paths: M src/lib-auth/auth-server-connection.c Log Message: ----------- lib-auth: Error message typofix From noreply at github.com Fri Jan 22 13:53:05 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 05:53:05 -0800 Subject: [dovecot/core] 5b63d2: master: Do not close stdout if going foreground Message-ID: <56a23441557a4_50343fea164152b812467f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 5b63d2b3b091ca30af859c521644fe7156f65f4b https://github.com/dovecot/core/commit/5b63d2b3b091ca30af859c521644fe7156f65f4b Author: Aki Tuomi Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/master/main.c Log Message: ----------- master: Do not close stdout if going foreground This lets one to use /dev/stdout for logging. Mainly useful for testing purposes where we can generate log output to stdout and use tee to write it to a file for later examination. From noreply at github.com Fri Jan 22 14:50:08 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 06:50:08 -0800 Subject: [dovecot/core] 82130f: doveadm: Make sure all mail storage hooks are free... Message-ID: <56a241a070f94_11fa3ff54a09b29c11783e@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 82130fea452f0bed0deb41405ccfedbf674e0e6c https://github.com/dovecot/core/commit/82130fea452f0bed0deb41405ccfedbf674e0e6c Author: Timo Sirainen Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/doveadm/doveadm-mail.c M src/lib-storage/mail-storage-hooks.c Log Message: ----------- doveadm: Make sure all mail storage hooks are freed at deinit. From noreply at github.com Fri Jan 22 15:16:08 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 07:16:08 -0800 Subject: [dovecot/core] 34a41f: fts-solr: If Solr lookup returns missing or invali... Message-ID: <56a247b86350a_6d23faa208ed2bc598ba@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 34a41fd572d2516549b3a3b340c36730f284612a https://github.com/dovecot/core/commit/34a41fd572d2516549b3a3b340c36730f284612a Author: Timo Sirainen Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/plugins/fts-solr/solr-connection.c Log Message: ----------- fts-solr: If Solr lookup returns missing or invalid UID, fail the search. We were previously logging the error but still returning success. From noreply at github.com Fri Jan 22 15:30:11 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 07:30:11 -0800 Subject: [dovecot/core] 127d07: doveadm: Add plugins support for doveadm pw Message-ID: <56a24b0314516_4b833fc1266ed29c56820@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 127d0716d4aa14890e0462ff84020b5655812981 https://github.com/dovecot/core/commit/127d0716d4aa14890e0462ff84020b5655812981 Author: Alin Dobre Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/doveadm/Makefile.am M src/doveadm/doveadm-pw.c Log Message: ----------- doveadm: Add plugins support for doveadm pw This simply tries to load all the auth plugins. The ones that aren't password scheme plugins will most likely just fail. Hopefully this will work fine so we don't need to require any specific naming rules for the plugins. Signed-off-by: Alin Dobre From noreply at github.com Fri Jan 22 17:10:09 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 09:10:09 -0800 Subject: [dovecot/core] 78a643: director: "Host is being updated before previous u... Message-ID: <56a2627193575_4cdb3fc141c2d2a06252f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 78a6431465ac6ee6e870352a68ea1d7a8170376a https://github.com/dovecot/core/commit/78a6431465ac6ee6e870352a68ea1d7a8170376a Author: Timo Sirainen Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/director/director-connection.c Log Message: ----------- director: "Host is being updated before previous update had finished" logs now details. From noreply at github.com Fri Jan 22 17:39:06 2016 From: noreply at github.com (GitHub) Date: Fri, 22 Jan 2016 09:39:06 -0800 Subject: [dovecot/core] 57591c: doveadm: Changed most print formatters to write to... Message-ID: <56a2693aa5475_62173fd4956d12b811085@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 57591c5ea045b6829ebcfed9b145d719d63f935a https://github.com/dovecot/core/commit/57591c5ea045b6829ebcfed9b145d719d63f935a Author: Timo Sirainen Date: 2016-01-22 (Fri, 22 Jan 2016) Changed paths: M src/doveadm/client-connection.c M src/doveadm/client-connection.h M src/doveadm/doveadm-print-flow.c M src/doveadm/doveadm-print-pager.c M src/doveadm/doveadm-print-server.c M src/doveadm/doveadm-print-tab.c M src/doveadm/doveadm-print.c M src/doveadm/doveadm-print.h M src/doveadm/doveadm-server.h M src/doveadm/doveadm.c Log Message: ----------- doveadm: Changed most print formatters to write to ostream. This allows all the formatters to be used when sending replies to the upcoming doveadm HTTP server responses. The "table" formatter wasn't modified, because it writes to both stdout and stderr. From noreply at github.com Sat Jan 23 13:49:06 2016 From: noreply at github.com (GitHub) Date: Sat, 23 Jan 2016 05:49:06 -0800 Subject: [dovecot/core] e150cd: auth: Apply passdb/userdb { override_fields } only... Message-ID: <56a384d27f100_7fd3fbaf89732c0117991@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: e150cd7c821e8fba72a49615e22fd9e2a4302c82 https://github.com/dovecot/core/commit/e150cd7c821e8fba72a49615e22fd9e2a4302c82 Author: Timo Sirainen Date: 2016-01-23 (Sat, 23 Jan 2016) Changed paths: M src/auth/auth-request.c Log Message: ----------- auth: Apply passdb/userdb { override_fields } only after caching Now they're not be unnecessarily saved to cache to waste memory. More importantly they will always override the cached fields, which is required for %variables to work. Commit: 9fa4ac629eb23f1ef80cca8dbb98059819f49656 https://github.com/dovecot/core/commit/9fa4ac629eb23f1ef80cca8dbb98059819f49656 Author: Timo Sirainen Date: 2016-01-23 (Sat, 23 Jan 2016) Changed paths: M src/auth/passdb-ldap.c M src/auth/userdb-ldap.c Log Message: ----------- ldap auth: %variables in pass/user_attrs are now included in auth cache key. This makes sure that the result won't be cached too aggressively, for example if %{lport} or %{rip} was used as a field's value. Although each of these fields just makes the cache less effective, so it's a good idea to avoid variables entirely in the pass/user_attrs. An alternative is to use passdb/userdb { override_fields } Commit: cc4723ad7ffe683b36d8c14d7ce3c89b6bf25bd6 https://github.com/dovecot/core/commit/cc4723ad7ffe683b36d8c14d7ce3c89b6bf25bd6 Author: Timo Sirainen Date: 2016-01-23 (Sat, 23 Jan 2016) Changed paths: M src/auth/auth-request.c Log Message: ----------- auth: If userdb result was found from cache, its result_* rules were ignored. Commit: b23317e6678eb8fb23a8761b89ef8ec02d584511 https://github.com/dovecot/core/commit/b23317e6678eb8fb23a8761b89ef8ec02d584511 Author: Timo Sirainen Date: 2016-01-23 (Sat, 23 Jan 2016) Changed paths: M src/auth/auth-request.c Log Message: ----------- auth: Apply override_fields to userdb also when continuing to the next userdb. Compare: https://github.com/dovecot/core/compare/57591c5ea045...b23317e6678e From noreply at github.com Sun Jan 24 14:30:07 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 06:30:07 -0800 Subject: [dovecot/core] 35ef66: pop3-migration: Ignore Return-Path: header when ma... Message-ID: <56a4dfef8857d_4b803fe14a54129c1322d7@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 35ef661bd85c64834e3e34eeeb3c393b81108760 https://github.com/dovecot/core/commit/35ef661bd85c64834e3e34eeeb3c393b81108760 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Ignore Return-Path: header when matching UIDLs by header hashes This fixes matching between Yahoo IMAP and Yahoo POP3 Commit: b215322367dbd94df3e2e4bb643b53460e6adc51 https://github.com/dovecot/core/commit/b215322367dbd94df3e2e4bb643b53460e6adc51 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Added pop3_migration_skip_size_check setting If we know that we're not going to be able to match any messages by sizes, we might as well not ask for the messages' sizes. This is useful at least with Yahoo. Commit: af99ca825f4b7674ec6dd0269bbca665775205aa https://github.com/dovecot/core/commit/af99ca825f4b7674ec6dd0269bbca665775205aa Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: When failing because some messages couldn't be matched, show the first message's number and UIDL This was already being done for the warning message when pop3_migration_ignore_missing_uidls was set, but not for the error message when it wasn't set. Compare: https://github.com/dovecot/core/compare/b23317e6678e...af99ca825f4b From noreply at github.com Sun Jan 24 15:14:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 07:14:05 -0800 Subject: [dovecot/core] 12e327: pop3-migration: When logging the first missing POP... Message-ID: <56a4ea3d5c8fc_3fae3fc3ebce52b81545c5@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 12e32734b3fe762c647c1ae5552185517a988cf8 https://github.com/dovecot/core/commit/12e32734b3fe762c647c1ae5552185517a988cf8 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: When logging the first missing POP3 mail, it logged a wrong mail Commit: c39c3d8089fbdd8eb34646c25167aa4551064cf4 https://github.com/dovecot/core/commit/c39c3d8089fbdd8eb34646c25167aa4551064cf4 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Ignore X-Yahoo-Newman-Property: header This exists only for Yahoo IMAP mails, but not for Yahoo POP3 mails. Compare: https://github.com/dovecot/core/compare/af99ca825f4b...c39c3d8089fb From noreply at github.com Sun Jan 24 16:19:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 08:19:05 -0800 Subject: [dovecot/core] e9d659: pop3-migration: If we matched all the IMAP (but no... Message-ID: <56a4f97987a20_60f13f8bbd3812a0115190@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: e9d659ad49a3cf2190606a62289c86347608bffa https://github.com/dovecot/core/commit/e9d659ad49a3cf2190606a62289c86347608bffa Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: If we matched all the IMAP (but not all POP3) messages, log about it. Commit: 53841bd6c67a24b60b64cec41b72eb8b474cfbc7 https://github.com/dovecot/core/commit/53841bd6c67a24b60b64cec41b72eb8b474cfbc7 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mailbox.c M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-settings.h Log Message: ----------- imapc: Added imapc_features=fetch-msn-workarounds This can be used to work around broken servers that send invalid MSNs. This avoids errors like: imapc: Mailbox 'INBOX' state corrupted: FETCH UID mismatch (78976 != 82589) Commit: cff23ec51177f11902c99b727268eb05ea7c97c7 https://github.com/dovecot/core/commit/cff23ec51177f11902c99b727268eb05ea7c97c7 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-settings.h M src/lib-storage/index/imapc/imapc-storage.c Log Message: ----------- imapc: Added imapc_cmd_timeout setting to control the command wait timeouts. Commit: 2ddc5efd47452644be369fa86e978cc05a508217 https://github.com/dovecot/core/commit/2ddc5efd47452644be369fa86e978cc05a508217 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail.c M src/lib-storage/index/imapc/imapc-settings.c M src/lib-storage/index/imapc/imapc-settings.h Log Message: ----------- imapc: Added imapc_features=fetch-fix-broken-mails This allows ignoring a missing FETCH reply. It shouldn't be used normally, but if there's a mail that the IMAP server simply won't serve, this can be used to finish dsync successfully. Compare: https://github.com/dovecot/core/compare/c39c3d8089fb...2ddc5efd4745 From noreply at github.com Sun Jan 24 17:36:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 09:36:05 -0800 Subject: [dovecot/core] 2f19f8: pop3-migration: Convert all non-ASCII in headers t... Message-ID: <56a50b8542c18_73733fe2b72792bc13963@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 2f19f8ff906a0017b906763e0f7675d49ab0e58f https://github.com/dovecot/core/commit/2f19f8ff906a0017b906763e0f7675d49ab0e58f Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Convert all non-ASCII in headers to '?' Commit: 5fa253bd316540ec280ca76b39d62a9e32da228b https://github.com/dovecot/core/commit/5fa253bd316540ec280ca76b39d62a9e32da228b Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Filter out headers with invalid names. Compare: https://github.com/dovecot/core/compare/2ddc5efd4745...5fa253bd3165 From noreply at github.com Sun Jan 24 17:57:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 09:57:05 -0800 Subject: [dovecot/core] 30f6ac: pop3-migration: Fix to 2f19f8 - Don't convert LF a... Message-ID: <56a510712c34f_7933ff5cdedb2c080535@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 30f6ac0eaf2be81072ee078ba5b232c368b89ff1 https://github.com/dovecot/core/commit/30f6ac0eaf2be81072ee078ba5b232c368b89ff1 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Fix to 2f19f8 - Don't convert LF also to '?' in header hashes. From noreply at github.com Sun Jan 24 18:10:06 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 10:10:06 -0800 Subject: [dovecot/core] 72020d: imapc: If command times out, reconnect and retry i... Message-ID: <56a5137e29166_15083f9f96e592bc49436@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 72020d0a38297671d8a83c781f3641ce24a12b5f https://github.com/dovecot/core/commit/72020d0a38297671d8a83c781f3641ce24a12b5f Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/lib-imap-client/imapc-connection.c Log Message: ----------- imapc: If command times out, reconnect and retry if possible. From noreply at github.com Sun Jan 24 20:08:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 12:08:05 -0800 Subject: [dovecot/core] 0fa40b: config: Fixed '\' line continuation to work again. Message-ID: <56a52f25ed084_51e53fdc239d32a0119144@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 0fa40bfd73cedc311ff2e0ae90707836382bfc8c https://github.com/dovecot/core/commit/0fa40bfd73cedc311ff2e0ae90707836382bfc8c Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/config/config-parser-private.h M src/config/config-parser.c M src/config/old-set-parser.c Log Message: ----------- config: Fixed '\' line continuation to work again. This had been broken for many years. From noreply at github.com Sun Jan 24 20:09:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 12:09:05 -0800 Subject: [dovecot/core] 2386f3: .gitignore: Added *.orig and *.rej Message-ID: <56a52f61c1565_5f693fba7429b29c14786b@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 2386f3448bd286172c1bcdc0c7c596f00f7ba056 https://github.com/dovecot/core/commit/2386f3448bd286172c1bcdc0c7c596f00f7ba056 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M .gitignore Log Message: ----------- .gitignore: Added *.orig and *.rej They are created often enough to become annoying. From noreply at github.com Sun Jan 24 20:14:05 2016 From: noreply at github.com (GitHub) Date: Sun, 24 Jan 2016 12:14:05 -0800 Subject: [dovecot/core] 80e80d: auth: Avoid unnecessary work if passdb/userdb { ov... Message-ID: <56a5308decc37_57183fd833d652b815931c@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 80e80d414f8fa748d2d10c40db423922968a11cc https://github.com/dovecot/core/commit/80e80d414f8fa748d2d10c40db423922968a11cc Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/auth/passdb-template.c M src/auth/passdb-template.h M src/auth/userdb-template.c Log Message: ----------- auth: Avoid unnecessary work if passdb/userdb { override_fields, default_fields } aren't set. Commit: b76737b21cb6cc552dbe0798e9e37d86ca40a398 https://github.com/dovecot/core/commit/b76737b21cb6cc552dbe0798e9e37d86ca40a398 Author: Timo Sirainen Date: 2016-01-24 (Sun, 24 Jan 2016) Changed paths: M src/auth/passdb.c M src/auth/userdb.c Log Message: ----------- auth: Add any %variables in passdb/userdb { default_fields } to cache key. Compare: https://github.com/dovecot/core/compare/2386f3448bd2...b76737b21cb6 From noreply at github.com Mon Jan 25 08:27:06 2016 From: noreply at github.com (GitHub) Date: Mon, 25 Jan 2016 00:27:06 -0800 Subject: [dovecot/core] 508568: imapc: Prefetching shouldn't send FETCH requests f... Message-ID: <56a5dc5a2f42a_16e83f884fb9929c7656@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 5085686ff2b4be28e7d631e1bbfa32afe427b7c7 https://github.com/dovecot/core/commit/5085686ff2b4be28e7d631e1bbfa32afe427b7c7 Author: Timo Sirainen Date: 2016-01-25 (Mon, 25 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail-fetch.c M src/lib-storage/index/imapc/imapc-mail.c M src/lib-storage/index/imapc/imapc-mail.h Log Message: ----------- imapc: Prefetching shouldn't send FETCH requests for headers that are already cached. From noreply at github.com Mon Jan 25 15:40:08 2016 From: noreply at github.com (GitHub) Date: Mon, 25 Jan 2016 07:40:08 -0800 Subject: [dovecot/core] 759a60: imap: Finish all commands before starting IDLE. Message-ID: <56a641d85f0a0_6cd3fd46c8612a0147449@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 759a60c896270a74ef4a94ad348fe3722f183608 https://github.com/dovecot/core/commit/759a60c896270a74ef4a94ad348fe3722f183608 Author: Timo Sirainen Date: 2016-01-25 (Mon, 25 Jan 2016) Changed paths: M src/imap/imap-commands.c Log Message: ----------- imap: Finish all commands before starting IDLE. We don't want to send tagged command replies only after the DONE. Also this fixes assert-crash: Panic: file imap-client.c: line 852 (client_check_command_hangs): assertion failed: (!have_wait_unfinished || unfinished_count > 0) Which could be reproduced by: printf "0 SELECT INBOX\n1 NOOP\n2 IDLE\n"; read; printf "DONE\n"; read) | ./imap From noreply at github.com Mon Jan 25 20:37:06 2016 From: noreply at github.com (GitHub) Date: Mon, 25 Jan 2016 12:37:06 -0800 Subject: [dovecot/core] c06f45: pop3c: Avoid unnecessarily email deletions from lo... Message-ID: <56a6877276e33_26833ff4766d92a014866a@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: c06f45d06438bd063bd3d915682d9db3b6adf725 https://github.com/dovecot/core/commit/c06f45d06438bd063bd3d915682d9db3b6adf725 Author: Timo Sirainen Date: 2016-01-25 (Mon, 25 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-sync.c Log Message: ----------- pop3c: Avoid unnecessarily email deletions from local index when mails have been deleted from remote POP3. Commit: 2676c973a61edf2a9dd5d0196e0993ecb04bb2a2 https://github.com/dovecot/core/commit/2676c973a61edf2a9dd5d0196e0993ecb04bb2a2 Author: Timo Sirainen Date: 2016-01-25 (Mon, 25 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-sync.c Log Message: ----------- pop3c: Preserve local cache even when server reorders messages. Commit: 57e1fdc2f8f2bf1c6fcd9523f93459404c2359c8 https://github.com/dovecot/core/commit/57e1fdc2f8f2bf1c6fcd9523f93459404c2359c8 Author: Timo Sirainen Date: 2016-01-25 (Mon, 25 Jan 2016) Changed paths: M src/plugins/pop3-migration/Makefile.am M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Add calculated header hashes to local cache. This allows faster resuming on failures if local pop3c indexes are used. Compare: https://github.com/dovecot/core/compare/759a60c89627...57e1fdc2f8f2 From noreply at github.com Tue Jan 26 15:59:06 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 07:59:06 -0800 Subject: [dovecot/core] 3ab672: lib: When closing istream-chain, make sure parent ... Message-ID: <56a797ca188fc_701d3ff4924312c046240@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 3ab672903a7ed98263b89180261079870c964831 https://github.com/dovecot/core/commit/3ab672903a7ed98263b89180261079870c964831 Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib/Makefile.am M src/lib/istream-chain.c A src/lib/test-istream-chain.c M src/lib/test-lib.c M src/lib/test-lib.h Log Message: ----------- lib: When closing istream-chain, make sure parent stream is seeked to correct offset. We were only seeking it earlier if it ended at EOF. Commit: 96af3e787c15929853b77bac0451b7b8f343510c https://github.com/dovecot/core/commit/96af3e787c15929853b77bac0451b7b8f343510c Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib/test-istream-seekable.c Log Message: ----------- lib: Improved test-istream-seekable unit test to check for parent stream's offset at the end Commit: 0c3ec2538c366bb5583f0b4ca2ce60804756b51c https://github.com/dovecot/core/commit/0c3ec2538c366bb5583f0b4ca2ce60804756b51c Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib/istream-concat.c Log Message: ----------- lib: Small istream-concat code cleanup in preperation for next change No actual changes, just moved some code into i_stream_concat_skip(). Commit: 5c92436a61569c0b56a9374e60e779fa4455edef https://github.com/dovecot/core/commit/5c92436a61569c0b56a9374e60e779fa4455edef Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib/istream-concat.c M src/lib/test-istream-concat.c Log Message: ----------- lib: istream-concat now seeks parent streams to correct offset. All of the streams' offsets were somewhat random. Commit: 9abc6ac61e70b809f7e1c352c7a3ad1081994d2e https://github.com/dovecot/core/commit/9abc6ac61e70b809f7e1c352c7a3ad1081994d2e Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Cached header hashes weren't actually being used for imapc. We'll need to do the search twice: Once to find out the actual cached header hashes and then second time do a search for the message headers excluding the emails whose hashes we already know. This allows prefetching to work for imapc without prefetching all the emails as it was doing. Commit: 9999b049d4e02d7ea5d506a0ada68e519cfdbbbd https://github.com/dovecot/core/commit/9999b049d4e02d7ea5d506a0ada68e519cfdbbbd Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-client.c Log Message: ----------- pop3c: Increased command timeout from 30s to 5mins. Possibly should be made configurable, but use this for now. Commit: 60d1fdf2c17fd0c7020234590dbd73da81c3ce8f https://github.com/dovecot/core/commit/60d1fdf2c17fd0c7020234590dbd73da81c3ce8f Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-client.c M src/lib-storage/index/pop3c/pop3c-client.h M src/lib-storage/index/pop3c/pop3c-mail.c M src/lib-storage/index/pop3c/pop3c-storage.c M src/lib-storage/index/pop3c/pop3c-sync.c Log Message: ----------- pop3c: Added full support for running commands asynchronously (with PIPELINING) Commit: afc77c5375cdb8f2bf0ab6280d9229ac27c933c6 https://github.com/dovecot/core/commit/afc77c5375cdb8f2bf0ab6280d9229ac27c933c6 Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-mail.c M src/lib-storage/index/pop3c/pop3c-storage.c M src/lib-storage/index/pop3c/pop3c-storage.h Log Message: ----------- pop3c: Added support for TOP/RETR prefetching when PIPIELINING capability exists. Commit: 414d4ee117b45834e6e02f32cda9c9472dd89e1d https://github.com/dovecot/core/commit/414d4ee117b45834e6e02f32cda9c9472dd89e1d Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Don't even try to match message sizes with pop3_migration_skip_size_check=yes This skipped the header check for mailboxes that had only a single mail. Commit: ee33544fcf7711e933749db618e4ce2ff122ac14 https://github.com/dovecot/core/commit/ee33544fcf7711e933749db618e4ce2ff122ac14 Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Don't change TAB to '?' when calculating header hash. Compare: https://github.com/dovecot/core/compare/57e1fdc2f8f2...ee33544fcf77 From noreply at github.com Tue Jan 26 18:07:06 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 10:07:06 -0800 Subject: [dovecot/core] 45af47: dsync: When comparing headers' hashes to match mes... Message-ID: <56a7b5ca7675f_70963fe1485db2b896153@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 45af47783693b3ba2768c5ad34eeff68132382d0 https://github.com/dovecot/core/commit/45af47783693b3ba2768c5ad34eeff68132382d0 Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/doveadm/dsync/dsync-brain-mailbox.c M src/doveadm/dsync/dsync-brain-private.h M src/doveadm/dsync/dsync-brain.c M src/doveadm/dsync/dsync-ibc-stream.c M src/doveadm/dsync/dsync-ibc.h M src/doveadm/dsync/dsync-mail.c M src/doveadm/dsync/dsync-mail.h M src/doveadm/dsync/dsync-mailbox-export.c M src/doveadm/dsync/dsync-mailbox-export.h M src/doveadm/dsync/dsync-mailbox-import.c M src/doveadm/dsync/dsync-mailbox-import.h M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- dsync: When comparing headers' hashes to match messages, try to normalize the input. This is especially useful because some IMAP servers return different data depending on whether we're fetching only specific header fields, all headers or entire body. For now we're assuming that any non-ASCII is going to be replaced with '?', which helps at least with Zimbra and Yahoo. The header hashing algorithm is now versionable, so it can be modified more easily in future. This change should make imapc_features=zimbra-workarounds setting obsolete. From noreply at github.com Tue Jan 26 20:12:08 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 12:12:08 -0800 Subject: [dovecot/core] cfb351: pop3-migration: If reading message header for hash... Message-ID: <56a7d31844558_26ed3fdfb2edf2c066763@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: cfb351c1d28fab5a461f6506471c6b6eb26c0bda https://github.com/dovecot/core/commit/cfb351c1d28fab5a461f6506471c6b6eb26c0bda Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: If reading message header for hashing fails, fail immediately. This avoids flooding the log with a ton of errors in case the POP3 connection dies. From noreply at github.com Tue Jan 26 20:30:51 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 12:30:51 -0800 Subject: [dovecot/pigeonhole] fd9f57: ChangeLog: Generate Mercurial-style changelogs Message-ID: <56a7d77b57335_44583f9b9ba8f2c093869@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: fd9f579535d86ab05940cb147ffd5d5a08922a93 https://github.com/dovecot/pigeonhole/commit/fd9f579535d86ab05940cb147ffd5d5a08922a93 Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M Makefile.am M autogen.sh Log Message: ----------- ChangeLog: Generate Mercurial-style changelogs Mimics similar change in Dovecot. From noreply at github.com Tue Jan 26 21:52:06 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 13:52:06 -0800 Subject: [dovecot/core] 1ac936: pop3c: Compiler warning fix for using wrong enum t... Message-ID: <56a7ea869b876_79293fcac30b129c14236@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 1ac936bd9c3fd2b54d38daa9f5a78bd8328873bb https://github.com/dovecot/core/commit/1ac936bd9c3fd2b54d38daa9f5a78bd8328873bb Author: Timo Sirainen Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-client.c Log Message: ----------- pop3c: Compiler warning fix for using wrong enum type From noreply at github.com Tue Jan 26 23:04:04 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 15:04:04 -0800 Subject: [dovecot/pigeonhole] 311a20: Increased ABI version. Message-ID: <56a7fb649e162_319d3fa674da929c50973@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/release-0.4.12 Home: https://github.com/dovecot/pigeonhole Commit: 311a209003d287ef48615c51c6499ec061e74800 https://github.com/dovecot/pigeonhole/commit/311a209003d287ef48615c51c6499ec061e74800 Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M configure.ac Log Message: ----------- Increased ABI version. Commit: 3d48d756f009125ea3ecee1a7d56f2a35509ea79 https://github.com/dovecot/pigeonhole/commit/3d48d756f009125ea3ecee1a7d56f2a35509ea79 Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M Makefile.am Log Message: ----------- Makefile: Added run-test.sh to be cleaned by distclean. Commit: c1c0a2391df1659f84aca708a72874348b8b2a0a https://github.com/dovecot/pigeonhole/commit/c1c0a2391df1659f84aca708a72874348b8b2a0a Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M NEWS M configure.ac Log Message: ----------- Released v0.4.12.rc1 for Dovecot v2.2.21. Compare: https://github.com/dovecot/pigeonhole/compare/311a209003d2^...c1c0a2391df1 From noreply at github.com Tue Jan 26 23:04:04 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 15:04:04 -0800 Subject: [dovecot/pigeonhole] Message-ID: <56a7fb64b21ed_29193f81a8ced2b8660fa@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/tags/0.4.12.rc1 Home: https://github.com/dovecot/pigeonhole From noreply at github.com Tue Jan 26 23:07:06 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 15:07:06 -0800 Subject: [dovecot/core] f3b0ef: fts-solr: Changed default operator to AND to fix m... Message-ID: <56a7fc1a9ede1_595f3ff960b272a01658e@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: f3b0efdcbd0bd9059574c8f86d6cb43e16c8e521 https://github.com/dovecot/core/commit/f3b0efdcbd0bd9059574c8f86d6cb43e16c8e521 Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/plugins/fts-solr/fts-backend-solr-old.c M src/plugins/fts-solr/fts-backend-solr.c Log Message: ----------- fts-solr: Changed default operator to AND to fix multi-word queries. Previously for example searching from:foo at example.com was expanded to foo OR example OR com. Now it's foo AND example AND com, which makes a lot more sense. From noreply at github.com Tue Jan 26 23:07:48 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 15:07:48 -0800 Subject: [dovecot/pigeonhole] 311a20: Increased ABI version. Message-ID: <56a7fc4484c49_60033fadcf1772a010166a@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 311a209003d287ef48615c51c6499ec061e74800 https://github.com/dovecot/pigeonhole/commit/311a209003d287ef48615c51c6499ec061e74800 Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M configure.ac Log Message: ----------- Increased ABI version. Commit: 3d48d756f009125ea3ecee1a7d56f2a35509ea79 https://github.com/dovecot/pigeonhole/commit/3d48d756f009125ea3ecee1a7d56f2a35509ea79 Author: Stephan Bosch Date: 2016-01-26 (Tue, 26 Jan 2016) Changed paths: M Makefile.am Log Message: ----------- Makefile: Added run-test.sh to be cleaned by distclean. Compare: https://github.com/dovecot/pigeonhole/compare/fd9f579535d8...3d48d756f009 From noreply at github.com Tue Jan 26 23:13:05 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 15:13:05 -0800 Subject: [dovecot/core] fd3d06: *-login: Add all returned passdb fields to struct ... Message-ID: <56a7fd814a8e7_71ba3f94eb3832bc4318d@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: fd3d068169c6ec587c9c446f2ee45560a444334a https://github.com/dovecot/core/commit/fd3d068169c6ec587c9c446f2ee45560a444334a Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/login-common/client-common-auth.c M src/login-common/client-common.h Log Message: ----------- *-login: Add all returned passdb fields to struct client_auth_reply.all_fields These will be mainly useful to plugins. From noreply at github.com Wed Jan 27 00:05:06 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 16:05:06 -0800 Subject: [dovecot/core] 84a517: pop3c: Fixed assert-crash when prefetching a mail ... Message-ID: <56a809b276827_44303ffce70872c0291aa@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 84a5175b9768da401404635c9b606264585739bd https://github.com/dovecot/core/commit/84a5175b9768da401404635c9b606264585739bd Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/lib-storage/index/pop3c/pop3c-mail.c M src/lib-storage/index/pop3c/pop3c-storage.h Log Message: ----------- pop3c: Fixed assert-crash when prefetching a mail failed. From noreply at github.com Wed Jan 27 00:26:41 2016 From: noreply at github.com (GitHub) Date: Tue, 26 Jan 2016 16:26:41 -0800 Subject: [dovecot/pigeonhole] 4fd43c: configure: Matched first few lines with Dovecot's ... Message-ID: <56a80ec1eefd8_78af3fe1193812bc901b2@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/pigeonhole Commit: 4fd43c3ca2c9078e4c4355fef0e13db6e66a5d4a https://github.com/dovecot/pigeonhole/commit/4fd43c3ca2c9078e4c4355fef0e13db6e66a5d4a Author: Stephan Bosch Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M configure.ac Log Message: ----------- configure: Matched first few lines with Dovecot's configure.ac. Commit: 77e7e81fa01bd0e2cefd10e3ef162b97882e1398 https://github.com/dovecot/pigeonhole/commit/77e7e81fa01bd0e2cefd10e3ef162b97882e1398 Author: Stephan Bosch Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M configure.ac Log Message: ----------- configure: Changed version number to v0.4.devel. The actual version numbers live only on the release-branches from now on. Compare: https://github.com/dovecot/pigeonhole/compare/3d48d756f009...77e7e81fa01b From noreply at github.com Wed Jan 27 08:18:05 2016 From: noreply at github.com (GitHub) Date: Wed, 27 Jan 2016 00:18:05 -0800 Subject: [dovecot/core] c67f6d: lib: Make static analyzer happier about istream-ch... Message-ID: <56a87d3dc8c3c_72193fa1cce4b29c1175fb@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: c67f6d09c1aa9d8bfdce4167da8ac009fd2917ce https://github.com/dovecot/core/commit/c67f6d09c1aa9d8bfdce4167da8ac009fd2917ce Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/lib/istream-chain.c Log Message: ----------- lib: Make static analyzer happier about istream-chain changes From noreply at github.com Wed Jan 27 13:21:12 2016 From: noreply at github.com (GitHub) Date: Wed, 27 Jan 2016 05:21:12 -0800 Subject: [dovecot/core] 638734: imapc: Don't use fetch-fix-broken-mails for OK and... Message-ID: <56a8c4488a473_61693f960c6a129c6549c@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 638734376d265a1529985755da671c09cfc22e06 https://github.com/dovecot/core/commit/638734376d265a1529985755da671c09cfc22e06 Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail-fetch.c M src/lib-storage/index/imapc/imapc-mail.c M src/lib-storage/index/imapc/imapc-mail.h Log Message: ----------- imapc: Don't use fetch-fix-broken-mails for OK and NO [SERVERBUG] FETCH replies Hopefully no servers are actually returning OK without returning a FETCH reply. If they are, maybe we need another workaround.. In any case Yahoo IMAP sometimes loses state and starts returning OK without FETCH replies to all UID FETCH requests (and BADs to FETCHes). It also may return NO [UNAVAILABLE] for both permanent and temporary FETCH failures, so we can't do anything with that. I added NO [SERVERBUG] because that's what Dovecot responds to temporary failures. I'm not sure how useful that check is though. From noreply at github.com Wed Jan 27 13:46:06 2016 From: noreply at github.com (GitHub) Date: Wed, 27 Jan 2016 05:46:06 -0800 Subject: [dovecot/core] 5407a8: pop3-migration: Perform UIDL syncing a bit earlier... Message-ID: <56a8ca1e621ac_47ed3f8c0aecd29c591db@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 5407a86a03963261bf5ba8793b8c97879ad2e224 https://github.com/dovecot/core/commit/5407a86a03963261bf5ba8793b8c97879ad2e224 Author: Timo Sirainen Date: 2016-01-27 (Wed, 27 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Perform UIDL syncing a bit earlier to work around Yahoo IMAP bug. From noreply at github.com Thu Jan 28 11:48:06 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 03:48:06 -0800 Subject: [dovecot/core] 4eccf5: lib-index: If transaction log was locked for at le... Message-ID: <56a9fff610148_78de3fd14d6052bc753c3@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 4eccf5310af7bed72cd6f7a559a93165c516e514 https://github.com/dovecot/core/commit/4eccf5310af7bed72cd6f7a559a93165c516e514 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-index/mail-transaction-log-file.c Log Message: ----------- lib-index: If transaction log was locked for at least 30 secs, log a warning (not at 3min) This is because we log a warning about it already when locking it took 30 seconds, so it's useful to see which process was actually keeping the lock. From noreply at github.com Thu Jan 28 13:17:06 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 05:17:06 -0800 Subject: [dovecot/core] 10972f: lib: json_append_escaped() doesn't need to escape ... Message-ID: <56aa14d2b5dc6_602e3fdffbe532b8565b3@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 10972f2a15f5538860fcc1d4adda227d59d2d757 https://github.com/dovecot/core/commit/10972f2a15f5538860fcc1d4adda227d59d2d757 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib/json-parser.c M src/lib/json-parser.h M src/lib/test-json-parser.c Log Message: ----------- lib: json_append_escaped() doesn't need to escape the 8bit chars. We'll assume that the input is valid UTF-8. Commit: bb869cc24b24a8df84a43154c628785d6aee784c https://github.com/dovecot/core/commit/bb869cc24b24a8df84a43154c628785d6aee784c Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib/json-parser.c M src/lib/json-parser.h M src/lib/test-json-parser.c Log Message: ----------- lib: Added json_append_escaped_data() to escape non-NUL terminated input. Compare: https://github.com/dovecot/core/compare/4eccf5310af7...bb869cc24b24 From noreply at github.com Thu Jan 28 13:42:08 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 05:42:08 -0800 Subject: [dovecot/core] 6e9454: imap: Send all pending tagged command replies befo... Message-ID: <56aa1ab0d4090_18593fae45dd32bc567d1@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 6e9454f1d99a86c3f9659a66abff59ae97e5f029 https://github.com/dovecot/core/commit/6e9454f1d99a86c3f9659a66abff59ae97e5f029 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/imap/imap-commands.c Log Message: ----------- imap: Send all pending tagged command replies before APPEND is started. This probably doesn't matter a lot, but it's cleaner. One side effect of this change is that if multiple APPENDs are pipelined (without MULTIAPPEND) on the selected mailbox, this now performs a sync between each APPEND and sends the EXISTS replies. This may be slightly lower in performance, but it's also slightly more correct behavior. From noreply at github.com Thu Jan 28 15:05:07 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 07:05:07 -0800 Subject: [dovecot/core] a221d0: imapc: Fixed assert-crash in mailbox syncing, if m... Message-ID: <56aa2e23b906a_6b1c3fa22e0952bc797a5@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: a221d0d259af954aeb36a40008ad12767f83d96b https://github.com/dovecot/core/commit/a221d0d259af954aeb36a40008ad12767f83d96b Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-sync.c Log Message: ----------- imapc: Fixed assert-crash in mailbox syncing, if mailbox couldn't be opened. Usually meaning that syncing was attempted when IMAP server couldn't be connected to. Fixes the assert: Panic: file imapc-client.c: line 439 (imapc_client_get_capabilities): assertion failed: (conn != NULL) Commit: 69f6407b20f623193981d672c26fa722ee75d941 https://github.com/dovecot/core/commit/69f6407b20f623193981d672c26fa722ee75d941 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/dsync/dsync-brain-mails.c M src/doveadm/dsync/dsync-mailbox-import.c M src/doveadm/dsync/dsync-mailbox-import.h Log Message: ----------- doveadm backup: Detect and handle conflicts earlier. This avoids doing a lot of work, only for the next doveadm backup to just delete the entire mailbox and start from the beginning. Commit: 34fe9f3e658bf4b8ce1658540a89b6c81e35b18a https://github.com/dovecot/core/commit/34fe9f3e658bf4b8ce1658540a89b6c81e35b18a Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/doveadm-mail.c Log Message: ----------- doveadm: Enable SIGINT and SIGTERM signal handler for all doveadm mail commands. Most importantly this allows stopping dsync. Commit: 956a62e2b68e1c042bf2bcddd6f4ba79fec9745a https://github.com/dovecot/core/commit/956a62e2b68e1c042bf2bcddd6f4ba79fec9745a Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/doveadm-mail-iter.c Log Message: ----------- doveadm: All commands iterating mails stop now if doveadm has been killed. Compare: https://github.com/dovecot/core/compare/6e9454f1d99a...956a62e2b68e From noreply at github.com Thu Jan 28 15:17:06 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 07:17:06 -0800 Subject: [dovecot/core] b89479: imapc: Remove X-Message-Flag filtering if imapc_fe... Message-ID: <56aa30f23e15d_11cf3f89669d52b8152a0@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: b8947936e65a9b79ffe1a4f7a9835c946a9b635b https://github.com/dovecot/core/commit/b8947936e65a9b79ffe1a4f7a9835c946a9b635b Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail-fetch.c Log Message: ----------- imapc: Remove X-Message-Flag filtering if imapc_features has rfc822.size From noreply at github.com Thu Jan 28 17:58:07 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 09:58:07 -0800 Subject: [dovecot/core] 740e36: imapc: Don't use fetch-fix-broken-mails for NO [LI... Message-ID: <56aa56af28821_63973faa2d3692c028631@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 740e369c027c3589f4074e7ea0a51204082853cb https://github.com/dovecot/core/commit/740e369c027c3589f4074e7ea0a51204082853cb Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail-fetch.c Log Message: ----------- imapc: Don't use fetch-fix-broken-mails for NO [LIMIT] FETCH replies Commit: 14fb3a2f6af1d75aeec6deb766026b4ea6a4db53 https://github.com/dovecot/core/commit/14fb3a2f6af1d75aeec6deb766026b4ea6a4db53 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail-fetch.c M src/lib-storage/index/imapc/imapc-mail.c M src/lib-storage/index/imapc/imapc-mail.h Log Message: ----------- imapc: If FETCH didn't send our wanted data, log the tagged FETCH reply text. Commit: 46d42562faad5b8249b8008c9548923a4524df09 https://github.com/dovecot/core/commit/46d42562faad5b8249b8008c9548923a4524df09 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-sync.c Log Message: ----------- imapc: Don't ignore FETCH, SEARCH and EXPUNGE returning NO failures in syncing. Especially if the FETCH 1:* (FLAGS) didn't succeed, we expunged all the mails from local index. Commit: 0cc566d5e68a650d12fd73631d53a467fad72e1e https://github.com/dovecot/core/commit/0cc566d5e68a650d12fd73631d53a467fad72e1e Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-index/Makefile.am A src/lib-index/test-mail-index-map.c Log Message: ----------- lib-index: Added unit test to mail_index_map_lookup_seq_range() Commit: e1fb4dcfefa12043ae785eab2f32d496dda4f284 https://github.com/dovecot/core/commit/e1fb4dcfefa12043ae785eab2f32d496dda4f284 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-mail.c Log Message: ----------- imapc: Handle disconnection when NOOP is sent to verify if mail is expunged. Commit: 7d8603f26cd195f7c12430fdfc26a7f3d14b242f https://github.com/dovecot/core/commit/7d8603f26cd195f7c12430fdfc26a7f3d14b242f Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-storage/index/imapc/imapc-sync.c Log Message: ----------- imapc: Don't mark the initial sync done if it wasn't successful. Commit: 79490ec1a58241d6011fa36713ca651d795855c3 https://github.com/dovecot/core/commit/79490ec1a58241d6011fa36713ca651d795855c3 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/dsync/dsync-mailbox-import.c Log Message: ----------- doveadm backup: If local mailbox has more mails than remote, detect and delete it earlier. Commit: e1bef591ed45c5baf6b5bdc69fb7fa5ff05df2b6 https://github.com/dovecot/core/commit/e1bef591ed45c5baf6b5bdc69fb7fa5ff05df2b6 Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/dsync/dsync-brain-mails.c M src/doveadm/dsync/dsync-mailbox-export.c M src/doveadm/dsync/dsync-mailbox-export.h Log Message: ----------- dsync: Avoid finishing importer successfully on exporter failures. At least dsync_mailbox_import_changes_finish() could have been called when exporter was already failed. Compare: https://github.com/dovecot/core/compare/b8947936e65a...e1bef591ed45 From noreply at github.com Thu Jan 28 18:18:07 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 10:18:07 -0800 Subject: [dovecot/core] d43069: pop3-migration: Fix to 5407a86 - don't sync POP3 U... Message-ID: <56aa5b5f78414_5d3a3ffd2216f29c8103a@hookshot-fe5-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: d430698b6d9d47ff9136ee137cc58a1c657baedd https://github.com/dovecot/core/commit/d430698b6d9d47ff9136ee137cc58a1c657baedd Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/plugins/pop3-migration/pop3-migration-plugin.c Log Message: ----------- pop3-migration: Fix to 5407a86 - don't sync POP3 UIDLs when we don't need to From noreply at github.com Thu Jan 28 18:25:06 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 10:25:06 -0800 Subject: [dovecot/core] 96ca70: lib-index: Memory leak fix for test-mail-index-map Message-ID: <56aa5d02578ca_11fa3ff735c352a02909c@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 96ca70b91de9f2b07728812bbec222e18f121cbd https://github.com/dovecot/core/commit/96ca70b91de9f2b07728812bbec222e18f121cbd Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/lib-index/test-mail-index-map.c Log Message: ----------- lib-index: Memory leak fix for test-mail-index-map This failed when running make check with valgrind. From noreply at github.com Thu Jan 28 18:49:05 2016 From: noreply at github.com (GitHub) Date: Thu, 28 Jan 2016 10:49:05 -0800 Subject: [dovecot/core] f0d1de: dsync: Improved header hash v2 algorithm to remove... Message-ID: <56aa62a1ee948_163e3fecb058b2b8247da@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: f0d1de444d0a5849b42e0c1d680a566fcace8aac https://github.com/dovecot/core/commit/f0d1de444d0a5849b42e0c1d680a566fcace8aac Author: Timo Sirainen Date: 2016-01-28 (Thu, 28 Jan 2016) Changed paths: M src/doveadm/dsync/Makefile.am M src/doveadm/dsync/dsync-mail.c M src/doveadm/dsync/dsync-mail.h A src/doveadm/dsync/test-dsync-mail.c Log Message: ----------- dsync: Improved header hash v2 algorithm to remove repeated '?' chars. This is to help with Yahoo that replaces UTF-8 chars in headers with a single '?' (instead of '?' per each 8bit byte). From noreply at github.com Fri Jan 29 09:03:06 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 01:03:06 -0800 Subject: [dovecot/core] e76409: lib: Add str_is_float check function Message-ID: <56ab2aca48ace_6b403fb5c848f2c0104937@hookshot-fe1-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: e76409232ce6a027bd3f06da79616830d3da9980 https://github.com/dovecot/core/commit/e76409232ce6a027bd3f06da79616830d3da9980 Author: Aki Tuomi Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib/strnum.c M src/lib/strnum.h Log Message: ----------- lib: Add str_is_float check function Commit: d3a430481a1e072fb55fee8803c16d075bf7bd91 https://github.com/dovecot/core/commit/d3a430481a1e072fb55fee8803c16d075bf7bd91 Author: Aki Tuomi Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib/test-strnum.c Log Message: ----------- lib: Add tests for str_is_float Compare: https://github.com/dovecot/core/compare/f0d1de444d0a...d3a430481a1e From noreply at github.com Fri Jan 29 13:13:06 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 05:13:06 -0800 Subject: [dovecot/core] 931bc1: lib-imap: Write invalid Content-Transfer-Encoding ... Message-ID: <56ab6562ac73_67f13fdf5f3972bc11452b@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 931bc104bcdbce7ed20bc4dd705dec086589bbfe https://github.com/dovecot/core/commit/931bc104bcdbce7ed20bc4dd705dec086589bbfe Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib-imap/imap-bodystructure.c M src/lib-imap/test-imap-bodystructure.c Log Message: ----------- lib-imap: Write invalid Content-Transfer-Encoding value as "7bit" to BODY/BODYSTRUCTURE. From noreply at github.com Fri Jan 29 14:08:05 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 06:08:05 -0800 Subject: [dovecot/core] 87066d: lib-sasl: Allow plugins to override the default SA... Message-ID: <56ab724594cb4_70833f9422d8d2b8566ca@hookshot-fe6-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 87066db47cac5a4baafa5145d2e95a26d26ec24f https://github.com/dovecot/core/commit/87066db47cac5a4baafa5145d2e95a26d26ec24f Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib-sasl/dsasl-client.c Log Message: ----------- lib-sasl: Allow plugins to override the default SASL client mechanisms. From noreply at github.com Fri Jan 29 14:25:06 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 06:25:06 -0800 Subject: [dovecot/core] 4209bd: last-login: Added last_login_precision setting Message-ID: <56ab764230c6d_602e3fdffbe532b893116@hookshot-fe4-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 4209bd278ff41fe352e8b993d849a061152829c8 https://github.com/dovecot/core/commit/4209bd278ff41fe352e8b993d849a061152829c8 Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/plugins/last-login/last-login-plugin.c Log Message: ----------- last-login: Added last_login_precision setting From noreply at github.com Fri Jan 29 15:44:06 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 07:44:06 -0800 Subject: [dovecot/core] 8bb311: lib: Added net_str2hostport() Message-ID: <56ab88c6663ca_120e3f941144d2b874425@hookshot-fe2-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 8bb311aef8b8a6ddda990414083cecedcea77c09 https://github.com/dovecot/core/commit/8bb311aef8b8a6ddda990414083cecedcea77c09 Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib/net.c M src/lib/net.h M src/lib/test-net.c Log Message: ----------- lib: Added net_str2hostport() Commit: 7c925149e49f7cce41c90d562ff3835b66ddca29 https://github.com/dovecot/core/commit/7c925149e49f7cce41c90d562ff3835b66ddca29 Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/director/director-host.c M src/doveadm/doveadm-util.c M src/lib-lda/smtp-client.c M src/lib/iostream-rawlog.c Log Message: ----------- Replace host:port parsers with net_str2hostport(). Compare: https://github.com/dovecot/core/compare/4209bd278ff4...7c925149e49f From noreply at github.com Fri Jan 29 15:49:06 2016 From: noreply at github.com (GitHub) Date: Fri, 29 Jan 2016 07:49:06 -0800 Subject: [dovecot/core] 589a28: Compiler warning fix to previous commit Message-ID: <56ab89f2845de_6dec3fcef337b2a01049f@hookshot-fe3-cp1-prd.iad.github.net.mail> Branch: refs/heads/master Home: https://github.com/dovecot/core Commit: 589a288a09c966a4436dcc38913ce586340402f9 https://github.com/dovecot/core/commit/589a288a09c966a4436dcc38913ce586340402f9 Author: Timo Sirainen Date: 2016-01-29 (Fri, 29 Jan 2016) Changed paths: M src/lib-lda/smtp-client.c Log Message: ----------- Compiler warning fix to previous commit