"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/plugins/notify-status/notify-status-plugin.c" between
dovecot-2.3.16.tar.gz and dovecot-2.3.17.tar.gz

About: Dovecot is an IMAP and POP3 server, written with security primarily in mind.

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

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)