From 64e889f0ca84121a4e92840f9283cf9cf36279e6 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 17 Dec 2015 19:20:41 +0200 Subject: Bugfix: brep::module::handle asserts the module is loaded --- brep/module.cxx | 8 ++++++-- web/apache/service.cxx | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/brep/module.cxx b/brep/module.cxx index d3ffcb4..9e7eda3 100644 --- a/brep/module.cxx +++ b/brep/module.cxx @@ -33,12 +33,16 @@ namespace brep bool module:: handle (request& rq, response& rs, log& l) { - assert (loaded_); - log_ = &l; try { + if (!loaded_) + { + MODULE_DIAG; + fail << "not initialized, presumably due to misconfiguration"; + } + return handle (rq, rs); } catch (const server_error& e) diff --git a/web/apache/service.cxx b/web/apache/service.cxx index 1741af3..c6f830b 100644 --- a/web/apache/service.cxx +++ b/web/apache/service.cxx @@ -123,7 +123,14 @@ namespace web { l.write (nullptr, 0, func_name.c_str (), APLOG_EMERG, e.what ()); - // Terminate the root apache process. + // Terminate the root apache process. Indeed we can only try to + // terminate the process, and most likely will fail in a production + // environment where the apache root process usually runs under root + // and worker processes run under some other user. This is why the + // implementation should consider the possibility of not being + // initialized at the time of HTTP request processing. In such a case + // it should respond with an internal server error (500 HTTP status), + // reporting misconfiguration. // ::kill (::getppid (), SIGTERM); } -- cgit v1.1