@@ -4991,6 +4991,60 @@ TEST(KeepAliveTest, SSLClientReconnection) {
4991
4991
ASSERT_TRUE (result);
4992
4992
EXPECT_EQ (StatusCode::OK_200, result->status );
4993
4993
}
4994
+
4995
+ TEST (KeepAliveTest, SSLClientReconnectionPost) {
4996
+ SSLServer svr (SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);
4997
+ ASSERT_TRUE (svr.is_valid ());
4998
+ svr.set_keep_alive_timeout (1 );
4999
+ std::string content = " reconnect" ;
5000
+
5001
+ svr.Post (" /hi" , [](const httplib::Request &, httplib::Response &res) {
5002
+ res.set_content (" Hello World!" , " text/plain" );
5003
+ });
5004
+
5005
+ auto f = std::async (std::launch::async, [&svr] { svr.listen (HOST, PORT); });
5006
+ std::this_thread::sleep_for (std::chrono::milliseconds (200 ));
5007
+
5008
+ SSLClient cli (HOST, PORT);
5009
+ cli.enable_server_certificate_verification (false );
5010
+ cli.set_keep_alive (true );
5011
+
5012
+ auto result = cli.Post (
5013
+ " /hi" , content.size (),
5014
+ [&content](size_t offset, size_t length, DataSink &sink) {
5015
+ sink.write (content.c_str (), content.size ());
5016
+ return true ;
5017
+ },
5018
+ " text/plain" );
5019
+ ASSERT_TRUE (result);
5020
+ EXPECT_EQ (200 , result->status );
5021
+
5022
+ std::this_thread::sleep_for (std::chrono::seconds (2 ));
5023
+
5024
+ // Recoonect
5025
+ result = cli.Post (
5026
+ " /hi" , content.size (),
5027
+ [&content](size_t offset, size_t length, DataSink &sink) {
5028
+ sink.write (content.c_str (), content.size ());
5029
+ return true ;
5030
+ },
5031
+ " text/plain" );
5032
+ ASSERT_TRUE (result);
5033
+ EXPECT_EQ (200 , result->status );
5034
+
5035
+ result = cli.Post (
5036
+ " /hi" , content.size (),
5037
+ [&content](size_t offset, size_t length, DataSink &sink) {
5038
+ sink.write (content.c_str (), content.size ());
5039
+ return true ;
5040
+ },
5041
+ " text/plain" );
5042
+ ASSERT_TRUE (result);
5043
+ EXPECT_EQ (200 , result->status );
5044
+
5045
+ svr.stop ();
5046
+ f.wait ();
5047
+ }
4994
5048
#endif
4995
5049
4996
5050
TEST (ClientProblemDetectionTest, ContentProvider) {
0 commit comments