diff --git a/src/lib66/module/parse_module.c b/src/lib66/module/parse_module.c index 3c8196a9df96dd287eef1d7a0414504e0d4410d9..4d11b9c3675bcc5554f229094d41bfbf60ee0279 100644 --- a/src/lib66/module/parse_module.c +++ b/src/lib66/module/parse_module.c @@ -274,9 +274,15 @@ void parse_module(resolve_service_t *res, resolve_service_t *ares, unsigned int /** Search first inside the module directory. * If not found, search in the entire system. */ if (!service_frontend_path(&sa, fname, info->owner, copy, exclude)) { + /** a module directory can contain the service in its activated/frontend + * directory. Module do not know anything about the system or about + * any other module. + * + * The frontend need to come from outside any module directory.*/ - char const *inside[3] = { ebase, dirname, 0 } ; - if (!service_frontend_path(&sa, fname, info->owner, 0, inside)) + char const *exclude[3] = { SS_MODULE_ACTIVATED + 1, SS_MODULE_FRONTEND + 1, 0 } ; + + if (!service_frontend_path(&sa, fname, info->owner, 0, exclude)) log_dieu(LOG_EXIT_USER, "find service frontend file of: ", fname) ; out++;