dovecot-2.0-pigeonhole: Imap4flags: prevent forcibly enabling im...

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Mon May 9 21:56:53 EEST 2011


details:   http://hg.rename-it.nl/dovecot-2.0-pigeonhole/rev/ef58ace33b47
changeset: 1497:ef58ace33b47
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Mon May 09 20:56:08 2011 +0200
description:
Imap4flags: prevent forcibly enabling imap4flags when imapflags is enabled.

diffstat:

 src/lib-sieve/plugins/imap4flags/ext-imapflags.c      |   2 +-
 src/lib-sieve/plugins/vacation/ext-vacation-seconds.c |   2 +-
 src/lib-sieve/sieve-extensions.c                      |  20 +++++++++++---------
 src/lib-sieve/sieve-extensions.h                      |   4 +++-
 4 files changed, 16 insertions(+), 12 deletions(-)

diffs (118 lines):

diff -r 42497f1c37ff -r ef58ace33b47 src/lib-sieve/plugins/imap4flags/ext-imapflags.c
--- a/src/lib-sieve/plugins/imap4flags/ext-imapflags.c	Thu Apr 14 22:45:40 2011 +0200
+++ b/src/lib-sieve/plugins/imap4flags/ext-imapflags.c	Mon May 09 20:56:08 2011 +0200
@@ -94,7 +94,7 @@
 	if ( *context == NULL ) {	
 		/* Make sure real extension is registered, it is needed by the binary */
 		*context = (void *)	
-			sieve_extension_require(ext->svinst, &imap4flags_extension);
+			sieve_extension_require(ext->svinst, &imap4flags_extension, FALSE);
 	}
 
 	return TRUE;
diff -r 42497f1c37ff -r ef58ace33b47 src/lib-sieve/plugins/vacation/ext-vacation-seconds.c
--- a/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c	Thu Apr 14 22:45:40 2011 +0200
+++ b/src/lib-sieve/plugins/vacation/ext-vacation-seconds.c	Mon May 09 20:56:08 2011 +0200
@@ -45,7 +45,7 @@
 	if ( *context == NULL ) {	
 		/* Make sure vacation extension is registered */
 		*context = (void *)	
-			sieve_extension_require(ext->svinst, &vacation_extension);
+			sieve_extension_require(ext->svinst, &vacation_extension, TRUE);
 	}
 
 	return TRUE;
diff -r 42497f1c37ff -r ef58ace33b47 src/lib-sieve/sieve-extensions.c
--- a/src/lib-sieve/sieve-extensions.c	Thu Apr 14 22:45:40 2011 +0200
+++ b/src/lib-sieve/sieve-extensions.c	Mon May 09 20:56:08 2011 +0200
@@ -24,7 +24,7 @@
 
 static struct sieve_extension *_sieve_extension_register
 	(struct sieve_instance *svinst, const struct sieve_extension_def *extdef, 
-		bool load, bool required);
+		bool load, bool required, bool implied);
 
 /*
  * Instance global context
@@ -216,7 +216,7 @@
 	/* 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 )
+			(svinst, sieve_dummy_extensions[i], TRUE, FALSE, FALSE)) == NULL )
 			return FALSE;
 	
 		ext->dummy = TRUE;
@@ -346,8 +346,8 @@
 }
 
 static struct sieve_extension *_sieve_extension_register
-(struct sieve_instance *svinst, const struct sieve_extension_def *extdef, 
-	bool load, bool required)
+(struct sieve_instance *svinst, const struct sieve_extension_def *extdef,
+	bool load, bool required, bool implied)
 {
 	struct sieve_extension_registry *ext_reg = svinst->ext_reg;
 	struct sieve_extension *ext = (struct sieve_extension *)	
@@ -390,7 +390,8 @@
 		ext->loaded = TRUE;
 	}
 
-	ext->required = (ext->required || required );
+	ext->required = ( ext->required || required );
+	ext->implied = ( ext->implied || implied );
 
 	return ext;
 }
@@ -399,7 +400,7 @@
 (struct sieve_instance *svinst, const struct sieve_extension_def *extdef,
 	bool load)
 {
-	return _sieve_extension_register(svinst, extdef, load, FALSE);
+	return _sieve_extension_register(svinst, extdef, load, FALSE, FALSE);
 }
 
 void sieve_extension_unregister(const struct sieve_extension *ext)
@@ -419,9 +420,10 @@
 }
 
 const struct sieve_extension *sieve_extension_require
-(struct sieve_instance *svinst, const struct sieve_extension_def *extdef)
+(struct sieve_instance *svinst, const struct sieve_extension_def *extdef,
+	bool implied)
 {
-	return _sieve_extension_register(svinst, extdef, TRUE, TRUE);
+	return _sieve_extension_register(svinst, extdef, TRUE, TRUE, implied);
 }
 
 int sieve_extensions_get_count(struct sieve_instance *svinst)
@@ -627,7 +629,7 @@
 
 			if ( exts[i]->id >= 0 && exts[i]->def != NULL && 
 				*(exts[i]->def->name) != '@' ) {
-				if ( disabled && !exts[i]->required )
+				if ( disabled && !exts[i]->implied )
 					sieve_extension_disable(exts[i]);
 				else
 					sieve_extension_enable(exts[i]);
diff -r 42497f1c37ff -r ef58ace33b47 src/lib-sieve/sieve-extensions.h
--- a/src/lib-sieve/sieve-extensions.h	Thu Apr 14 22:45:40 2011 +0200
+++ b/src/lib-sieve/sieve-extensions.h	Mon May 09 20:56:08 2011 +0200
@@ -74,6 +74,7 @@
 	unsigned int required:1;
 	unsigned int loaded:1;
 	unsigned int enabled:1;
+	unsigned int implied:1;
 	unsigned int dummy:1;
 };
 
@@ -116,7 +117,8 @@
 	(struct sieve_instance *svinst, const struct sieve_extension_def *extension, 
 		bool load);
 const struct sieve_extension *sieve_extension_require
-	(struct sieve_instance *svinst, const struct sieve_extension_def *extension);
+	(struct sieve_instance *svinst, const struct sieve_extension_def *extension, 
+		bool implied);
 bool sieve_extension_reload(const struct sieve_extension *ext);
 
 void sieve_extension_unregister(const struct sieve_extension *ext);


More information about the dovecot-cvs mailing list