diff options
Diffstat (limited to 'include/crow/http_server.h')
-rw-r--r-- | include/crow/http_server.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/include/crow/http_server.h b/include/crow/http_server.h index d5abb11..787fdb8 100644 --- a/include/crow/http_server.h +++ b/include/crow/http_server.h @@ -121,12 +121,19 @@ namespace crow timer.async_wait(handler); init_count ++; - try + while(1) { - io_service_pool_[i]->run(); - } catch(std::exception& e) - { - CROW_LOG_ERROR << "Worker Crash: An uncaught exception occurred: " << e.what(); + try + { + if (io_service_pool_[i]->run() == 0) + { + // when io_service.run returns 0, there are no more works to do. + break; + } + } catch(std::exception& e) + { + CROW_LOG_ERROR << "Worker Crash: An uncaught exception occurred: " << e.what(); + } } })); @@ -141,7 +148,8 @@ namespace crow }); } - CROW_LOG_INFO << server_name_ << " server is running, local port " << port_; + CROW_LOG_INFO << server_name_ << " server is running on port " << port_ + << " using " << concurrency_ << " threads"; signals_.async_wait( [&](const boost::system::error_code& /*error*/, int /*signal_number*/){ @@ -193,6 +201,10 @@ namespace crow p->start(); }); } + else + { + delete p; + } do_accept(); }); } |