diff --git a/example/server.cc b/example/server.cc index a4b7f6d..8106fa5 100644 --- a/example/server.cc +++ b/example/server.cc @@ -7,6 +7,7 @@ #include #include +#include #define SERVER_CERT_FILE "./cert.pem" #define SERVER_PRIVATE_KEY_FILE "./key.pem" @@ -77,7 +78,13 @@ int main(void) }); svr.get("/hi", [](const auto& /*req*/, auto& res) { - res.set_content("Hello World!", "text/plain"); + res.set_content("Hello World!\n", "text/plain"); + }); + + svr.get("/slow", [](const auto& /*req*/, auto& res) { + using namespace std::chrono_literals; + std::this_thread::sleep_for(2s); + res.set_content("Slow...\n", "text/plain"); }); svr.get("/dump", [](const auto& req, auto& res) { diff --git a/httplib.h b/httplib.h index 4a448e1..ab79cc5 100644 --- a/httplib.h +++ b/httplib.h @@ -55,6 +55,7 @@ typedef int socket_t; #include #include #include +#include #include #include @@ -1236,7 +1237,13 @@ inline bool Server::listen(const char* host, int port, int socket_flags) } // TODO: should be async +#ifdef CPPHTTPLIB_NO_MULTI_THREAD_SUPPORT read_and_close_socket(sock); +#else + std::thread([=]() { + read_and_close_socket(sock); + }).detach(); +#endif } return ret;