From: bugreport%peshkin.net <> Date: Mon, 8 Nov 2004 10:25:58 +0000 (+0000) Subject: Bug 257344: Remove exit from error handlers when non-interactive X-Git-Tag: bugzilla-2.19.2~126 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ab8441582a6b9ce1b2335762948662b38aaf217;p=thirdparty%2Fbugzilla.git Bug 257344: Remove exit from error handlers when non-interactive r=glob,justdave a=justdave --- diff --git a/Bugzilla.pm b/Bugzilla.pm index 1c2a6a4b06..e876396083 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -111,6 +111,16 @@ sub dbh { return $_dbh; } +my $_batch; +sub batch { + my $class = shift; + my $newval = shift; + if ($newval) { + $_batch = $newval; + } + return $_batch || 0; +} + sub dbwritesallowed { my $class = shift; @@ -282,6 +292,13 @@ Essentially, causes calls to Cuser> to return C. This has the effect of logging out a user for the current request only; cookies and database sessions are left intact. +=item C + +Set to true, by calling Bugzilla->batch(1), to indicate that Bugzilla is +being called in a non-interactive manner and errors should be passed to +die() rather than being sent to a browser and finished with an exit(). +Bugzilla->batch will return the current state of this flag. + =item C The current database handle. See L. diff --git a/Bugzilla/Error.pm b/Bugzilla/Error.pm index 25527f5993..00a2675eb0 100644 --- a/Bugzilla/Error.pm +++ b/Bugzilla/Error.pm @@ -69,12 +69,17 @@ sub _throw_error { close ERRORLOGFID; } - print Bugzilla->cgi->header(); - my $template = Bugzilla->template; - $template->process($name, $vars) - || ThrowTemplateError($template->error()); - + if (Bugzilla->batch) { + my $message; + $template->process($name, $vars, \$message) + || ThrowTemplateError($template->error()); + die("$message"); + } else { + print Bugzilla->cgi->header(); + $template->process($name, $vars) + || ThrowTemplateError($template->error()); + } exit; } @@ -90,6 +95,9 @@ sub ThrowTemplateError { my ($template_err) = @_; my $vars = {}; + if (Bugzilla->batch) { + die("error: template error: $template_err"); + } $vars->{'template_error_msg'} = $template_err; $vars->{'error'} = "template_error";