diff options
author | Jaeseung Ha <ipknhama@gmail.com> | 2017-09-17 19:17:54 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-17 19:17:54 +0900 |
commit | d8c4a671760fda8e83279b9383108f0951367fb6 (patch) | |
tree | 0ad063878c09eec987d1d8054b66d11fd629ce30 /include/crow/http_server.h | |
parent | 26c4d5ddef6920043ae40a9d80ca31f3b820bad5 (diff) | |
parent | 414809c742521926ca08fbd355b92f3ae877064f (diff) | |
download | crow-d8c4a671760fda8e83279b9383108f0951367fb6.tar.gz crow-d8c4a671760fda8e83279b9383108f0951367fb6.zip |
Merge branch 'master' into master
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(); }); } |