Mercurial > dovecot > core-2.2
changeset 17279:fac4e7320676
dsync: If dsync was started via doveadm-server, show the remote client's IP address in ps output.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 28 Apr 2014 18:24:04 +0300 |
parents | 00efbe39263f |
children | b912147d41c8 |
files | src/doveadm/dsync/doveadm-dsync.c src/doveadm/dsync/dsync-brain.c src/doveadm/dsync/dsync-brain.h |
diffstat | 3 files changed, 23 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/dsync/doveadm-dsync.c Sun Apr 27 19:05:38 2014 +0300 +++ b/src/doveadm/dsync/doveadm-dsync.c Mon Apr 28 18:24:04 2014 +0300 @@ -369,7 +369,7 @@ return -1; } - brain2 = dsync_brain_slave_init(user2, ibc2, TRUE); + brain2 = dsync_brain_slave_init(user2, ibc2, TRUE, ""); mail_user_unref(&user2); brain1_running = brain2_running = TRUE; @@ -532,6 +532,11 @@ int status = 0, ret = 0; memset(&set, 0, sizeof(set)); + if (_ctx->cur_client_ip.family != 0) { + /* include the doveadm client's IP address in the ps output */ + set.process_title_prefix = t_strdup_printf( + "%s ", net_ip2addr(&_ctx->cur_client_ip)); + } set.sync_box = ctx->mailbox; memcpy(set.sync_box_guid, ctx->mailbox_guid, sizeof(set.sync_box_guid)); set.lock_timeout_secs = ctx->lock_timeout; @@ -1002,7 +1007,7 @@ struct dsync_brain *brain; string_t *temp_prefix, *state_str = NULL; enum dsync_brain_sync_type sync_type; - const char *name; + const char *name, *process_title_prefix = ""; if (_ctx->conn != NULL) { /* doveadm-server connection. start with a success reply. @@ -1013,6 +1018,12 @@ o_stream_nsend(ctx->output, "\n+\n", 3); i_set_failure_prefix("dsync-server(%s): ", user->username); name = i_stream_get_name(ctx->input); + + if (_ctx->cur_client_ip.family != 0) { + /* include the doveadm client's IP address in the ps output */ + process_title_prefix = t_strdup_printf( + "%s ", net_ip2addr(&_ctx->cur_client_ip)); + } } else { /* the log messages go via stderr to the remote dsync, so the names are reversed */ @@ -1026,7 +1037,7 @@ mail_user_set_get_temp_prefix(temp_prefix, user->set); ibc = cmd_dsync_icb_stream_init(ctx, name, str_c(temp_prefix)); - brain = dsync_brain_slave_init(user, ibc, FALSE); + brain = dsync_brain_slave_init(user, ibc, FALSE, process_title_prefix); io_loop_run(current_ioloop);
--- a/src/doveadm/dsync/dsync-brain.c Sun Apr 27 19:05:38 2014 +0300 +++ b/src/doveadm/dsync/dsync-brain.c Mon Apr 28 18:24:04 2014 +0300 @@ -41,6 +41,8 @@ const char *import_title, *export_title; str_append_c(str, '['); + if (brain->process_title_prefix != NULL) + str_append(str, brain->process_title_prefix); str_append(str, brain->user->username); if (brain->box == NULL) { str_append_c(str, ' '); @@ -155,6 +157,8 @@ i_assert(N_ELEMENTS(dsync_state_names) == DSYNC_STATE_DONE+1); brain = dsync_brain_common_init(user, ibc); + brain->process_title_prefix = + p_strdup(brain->pool, set->process_title_prefix); brain->sync_type = sync_type; if (array_count(&set->sync_namespaces) > 0) { sync_ns_str = t_str_new(128); @@ -219,12 +223,14 @@ struct dsync_brain * dsync_brain_slave_init(struct mail_user *user, struct dsync_ibc *ibc, - bool local) + bool local, const char *process_title_prefix) { struct dsync_ibc_settings ibc_set; struct dsync_brain *brain; brain = dsync_brain_common_init(user, ibc); + brain->process_title_prefix = + p_strdup(brain->pool, process_title_prefix); brain->state = DSYNC_STATE_SLAVE_RECV_HANDSHAKE; if (local) {
--- a/src/doveadm/dsync/dsync-brain.h Sun Apr 27 19:05:38 2014 +0300 +++ b/src/doveadm/dsync/dsync-brain.h Mon Apr 28 18:24:04 2014 +0300 @@ -38,6 +38,7 @@ }; struct dsync_brain_settings { + const char *process_title_prefix; /* Sync only these namespaces */ ARRAY(struct mail_namespace *) sync_namespaces; /* Sync only this mailbox name */ @@ -61,7 +62,7 @@ const struct dsync_brain_settings *set); struct dsync_brain * dsync_brain_slave_init(struct mail_user *user, struct dsync_ibc *ibc, - bool local); + bool local, const char *process_title_prefix); /* Returns 0 if everything was successful, -1 if syncing failed in some way */ int dsync_brain_deinit(struct dsync_brain **brain);