aboutsummaryrefslogtreecommitdiffstats
path: root/src/cmd/watch.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-10-09 14:39:37 -0400
committerJesse Luehrs <doy@tozt.net>2019-10-09 14:39:37 -0400
commitd07178d9fff5cb5af2c9308557ce46350ca7d547 (patch)
tree937b373ed3f347aa493dc8218091036d8c52346c /src/cmd/watch.rs
parent0897f33b963903f9b56b4488d45e6828f5b871cf (diff)
downloadteleterm-d07178d9fff5cb5af2c9308557ce46350ca7d547.tar.gz
teleterm-d07178d9fff5cb5af2c9308557ce46350ca7d547.zip
ensure server errors are displayed when watching
Diffstat (limited to 'src/cmd/watch.rs')
-rw-r--r--src/cmd/watch.rs11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/watch.rs b/src/cmd/watch.rs
index ecdf04f..94891e6 100644
--- a/src/cmd/watch.rs
+++ b/src/cmd/watch.rs
@@ -242,6 +242,12 @@ impl WatchSession {
)?;
self.needs_redraw = true;
}
+ crate::protocol::Message::Disconnected => {
+ self.reconnect(true)?;
+ }
+ crate::protocol::Message::Error { msg } => {
+ return Err(Error::Server { message: msg });
+ }
msg => {
return Err(crate::error::Error::UnexpectedMessage {
message: msg,
@@ -631,7 +637,10 @@ impl futures::future::Future for WatchSession {
);
}
let res = crate::component_future::poll_future(self, Self::POLL_FNS);
- if self.needs_redraw {
+ if res.is_err() {
+ self.state = State::Temporary; // drop alternate screen
+ self.raw_screen = None;
+ } else if self.needs_redraw {
self.redraw()?;
self.needs_redraw = false;
}