Fix stream-id double-accounting bug (#112)

Both Recv::open and Rev::recv_headers check new stream ids against the
previously stream id. The second such check fails.

Now, only Recv::open performs stream id checks.

Fixes #110
This commit is contained in:
Oliver Gould
2017-09-26 10:42:12 -07:00
committed by Carl Lerche
parent 8911ee2a4b
commit 0b289fd55d
4 changed files with 95 additions and 10 deletions

View File

@@ -22,6 +22,39 @@ fn read_preface_in_multiple_frames() {
assert!(Stream::wait(h2).next().is_none());
}
#[test]
fn serve_request() {
let _ = ::env_logger::init();
let (io, client) = mock::new();
let client = client
.assert_server_handshake()
.unwrap()
.recv_settings()
.send_frame(
frames::headers(1)
.request("GET", "https://example.com/")
.eos(),
)
.recv_frame(frames::headers(1).response(200).eos())
.close();
let srv = Server::handshake(io).expect("handshake").and_then(|srv| {
srv.into_future().unwrap().and_then(|(reqstream, srv)| {
let (req, mut stream) = reqstream.unwrap();
assert_eq!(req.method(), &http::Method::GET);
let rsp = http::Response::builder().status(200).body(()).unwrap();
stream.send_response(rsp, true).unwrap();
srv.into_future().unwrap()
})
});
srv.join(client).wait().expect("wait");
}
#[test]
#[ignore]
fn accept_with_pending_connections_after_socket_close() {}