chiark / gitweb /
config: Only chdir in server (!), actually
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 May 2021 23:26:35 +0000 (00:26 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 3 May 2021 09:58:57 +0000 (10:58 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/main.rs
src/bin/otter.rs
src/config.rs

index 84c46ca89cac04b6bbce96809ecca347ca6f53e2..41fc1e80923d3cd8d96bb578ba87dc0c78306a6e 100644 (file)
@@ -262,7 +262,8 @@ fn main() {
 
   let opts = Opts::from_args();
 
-  ServerConfig::read(opts.config_filename.as_ref().map(String::as_str))?;
+  ServerConfig::read(opts.config_filename.as_ref().map(String::as_str),
+                     ResolveContext::ForServerReal)?;
 
   std::env::set_var("ROCKET_CLI_COLORS", "off");
 
index edf02006b925446e0027ab48f4ecae6cae13aae9..780b6406e832fa68d82e2bfcea546116473498e0 100644 (file)
@@ -364,7 +364,7 @@ fn main() {
                          "config file", "etc", DEFAULT_CONFIG_LEAFNAME,
                          ".")
             });
-          ServerConfig::read(Some(&config_filename))
+          ServerConfig::read(Some(&config_filename), default())
             .context("read config file")?;
           Ok::<_,AE>((otter::config::config(), config_filename))
         })().map_err(|e| ArgumentParseError(
index ac199a78ec00419efa4dbc67030ac63b1018b204..ddc6b10ad18ca7bb13c7ad17e51582cc672f1776 100644 (file)
@@ -229,7 +229,7 @@ fn set_config(whole: WholeServerConfig) {
 
 impl ServerConfig {
   #[throws(StartupError)]
-  pub fn read(config_filename: Option<&str>) {
+  pub fn read(config_filename: Option<&str>, rctx: ResolveContext) {
     let config_filename = config_filename.map(|s| s.to_string())
       .unwrap_or_else(
         || format!("{}/{}", DEFAULT_CONFIG_DIR, DEFAULT_CONFIG_LEAFNAME)
@@ -238,7 +238,7 @@ impl ServerConfig {
     File::open(&config_filename).with_context(||config_filename.to_string())?
       .read_to_string(&mut buf)?;
     let spec: ServerConfigSpec = toml_de::from_str(&buf)?;
-    let whole = spec.resolve(ResolveContext::ForServerReal)?;
+    let whole = spec.resolve(rctx)?;
     set_config(whole);
   }