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:
		
				
					committed by
					
						 Carl Lerche
						Carl Lerche
					
				
			
			
				
	
			
			
			
						parent
						
							8911ee2a4b
						
					
				
				
					commit
					0b289fd55d
				
			| @@ -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() {} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user