Mercurial > dovecot > core-2.2
changeset 13274:887bf77ae6f5
indexer: Code cleanup
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 18 Aug 2011 17:59:52 +0300 |
parents | 38e333c52d99 |
children | e538fa0bdcbb |
files | src/indexer/worker-pool.c |
diffstat | 1 files changed, 20 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indexer/worker-pool.c Tue Aug 16 23:37:42 2011 +0300 +++ b/src/indexer/worker-pool.c Thu Aug 18 17:59:52 2011 +0300 @@ -24,8 +24,8 @@ }; static void -worker_connection_idle_list_free(struct worker_pool *pool, - struct worker_connection_list *list); +worker_connection_list_free(struct worker_pool *pool, + struct worker_connection_list *list); struct worker_pool * worker_pool_init(const char *socket_path, indexer_status_callback_t *callback) @@ -48,13 +48,14 @@ struct worker_connection_list *list = pool->busy_list; DLLIST_REMOVE(&pool->busy_list, list); - worker_connection_idle_list_free(pool, list); + worker_connection_list_free(pool, list); } while (pool->idle_list != NULL) { struct worker_connection_list *list = pool->idle_list; - worker_connection_idle_list_free(pool, list); + DLLIST_REMOVE(&pool->idle_list, list); + worker_connection_list_free(pool, list); } i_free(pool->socket_path); @@ -88,15 +89,14 @@ } static void -worker_connection_idle_list_free(struct worker_pool *pool, - struct worker_connection_list *list) +worker_connection_list_free(struct worker_pool *pool, + struct worker_connection_list *list) { - DLLIST_REMOVE(&pool->idle_list, list); + i_assert(pool->connection_count > 0); + pool->connection_count--; + worker_connection_destroy(&list->conn); i_free(list); - - i_assert(pool->connection_count > 0); - pool->connection_count--; } static unsigned int worker_pool_find_max_connections(struct worker_pool *pool) @@ -125,8 +125,11 @@ unsigned int max_connections; while (pool->idle_list != NULL && - !worker_connection_is_connected(pool->idle_list->conn)) - worker_connection_idle_list_free(pool, pool->idle_list); + !worker_connection_is_connected(pool->idle_list->conn)) { + list = pool->idle_list; + DLLIST_REMOVE(&pool->idle_list, list); + worker_connection_list_free(pool, list); + } if (pool->idle_list == NULL) { max_connections = worker_pool_find_max_connections(pool); @@ -152,8 +155,10 @@ kill_timestamp = ioloop_time - MAX_WORKER_IDLE_SECS; for (list = pool->idle_list; list != NULL; list = next) { next = list->next; - if (list->last_use < kill_timestamp) - worker_connection_idle_list_free(pool, list); + if (list->last_use < kill_timestamp) { + DLLIST_REMOVE(&pool->idle_list, list); + worker_connection_list_free(pool, list); + } } } @@ -176,7 +181,7 @@ DLLIST_REMOVE(&pool->busy_list, list); if (!worker_connection_is_connected(conn)) - worker_connection_idle_list_free(pool, list); + worker_connection_list_free(pool, list); else { DLLIST_PREPEND(&pool->idle_list, list); list->last_use = ioloop_time;