summaryrefslogtreecommitdiff
path: root/include/extension.h
diff options
context:
space:
mode:
authorEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-05-06 09:34:12 +0200
committerEmiel Bruijntjes <emiel.bruijntjes@copernica.com>2014-05-06 09:34:12 +0200
commitf57607d2d58f6e7689a3550c84ba68ce42c6a7b3 (patch)
tree318f5d63d51106fb34cd6634f7cc8e321da1c1e0 /include/extension.h
parent927e54ecde25ed7ba718697631dc8ffd208e361a (diff)
When "apache reload" is called, the PHP-CPP library made the entire Apache process crash. This has been fixed
Diffstat (limited to 'include/extension.h')
-rw-r--r--include/extension.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/extension.h b/include/extension.h
index f03c8fb..562fceb 100644
--- a/include/extension.h
+++ b/include/extension.h
@@ -111,6 +111,9 @@ public:
*/
Extension &add(Ini &&ini)
{
+ // skip when locked
+ if (locked()) return *this;
+
// and add it to the list of classes
_ini_entries.emplace_back(new Ini(std::move(ini)));
@@ -125,6 +128,9 @@ public:
*/
Extension &add(const Ini &ini)
{
+ // skip when locked
+ if (locked()) return *this;
+
// and add it to the list of classes
_ini_entries.emplace_back(new Ini(ini));
@@ -180,6 +186,16 @@ public:
{
return module();
}
+
+protected:
+ /**
+ * Is the extension object in a locked state? This happens after the
+ * get_module() function was called for the first time ("apache reload"
+ * forces a new call to get_module())
+ *
+ * @return bool
+ */
+ virtual bool locked() const override;
private:
/**