This pull request addresses the incorrect handling of the Trailer header in HTTP/2 responses within the hyper project. According to RFC 9110 "HTTP Semantics", the Trailer header is not listed as a "hop-by-hop" header in section 7.6.1. RFC 9110 specifies that a sender intending to generate one or more trailer fields in a message should use the Trailer header in the header section to indicate potential trailer fields, as mentioned in section 6.6.2.
The current implementation in hyper may result in unnecessary warnings for gRPC calls, as gRPC implementations, such as grpc-go, routinely use the Trailer header to indicate the presence of trailers after the response body. (See this behavior in grpc-go's implementation.
This fix updates hyper to correctly allow the Trailer header in HTTP/2 responses, aligning it with RFC 9110 and preventing misleading warnings in environments using gRPC, such as linkerd2-proxy, which prints a warning Connection header illegal in HTTP/2: trailer on every gRPC call.
Note: Mozilla's documentation mistakenly lists Trailer as a hop-by-hop header, which is incorrect.
This pull request addresses the incorrect handling of the
Trailer
header in HTTP/2 responses within the hyper project. According to RFC 9110 "HTTP Semantics", theTrailer
header is not listed as a "hop-by-hop" header in section 7.6.1. RFC 9110 specifies that a sender intending to generate one or more trailer fields in a message should use theTrailer
header in the header section to indicate potential trailer fields, as mentioned in section 6.6.2.The current implementation in hyper may result in unnecessary warnings for gRPC calls, as gRPC implementations, such as grpc-go, routinely use the
Trailer
header to indicate the presence of trailers after the response body. (See this behavior in grpc-go's implementation.This fix updates hyper to correctly allow the
Trailer
header in HTTP/2 responses, aligning it with RFC 9110 and preventing misleading warnings in environments using gRPC, such as linkerd2-proxy, which prints a warningConnection header illegal in HTTP/2: trailer
on every gRPC call.Note: Mozilla's documentation mistakenly lists
Trailer
as a hop-by-hop header, which is incorrect.