dovecot-2.0: lib-storage optimization: SEARCH_MAILBOX* should be...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Apr 30 15:36:02 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/957e907834e7
changeset: 11234:957e907834e7
user: Timo Sirainen <tss at iki.fi>
date: Fri Apr 30 15:35:59 2010 +0300
description:
lib-storage optimization: SEARCH_MAILBOX* should be checked before cache lookups.
diffstat:
src/lib-storage/index/index-search.c | 41 +++++++++++++++++++++--------------------
1 files changed, 21 insertions(+), 20 deletions(-)
diffs (72 lines):
diff -r 5d0027f17bd8 -r 957e907834e7 src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c Fri Apr 30 15:33:15 2010 +0300
+++ b/src/lib-storage/index/index-search.c Fri Apr 30 15:35:59 2010 +0300
@@ -150,6 +150,8 @@
struct mail_search_arg *arg,
const struct mail_index_record *rec)
{
+ uint8_t guid[MAIL_GUID_128_SIZE];
+ const char *str;
enum mail_flags flags;
uint64_t modseq;
int ret;
@@ -184,6 +186,25 @@
}
return modseq >= arg->value.modseq->modseq;
}
+ case SEARCH_MAILBOX:
+ if (mail_get_special(ctx->mail, MAIL_FETCH_MAILBOX_NAME,
+ &str) < 0)
+ return -1;
+
+ if (strcasecmp(str, "INBOX") == 0)
+ return strcasecmp(arg->value.str, "INBOX") == 0;
+ return strcmp(str, arg->value.str) == 0;
+ case SEARCH_MAILBOX_GUID:
+ if (mailbox_get_guid(ctx->mail->box, guid) < 0)
+ return -1;
+
+ return strcmp(mail_guid_128_to_string(guid),
+ arg->value.str) == 0;
+ case SEARCH_MAILBOX_GLOB:
+ if (mail_get_special(ctx->mail, MAIL_FETCH_MAILBOX_NAME,
+ &str) < 0)
+ return -1;
+ return imap_match(arg->value.mailbox_glob, str) == IMAP_MATCH_YES;
default:
return -1;
}
@@ -218,7 +239,6 @@
time_t date;
int tz_offset;
bool have_tz_offset;
- uint8_t guid[MAIL_GUID_128_SIZE];
switch (arg->type) {
/* internal dates */
@@ -279,25 +299,6 @@
if (mail_get_special(ctx->mail, MAIL_FETCH_GUID, &str) < 0)
return -1;
return strcmp(str, arg->value.str) == 0;
- case SEARCH_MAILBOX:
- if (mail_get_special(ctx->mail, MAIL_FETCH_MAILBOX_NAME,
- &str) < 0)
- return -1;
-
- if (strcasecmp(str, "INBOX") == 0)
- return strcasecmp(arg->value.str, "INBOX") == 0;
- return strcmp(str, arg->value.str) == 0;
- case SEARCH_MAILBOX_GUID:
- if (mailbox_get_guid(ctx->mail->box, guid) < 0)
- return -1;
-
- return strcmp(mail_guid_128_to_string(guid),
- arg->value.str) == 0;
- case SEARCH_MAILBOX_GLOB:
- if (mail_get_special(ctx->mail, MAIL_FETCH_MAILBOX_NAME,
- &str) < 0)
- return -1;
- return imap_match(arg->value.mailbox_glob, str) == IMAP_MATCH_YES;
default:
return -1;
}
More information about the dovecot-cvs
mailing list