Merge pull request #921 from jwilm/fix-keep-alive

fix(client): keep-alive works as intended now
This commit is contained in:
Sean McArthur
2016-10-06 15:01:24 -07:00
committed by GitHub

View File

@@ -691,6 +691,7 @@ impl<H: MessageHandler<T>, T: Transport> State<H, T> {
{ {
let timeout = next.timeout; let timeout = next.timeout;
let state = mem::replace(self, State::Closed); let state = mem::replace(self, State::Closed);
trace!("State::update state={:?}, interest={:?}", state, next.interest);
match (state, next.interest) { match (state, next.interest) {
(_, Next_::Remove) | (_, Next_::Remove) |
(State::Closed, _) => return, // Keep State::Closed. (State::Closed, _) => return, // Keep State::Closed.
@@ -730,6 +731,10 @@ impl<H: MessageHandler<T>, T: Transport> State<H, T> {
None None
} }
} }
Writing::KeepAlive => {
writing = Writing::KeepAlive;
None
}
_ => return, // Keep State::Closed. _ => return, // Keep State::Closed.
}; };
if let Some(encoder) = encoder { if let Some(encoder) = encoder {
@@ -746,6 +751,7 @@ impl<H: MessageHandler<T>, T: Transport> State<H, T> {
} }
}; };
trace!("(reading, writing) -> {:?}", (&reading, &writing));
match (reading, writing) { match (reading, writing) {
(Reading::KeepAlive, Writing::KeepAlive) => { (Reading::KeepAlive, Writing::KeepAlive) => {
let next = factory.keep_alive_interest(); let next = factory.keep_alive_interest();