@@ -1378,7 +1378,10 @@ class ServerTest : public ::testing::Test {
13781378 (*i)++;
13791379 return true ;
13801380 },
1381- [i] { delete i; });
1381+ [i](bool success) {
1382+ EXPECT_TRUE (success);
1383+ delete i;
1384+ });
13821385 })
13831386 .Get (" /streamed" ,
13841387 [&](const Request & /* req*/ , Response &res) {
@@ -1405,7 +1408,10 @@ class ServerTest : public ::testing::Test {
14051408 EXPECT_TRUE (ret);
14061409 return true ;
14071410 },
1408- [data] { delete data; });
1411+ [data](bool success) {
1412+ EXPECT_TRUE (success);
1413+ delete data;
1414+ });
14091415 })
14101416 .Get (" /streamed-cancel" ,
14111417 [&](const Request & /* req*/ , Response &res) {
@@ -3567,6 +3573,44 @@ TEST(KeepAliveTest, ReadTimeout) {
35673573 ASSERT_FALSE (svr.is_running ());
35683574}
35693575
3576+ TEST (ClientProblemDetectionTest, ContentProvider) {
3577+ Server svr;
3578+
3579+ size_t content_length = 1024 * 1024 ;
3580+
3581+ svr.Get (" /hi" , [&](const Request & /* req*/ , Response &res) {
3582+ res.set_content_provider (
3583+ content_length, " text/plain" ,
3584+ [&](size_t offset, size_t length, DataSink &sink) {
3585+ auto out_len = std::min (length, static_cast <size_t >(1024 ));
3586+ std::string out (out_len, ' @' );
3587+ sink.write (out.data (), out_len);
3588+ return offset < 4096 ;
3589+ },
3590+ [](bool success) { ASSERT_FALSE (success); });
3591+ });
3592+
3593+ auto listen_thread = std::thread ([&svr]() { svr.listen (" localhost" , PORT); });
3594+ while (!svr.is_running ()) {
3595+ std::this_thread::sleep_for (std::chrono::milliseconds (1 ));
3596+ }
3597+
3598+ // Give GET time to get a few messages.
3599+ std::this_thread::sleep_for (std::chrono::seconds (1 ));
3600+
3601+ Client cli (" localhost" , PORT);
3602+
3603+ auto res = cli.Get (" /hi" , [&](const char * /* data*/ , size_t /* data_length*/ ) {
3604+ return false ;
3605+ });
3606+
3607+ ASSERT_FALSE (res);
3608+
3609+ svr.stop ();
3610+ listen_thread.join ();
3611+ ASSERT_FALSE (svr.is_running ());
3612+ }
3613+
35703614TEST (ErrorHandlerWithContentProviderTest, ErrorHandler) {
35713615 Server svr;
35723616
0 commit comments