Commit 540d08b4 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 510958: Allow hooks to exit() under mod_perl

Patch by Max Kanat-Alexander <mkanat@bugzilla.org> r=dkl, a=mkanat
parent 2d952ffa
......@@ -21,12 +21,25 @@
#
package Bugzilla::Hook;
use strict;
use Bugzilla::Constants;
use Bugzilla::Util;
use Bugzilla::Error;
use strict;
use Scalar::Util qw(blessed);
BEGIN {
if ($ENV{MOD_PERL}) {
require ModPerl::Const;
import ModPerl::Const -compile => 'EXIT';
}
else {
# Create a fake constant. We have to do this in a string eval,
# otherwise this will always be defined.
eval('sub ModPerl::EXIT;');
}
}
sub process {
my ($name, $args) = @_;
......@@ -49,8 +62,16 @@ sub process {
# Allow extensions to load their own libraries.
local @INC = ("$extension/lib", @INC);
do($extension.'/code/'.$name.'.pl');
ThrowCodeError('extension_invalid',
{ errstr => $@, name => $name, extension => $extension }) if $@;
if ($@) {
if ($ENV{MOD_PERL} and blessed $@ and $@ == ModPerl::EXIT) {
exit;
}
else {
ThrowCodeError('extension_invalid',
{ errstr => $@, name => $name,
extension => $extension });
}
}
# Flush stored data.
Bugzilla->hook_args({});
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment