hyperium / h2

HTTP 2.0 client & server implementation for Rust.
MIT License
1.35k stars 270 forks source link

Regression: server no longer propagates reset codes #561

Closed olix0r closed 2 years ago

olix0r commented 2 years ago

When upgrading Linkerd from 0.3.4 to 0.3.5, we hit a test error indicating that h2 no longer propagates reset codes.

For example, we see the log lines indicating that the server handles an ENHANCE_YOUR_CALM reset code and then immediately refers to it as an INTERNAL_ERROR:

[     0.016469s]  WARN test_server{version=Http2 addr=127.0.0.1:38789 test=tests::transparency::http2_rst_stream_is_propagated}:conn{addr=127.0.0.1:44188}: hyper::proto::h2::server: http2 service errored: error from user's Service: protocol error: detected excessive load generating behavior
[     0.016503s] TRACE test_server{version=Http2 addr=127.0.0.1:38789 test=tests::transparency::http2_rst_stream_is_propagated}:conn{addr=127.0.0.1:44188}: h2::proto::streams::send: send_reset(..., reason=INTERNAL_ERROR, initiator=User, stream=StreamId(1), ..., is_reset=false; is_closed=false; pending_send.is_empty=true; state=State { inner: HalfClosedRemote(AwaitingHeaders) } 

cc @hawkw

hawkw commented 2 years ago

This is probably related to #556?