@@ -3871,6 +3871,32 @@ TEST(ServerStopTest, StopServerWithChunkedTransmission) {
38713871 ASSERT_FALSE (svr.is_running ());
38723872}
38733873
3874+ TEST (ServerStopTest, ClientAccessAfterServerDown) {
3875+ httplib::Server svr;
3876+ svr.Post (" /hi" , [&](const httplib::Request & /* req*/ , httplib::Response &res) {
3877+ res.status = 200 ;
3878+ });
3879+
3880+ auto thread = std::thread ([&]() { svr.listen (HOST, PORT); });
3881+
3882+ while (!svr.is_running ()) {
3883+ std::this_thread::sleep_for (std::chrono::milliseconds (5 ));
3884+ }
3885+
3886+ Client cli (HOST, PORT);
3887+
3888+ auto res = cli.Post (" /hi" , " data" , " text/plain" );
3889+ ASSERT_TRUE (res);
3890+ EXPECT_EQ (200 , res->status );
3891+
3892+ svr.stop ();
3893+ thread.join ();
3894+ ASSERT_FALSE (svr.is_running ());
3895+
3896+ res = cli.Post (" /hi" , " data" , " text/plain" );
3897+ ASSERT_FALSE (res);
3898+ }
3899+
38743900TEST (StreamingTest, NoContentLengthStreaming) {
38753901 Server svr;
38763902
@@ -4067,6 +4093,39 @@ TEST(KeepAliveTest, Issue1041) {
40674093 f.wait ();
40684094}
40694095
4096+ #ifdef CPPHTTPLIB_OPENSSL_SUPPORT
4097+ TEST (KeepAliveTest, SSLClientReconnection) {
4098+ SSLServer svr (SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);
4099+ ASSERT_TRUE (svr.is_valid ());
4100+ svr.set_keep_alive_timeout (1 );
4101+
4102+ svr.Get (" /hi" , [](const httplib::Request &, httplib::Response &res) {
4103+ res.set_content (" Hello World!" , " text/plain" );
4104+ });
4105+
4106+ auto f = std::async (std::launch::async, [&svr] { svr.listen (HOST, PORT); });
4107+ std::this_thread::sleep_for (std::chrono::milliseconds (200 ));
4108+
4109+ SSLClient cli (HOST, PORT);
4110+ cli.enable_server_certificate_verification (false );
4111+ cli.set_keep_alive (true );
4112+
4113+ auto result = cli.Get (" /hi" );
4114+ ASSERT_TRUE (result);
4115+ EXPECT_EQ (200 , result->status );
4116+
4117+ std::this_thread::sleep_for (std::chrono::seconds (2 ));
4118+
4119+ result = cli.Get (" /hi" );
4120+
4121+ svr.stop ();
4122+ f.wait ();
4123+
4124+ ASSERT_TRUE (result);
4125+ EXPECT_EQ (200 , result->status );
4126+ }
4127+ #endif
4128+
40704129TEST (ClientProblemDetectionTest, ContentProvider) {
40714130 Server svr;
40724131
0 commit comments