@@ -553,7 +553,7 @@ async fn recv_connection_header() {
553
553
}
554
554
555
555
#[ 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 ( ) {
557
557
h2_support:: trace_init!( ) ;
558
558
let ( io, mut client) = mock:: new ( ) ;
559
559
@@ -563,8 +563,11 @@ async fn sends_reset_cancel_when_req_body_is_dropped() {
563
563
client
564
564
. send_frame ( frames:: headers ( 1 ) . request ( "POST" , "https://example.com/" ) )
565
565
. 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 ;
566
569
client
567
- . recv_frame ( frames:: headers ( 1 ) . response ( 200 ) . eos ( ) )
570
+ . recv_frame ( frames:: data ( 1 , vec ! [ 0 ; 16384 ] ) . eos ( ) )
568
571
. await ;
569
572
client
570
573
. recv_frame ( frames:: reset ( 1 ) . reason ( Reason :: NO_ERROR ) )
@@ -578,7 +581,8 @@ async fn sends_reset_cancel_when_req_body_is_dropped() {
578
581
assert_eq ! ( req. method( ) , & http:: Method :: POST ) ;
579
582
580
583
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 ( ) ;
582
586
}
583
587
assert ! ( srv. next( ) . await . is_none( ) ) ;
584
588
} ;
0 commit comments