From 69a17f066be71d590f1247ed5c70c2b67eff3b2d Mon Sep 17 00:00:00 2001 From: ipknHama Date: Sun, 17 Sep 2017 12:44:15 +0900 Subject: [PATCH] Fix #245. Trying to keep serving after an exception in the handler. --- include/crow/http_server.h | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/include/crow/http_server.h b/include/crow/http_server.h index d5abb1189..a247b128b 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(); + } } }));