@@ -2962,7 +2962,7 @@ TEST_F(ServerTest, GetStreamedWithRangeSuffix2) {
29622962 EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
29632963 EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
29642964 EXPECT_EQ (false , res->has_header (" Content-Range" ));
2965- EXPECT_EQ (0 , res->body .size ());
2965+ EXPECT_EQ (0U , res->body .size ());
29662966}
29672967
29682968TEST_F (ServerTest, GetStreamedWithRangeError) {
@@ -2973,7 +2973,7 @@ TEST_F(ServerTest, GetStreamedWithRangeError) {
29732973 EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
29742974 EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
29752975 EXPECT_EQ (false , res->has_header (" Content-Range" ));
2976- EXPECT_EQ (0 , res->body .size ());
2976+ EXPECT_EQ (0U , res->body .size ());
29772977}
29782978
29792979TEST_F (ServerTest, GetRangeWithMaxLongLength) {
@@ -2982,7 +2982,7 @@ TEST_F(ServerTest, GetRangeWithMaxLongLength) {
29822982 EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
29832983 EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
29842984 EXPECT_EQ (false , res->has_header (" Content-Range" ));
2985- EXPECT_EQ (0 , res->body .size ());
2985+ EXPECT_EQ (0U , res->body .size ());
29862986}
29872987
29882988TEST_F (ServerTest, GetStreamedWithRangeMultipart) {
@@ -2995,6 +2995,41 @@ TEST_F(ServerTest, GetStreamedWithRangeMultipart) {
29952995 EXPECT_EQ (267U , res->body .size ());
29962996}
29972997
2998+ TEST_F (ServerTest, GetStreamedWithTooManyRanges) {
2999+ Ranges ranges;
3000+ for (size_t i = 0 ; i < CPPHTTPLIB_RANGE_MAX_COUNT + 1 ; i++) {
3001+ ranges.emplace_back (0 , -1 );
3002+ }
3003+
3004+ auto res =
3005+ cli_.Get (" /streamed-with-range?error" , {{make_range_header (ranges)}});
3006+ ASSERT_TRUE (res);
3007+ EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
3008+ EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
3009+ EXPECT_EQ (false , res->has_header (" Content-Range" ));
3010+ EXPECT_EQ (0U , res->body .size ());
3011+ }
3012+
3013+ TEST_F (ServerTest, GetStreamedWithNonAscendingRanges) {
3014+ auto res = cli_.Get (" /streamed-with-range?error" ,
3015+ {{make_range_header ({{0 , -1 }, {0 , -1 }})}});
3016+ ASSERT_TRUE (res);
3017+ EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
3018+ EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
3019+ EXPECT_EQ (false , res->has_header (" Content-Range" ));
3020+ EXPECT_EQ (0U , res->body .size ());
3021+ }
3022+
3023+ TEST_F (ServerTest, GetStreamedWithRangesMoreThanTwoOverwrapping) {
3024+ auto res = cli_.Get (" /streamed-with-range?error" ,
3025+ {{make_range_header ({{0 , 1 }, {1 , 2 }, {2 , 3 }, {3 , 4 }})}});
3026+ ASSERT_TRUE (res);
3027+ EXPECT_EQ (StatusCode::RangeNotSatisfiable_416, res->status );
3028+ EXPECT_EQ (" 0" , res->get_header_value (" Content-Length" ));
3029+ EXPECT_EQ (false , res->has_header (" Content-Range" ));
3030+ EXPECT_EQ (0U , res->body .size ());
3031+ }
3032+
29983033TEST_F (ServerTest, GetStreamedEndless) {
29993034 uint64_t offset = 0 ;
30003035 auto res = cli_.Get (" /streamed-cancel" ,
0 commit comments