Akamai request kind of works
This commit is contained in:
		| @@ -47,11 +47,11 @@ pub struct PushPromise { | ||||
|     promised_id: StreamId, | ||||
|  | ||||
|     /// The associated flags | ||||
|     flags: HeadersFlag, | ||||
|     flags: PushPromiseFlag, | ||||
| } | ||||
|  | ||||
| impl PushPromise { | ||||
| } | ||||
| #[derive(Debug, Copy, Clone, Eq, PartialEq)] | ||||
| pub struct PushPromiseFlag(u8); | ||||
|  | ||||
| #[derive(Debug)] | ||||
| pub struct Continuation { | ||||
| @@ -302,6 +302,32 @@ impl<T> From<Headers> for Frame<T> { | ||||
|     } | ||||
| } | ||||
|  | ||||
| // ===== impl PushPromise ===== | ||||
|  | ||||
| impl PushPromise { | ||||
|     pub fn load(head: Head, payload: &[u8]) | ||||
|         -> Result<Self, Error> | ||||
|     { | ||||
|         let flags = PushPromiseFlag(head.flag()); | ||||
|  | ||||
|         // TODO: Handle padding | ||||
|  | ||||
|         let promised_id = StreamId::parse(&payload[..4]); | ||||
|  | ||||
|         Ok(PushPromise { | ||||
|             stream_id: head.stream_id(), | ||||
|             promised_id: promised_id, | ||||
|             flags: flags, | ||||
|         }) | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl<T> From<PushPromise> for Frame<T> { | ||||
|     fn from(src: PushPromise) -> Self { | ||||
|         Frame::PushPromise(src) | ||||
|     } | ||||
| } | ||||
|  | ||||
| // ===== impl Pseudo ===== | ||||
|  | ||||
| impl Pseudo { | ||||
|   | ||||
| @@ -251,7 +251,6 @@ fn gen_header_name(g: &mut StdRng) -> HeaderName { | ||||
|             header::ACCEPT_CHARSET, | ||||
|             header::ACCEPT_ENCODING, | ||||
|             header::ACCEPT_LANGUAGE, | ||||
|             header::ACCEPT_PATCH, | ||||
|             header::ACCEPT_RANGES, | ||||
|             header::ACCESS_CONTROL_ALLOW_CREDENTIALS, | ||||
|             header::ACCESS_CONTROL_ALLOW_HEADERS, | ||||
| @@ -272,7 +271,6 @@ fn gen_header_name(g: &mut StdRng) -> HeaderName { | ||||
|             header::CONTENT_LANGUAGE, | ||||
|             header::CONTENT_LENGTH, | ||||
|             header::CONTENT_LOCATION, | ||||
|             header::CONTENT_MD5, | ||||
|             header::CONTENT_RANGE, | ||||
|             header::CONTENT_SECURITY_POLICY, | ||||
|             header::CONTENT_SECURITY_POLICY_REPORT_ONLY, | ||||
| @@ -292,7 +290,6 @@ fn gen_header_name(g: &mut StdRng) -> HeaderName { | ||||
|             header::IF_RANGE, | ||||
|             header::IF_UNMODIFIED_SINCE, | ||||
|             header::LAST_MODIFIED, | ||||
|             header::KEEP_ALIVE, | ||||
|             header::LINK, | ||||
|             header::LOCATION, | ||||
|             header::MAX_FORWARDS, | ||||
| @@ -311,10 +308,8 @@ fn gen_header_name(g: &mut StdRng) -> HeaderName { | ||||
|             header::SET_COOKIE, | ||||
|             header::STRICT_TRANSPORT_SECURITY, | ||||
|             header::TE, | ||||
|             header::TK, | ||||
|             header::TRAILER, | ||||
|             header::TRANSFER_ENCODING, | ||||
|             header::TSV, | ||||
|             header::USER_AGENT, | ||||
|             header::UPGRADE, | ||||
|             header::UPGRADE_INSECURE_REQUESTS, | ||||
|   | ||||
| @@ -155,7 +155,7 @@ impl<T, P, B> Connection<T, P, B> | ||||
|                     */ | ||||
|                 } | ||||
|                 Some(PushPromise(frame)) => { | ||||
|                     unimplemented!(); | ||||
|                     // TODO: implement | ||||
|                     /* | ||||
|                     trace!("recv PUSH_PROMISE; frame={:?}", frame); | ||||
|                     try!(self.streams.recv_push_promise(frame)); | ||||
|   | ||||
| @@ -92,7 +92,9 @@ impl<T> FramedRead<T> { | ||||
|                 let _todo = try!(frame::GoAway::load(&bytes[frame::HEADER_LEN..])); | ||||
|                 unimplemented!(); | ||||
|             } | ||||
|             Kind::PushPromise | | ||||
|             Kind::PushPromise => { | ||||
|                 frame::PushPromise::load(head, &bytes[frame::HEADER_LEN..])?.into() | ||||
|             } | ||||
|             Kind::Priority | | ||||
|             Kind::Continuation | | ||||
|             Kind::Unknown => { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user