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