From: Ian Jackson Date: Sat, 15 Aug 2020 12:25:14 +0000 (+0100) Subject: setscope stuff all working now X-Git-Tag: otter-0.2.0~1120 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=6a750b478dc6cbd13d84c1fba6fc84e01682c2dc;p=otter.git setscope stuff all working now --- diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index 47ca1d1f..9db49c2b 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -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 { }, diff --git a/src/mgmtchannel.rs b/src/mgmtchannel.rs index efe771bb..1eeb7996 100644 --- a/src/mgmtchannel.rs +++ b/src/mgmtchannel.rs @@ -38,6 +38,8 @@ impl MgmtChannel { #[throws(io::Error)] pub fn write(&mut self, val: &T) { serde_lexpr::to_writer(&mut self.write, val)?; + write!(self.write, "\n")?; + self.write.flush()?; } }