Serve the whole body for a suffix range longer than it (#2615)

RFC 9110 14.1.2: if the representation is shorter than the suffix-length,
the entire representation is used. range_error computed a negative first
byte position for bytes=-8 on a 7-byte body and answered 416. Clamp it
at 0, as #711 did before the range handling was reworked.

Co-authored-by: youdie006 <youdie006@users.noreply.github.com>
This commit is contained in:
KBSandyoudie006 authored and GitHub committed 2026-10-07 22:20:53 -04:00
1 parent 17eeb18feb
commit 213029685a
2 files changed
+17 -2

No files matched your search

+3 -1
View File
@@ -9910,8 +9910,10 @@ inline bool range_error(Request &req, Response &res) {
last_pos = content_len;
}
// RFC 9110 14.1.2: a suffix-length longer than the representation
// selects the entire representation.
if (first_pos == -1) {
first_pos = content_len - last_pos;
first_pos = (std::max)(static_cast<ssize_t>(0), content_len - last_pos);
last_pos = content_len - 1;
}