dovecot-1.2-sieve: Fixed unnecessary reporting of dummy extensio...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Mon Sep 13 03:55:14 EEST 2010
details: http://hg.rename-it.nl/dovecot-1.2-sieve/rev/2730e1a3d27e
changeset: 1275:2730e1a3d27e
user: Stephan Bosch <stephan at rename-it.nl>
date: Mon Sep 13 02:55:05 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 79c7ce4095f8 -r 2730e1a3d27e src/lib-sieve/sieve-extensions.c
--- a/src/lib-sieve/sieve-extensions.c Sun Sep 12 14:02:45 2010 +0200
+++ b/src/lib-sieve/sieve-extensions.c Mon Sep 13 02:55:05 2010 +0200
@@ -21,6 +21,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
*/
@@ -102,12 +106,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,
@@ -177,6 +186,7 @@
unsigned int i;
struct sieve_extension_registry *ext_reg =
p_new(svinst->pool, struct sieve_extension_registry, 1);
+ struct sieve_extension *ext;
svinst->ext_reg = ext_reg;
@@ -199,6 +209,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
@@ -448,7 +467,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 ) {
@@ -459,7 +478,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 79c7ce4095f8 -r 2730e1a3d27e src/lib-sieve/sieve-extensions.h
--- a/src/lib-sieve/sieve-extensions.h Sun Sep 12 14:02:45 2010 +0200
+++ b/src/lib-sieve/sieve-extensions.h Mon Sep 13 02:55:05 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