dovecot-2.2: lib-storage: Code cleanup - moved BODY/TEXT "" opti...

dovecot at dovecot.org dovecot at dovecot.org
Tue Dec 8 11:11:11 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/a776ee107aa2
changeset: 19488:a776ee107aa2
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Dec 08 12:55:40 2015 +0200
description:
lib-storage: Code cleanup - moved BODY/TEXT "" optimization to mail_search_args_simplify()

diffstat:

 src/lib-storage/mail-search-args-simplify.c      |  11 +++++++++--
 src/lib-storage/mail-search-register-imap.c      |   6 ------
 src/lib-storage/test-mail-search-args-simplify.c |  10 ++++++++++
 3 files changed, 19 insertions(+), 8 deletions(-)

diffs (60 lines):

diff -r ba0dd0dcc223 -r a776ee107aa2 src/lib-storage/mail-search-args-simplify.c
--- a/src/lib-storage/mail-search-args-simplify.c	Tue Dec 08 12:24:42 2015 +0200
+++ b/src/lib-storage/mail-search-args-simplify.c	Tue Dec 08 12:55:40 2015 +0200
@@ -540,11 +540,18 @@
 		case SEARCH_LARGER:
 			merged = mail_search_args_merge_size(&ctx, args);
 			break;
+		case SEARCH_BODY:
+		case SEARCH_TEXT:
+			if (args->value.str[0] == '\0') {
+				/* BODY "" and TEXT "" matches everything */
+				args->type = SEARCH_ALL;
+				ctx.removals = TRUE;
+				break;
+			}
+			/* fall through */
 		case SEARCH_HEADER:
 		case SEARCH_HEADER_ADDRESS:
 		case SEARCH_HEADER_COMPRESS_LWSP:
-		case SEARCH_BODY:
-		case SEARCH_TEXT:
 			merged = mail_search_args_merge_text(&ctx, args);
 			break;
 		default:
diff -r ba0dd0dcc223 -r a776ee107aa2 src/lib-storage/mail-search-register-imap.c
--- a/src/lib-storage/mail-search-register-imap.c	Tue Dec 08 12:24:42 2015 +0200
+++ b/src/lib-storage/mail-search-register-imap.c	Tue Dec 08 12:55:40 2015 +0200
@@ -277,12 +277,6 @@
 	if (mail_search_build_get_utf8(ctx, sarg->value.str,
 				       &sarg->value.str) < 0)
 		return NULL;
-
-	if (sarg->value.str[0] == '\0') {
-		/* optimization: BODY "" matches everything
-		   (but do this only after checking charset and key are ok) */
-		return mail_search_build_new(ctx, SEARCH_ALL);
-	}
 	return sarg;
 }
 
diff -r ba0dd0dcc223 -r a776ee107aa2 src/lib-storage/test-mail-search-args-simplify.c
--- a/src/lib-storage/test-mail-search-args-simplify.c	Tue Dec 08 12:24:42 2015 +0200
+++ b/src/lib-storage/test-mail-search-args-simplify.c	Tue Dec 08 12:55:40 2015 +0200
@@ -97,6 +97,16 @@
 	{ "TEXT foo BODY foo", "TEXT foo BODY foo" },
 	{ "OR ( TEXT foo OR TEXT foo TEXT foo ) ( TEXT foo ( TEXT foo ) )", "TEXT foo" },
 
+	/* value="" tests */
+	{ "HEADER foo ", "HEADER FOO \"\"" },
+	{ "SUBJECT ", "SUBJECT \"\"" },
+	{ "BODY ", "ALL" },
+	{ "TEXT ", "ALL" },
+	{ "HEADER foo .", "HEADER FOO ." },
+	{ "SUBJECT .", "SUBJECT ." },
+	{ "BODY .", "BODY ." },
+	{ "TEXT .", "TEXT ." },
+
 	/* OR: drop redundant args */
 	{ "OR ( TEXT common1 TEXT unique1 ) TEXT common1", "TEXT common1" },
 	{ "OR ( TEXT unique1 TEXT common1 ) TEXT common1", "TEXT common1" },


More information about the dovecot-cvs mailing list