Fix segfault (infinite recursion)

This commit is contained in:
Your Name 2025-04-30 19:39:19 +12:00
parent 87ab33dce9
commit feb7dc6da6

View File

@ -226,10 +226,22 @@ void get_all_service_env_vars(const std::string &server_name, const std::string
all_env_vars.merge(env_vars); all_env_vars.merge(env_vars);
} }
// determine template name.
auto it = all_env_vars.find("TEMPLATE");
if (it == all_env_vars.end()) {
std::cerr << "Error: TEMPLATE variable not defined in service " << service_name << " on server " << server_name << std::endl;
return;
}
std::string template_name = it->second;
template_info tinfo;
if (!get_template_info(template_name, tinfo)) {
std::cerr << "Error: Template '" << template_name << "' not found" << std::endl;
return;
}
{ // load _default.env from the template on this machine - gets overridden by service.env { // load _default.env from the template on this machine - gets overridden by service.env
std::map<std::string, std::string> env_vars; std::map<std::string, std::string> env_vars;
auto service_info = get_service_info(server_name, service_name); std::string defaultenvpath = tinfo.local_template_path + "/_default.env";
std::string defaultenvpath = service_info.local_template_path + "/_default.env";
if (std::filesystem::exists(defaultenvpath)) { if (std::filesystem::exists(defaultenvpath)) {
envmanager env_manager(defaultenvpath); envmanager env_manager(defaultenvpath);
env_manager.load(); env_manager.load();