void services_monitor_start(struct service_list *service_list)
{
+ ARRAY(struct service *) listener_services;
struct service *const *services;
if (services_log_init(service_list) < 0)
master_client_connected, service_list);
}
+ t_array_init(&listener_services, array_count(&service_list->services));
array_foreach(&service_list->services, services) {
struct service *service = *services;
io_add(service->status_fd[0], IO_READ,
service_status_input, service);
}
- service_monitor_start_extra_avail(service);
service_monitor_listen_start(service);
+ array_append(&listener_services, &service, 1);
}
+ /* create processes only after adding all listeners */
+ array_foreach(&listener_services, services)
+ service_monitor_start_extra_avail(*services);
+
if (service_list->log->status_fd[0] != -1) {
if (service_process_create(service_list->log) != NULL)
service_monitor_listen_stop(service_list->log);