@@ -553,7 +553,7 @@ async fn recv_connection_header() {
553553}
554554
555555#[ tokio:: test]
556- async fn sends_reset_cancel_when_req_body_is_dropped ( ) {
556+ async fn sends_reset_no_error_when_req_body_is_dropped ( ) {
557557 h2_support:: trace_init!( ) ;
558558 let ( io, mut client) = mock:: new ( ) ;
559559
@@ -563,8 +563,11 @@ async fn sends_reset_cancel_when_req_body_is_dropped() {
563563 client
564564 . send_frame ( frames:: headers ( 1 ) . request ( "POST" , "https://example.com/" ) )
565565 . await ;
566+ // server responded with data before consuming POST-request's body, resulting in `RST_STREAM(NO_ERROR)`.
567+ client. recv_frame ( frames:: headers ( 1 ) . response ( 200 ) ) . await ;
568+ client. recv_frame ( frames:: data ( 1 , vec ! [ 0 ; 16384 ] ) ) . await ;
566569 client
567- . recv_frame ( frames:: headers ( 1 ) . response ( 200 ) . eos ( ) )
570+ . recv_frame ( frames:: data ( 1 , vec ! [ 0 ; 16384 ] ) . eos ( ) )
568571 . await ;
569572 client
570573 . recv_frame ( frames:: reset ( 1 ) . reason ( Reason :: NO_ERROR ) )
@@ -578,7 +581,8 @@ async fn sends_reset_cancel_when_req_body_is_dropped() {
578581 assert_eq ! ( req. method( ) , & http:: Method :: POST ) ;
579582
580583 let rsp = http:: Response :: builder ( ) . status ( 200 ) . body ( ( ) ) . unwrap ( ) ;
581- stream. send_response ( rsp, true ) . unwrap ( ) ;
584+ let mut tx = stream. send_response ( rsp, false ) . unwrap ( ) ;
585+ tx. send_data ( vec ! [ 0 ; 16384 * 2 ] . into ( ) , true ) . unwrap ( ) ;
582586 }
583587 assert ! ( srv. next( ) . await . is_none( ) ) ;
584588 } ;
0 commit comments