From: Timo Sirainen Date: Mon, 23 Nov 2015 17:41:38 +0000 (+0200) Subject: director: Code cleanup - access host->tag via mail_host_get_tag() X-Git-Tag: 2.2.20.rc1~44 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=093b42b11c1236a687d3da564b26a324e2189ae6;p=thirdparty%2Fdovecot%2Fcore.git director: Code cleanup - access host->tag via mail_host_get_tag() In preparation for the following changes. --- diff --git a/src/director/director-connection.c b/src/director/director-connection.c index be91688bc0..fedbad8872 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -863,7 +863,7 @@ director_cmd_host_int(struct director_connection *conn, const char *const *args, struct director_host *src_host = conn->host; struct mail_host *host; struct ip_addr ip; - const char *tag = "", *hostname = NULL; + const char *tag = "", *host_tag, *hostname = NULL; unsigned int arg_count, vhost_count; bool update, down = FALSE; time_t last_updown_change = 0; @@ -904,10 +904,11 @@ director_cmd_host_int(struct director_connection *conn, const char *const *args, host->down != down || host->last_updown_change != last_updown_change; - if (strcmp(tag, host->tag) != 0) { + host_tag = mail_host_get_tag(host); + if (strcmp(tag, host_tag) != 0) { i_error("director(%s): Host %s changed tag from '%s' to '%s'", conn->name, net_ip2addr(&host->ip), - host->tag, tag); + host_tag, tag); mail_host_set_tag(host, tag); update = TRUE; } @@ -1694,12 +1695,13 @@ director_connection_send_hosts(struct director_connection *conn, string_t *str) str_printfa(str, "HOST-HAND-START\t%u\n", conn->dir->ring_handshaked); array_foreach(mail_hosts_get(conn->dir->mail_hosts), hostp) { struct mail_host *host = *hostp; + const char *host_tag = mail_host_get_tag(host); str_printfa(str, "HOST\t%s\t%u", net_ip2addr(&host->ip), host->vhost_count); - if (host->tag[0] != '\0' || send_updowns) { + if (host_tag[0] != '\0' || send_updowns) { str_append_c(str, '\t'); - str_append_tabescaped(str, host->tag); + str_append_tabescaped(str, host_tag); } if (send_updowns) { str_printfa(str, "\t%c%ld\t", host->down ? 'D' : 'U', diff --git a/src/director/director.c b/src/director/director.c index 45605e2485..e931b5bda8 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -523,6 +523,7 @@ director_send_host(struct director *dir, struct director_host *src, struct director_host *orig_src, struct mail_host *host) { + const char *host_tag = mail_host_get_tag(host); string_t *str; if (orig_src == NULL) { @@ -537,11 +538,11 @@ director_send_host(struct director *dir, struct director_host *src, net_ip2addr(&host->ip), host->vhost_count); if (dir->ring_min_version >= DIRECTOR_VERSION_TAGS) { str_append_c(str, '\t'); - str_append_tabescaped(str, host->tag); - } else if (host->tag[0] != '\0' && + str_append_tabescaped(str, host_tag); + } else if (host_tag[0] != '\0' && dir->ring_min_version < DIRECTOR_VERSION_TAGS) { i_error("Ring has directors that don't support tags - removing host %s with tag '%s'", - net_ip2addr(&host->ip), host->tag); + net_ip2addr(&host->ip), host_tag); director_remove_host(dir, NULL, NULL, host); return; } diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index d79bdacb26..412b6d2207 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -50,7 +50,7 @@ static void doveadm_cmd_host_list(struct doveadm_connection *conn) str_printfa(str, "%s\t%u\t%u\t", net_ip2addr(&(*hostp)->ip), (*hostp)->vhost_count, (*hostp)->user_count); - str_append_tabescaped(str, (*hostp)->tag); + str_append_tabescaped(str, mail_host_get_tag(*hostp)); str_printfa(str, "\t%c\t%ld", (*hostp)->down ? 'D' : 'U', (long)(*hostp)->last_updown_change); str_append_c(str, '\n'); @@ -422,7 +422,8 @@ director_host_reset_users(struct director *dir, struct director_host *src, if (user->host != host) continue; new_host = mail_host_get_by_hash(dir->mail_hosts, - user->username_hash, host->tag); + user->username_hash, + mail_host_get_tag(host)); if (new_host != host) T_BEGIN { director_move_user(dir, src, NULL, user->username_hash, new_host); diff --git a/src/director/mail-host.c b/src/director/mail-host.c index ff6aae01d4..48e3427741 100644 --- a/src/director/mail-host.c +++ b/src/director/mail-host.c @@ -298,6 +298,11 @@ int mail_hosts_parse_and_add(struct mail_host_list *list, return ret; } +const char *mail_host_get_tag(struct mail_host *host) +{ + return host->tag; +} + void mail_host_set_tag(struct mail_host *host, const char *tag) { i_assert(tag != NULL); diff --git a/src/director/mail-host.h b/src/director/mail-host.h index 0820e85ebb..3de64327c3 100644 --- a/src/director/mail-host.h +++ b/src/director/mail-host.h @@ -38,6 +38,7 @@ mail_host_get_by_hash(struct mail_host_list *list, unsigned int hash, int mail_hosts_parse_and_add(struct mail_host_list *list, const char *hosts_string); +const char *mail_host_get_tag(struct mail_host *host); void mail_host_set_tag(struct mail_host *host, const char *tag); void mail_host_set_down(struct mail_host *host, bool down, time_t timestamp); void mail_host_set_vhost_count(struct mail_host *host,