Actually get server working (maybe)
This commit is contained in:
@@ -36,7 +36,7 @@ pub fn main() {
|
|||||||
.uri("https://http2.akamai.com/")
|
.uri("https://http2.akamai.com/")
|
||||||
.body(()).unwrap();
|
.body(()).unwrap();
|
||||||
|
|
||||||
let stream = client.request(request, true);
|
let stream = client.request(request, true).unwrap();
|
||||||
client.join(stream.and_then(|response| {
|
client.join(stream.and_then(|response| {
|
||||||
println!("GOT RESPONSE: {:?}", response);
|
println!("GOT RESPONSE: {:?}", response);
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -35,8 +35,15 @@ pub fn main() {
|
|||||||
|
|
||||||
println!("H2 connection bound");
|
println!("H2 connection bound");
|
||||||
|
|
||||||
conn.for_each(|(request, stream)| {
|
conn.for_each(|(request, mut stream)| {
|
||||||
println!("GOT request: {:?}", request);
|
println!("GOT request: {:?}", request);
|
||||||
|
|
||||||
|
let response = Response::builder()
|
||||||
|
.status(status::OK)
|
||||||
|
.body(()).unwrap();
|
||||||
|
|
||||||
|
stream.send_response(response, true).unwrap();
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -132,18 +132,17 @@ impl<B> Recv<B> where B: Buf {
|
|||||||
self.inc_num_streams();
|
self.inc_num_streams();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Push the frame onto the stream's recv buffer
|
||||||
|
stream.pending_recv.push_back(&mut self.buffer, frame.into());
|
||||||
|
stream.notify_recv();
|
||||||
|
|
||||||
// Only servers can receive a headers frame that initiates the stream.
|
// Only servers can receive a headers frame that initiates the stream.
|
||||||
// This is verified in `Streams` before calling this function.
|
// This is verified in `Streams` before calling this function.
|
||||||
if P::is_server() {
|
if P::is_server() {
|
||||||
self.pending_accept.push(stream);
|
self.pending_accept.push(stream);
|
||||||
Ok(())
|
|
||||||
} else {
|
|
||||||
// Push the frame onto the recv buffer
|
|
||||||
stream.pending_recv.push_back(&mut self.buffer, frame.into());
|
|
||||||
stream.notify_recv();
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn recv_eos(&mut self, stream: &mut Stream<B>)
|
pub fn recv_eos(&mut self, stream: &mut Stream<B>)
|
||||||
|
|||||||
@@ -112,6 +112,7 @@ impl<T, B> futures::Stream for Server<T, B>
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let Some(inner) = self.connection.next_incoming() {
|
if let Some(inner) = self.connection.next_incoming() {
|
||||||
|
trace!("received incoming");
|
||||||
let (head, _) = inner.take_request()?.into_parts();
|
let (head, _) = inner.take_request()?.into_parts();
|
||||||
let body = Body { inner: inner.clone() };
|
let body = Body { inner: inner.clone() };
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user