chiark / gitweb /
setscope stuff all working now
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Aug 2020 12:25:14 +0000 (13:25 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 Aug 2020 12:25:14 +0000 (13:25 +0100)
src/cmdlistener.rs
src/mgmtchannel.rs

index 47ca1d1f88bcfb3ef019f41b51388f06d5f67c24..9db49c2bec78ceaa95b548799cb17a2217997012 100644 (file)
@@ -43,7 +43,10 @@ impl CommandStream<'_> {
     loop {
       use MgmtChannelReadError::*;
       let resp = match self.chan.read() {
-        Ok(cmd) => execute(&mut self, cmd)?,
+        Ok(cmd) => match execute(&mut self, cmd) {
+          Ok(resp) => resp,
+          Err(error) => MgmtResponse::Error { error },
+        },
         Err(EOF) => break,
         Err(IO(e)) => Err(e).context("read command stream")?,
         Err(Parse(s)) => MgmtResponse::Error { error : ParseFailed(s) },
@@ -187,7 +190,7 @@ fn do_authorise_scope(cs: &CommandStream, wanted: &ManagementScope)
 
 #[throws(ME)]
 fn execute(cs: &mut CommandStream, cmd: MgmtCommand) -> MgmtResponse {
-  eprintln!("{:?} executing {:?}", &cs.desc, &cmd);
+  eprintln!("command connection {}: executing {:?}", &cs.desc, &cmd);
 
   match cmd {
     Noop { } => Fine { },
index efe771bb31b3d0663cdce295687efa02f63ce356..1eeb7996a0d025d4f6e31384a15fbcf01b4135b4 100644 (file)
@@ -38,6 +38,8 @@ impl MgmtChannel {
   #[throws(io::Error)]
   pub fn write<T:Serialize>(&mut self, val: &T) {
     serde_lexpr::to_writer(&mut self.write, val)?;
+    write!(self.write, "\n")?;
+    self.write.flush()?;
   }
 }