Start hooking up reset
This commit is contained in:
		| @@ -197,6 +197,17 @@ impl<P, B> Recv<P, B> | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     pub fn recv_reset(&mut self, frame: frame::Reset, stream: &mut Stream<B>) | ||||
|         -> Result<(), ConnectionError> | ||||
|     { | ||||
|         let err = ConnectionError::Proto(frame.reason()); | ||||
|  | ||||
|         // Notify the stream | ||||
|         stream.state.recv_err(&err); | ||||
|         stream.notify_recv(); | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     pub fn recv_err(&mut self, err: &ConnectionError, stream: &mut Stream<B>) { | ||||
|         // Receive an error | ||||
|         stream.state.recv_err(err); | ||||
|   | ||||
| @@ -115,10 +115,11 @@ impl<P, B> Streams<P, B> | ||||
|     pub fn recv_data(&mut self, frame: frame::Data) | ||||
|         -> Result<(), ConnectionError> | ||||
|     { | ||||
|         let id = frame.stream_id(); | ||||
|         let mut me = self.inner.lock().unwrap(); | ||||
|         let me = &mut *me; | ||||
|  | ||||
|         let id = frame.stream_id(); | ||||
|  | ||||
|         let mut stream = match me.store.find_mut(&id) { | ||||
|             Some(stream) => stream, | ||||
|             None => return Err(ProtocolError.into()), | ||||
| @@ -135,10 +136,26 @@ impl<P, B> Streams<P, B> | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     pub fn recv_reset(&mut self, _frame: &frame::Reset) | ||||
|     pub fn recv_reset(&mut self, frame: frame::Reset) | ||||
|         -> Result<(), ConnectionError> | ||||
|     { | ||||
|         unimplemented!(); | ||||
|         let mut me = self.inner.lock().unwrap(); | ||||
|         let me = &mut *me; | ||||
|  | ||||
|         let id = frame.stream_id(); | ||||
|  | ||||
|         let mut stream = match me.store.find_mut(&id) { | ||||
|             Some(stream) => stream, | ||||
|             // TODO: should this be an error? | ||||
|             None => return Ok(()), | ||||
|         }; | ||||
|  | ||||
|         me.actions.recv.recv_reset(frame, &mut stream)?; | ||||
|  | ||||
|         assert!(stream.state.is_closed()); | ||||
|         me.actions.dec_num_streams(id); | ||||
|  | ||||
|         Ok(()) | ||||
|     } | ||||
|  | ||||
|     pub fn recv_err(&mut self, err: &ConnectionError) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user