notify-status-plugin.c (dovecot-2.3.16) | : | notify-status-plugin.c (dovecot-2.3.17) | ||
---|---|---|---|---|
skipping to change at line 55 | skipping to change at line 55 | |||
ARRAY_TYPE(imap_match_glob) patterns; | ARRAY_TYPE(imap_match_glob) patterns; | |||
struct dict *dict; | struct dict *dict; | |||
const char *value_template; | const char *value_template; | |||
struct notify_context *context; | struct notify_context *context; | |||
}; | }; | |||
static int notify_status_dict_init(struct mail_user *user, const char *uri, | static int notify_status_dict_init(struct mail_user *user, const char *uri, | |||
struct dict **dict_r, const char **error_r) | struct dict **dict_r, const char **error_r) | |||
{ | { | |||
struct dict_settings set = { | struct dict_settings set = { | |||
.username = user->username, | ||||
.base_dir = user->set->base_dir, | .base_dir = user->set->base_dir, | |||
.event_parent = user->event, | .event_parent = user->event, | |||
}; | }; | |||
(void)mail_user_get_home(user, &set.home_dir); | ||||
if (dict_init(uri, &set, dict_r, error_r) < 0) { | if (dict_init(uri, &set, dict_r, error_r) < 0) { | |||
*error_r = t_strdup_printf("dict_init(%s) failed: %s", | *error_r = t_strdup_printf("dict_init(%s) failed: %s", | |||
uri, *error_r); | uri, *error_r); | |||
return -1; | return -1; | |||
} | } | |||
return 0; | return 0; | |||
} | } | |||
static void notify_status_mailbox_patterns_init(struct mail_user *user, | static void notify_status_mailbox_patterns_init(struct mail_user *user, | |||
ARRAY_TYPE(imap_match_glob) *patt erns) | ARRAY_TYPE(imap_match_glob) *patt erns) | |||
skipping to change at line 180 | skipping to change at line 178 | |||
{ '\0', NULL, NULL } | { '\0', NULL, NULL } | |||
}; | }; | |||
const char *error; | const char *error; | |||
const char *key = | const char *key = | |||
t_strdup_printf(NOTIFY_STATUS_KEY, mailbox_get_vname(box) ); | t_strdup_printf(NOTIFY_STATUS_KEY, mailbox_get_vname(box) ); | |||
string_t *dest = t_str_new(64); | string_t *dest = t_str_new(64); | |||
if (var_expand(dest, nuser->value_template, values, &error)<0) { | if (var_expand(dest, nuser->value_template, values, &error)<0) { | |||
i_error("notify-status: var_expand(%s) failed: %s", | i_error("notify-status: var_expand(%s) failed: %s", | |||
nuser->value_template, error); | nuser->value_template, error); | |||
} else { | } else { | |||
t = dict_transaction_begin(nuser->dict); | const struct dict_op_settings *set = mail_user_get_dict_o | |||
p_settings(user); | ||||
t = dict_transaction_begin(nuser->dict, set); | ||||
dict_set(t, key, str_c(dest)); | dict_set(t, key, str_c(dest)); | |||
dict_transaction_commit_async(&t, notify_update_callback, NULL) ; | dict_transaction_commit_async(&t, notify_update_callback, NULL) ; | |||
} | } | |||
} | } | |||
mailbox_free(&box); | mailbox_free(&box); | |||
} | } | |||
static void notify_remove_mailbox_status(struct mailbox *box) | static void notify_remove_mailbox_status(struct mailbox *box) | |||
{ | { | |||
struct mail_user *user = mail_storage_get_user(mailbox_get_storage(box)); | struct mail_user *user = mail_storage_get_user(mailbox_get_storage(box)); | |||
struct notify_status_user *nuser = NOTIFY_STATUS_USER_CONTEXT(user); | struct notify_status_user *nuser = NOTIFY_STATUS_USER_CONTEXT(user); | |||
i_assert(nuser != NULL); | i_assert(nuser != NULL); | |||
struct dict_transaction_context *t; | struct dict_transaction_context *t; | |||
e_debug(box->event, "notify-status: Removing mailbox status"); | e_debug(box->event, "notify-status: Removing mailbox status"); | |||
const char *key = | const char *key = | |||
t_strdup_printf(NOTIFY_STATUS_KEY, mailbox_get_vname(box)); | t_strdup_printf(NOTIFY_STATUS_KEY, mailbox_get_vname(box)); | |||
t = dict_transaction_begin(nuser->dict); | const struct dict_op_settings *set = mail_user_get_dict_op_settings(user) | |||
; | ||||
t = dict_transaction_begin(nuser->dict, set); | ||||
dict_unset(t, key); | dict_unset(t, key); | |||
dict_transaction_commit_async(&t, notify_update_callback, NULL) ; | dict_transaction_commit_async(&t, notify_update_callback, NULL) ; | |||
} | } | |||
static void *notify_status_mail_transaction_begin(struct mailbox_transaction_con text *t) | static void *notify_status_mail_transaction_begin(struct mailbox_transaction_con text *t) | |||
{ | { | |||
struct notify_status_mail_txn *txn = i_new(struct notify_status_mail_txn, 1); | struct notify_status_mail_txn *txn = i_new(struct notify_status_mail_txn, 1); | |||
txn->box = mailbox_transaction_get_mailbox(t); | txn->box = mailbox_transaction_get_mailbox(t); | |||
return txn; | return txn; | |||
} | } | |||
End of changes. 4 change blocks. | ||||
4 lines changed or deleted | 6 lines changed or added |