From dccfab90f6406b5a6a4fc6ad7377eab3352fa745 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 20 Oct 2016 19:38:28 +0300 Subject: [PATCH] director: Code cleanup - added user director_iterate_users_*() wrappers. This will shrink the diff for the following changes. --- src/director/director-connection.c | 11 ++++++----- src/director/director.c | 26 ++++++++++++++++++++++++++ src/director/director.h | 4 ++++ src/director/doveadm-connection.c | 18 +++++++++--------- 4 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/director/director-connection.c b/src/director/director-connection.c index 86c5af5e00..c871b31df4 100644 --- a/src/director/director-connection.c +++ b/src/director/director-connection.c @@ -114,7 +114,7 @@ struct director_connection { struct ostream *output; struct timeout *to_disconnect, *to_ping, *to_pong; - struct user_directory_iter *user_iter; + struct director_user_iter *user_iter; /* set during command execution */ const char *cur_cmd, *cur_line; @@ -1878,7 +1878,7 @@ static int director_connection_send_users(struct director_connection *conn) i_assert(conn->version_received); - while ((user = user_directory_iter_next(conn->user_iter)) != NULL) { + while ((user = director_iterate_users_next(conn->user_iter)) != NULL) { T_BEGIN { string_t *str = t_str_new(128); @@ -1900,7 +1900,7 @@ static int director_connection_send_users(struct director_connection *conn) } } } - user_directory_iter_deinit(&conn->user_iter); + director_iterate_users_deinit(&conn->user_iter); if (director_connection_send_done(conn) < 0) return -1; @@ -2020,7 +2020,8 @@ static void director_finish_sending_handshake(struct director_connection *conn) director_connection_send_hosts(conn); i_assert(conn->user_iter == NULL); - conn->user_iter = user_directory_iter_init(conn->dir->users); + conn->user_iter = director_iterate_users_init(conn->dir); + if (director_connection_send_users(conn) == 0) o_stream_set_flush_pending(conn->output, TRUE); @@ -2088,7 +2089,7 @@ void director_connection_deinit(struct director_connection **_conn, if (conn->connect_request_to != NULL) director_host_unref(conn->connect_request_to); if (conn->user_iter != NULL) - user_directory_iter_deinit(&conn->user_iter); + director_iterate_users_deinit(&conn->user_iter); if (conn->to_disconnect != NULL) timeout_remove(&conn->to_disconnect); if (conn->to_pong != NULL) diff --git a/src/director/director.c b/src/director/director.c index 73422c8e2d..b83959f88d 100644 --- a/src/director/director.c +++ b/src/director/director.c @@ -1361,6 +1361,32 @@ void dir_debug(const char *fmt, ...) va_end(args); } +struct director_user_iter { + struct user_directory_iter *user_iter; +}; + +struct director_user_iter *director_iterate_users_init(struct director *dir) +{ + struct director_user_iter *iter = i_new(struct director_user_iter, 1); + + iter->user_iter = user_directory_iter_init(dir->users); + return iter; +} + +struct user *director_iterate_users_next(struct director_user_iter *iter) +{ + return user_directory_iter_next(iter->user_iter); +} + +void director_iterate_users_deinit(struct director_user_iter **_iter) +{ + struct director_user_iter *iter = *_iter; + + *_iter = NULL; + user_directory_iter_deinit(&iter->user_iter); + i_free(iter); +} + void directors_init(void) { user_move_throttle = diff --git a/src/director/director.h b/src/director/director.h index 6918c7c6c7..8a1fb04285 100644 --- a/src/director/director.h +++ b/src/director/director.h @@ -240,4 +240,8 @@ void directors_deinit(void); void dir_debug(const char *fmt, ...) ATTR_FORMAT(1, 2); +struct director_user_iter *director_iterate_users_init(struct director *dir); +struct user *director_iterate_users_next(struct director_user_iter *iter); +void director_iterate_users_deinit(struct director_user_iter **_iter); + #endif diff --git a/src/director/doveadm-connection.c b/src/director/doveadm-connection.c index 3e0322a8c0..cf9ba4fbd3 100644 --- a/src/director/doveadm-connection.c +++ b/src/director/doveadm-connection.c @@ -31,7 +31,7 @@ struct director_reset_cmd { struct director *dir; struct doveadm_connection *_conn; - struct user_directory_iter *iter; + struct director_user_iter *iter; unsigned int host_idx, hosts_count; unsigned int max_moving_users; }; @@ -428,7 +428,7 @@ static void doveadm_reset_cmd_free(struct director_reset_cmd *cmd) DLLIST_REMOVE(&reset_cmds, cmd); if (cmd->iter != NULL) - user_directory_iter_deinit(&cmd->iter); + director_iterate_users_deinit(&cmd->iter); if (cmd->_conn != NULL) cmd->_conn->reset_cmd = NULL; i_free(cmd); @@ -449,8 +449,8 @@ director_host_reset_users(struct director_reset_cmd *cmd, director_connection_cork(dir->right); if (cmd->iter == NULL) - cmd->iter = user_directory_iter_init(dir->users); - while ((user = user_directory_iter_next(cmd->iter)) != NULL) { + cmd->iter = director_iterate_users_init(dir); + while ((user = director_iterate_users_next(cmd->iter)) != NULL) { if (user->host != host) continue; new_host = mail_host_get_by_hash(dir->mail_hosts, @@ -464,7 +464,7 @@ director_host_reset_users(struct director_reset_cmd *cmd, break; } if (user == NULL) - user_directory_iter_deinit(&cmd->iter); + director_iterate_users_deinit(&cmd->iter); if (dir->right != NULL) director_connection_uncork(dir->right); return user == NULL; @@ -599,7 +599,7 @@ doveadm_cmd_user_lookup(struct doveadm_connection *conn, static int doveadm_cmd_user_list(struct doveadm_connection *conn, const char *const *args) { - struct user_directory_iter *iter; + struct director_user_iter *iter; struct user *user; struct ip_addr ip; @@ -612,8 +612,8 @@ doveadm_cmd_user_list(struct doveadm_connection *conn, const char *const *args) ip.family = 0; } - iter = user_directory_iter_init(conn->dir->users); - while ((user = user_directory_iter_next(iter)) != NULL) { + iter = director_iterate_users_init(conn->dir); + while ((user = director_iterate_users_next(iter)) != NULL) { if (ip.family == 0 || net_ip_compare(&ip, &user->host->ip)) T_BEGIN { unsigned int expire_time = user->timestamp + @@ -625,7 +625,7 @@ doveadm_cmd_user_list(struct doveadm_connection *conn, const char *const *args) net_ip2addr(&user->host->ip))); } T_END; } - user_directory_iter_deinit(&iter); + director_iterate_users_deinit(&iter); o_stream_nsend(conn->output, "\n", 1); return 1; } -- 2.47.3