aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorredmatrix <git@macgirvin.com>2016-05-31 16:16:54 -0700
committerredmatrix <git@macgirvin.com>2016-05-31 16:16:54 -0700
commit00b4843425371e4ff55c82be577a279e248c29fc (patch)
tree8294725983c67e3eb82314a127ac646b88a222eb
parent701acf59e2b2264f7afec9fdfab4d554193fd0b3 (diff)
downloadvolse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.tar.gz
volse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.tar.bz2
volse-hubzilla-00b4843425371e4ff55c82be577a279e248c29fc.zip
provide a sort of mutex lock around db logging so it can't possibly recurse. Previous attempts to do something similar using other methods haven't worked out satisfactorily.
-rwxr-xr-xinclude/dba/dba_driver.php7
-rwxr-xr-xinclude/plugin.php21
2 files changed, 18 insertions, 10 deletions
diff --git a/include/dba/dba_driver.php b/include/dba/dba_driver.php
index 0ab5830ed..df072ed76 100755
--- a/include/dba/dba_driver.php
+++ b/include/dba/dba_driver.php
@@ -12,7 +12,7 @@ class DBA {
static public $dba = null;
static public $dbtype = null;
-
+ static public $logging = false;
/**
* @brief Returns the database driver object.
@@ -421,8 +421,13 @@ function db_getfunc($f) {
function db_logger($s,$level = LOGGER_NORMAL,$syslog = LOG_INFO) {
+ if(\DBA::$logging)
+ return;
+
$saved = \DBA::$dba->debug;
\DBA::$dba->debug = false;
+ \DBA::$logging = true;
logger($s,$level,$syslog);
+ \DBA::$logging = false;
\DBA::$dba->debug = $saved;
} \ No newline at end of file
diff --git a/include/plugin.php b/include/plugin.php
index 96ae0e543..be4e92f03 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -300,15 +300,18 @@ function call_hooks($name, &$data = null) {
$func($data);
else
$func($a, $data);
- } else {
- // The hook should be removed so we don't process it.
- // But not until everybody gets through a timing issue
- // related to git pull and update_r1169
- // q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND fn = '%s'",
- // dbesc($name),
- // dbesc($hook[0]),
- // dbesc($origfn)
- // );
+ }
+ else {
+
+ // Don't do any DB write calls if we're currently logging a possibly failed DB call.
+ if(! DBA::$logging) {
+ // The hook should be removed so we don't process it.
+ q("DELETE FROM hook WHERE hook = '%s' AND file = '%s' AND fn = '%s'",
+ dbesc($name),
+ dbesc($hook[0]),
+ dbesc($origfn)
+ );
+ }
}
}
}