Skip to content

Commit c26cc51

Browse files
committed
Fix http2 content-length header check (#12747)
HEAD method with "Content-Length" header was returning 502 code because header differs from payload length as there is no payload in this case. See https://datatracker.ietf.org/doc/html/rfc7540#section-8.1.2.6
1 parent 68e4bd3 commit c26cc51

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

include/proxy/http2/Http2Stream.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -390,11 +390,11 @@ inline bool
390390
Http2Stream::payload_length_is_valid() const
391391
{
392392
uint32_t content_length = _receive_header.get_content_length();
393-
if (content_length != 0 && content_length != data_length) {
393+
if (content_length != 0 && data_length != 0 && content_length != data_length) {
394394
Warning("Bad payload length content_length=%d data_legnth=%d session_id=%" PRId64, content_length,
395395
static_cast<int>(data_length), _proxy_ssn->connection_id());
396396
}
397-
return content_length == 0 || content_length == data_length;
397+
return content_length == 0 || data_length == 0 || content_length == data_length;
398398
}
399399

400400
inline bool

0 commit comments

Comments
 (0)