summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgerv%gerv.net <>2002-03-28 16:57:02 +0100
committergerv%gerv.net <>2002-03-28 16:57:02 +0100
commita6123ce8c608e64ba111e30481b28297f61849aa (patch)
treedc953104b2360c095ffc64ca0106f012da46aa5c
parentb5cbca2fd02b1cbf2b50a40fa6dad42da6b43d1e (diff)
downloadbugzilla-a6123ce8c608e64ba111e30481b28297f61849aa.tar.gz
bugzilla-a6123ce8c608e64ba111e30481b28297f61849aa.tar.xz
Bug 104589 - prevent user closing window from terminating Bugzilla scripts. Patch by Gerv <gerv@mozilla.org>, r=justdave, myk
-rwxr-xr-xbuglist.cgi6
-rw-r--r--globals.pl6
2 files changed, 12 insertions, 0 deletions
diff --git a/buglist.cgi b/buglist.cgi
index 747fab520..ff31feb1f 100755
--- a/buglist.cgi
+++ b/buglist.cgi
@@ -1321,6 +1321,12 @@ ReconnectToShadowDatabase();
# to avoid "table out of space" errors on MySQL versions less than 3.23.2.
SendSQL("SET OPTION SQL_BIG_TABLES=1") if Param('expectbigqueries');
+# Normally, we ignore SIGTERM and SIGPIPE (see globals.pl) but we need to
+# respond to them here to prevent someone DOSing us by reloading a query
+# a large number of times.
+$::SIG{TERM} = 'DEFAULT';
+$::SIG{PIPE} = 'DEFAULT';
+
# Execute the query.
SendSQL($query);
diff --git a/globals.pl b/globals.pl
index cac9669a5..2b35a45cc 100644
--- a/globals.pl
+++ b/globals.pl
@@ -91,6 +91,12 @@ delete @::ENV{'PATH', 'IFS', 'CDPATH', 'ENV', 'BASH_ENV'};
# system call
$::ENV{'PATH'} = '';
+# Ignore SIGTERM and SIGPIPE - this prevents DB corruption. If the user closes
+# their browser window while a script is running, the webserver sends these
+# signals, and we don't want to die half way through a write.
+$::SIG{TERM} = 'IGNORE';
+$::SIG{PIPE} = 'IGNORE';
+
# Contains the version string for the current running Bugzilla.
$::param{'version'} = '2.15';