diff --git a/src/lib66/exec/ssexec_tree_signal.c b/src/lib66/exec/ssexec_tree_signal.c index 9b778cbbe76a0927c929164fb7f6da6477b52662..4d70e43d668993df302bc337a27ef66d2ce184f7 100644 --- a/src/lib66/exec/ssexec_tree_signal.c +++ b/src/lib66/exec/ssexec_tree_signal.c @@ -457,9 +457,14 @@ static int ssexec_callback(stralloc *sa, ssexec_t *info, unsigned int what) if (r < 0) log_dieusys(LOG_EXIT_SYS, "get information of service: ", name, " -- please a bug report") ; - if (r == STATE_FLAGS_TRUE) - if (!sastr_add_string(sa, name)) - log_dieu(LOG_EXIT_SYS, "add string") ; + if (r == STATE_FLAGS_TRUE) { + /** do not handle loggers or services declared inside a module, + * ssexec_{start,stop} will build the graph and integrate them as needed. + * We don't use resolve file here to avoid the read.*/ + if (get_rstrlen_until(name, SS_LOG_SUFFIX) < 0 && get_rstrlen_until(name, ":") < 0) + if (!sastr_add_string(sa, name)) + log_dieu(LOG_EXIT_SYS, "add string") ; + } } if (!sa->len) { @@ -832,8 +837,8 @@ int ssexec_tree_signal(int argc, char const *const *argv, ssexec_t *info) stralloc sa = STRALLOC_ZERO ; size_t pos = 0 ; - unsigned int areslen = 0, list[SS_MAX_SERVICE], visit[SS_MAX_SERVICE] ; - resolve_tree_t ares[SS_MAX_SERVICE] ; + unsigned int areslen = 0, list[SS_MAX_SERVICE + 1], visit[SS_MAX_SERVICE + 1] ; + resolve_tree_t ares[SS_MAX_SERVICE + 1] ; resolve_wrapper_t_ref wres = 0 ; graph_t graph = GRAPH_ZERO ;