projects
/
freeside.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
import of rt 3.0.9
[freeside.git]
/
rt
/
bin
/
webmux.pl
diff --git
a/rt/bin/webmux.pl
b/rt/bin/webmux.pl
index
21cb83f
..
96e7ebf
100755
(executable)
--- a/
rt/bin/webmux.pl
+++ b/
rt/bin/webmux.pl
@@
-31,6
+31,7
@@
BEGIN {
$ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'};
$ENV{'ENV'} = '' if defined $ENV{'ENV'};
$ENV{'IFS'} = '' if defined $ENV{'IFS'};
$ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'};
$ENV{'ENV'} = '' if defined $ENV{'ENV'};
$ENV{'IFS'} = '' if defined $ENV{'IFS'};
+
}
use lib ("/opt/rt3/local/lib", "/opt/rt3/lib");
}
use lib ("/opt/rt3/local/lib", "/opt/rt3/lib");
@@
-42,6
+43,17
@@
use CGI qw(-private_tempfiles); #bring this in before mason, to make sure we
#set private_tempfiles
BEGIN {
#set private_tempfiles
BEGIN {
+ if ($mod_perl::VERSION >= 1.9908) {
+ require Apache::RequestUtil;
+ no warnings 'redefine';
+ my $sub = *Apache::request{CODE};
+ *Apache::request = sub {
+ my $r;
+ eval { $r = $sub->('Apache'); };
+ # warn $@ if $@;
+ return $r;
+ };
+ }
if ($CGI::MOD_PERL) {
require HTML::Mason::ApacheHandler;
}
if ($CGI::MOD_PERL) {
require HTML::Mason::ApacheHandler;
}
@@
-104,21
+116,32
@@
if ( $CGI::MOD_PERL) {
unless ( ( -d _ ) and ( -r _ ) and ( -w _ ) );
}
unless ( ( -d _ ) and ( -r _ ) and ( -w _ ) );
}
-my $ah = &RT::Interface::Web::NewApacheHandler() if $CGI::MOD_PERL;
+my $ah = &RT::Interface::Web::NewApacheHandler(
@RT::MasonParameters
) if $CGI::MOD_PERL;
sub handler {
($r) = @_;
sub handler {
($r) = @_;
+ local $SIG{__WARN__};
+ local $SIG{__DIE__};
+
RT::Init();
# We don't need to handle non-text items
return -1 if defined( $r->content_type ) && $r->content_type !~ m|^text/|io;
my %session;
RT::Init();
# We don't need to handle non-text items
return -1 if defined( $r->content_type ) && $r->content_type !~ m|^text/|io;
my %session;
- my $status = $ah->handle_request($r);
+ my $status;
+ eval { $status = $ah->handle_request($r) };
+ if ($@) {
+ $RT::Logger->crit($@);
+ }
+
undef (%session);
undef (%session);
- $RT::Logger->crit("Transaction not committed. Usually indicates a software fault. Data loss may have occurred") if $RT::Handle->TransactionDepth;
+ if ($RT::Handle->TransactionDepth) {
+ $RT::Handle->ForceRollback;
+ $RT::Logger->crit("Transaction not committed. Usually indicates a software fault. Data loss may have occurred") ;
+ }
return $status;
}
return $status;
}