From b7995bff7fabc822eb85c8ecc2b506221d131390 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 19 Oct 2009 18:34:00 -0400 Subject: [PATCH] master: service_signal() reimplemented using the service process linked list. --HG-- branch : HEAD --- src/master/service.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/master/service.c b/src/master/service.c index 91469d0c17..0c18648279 100644 --- a/src/master/service.c +++ b/src/master/service.c @@ -447,22 +447,16 @@ int services_create(const struct master_settings *set, void service_signal(struct service *service, int signo) { - struct hash_iterate_context *iter; - void *key, *value; - - iter = hash_table_iterate_init(service_pids); - while (hash_table_iterate(iter, &key, &value)) { - struct service_process *process = value; + struct service_process *process = service->processes; - if (process->service != service) - continue; + for (; process != NULL; process = process->next) { + i_assert(process->service == service); if (kill(process->pid, signo) < 0 && errno != ESRCH) { service_error(service, "kill(%s, %d) failed: %m", dec2str(process->pid), signo); } } - hash_table_iterate_deinit(&iter); } static void services_kill_timeout(struct service_list *service_list) -- 2.47.3