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