From: Timo Sirainen Date: Mon, 19 Oct 2009 22:34:00 +0000 (-0400) Subject: master: service_signal() reimplemented using the service process linked list. X-Git-Tag: 2.0.alpha2~63 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b7995bff7fabc822eb85c8ecc2b506221d131390;p=thirdparty%2Fdovecot%2Fcore.git master: service_signal() reimplemented using the service process linked list. --HG-- branch : HEAD --- 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)