summaryrefslogtreecommitdiff
path: root/rt/lib/RT.pm.in
diff options
context:
space:
mode:
authorivan <ivan>2010-02-09 21:49:16 +0000
committerivan <ivan>2010-02-09 21:49:16 +0000
commit5493e779c5a975d32523692b3357b02d3434cbe1 (patch)
tree97c4ab5d844e01363711de82b37111b27d4ca9a1 /rt/lib/RT.pm.in
parent76944dc5782dc4b55ecd478d67bc20ad994abb6a (diff)
add NoSignalHandlers option to RT::Init() so we can pull things up the way we want under self-service, RT#7007
Diffstat (limited to 'rt/lib/RT.pm.in')
-rw-r--r--rt/lib/RT.pm.in50
1 files changed, 29 insertions, 21 deletions
diff --git a/rt/lib/RT.pm.in b/rt/lib/RT.pm.in
index f0e56e83a..a5f8e01e2 100644
--- a/rt/lib/RT.pm.in
+++ b/rt/lib/RT.pm.in
@@ -180,6 +180,8 @@ L<preloads classes /InitClasses> and L<set up logging /InitLogging>.
sub Init {
+ my @arg = @_;
+
CheckPerlRequirements();
InitPluginPaths();
@@ -188,7 +190,7 @@ sub Init {
ConnectToDatabase();
InitSystemObjects();
InitClasses();
- InitLogging();
+ InitLogging(@arg);
InitPlugins();
RT->Config->PostLoadCheck;
@@ -215,6 +217,8 @@ Create the Logger object and set up signal handlers.
sub InitLogging {
+ my %arg = @_;
+
# We have to set the record separator ($, man perlvar)
# or Log::Dispatch starts getting
# really pissy, as some other module we use unsets it.
@@ -358,28 +362,32 @@ sub InitLogging {
## Mason). It will log all problems through the standard logging
## mechanism (see above).
- $SIG{__WARN__} = sub {
- # The 'wide character' warnings has to be silenced for now, at least
- # until HTML::Mason offers a sane way to process both raw output and
- # unicode strings.
- # use 'goto &foo' syntax to hide ANON sub from stack
- if( index($_[0], 'Wide character in ') != 0 ) {
- unshift @_, $RT::Logger, qw(level warning message);
- goto &Log::Dispatch::log;
- }
- };
+ unless ( $arg{'NoSignalHandlers'} ) {
-#When we call die, trap it and log->crit with the value of the die.
+ $SIG{__WARN__} = sub {
+ # The 'wide character' warnings has to be silenced for now, at least
+ # until HTML::Mason offers a sane way to process both raw output and
+ # unicode strings.
+ # use 'goto &foo' syntax to hide ANON sub from stack
+ if( index($_[0], 'Wide character in ') != 0 ) {
+ unshift @_, $RT::Logger, qw(level warning message);
+ goto &Log::Dispatch::log;
+ }
+ };
- $SIG{__DIE__} = sub {
- # if we are not in eval and perl is not parsing code
- # then rollback transactions and log RT error
- unless ($^S || !defined $^S ) {
- $RT::Handle->Rollback(1) if $RT::Handle;
- $RT::Logger->crit("$_[0]") if $RT::Logger;
- }
- die $_[0];
- };
+ #When we call die, trap it and log->crit with the value of the die.
+
+ $SIG{__DIE__} = sub {
+ # if we are not in eval and perl is not parsing code
+ # then rollback transactions and log RT error
+ unless ($^S || !defined $^S ) {
+ $RT::Handle->Rollback(1) if $RT::Handle;
+ $RT::Logger->crit("$_[0]") if $RT::Logger;
+ }
+ die $_[0];
+ };
+
+ }
}