Hello, I have read HTTP/3 specification and I do not find any requirement on setting the FIN bit of a QUIC STREAM frame which contains a H3 HEADERS if the request does not have a body.
For me, it represents an ambiguity on the internal HTTP message representation. If no content-length header is present, it could be interpreted as equivalent to HTTP/1.1 chunked transfer encoding. This ambiguity could be removed by requiring the STREAM FIN bit set for the frame containing H3 HEADERS if no body is present. If instead it's preferable to maintain a separation between HTTP/3 and QUIC, maybe a new H3 internal mechanism could be implemented to signal the end of a stream without a body. I think this issue is particularly important for intermediaries, such as haproxy. Currently, when receiving a H3 HEADERS frame from a client without the underlying STREAM FIN bit set, we generate for the server a HTTP/1.1 message with a chunked transfer encoding body. This is to ensure that we do not discard any possible arriving H3 DATA frames after. However, a lot of HTTP servers are stricter with the presence of a body and will for example reject GET requests with a chunked transfer encoding. Please let me know your thoughts on the subject, Regards, -- Amaury Denoyelle
