# HG changeset patch # User Timo Sirainen # Date 1312978632 -10800 # Node ID 513ec6bf3fab68fdeb9e09b1a774bceefe5e16a3 # Parent f7c5ee1ef0c0990dfdb35e0d3dbcba093d5dcfe7 indexer: Deinitialize without crashing when there are requests. diff -r f7c5ee1ef0c0 -r 513ec6bf3fab src/indexer/indexer.c --- 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;