aboutsummaryrefslogtreecommitdiffstats
path: root/include/crow/http_server.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/crow/http_server.h')
-rw-r--r--include/crow/http_server.h24
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();
});
}