Add GoAway support
This commit is contained in:
		| @@ -128,6 +128,12 @@ impl<T, P, B> Connection<T, P, B> | ||||
|  | ||||
|                     // TODO: ACK must be sent THEN settings applied. | ||||
|                 } | ||||
|                 Some(GoAway(frame)) => { | ||||
|                     // TODO: handle the last_stream_id. Also, should this be | ||||
|                     // handled as an error? | ||||
|                     let e = ConnectionError::Proto(frame.reason()); | ||||
|                     return Ok(().into()); | ||||
|                 } | ||||
|                 Some(Ping(frame)) => { | ||||
|                     trace!("recv PING; frame={:?}", frame); | ||||
|                     self.ping_pong.recv_ping(frame); | ||||
|   | ||||
| @@ -64,7 +64,6 @@ impl<T> FramedRead<T> { | ||||
|                 let _ = bytes.split_to(frame::HEADER_LEN); | ||||
|                 frame::Data::load(head, bytes)?.into() | ||||
|             } | ||||
|  | ||||
|             Kind::Headers => { | ||||
|                 let mut buf = Cursor::new(bytes); | ||||
|                 buf.set_position(frame::HEADER_LEN as u64); | ||||
| @@ -80,16 +79,11 @@ impl<T> FramedRead<T> { | ||||
|  | ||||
|                 frame.into() | ||||
|             } | ||||
|  | ||||
|             Kind::Reset => { | ||||
|                 frame::Reset::load(head, &bytes[frame::HEADER_LEN..])?.into() | ||||
|             } | ||||
|  | ||||
|             // TODO | ||||
|  | ||||
|             Kind::GoAway => { | ||||
|                 let _todo = try!(frame::GoAway::load(&bytes[frame::HEADER_LEN..])); | ||||
|                 unimplemented!(); | ||||
|                 frame::GoAway::load(&bytes[frame::HEADER_LEN..])?.into() | ||||
|             } | ||||
|             Kind::PushPromise => { | ||||
|                 frame::PushPromise::load(head, &bytes[frame::HEADER_LEN..])?.into() | ||||
|   | ||||
| @@ -141,6 +141,10 @@ impl<T, B> Sink for FramedWrite<T, B> | ||||
|                 v.encode(self.buf.get_mut()); | ||||
|                 trace!("encoded settings; rem={:?}", self.buf.remaining()); | ||||
|             } | ||||
|             Frame::GoAway(v) => { | ||||
|                 v.encode(self.buf.get_mut()); | ||||
|                 trace!("encoded go_away; rem={:?}", self.buf.remaining()); | ||||
|             } | ||||
|             Frame::Ping(v) => { | ||||
|                 v.encode(self.buf.get_mut()); | ||||
|                 trace!("encoded ping; rem={:?}", self.buf.remaining()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user