From 468927584536667876173aa07d2e4ead9bb62065 Mon Sep 17 00:00:00 2001 From: Johannes Schlatow Date: Fri, 2 Sep 2022 16:09:37 +0200 Subject: [PATCH] depot_deploy: do not fail on missing nodes If provided with a config that does not include a `` or `` node, depot_deploy exits due to a `Nonexistent_sub_node` exception. Instead, we should output a more useful warning. Fixes genodelabs/genode#4600 --- repos/gems/src/app/depot_deploy/main.cc | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/repos/gems/src/app/depot_deploy/main.cc b/repos/gems/src/app/depot_deploy/main.cc index 186c058b0c..4d4fda8a20 100644 --- a/repos/gems/src/app/depot_deploy/main.cc +++ b/repos/gems/src/app/depot_deploy/main.cc @@ -81,9 +81,12 @@ struct Depot_deploy::Main if (prio_levels.value) xml.attribute("prio_levels", prio_levels.value); - Xml_node static_config = config.sub_node("static"); - static_config.with_raw_content([&] (char const *start, size_t length) { - xml.append(start, length); }); + config.with_sub_node("static", + [&] (Xml_node static_config) { + static_config.with_raw_content([&] (char const *start, size_t length) { + xml.append(start, length); }); + }, + [&] () { warning("config lacks node"); }); config.with_optional_sub_node("report", [&] (Xml_node const &report) { @@ -127,10 +130,14 @@ struct Depot_deploy::Main }); }); - Child::Depot_rom_server const parent { }; - _children.gen_start_nodes(xml, config.sub_node("common_routes"), - prio_levels, Affinity::Space(1, 1), - parent, parent); + config.with_sub_node("common_routes", + [&] (Xml_node node) { + Child::Depot_rom_server const parent { }; + _children.gen_start_nodes(xml, node, + prio_levels, Affinity::Space(1, 1), + parent, parent); + }, + [&] () { warning("config lacks node"); }); }); /* update query for blueprints of all unconfigured start nodes */