chiark / gitweb /
config: check batch vs mtu sizes
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 Jul 2021 18:35:59 +0000 (19:35 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 26 Jul 2021 18:35:59 +0000 (19:35 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/config.rs

index 5243e8b616beef17095564f5e34c4ce2a027792e..cc754a51e863bfaf8a14b69e1b0c6f2d7135781d 100644 (file)
@@ -663,6 +663,18 @@ impl InstanceConfig {
       )?;
     }
 
+    let check_batch = {
+      let mtu = self.mtu;
+      move |max_batch, key| {
+        if max_batch/2 < mtu {
+          throw!(anyhow!("max batch {:?} ({}) must be >= 2 x mtu ({}) \
+                          (to allow for SLIP ESC-encoding)",
+                         key, max_batch, mtu))
+        }
+        Ok::<_,AE>(())
+      }
+    };
+
     match end {
       LinkEnd::Client => {
         if &self.url == &default::<Uri>() {
@@ -681,12 +693,15 @@ impl InstanceConfig {
             })
             .parse().unwrap()
         }
+
+        check_batch(self.max_batch_up, "max_batch_up")?;
       },
 
       LinkEnd::Server => {
         if self.addrs.is_empty() {
           throw!(anyhow!("missing 'addrs' setting"))
         }
+        check_batch(self.max_batch_down, "max_batch_down")?;
       },
     }