Allow HTTP range past EOF

Fixes #683
This commit is contained in:
Justine Tunney 2022-11-07 05:52:24 -08:00
parent 52f1db7220
commit 4de2cf34e6
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
2 changed files with 20 additions and 5 deletions

View file

@ -46,7 +46,11 @@ TEST(ParseHttpRange, testEmptyRangeOfOneByteFile_itWorks) {
TEST(ParseHttpRange, testEmptyRangeOfEmptyFile_outOfRange) {
long start, length;
const char *s = "bytes=0-0";
const char *s = "bytes=0-0"; // requesting 1 byte, but have 0
EXPECT_TRUE(ParseHttpRange(s, strlen(s), 0, &start, &length));
EXPECT_EQ(0, start);
EXPECT_EQ(0, length);
s = "bytes=1-1"; // but this can't be truncated
EXPECT_FALSE(ParseHttpRange(s, strlen(s), 0, &start, &length));
EXPECT_EQ(0, start);
EXPECT_EQ(0, length);
@ -94,10 +98,10 @@ TEST(ParseHttpRange, testFromEnd) {
TEST(ParseHttpRange, testOutOfRange) {
long start, length;
const char *s = "bytes=0-100";
EXPECT_FALSE(ParseHttpRange(s, strlen(s), 100, &start, &length));
const char *s = "bytes=0-100"; // requesting 101 bytes, but have 100
EXPECT_TRUE(ParseHttpRange(s, strlen(s), 100, &start, &length));
EXPECT_EQ(0, start);
EXPECT_EQ(0, length);
EXPECT_EQ(100, length);
}
TEST(ParseHttpRange, testInvalidRange) {
@ -131,3 +135,11 @@ TEST(ParseHttpRange, testMultipartRange_notImplemented) {
EXPECT_EQ(0, start);
EXPECT_EQ(0, length);
}
TEST(ParseHttpRange, rangeTooLong_shortensToActualLength) {
long start, length;
const char *s = "bytes=0-134217727";
EXPECT_TRUE(ParseHttpRange(s, strlen(s), 1000, &start, &length));
EXPECT_EQ(0, start);
EXPECT_EQ(1000, length);
}