Mercurial > dovecot > core-2.2
changeset 13206:513ec6bf3fab
indexer: Deinitialize without crashing when there are requests.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 10 Aug 2011 15:17:12 +0300 |
parents | f7c5ee1ef0c0 |
children | 076673c45e58 |
files | src/indexer/indexer.c |
diffstat | 1 files changed, 5 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/indexer/indexer.c Wed Aug 10 15:16:44 2011 +0300 +++ b/src/indexer/indexer.c Wed Aug 10 15:17:12 2011 +0300 @@ -108,7 +108,8 @@ indexer_queue_request_finish(queue, &request->request, percentage == 100); - worker_pool_release_connection(worker_pool, request->conn); + if (worker_pool != NULL) /* not in deinit */ + worker_pool_release_connection(worker_pool, request->conn); i_free(request); /* if this was the last request for the connection, we can send more @@ -135,17 +136,17 @@ master_service_set_idle_die_callback(master_service, idle_die); master_service_init_finish(master_service); + queue = indexer_queue_init(indexer_client_status_callback); + indexer_queue_set_listen_callback(queue, queue_listen_callback); worker_pool = worker_pool_init("indexer-worker", worker_status_callback); - queue = indexer_queue_init(indexer_client_status_callback); - indexer_queue_set_listen_callback(queue, queue_listen_callback); master_service_run(master_service, client_connected); indexer_queue_cancel_all(queue); indexer_clients_destroy_all(); + worker_pool_deinit(&worker_pool); indexer_queue_deinit(&queue); - worker_pool_deinit(&worker_pool); master_service_deinit(&master_service); return 0;