aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-09-30 09:47:21 -0400
committerJesse Luehrs <doy@tozt.net>2019-09-30 09:47:21 -0400
commit92b39033cdaad73296470ca38364e849547b0ff4 (patch)
tree35b0f7cea24d00dec342f2ea8e32f8604dbd086d /src
parent7b3f8bcd60cdbbc196c4c1d3190d4bae13d80e0f (diff)
downloadteleterm-92b39033cdaad73296470ca38364e849547b0ff4.tar.gz
teleterm-92b39033cdaad73296470ca38364e849547b0ff4.zip
fix another case where cast clients could unexpectedly exit
Diffstat (limited to 'src')
-rw-r--r--src/cmd/cast.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/cast.rs b/src/cmd/cast.rs
index 8cbbd96..5f8c44a 100644
--- a/src/cmd/cast.rs
+++ b/src/cmd/cast.rs
@@ -111,6 +111,8 @@ impl CastSession {
&Self::poll_write_server,
];
+ // this should never return Err, because we don't want server
+ // communication issues to ever interrupt a running process
fn poll_read_client(
&mut self,
) -> Result<crate::component_future::Poll<()>> {
@@ -120,8 +122,12 @@ impl CastSession {
self.sent_remote = 0;
Ok(crate::component_future::Poll::DidWork)
}
- crate::client::Event::ServerMessage(msg) => {
- Err(Error::UnexpectedMessage { message: msg })
+ crate::client::Event::ServerMessage(..) => {
+ // we don't expect to ever see a server message once we
+ // start casting, so if one comes through, assume
+ // something is messed up and try again
+ self.client.reconnect();
+ Ok(crate::component_future::Poll::DidWork)
}
},
Ok(futures::Async::Ready(None)) => {