dovecot-2.2-pigeonhole: doveadm-sieve: Fixed problem with synchr...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Mon Oct 27 20:58:31 UTC 2014
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/79d66ccc9bfc
changeset: 1938:79d66ccc9bfc
user: Stephan Bosch <stephan at rename-it.nl>
date: Mon Oct 27 21:58:13 2014 +0100
description:
doveadm-sieve: Fixed problem with synchronizing the active script.
diffstat:
src/lib-sieve/sieve-script.c | 8 ++++-
src/lib-sieve/sieve-storage-private.h | 6 ++++
src/lib-sieve/sieve-storage-sync.c | 30 ++++++++++++++++++++++++
src/lib-sieve/sieve-storage.c | 7 ++++-
src/plugins/doveadm-sieve/doveadm-sieve-plugin.c | 2 +-
5 files changed, 48 insertions(+), 5 deletions(-)
diffs (105 lines):
diff -r 79988ab8b2df -r 79d66ccc9bfc src/lib-sieve/sieve-script.c
--- a/src/lib-sieve/sieve-script.c Sun Oct 26 14:10:27 2014 +0100
+++ b/src/lib-sieve/sieve-script.c Mon Oct 27 21:58:13 2014 +0100
@@ -520,15 +520,19 @@
int sieve_script_activate(struct sieve_script *script, time_t mtime)
{
+ struct sieve_storage *storage = script->storage;
int ret;
- i_assert( (script->storage->flags & SIEVE_STORAGE_FLAG_READWRITE) != 0 );
+ i_assert( (storage->flags & SIEVE_STORAGE_FLAG_READWRITE) != 0 );
i_assert( script->open ); // FIXME: auto-open?
i_assert( script->v.activate != NULL );
ret = script->v.activate(script);
- sieve_storage_set_modified(script->storage, mtime);
+ if (ret >= 0) {
+ sieve_storage_set_modified(storage, mtime);
+ sieve_storage_sync_script_activate(storage);
+ }
return ret;
}
diff -r 79988ab8b2df -r 79d66ccc9bfc src/lib-sieve/sieve-storage-private.h
--- a/src/lib-sieve/sieve-storage-private.h Sun Oct 26 14:10:27 2014 +0100
+++ b/src/lib-sieve/sieve-storage-private.h Mon Oct 27 21:58:13 2014 +0100
@@ -243,4 +243,10 @@
void sieve_storage_sync_script_delete
(struct sieve_storage *storage, const char *name);
+void sieve_storage_sync_script_activate
+(struct sieve_storage *storage);
+void sieve_storage_sync_deactivate
+(struct sieve_storage *storage);
+
+
#endif
diff -r 79988ab8b2df -r 79d66ccc9bfc src/lib-sieve/sieve-storage-sync.c
--- a/src/lib-sieve/sieve-storage-sync.c Sun Oct 26 14:10:27 2014 +0100
+++ b/src/lib-sieve/sieve-storage-sync.c Mon Oct 27 21:58:13 2014 +0100
@@ -134,3 +134,33 @@
mail_index_attribute_unset(t->itrans, TRUE, key, ioloop_time);
sieve_storage_sync_transaction_finish(storage, &t);
}
+
+void sieve_storage_sync_script_activate
+(struct sieve_storage *storage)
+{
+ struct mailbox_transaction_context *t;
+
+ if (storage->sync_inbox == NULL)
+ return;
+
+ t = mailbox_transaction_begin(storage->sync_inbox, 0);
+ mail_index_attribute_set
+ (t->itrans, TRUE, MAILBOX_ATTRIBUTE_SIEVE_DEFAULT, ioloop_time, 0);
+ sieve_storage_sync_transaction_finish(storage, &t);
+}
+
+void sieve_storage_sync_deactivate
+(struct sieve_storage *storage)
+{
+ struct mailbox_transaction_context *t;
+
+ if (storage->sync_inbox == NULL)
+ return;
+
+ t = mailbox_transaction_begin(storage->sync_inbox, 0);
+ mail_index_attribute_unset
+ (t->itrans, TRUE, MAILBOX_ATTRIBUTE_SIEVE_DEFAULT, ioloop_time);
+ sieve_storage_sync_transaction_finish(storage, &t);
+}
+
+
diff -r 79988ab8b2df -r 79d66ccc9bfc src/lib-sieve/sieve-storage.c
--- a/src/lib-sieve/sieve-storage.c Sun Oct 26 14:10:27 2014 +0100
+++ b/src/lib-sieve/sieve-storage.c Mon Oct 27 21:58:13 2014 +0100
@@ -670,8 +670,11 @@
i_assert(storage->v.deactivate != NULL);
ret = storage->v.deactivate(storage);
-
- sieve_storage_set_modified(storage, mtime);
+
+ if (ret >= 0) {
+ sieve_storage_set_modified(storage, mtime);
+ sieve_storage_sync_deactivate(storage);
+ }
return ret;
}
diff -r 79988ab8b2df -r 79d66ccc9bfc src/plugins/doveadm-sieve/doveadm-sieve-plugin.c
--- a/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c Sun Oct 26 14:10:27 2014 +0100
+++ b/src/plugins/doveadm-sieve/doveadm-sieve-plugin.c Mon Oct 27 21:58:13 2014 +0100
@@ -188,7 +188,7 @@
{
int ret;
- if ((ret=sieve_storage_is_singular(svstorage)) <= 0) {
+ if ((ret=sieve_storage_is_singular(svstorage)) != 0) {
if (ret < 0)
mail_storage_set_internal_error(storage);
return ret;
More information about the dovecot-cvs
mailing list