dovecot-1.2-sieve: Improved extension unloading.

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Wed Jan 13 09:57:15 EET 2010


details:   http://hg.rename-it.nl/dovecot-1.2-sieve/rev/23d5ee64d409
changeset: 1203:23d5ee64d409
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Wed Jan 13 08:57:10 2010 +0100
description:
Improved extension unloading.

diffstat:

 src/lib-sieve/sieve-extensions.c |  19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diffs (43 lines):

diff -r 01d361b59a60 -r 23d5ee64d409 src/lib-sieve/sieve-extensions.c
--- a/src/lib-sieve/sieve-extensions.c	Wed Jan 13 01:16:20 2010 +0100
+++ b/src/lib-sieve/sieve-extensions.c	Wed Jan 13 08:57:10 2010 +0100
@@ -269,21 +269,16 @@
 static void sieve_extension_registry_deinit(struct sieve_instance *svinst) 
 {
 	struct sieve_extension_registry *ext_reg = svinst->ext_reg;
-	struct hash_iterate_context *itx;
-	void *key; 
-	void *value;
+	struct sieve_extension *exts;
+    unsigned int i, ext_count;
 	
 	if ( ext_reg->extension_index == NULL ) return;
 
-	itx = hash_table_iterate_init(ext_reg->extension_index);
-	while ( hash_table_iterate(itx, &key, &value) ) {
-		struct sieve_extension *ext = (struct sieve_extension *) value;
-		
-		_sieve_extension_unload(ext);
+    exts = array_get_modifiable(&ext_reg->extensions, &ext_count);
+	for ( i = 0; i < ext_count; i++ ) {
+		_sieve_extension_unload(&exts[i]);
 	}
 
-	hash_table_iterate_deinit(&itx); 	
-
 	hash_table_destroy(&ext_reg->extension_index);
 }
 
@@ -363,10 +358,10 @@
     struct sieve_extension *mod_ext;
     int ext_id = ext->id;
 
-    if ( ext_id > 0 && ext_id < (int) array_count(&ext_reg->extensions) ) {
+    if ( ext_id >= 0 && ext_id < (int) array_count(&ext_reg->extensions) ) {
         mod_ext = array_idx_modifiable(&ext_reg->extensions, ext_id);
 
-		sieve_extension_capabilities_unregister(ext);
+		sieve_extension_capabilities_unregister(mod_ext);
 		_sieve_extension_unload(mod_ext);
 		mod_ext->loaded = FALSE;
 		mod_ext->def = NULL;


More information about the dovecot-cvs mailing list