dovecot-2.0: notify: Ignore notify callbacks that are NULL.
dovecot at dovecot.org
dovecot at dovecot.org
Mon Aug 2 17:30:39 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/61de50936fcd
changeset: 11914:61de50936fcd
user: Timo Sirainen <tss at iki.fi>
date: Mon Aug 02 15:28:56 2010 +0100
description:
notify: Ignore notify callbacks that are NULL.
diffstat:
src/plugins/notify/notify-plugin.c | 46 ++++++++++++++++++-----
1 files changed, 36 insertions(+), 10 deletions(-)
diffs (134 lines):
diff -r 63124518977a -r 61de50936fcd src/plugins/notify/notify-plugin.c
--- a/src/plugins/notify/notify-plugin.c Mon Aug 02 13:24:55 2010 +0100
+++ b/src/plugins/notify/notify-plugin.c Mon Aug 02 15:28:56 2010 +0100
@@ -43,7 +43,8 @@
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
mail_txn = i_new(struct notify_mail_txn, 1);
mail_txn->parent_mailbox_txn = t;
- mail_txn->txn = ctx->v.mail_transaction_begin(t);
+ mail_txn->txn = ctx->v.mail_transaction_begin == NULL ? NULL :
+ ctx->v.mail_transaction_begin(t);
DLLIST_PREPEND(&ctx->mail_txn_list, mail_txn);
}
}
@@ -54,6 +55,8 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_save == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, mail->transaction);
ctx->v.mail_save(mail_txn->txn, mail);
}
@@ -65,6 +68,8 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_copy == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, dst->transaction);
ctx->v.mail_copy(mail_txn->txn, src, dst);
}
@@ -76,6 +81,8 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_expunge == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, mail->transaction);
ctx->v.mail_expunge(mail_txn->txn, mail);
}
@@ -88,6 +95,8 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_update_flags == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, mail->transaction);
ctx->v.mail_update_flags(mail_txn->txn, mail, old_flags);
}
@@ -100,6 +109,8 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_update_keywords == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, mail->transaction);
ctx->v.mail_update_keywords(mail_txn->txn, mail, old_keywords);
}
@@ -112,8 +123,11 @@
struct notify_mail_txn *mail_txn;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ if (ctx->v.mail_transaction_commit == NULL)
+ continue;
mail_txn = notify_context_find_mail_txn(ctx, t);
- ctx->v.mail_transaction_commit(mail_txn->txn, changes);
+ if (ctx->v.mail_transaction_commit != NULL)
+ ctx->v.mail_transaction_commit(mail_txn->txn, changes);
DLLIST_REMOVE(&ctx->mail_txn_list, mail_txn);
i_free(mail_txn);
}
@@ -126,7 +140,8 @@
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
mail_txn = notify_context_find_mail_txn(ctx, t);
- ctx->v.mail_transaction_rollback(mail_txn->txn);
+ if (ctx->v.mail_transaction_rollback != NULL)
+ ctx->v.mail_transaction_rollback(mail_txn->txn);
DLLIST_REMOVE(&ctx->mail_txn_list, mail_txn);
i_free(mail_txn);
}
@@ -136,8 +151,11 @@
{
struct notify_context *ctx;
- for (ctx = ctx_list; ctx != NULL; ctx = ctx->next)
- ctx->mailbox_delete_txn = ctx->v.mailbox_delete_begin(box);
+ for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
+ ctx->mailbox_delete_txn =
+ ctx->v.mailbox_delete_begin == NULL ? NULL :
+ ctx->v.mailbox_delete_begin(box);
+ }
}
void notify_contexts_mailbox_delete_commit(struct mailbox *box)
@@ -145,7 +163,10 @@
struct notify_context *ctx;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
- ctx->v.mailbox_delete_commit(ctx->mailbox_delete_txn, box);
+ if (ctx->v.mailbox_delete_commit != NULL) {
+ ctx->v.mailbox_delete_commit(ctx->mailbox_delete_txn,
+ box);
+ }
ctx->mailbox_delete_txn = NULL;
}
}
@@ -155,7 +176,8 @@
struct notify_context *ctx;
for (ctx = ctx_list; ctx != NULL; ctx = ctx->next) {
- ctx->v.mailbox_delete_rollback(ctx->mailbox_delete_txn);
+ if (ctx->v.mailbox_delete_rollback != NULL)
+ ctx->v.mailbox_delete_rollback(ctx->mailbox_delete_txn);
ctx->mailbox_delete_txn = NULL;
}
}
@@ -184,9 +206,13 @@
{
struct notify_mail_txn *mail_txn = ctx->mail_txn_list;
- for (; mail_txn != NULL; mail_txn = mail_txn->next)
- ctx->v.mail_transaction_rollback(mail_txn->txn);
- ctx->v.mailbox_delete_rollback(ctx->mailbox_delete_txn);
+ for (; mail_txn != NULL; mail_txn = mail_txn->next) {
+ if (ctx->v.mail_transaction_rollback != NULL)
+ ctx->v.mail_transaction_rollback(mail_txn->txn);
+ }
+ if (ctx->mailbox_delete_txn != NULL &&
+ ctx->v.mailbox_delete_rollback != NULL)
+ ctx->v.mailbox_delete_rollback(ctx->mailbox_delete_txn);
DLLIST_REMOVE(&ctx_list, ctx);
i_free(ctx);
}
More information about the dovecot-cvs
mailing list