From: Marco Bettini Date: Thu, 25 Aug 2022 09:38:03 +0000 (+0000) Subject: doveadm: struct dsync_brain - Add event X-Git-Tag: 2.4.0~3573 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2287c9878de8bf10e4b5361a497f267105117d5;p=thirdparty%2Fdovecot%2Fcore.git doveadm: struct dsync_brain - Add event --- diff --git a/src/doveadm/dsync/dsync-brain-private.h b/src/doveadm/dsync/dsync-brain-private.h index 6680a9bb06..1c44b49289 100644 --- a/src/doveadm/dsync/dsync-brain-private.h +++ b/src/doveadm/dsync/dsync-brain-private.h @@ -50,6 +50,7 @@ enum dsync_box_state { struct dsync_brain { pool_t pool; + struct event *event; struct mail_user *user; struct dsync_ibc *ibc; const char *process_title_prefix; diff --git a/src/doveadm/dsync/dsync-brain.c b/src/doveadm/dsync/dsync-brain.c index 3dd4dfe197..1c6b413cbf 100644 --- a/src/doveadm/dsync/dsync-brain.c +++ b/src/doveadm/dsync/dsync-brain.c @@ -40,6 +40,9 @@ static const char *dsync_state_names[] = { "done" }; +#define BRAIN_MASTER TRUE +#define BRAIN_SLAVE FALSE + struct dsync_mailbox_list_module dsync_mailbox_list_module = MODULE_CONTEXT_INIT(&mailbox_list_module_register); @@ -125,7 +128,8 @@ static void dsync_brain_run_io(void *context) } static struct dsync_brain * -dsync_brain_common_init(struct mail_user *user, struct dsync_ibc *ibc) +dsync_brain_common_init(struct mail_user *user, struct dsync_ibc *ibc, + bool master_brain) { struct dsync_brain *brain; const struct master_service_settings *service_set; @@ -139,12 +143,17 @@ dsync_brain_common_init(struct mail_user *user, struct dsync_ibc *ibc) brain->pool = pool; brain->user = user; brain->ibc = ibc; + brain->master_brain = master_brain; brain->sync_type = DSYNC_BRAIN_SYNC_TYPE_UNKNOWN; brain->lock_fd = -1; brain->verbose_proctitle = service_set->verbose_proctitle; hash_table_create(&brain->mailbox_states, pool, 0, guid_128_hash, guid_128_cmp); p_array_init(&brain->remote_mailbox_states, pool, 64); + + brain->event = event_create(user->event); + event_set_append_log_prefix(brain->event, t_strdup_printf( + "brain %c: ", master_brain ? 'M': 'S')); return brain; } @@ -166,6 +175,8 @@ dsync_brain_set_flags(struct dsync_brain *brain, enum dsync_brain_flags flags) brain->no_notify = (flags & DSYNC_BRAIN_FLAG_NO_NOTIFY) != 0; brain->empty_hdr_workaround = (flags & DSYNC_BRAIN_FLAG_EMPTY_HDR_WORKAROUND) != 0; brain->no_header_hashes = (flags & DSYNC_BRAIN_FLAG_NO_HEADER_HASHES) != 0; + + event_set_forced_debug(brain->event, brain->debug); } static void @@ -196,7 +207,7 @@ dsync_brain_master_init(struct mail_user *user, struct dsync_ibc *ibc, (set->state != NULL && *set->state != '\0')); i_assert(N_ELEMENTS(dsync_state_names) == DSYNC_STATE_DONE+1); - brain = dsync_brain_common_init(user, ibc); + brain = dsync_brain_common_init(user, ibc, BRAIN_MASTER); brain->process_title_prefix = p_strdup(brain->pool, set->process_title_prefix); brain->sync_type = sync_type; @@ -229,7 +240,6 @@ dsync_brain_master_init(struct mail_user *user, struct dsync_ibc *ibc, brain->mailbox_lock_timeout_secs = DSYNC_MAILBOX_DEFAULT_LOCK_TIMEOUT_SECS; brain->import_commit_msgs_interval = set->import_commit_msgs_interval; - brain->master_brain = TRUE; brain->hashed_headers = (const char*const*)p_strarray_dup(brain->pool, set->hashed_headers); dsync_brain_set_flags(brain, flags); @@ -300,7 +310,7 @@ dsync_brain_slave_init(struct mail_user *user, struct dsync_ibc *ibc, i_assert(default_alt_char != '\0'); - brain = dsync_brain_common_init(user, ibc); + brain = dsync_brain_common_init(user, ibc, BRAIN_SLAVE); brain->alt_char = default_alt_char; brain->process_title_prefix = p_strdup(brain->pool, process_title_prefix); @@ -395,6 +405,7 @@ int dsync_brain_deinit(struct dsync_brain **_brain, enum mail_error *error_r) *error_r = !brain->failed ? 0 : (brain->mail_error == 0 ? MAIL_ERROR_TEMP : brain->mail_error); + event_unref(&brain->event); pool_unref(&brain->pool); return ret; }