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