dovecot-2.0-sieve: Improved extension unloading.
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Wed Jan 13 10:04:00 EET 2010
details: http://hg.rename-it.nl/dovecot-2.0-sieve/rev/ffeb38617181
changeset: 1201:ffeb38617181
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 9cb00cb9fbfb -r ffeb38617181 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