aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla.pm18
-rw-r--r--CGI.pl4
-rw-r--r--globals.pl2
3 files changed, 20 insertions, 4 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm
index a45c5ca0f..56d1f24cc 100644
--- a/Bugzilla.pm
+++ b/Bugzilla.pm
@@ -46,7 +46,6 @@ sub cgi {
my $_dbh;
my $_dbh_main;
my $_dbh_shadow;
-
sub dbh {
my $class = shift;
@@ -58,6 +57,17 @@ sub dbh {
return $_dbh;
}
+sub dbwritesallowed {
+ my $class = shift;
+
+ # We can write if we are connected to the main database.
+ # Note that if we don't have a shadowdb, then we claim that its ok
+ # to write even if we're nominally connected to the shadowdb.
+ # This is OK because this method is only used to test if misc
+ # updates can be done, rather than anything complicated.
+ return $class->dbh == $_dbh_main;
+}
+
sub switch_to_shadow_db {
my $class = shift;
@@ -175,6 +185,12 @@ method for those scripts/templates which are only use via CGI, though.
The current database handle. See L<DBI>.
+=item C<dbwritesallowed>
+
+Determines if writes to the database are permitted. This is usually used to
+determine if some general cleanup needs to occur (such as clearing the token
+table)
+
=item C<switch_to_shadow_db>
Switch from using the main database to using the shadow database.
diff --git a/CGI.pl b/CGI.pl
index 61797ac44..7ded11ef2 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -611,7 +611,7 @@ Content-type: text/html
# This seems like as good as time as any to get rid of old
# crufty junk in the logincookies table. Get rid of any entry
# that hasn't been used in a month.
- if ($::dbwritesallowed) {
+ if (Bugzilla->dbwritesallowed) {
SendSQL("DELETE FROM logincookies " .
"WHERE TO_DAYS(NOW()) - TO_DAYS(lastused) > 30");
}
@@ -620,7 +620,7 @@ Content-type: text/html
}
# Update the timestamp on our logincookie, so it'll keep on working.
- if ($::dbwritesallowed) {
+ if (Bugzilla->dbwritesallowed) {
SendSQL("UPDATE logincookies SET lastused = null " .
"WHERE cookie = $::COOKIE{'Bugzilla_logincookie'}");
}
diff --git a/globals.pl b/globals.pl
index 1aee0bd02..62fc1d633 100644
--- a/globals.pl
+++ b/globals.pl
@@ -352,7 +352,7 @@ sub GetVersionTable {
}
if (time() - $mtime > 3600) {
use Token;
- Token::CleanTokenTable() if $::dbwritesallowed;
+ Token::CleanTokenTable() if Bugzilla->dbwritesallowed;
GenerateVersionTable();
}
require 'data/versioncache';