Merge pull request #930 from jwilm/handle-keep-alive-hangup
fix(conn): Handle remote hangup
This commit is contained in:
		| @@ -553,6 +553,13 @@ impl<K: Key, T: Transport, H: MessageHandler<T>> Conn<K, T, H> { | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if events.is_hup() { | ||||
|             trace!("Conn::ready got hangup"); | ||||
|             let _ = scope.deregister(&self.0.transport); | ||||
|             self.on_remove(); | ||||
|             return ReadyResult::Done(None); | ||||
|         } | ||||
|  | ||||
|         // if the user had an io interest, but the transport was blocked differently, | ||||
|         // the event needs to be translated to what the user was actually expecting. | ||||
|         // | ||||
| @@ -593,7 +600,7 @@ impl<K: Key, T: Transport, H: MessageHandler<T>> Conn<K, T, H> { | ||||
|             self.0.on_writable(scope); | ||||
|         } | ||||
|  | ||||
|         let events = match self.0.register() { | ||||
|         let mut events = match self.0.register() { | ||||
|             Reg::Read => EventSet::readable(), | ||||
|             Reg::Write => EventSet::writable(), | ||||
|             Reg::ReadWrite => EventSet::readable() | EventSet::writable(), | ||||
| @@ -610,6 +617,8 @@ impl<K: Key, T: Transport, H: MessageHandler<T>> Conn<K, T, H> { | ||||
|             return ReadyResult::Continue(self); | ||||
|         } | ||||
|  | ||||
|         events = events | EventSet::hup(); | ||||
|  | ||||
|         trace!("scope.reregister({:?})", events); | ||||
|         match scope.reregister(&self.0.transport, events, PollOpt::level()) { | ||||
|             Ok(..) => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user