Bug 257344: Remove exit from error handlers when non-interactive

r=glob,justdave
a=justdave
This commit is contained in:
bugreport%peshkin.net 2004-11-08 02:25:59 +00:00
Родитель e54473626a
Коммит c5813d15b8
2 изменённых файлов: 30 добавлений и 5 удалений

Просмотреть файл

@ -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 C<Bugzilla->user> to return C<undef>. This has the
effect of logging out a user for the current request only; cookies and
database sessions are left intact.
=item C<batch>
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<dbh>
The current database handle. See L<DBI>.

Просмотреть файл

@ -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";