chiark / gitweb /
cmdlistener: Change type of bulk_download
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 May 2021 22:57:32 +0000 (23:57 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 2 May 2021 23:00:27 +0000 (00:00 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs

index 606b699e8e4248e676cbb9b60431d8c84618fc5d..b85f7ff4a42ddf224c235c4b2e08fd2ccfce28ba 100644 (file)
@@ -80,9 +80,7 @@ fn execute_and_respond<R,W>(cs: &mut CommandStreamData, cmd: MgmtCommand,
                             -> Result<(), CSE>
   where R: Read, W: Write
 {
-  let /*mut*/ bulk_download:
-    &mut dyn FnMut(&mut dyn Write) -> Result<(),MgmtChannelWriteError>
-    = &mut |_| Ok(());
+  let /*mut*/ bulk_download: Option<Box<dyn Read>> = None;
 
   let mut cmd_s = log_enabled!(log::Level::Info)
     .as_some_from(|| format!("{:?}", &cmd))
@@ -329,7 +327,9 @@ fn execute_and_respond<R,W>(cs: &mut CommandStreamData, cmd: MgmtCommand,
   };
 
   let mut wf = for_response.write_withbulk(&resp).context("respond")?;
-  bulk_download(&mut wf).context("download")?;
+  if let Some(mut bulk_download) = bulk_download {
+    io::copy(&mut bulk_download, &mut wf).context("download")?;
+  }
   wf.finish().context("flush")?;
   Ok(())
 }