dovecot-2.0-pigeonhole: Fixed unnecessary reporting of dummy ext...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Mon Sep 13 03:48:56 EEST 2010
details: http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/fbcb05e7eda1
changeset: 1425:fbcb05e7eda1
user: Stephan Bosch <stephan at rename-it.nl>
date: Mon Sep 13 02:48:50 2010 +0200
description:
Fixed unnecessary reporting of dummy extensions in ManageSieve SIEVE capability.
diffstat:
src/lib-sieve/sieve-extensions.c | 31 +++++++++++++++++++++++++------
src/lib-sieve/sieve-extensions.h | 1 +
2 files changed, 26 insertions(+), 6 deletions(-)
diffs (89 lines):
diff -r aa15d16aea8f -r fbcb05e7eda1 src/lib-sieve/sieve-extensions.c
--- a/src/lib-sieve/sieve-extensions.c Fri Sep 10 02:04:17 2010 +0200
+++ b/src/lib-sieve/sieve-extensions.c Mon Sep 13 02:48:50 2010 +0200
@@ -22,6 +22,10 @@
static void sieve_capability_registry_init(struct sieve_instance *svinst);
static void sieve_capability_registry_deinit(struct sieve_instance *svinst);
+static struct sieve_extension *_sieve_extension_register
+ (struct sieve_instance *svinst, const struct sieve_extension_def *extdef,
+ bool load, bool required);
+
/*
* Instance global context
*/
@@ -103,12 +107,17 @@
* List of native extensions
*/
+const struct sieve_extension_def *sieve_dummy_extensions[] = {
+ /* Dummy extensions */
+ &comparator_i_octet_extension, &comparator_i_ascii_casemap_extension
+};
+
+const unsigned int sieve_dummy_extensions_count =
+ N_ELEMENTS(sieve_dummy_extensions);
+
/* Core */
-const struct sieve_extension_def *sieve_core_extensions[] = {
- /* Dummy extensions */
- &comparator_i_octet_extension, &comparator_i_ascii_casemap_extension,
-
+const struct sieve_extension_def *sieve_core_extensions[] = {
/* Core extensions */
&fileinto_extension, &reject_extension, &envelope_extension,
&encoded_character_extension,
@@ -179,6 +188,7 @@
struct sieve_extension_registry *ext_reg =
p_new(svinst->pool, struct sieve_extension_registry, 1);
const char *extensions;
+ struct sieve_extension *ext;
svinst->ext_reg = ext_reg;
@@ -201,6 +211,15 @@
array_append(&ext_reg->preloaded_extensions,
&ext_reg->address_part_extension, 1);
+ /* Pre-load dummy extensions */
+ for ( i = 0; i < sieve_dummy_extensions_count; i++ ) {
+ if ( (ext=_sieve_extension_register
+ (svinst, sieve_dummy_extensions[i], TRUE, FALSE)) == NULL )
+ return FALSE;
+
+ ext->dummy = TRUE;
+ }
+
/* Pre-load core extensions */
for ( i = 0; i < sieve_core_extensions_count; i++ ) {
if ( sieve_extension_register
@@ -456,7 +475,7 @@
/* Find first listable extension */
while ( i < ext_count &&
!( exts[i].enabled && exts[i].def != NULL &&
- *(exts[i].def->name) != '@' ) )
+ *(exts[i].def->name) != '@' && !exts[i].dummy ) )
i++;
if ( i < ext_count ) {
@@ -467,7 +486,7 @@
/* Add others */
for ( ; i < ext_count; i++ ) {
if ( exts[i].enabled && exts[i].def != NULL &&
- *(exts[i].def->name) != '@' ) {
+ *(exts[i].def->name) != '@' && !exts[i].dummy ) {
str_append_c(extstr, ' ');
str_append(extstr, exts[i].def->name);
}
diff -r aa15d16aea8f -r fbcb05e7eda1 src/lib-sieve/sieve-extensions.h
--- a/src/lib-sieve/sieve-extensions.h Fri Sep 10 02:04:17 2010 +0200
+++ b/src/lib-sieve/sieve-extensions.h Mon Sep 13 02:48:50 2010 +0200
@@ -74,6 +74,7 @@
unsigned int required:1;
unsigned int loaded:1;
unsigned int enabled:1;
+ unsigned int dummy:1;
};
#define sieve_extension_name(ext) \
More information about the dovecot-cvs
mailing list