From: Ian Jackson Date: Sat, 24 Jul 2021 13:57:58 +0000 (+0100) Subject: config: Move server_name X-Git-Tag: hippotat/1.0.0~477 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=570d3069f185551e40ecae403db98d2bd9a0e9de;p=hippotat.git config: Move server_name Signed-off-by: Ian Jackson --- diff --git a/src/config.rs b/src/config.rs index 491fbe3..e770a13 100644 --- a/src/config.rs +++ b/src/config.rs @@ -284,8 +284,8 @@ struct ResolveContext<'c> { agg: &'c Aggregate, link: &'c LinkName, end: LinkEnd, + server_name: ServerName, all_sections: Vec, - special_server_section: SectionName, } trait Parseable: Sized { @@ -386,6 +386,18 @@ impl Aggregate { } None } + + #[throws(AE)] + pub fn establish_server_name(&self) -> ServerName { + let raw = match self.lookup_raw( + "server", + [ &SectionName::Common, &SN::special_server_section() ].iter().cloned() + ) { + Some(raw) => raw.val.as_deref().value()?, + None => SPECIAL_SERVER_SECTION, + }; + ServerName(raw.into()) + } } impl<'c> ResolveContext<'c> { @@ -466,14 +478,7 @@ impl<'c> ResolveContext<'c> { #[throws(AE)] pub fn special_server(&self, key: &'static str) -> ServerName { - let raw = match self.agg.lookup_raw( - "server", - [ &SectionName::Common, &self.special_server_section ].iter().cloned() - ) { - Some(raw) => raw.val.as_deref().value()?, - None => SPECIAL_SERVER_SECTION, - }; - ServerName(raw.into()) + self.server_name.clone() } } @@ -494,6 +499,8 @@ pub fn read() { Ok::<_,AE>(agg) })().context("read configuration")?; + let server_name = agg.establish_server_name()?; + let link = LinkName { server: "fooxxx".parse().unwrap(), client: "127.0.0.1".parse().unwrap(), @@ -503,6 +510,7 @@ pub fn read() { agg: &agg, link: &link, end: LinkEnd::Server, + server_name, all_sections: vec![ SN::Link(link.clone()), SN::Client(link.client.clone()), @@ -511,7 +519,6 @@ pub fn read() { SN::ServerLimit(link.server.clone()), SN::GlobalLimit, ], - special_server_section: SN::special_server_section(), }; let ic = InstanceConfig::resolve_instance(&rctx)