summaryrefslogtreecommitdiff
path: root/rt/lib/RT/Interface
diff options
context:
space:
mode:
Diffstat (limited to 'rt/lib/RT/Interface')
-rwxr-xr-xrt/lib/RT/Interface/Email/Auth/GnuPG.pm13
-rw-r--r--rt/lib/RT/Interface/Web/Handler.pm6
-rwxr-xr-xrt/lib/RT/Interface/Web/QueryBuilder/Tree.pm6
-rw-r--r--rt/lib/RT/Interface/Web/Request.pm4
-rw-r--r--rt/lib/RT/Interface/Web/Session.pm4
5 files changed, 24 insertions, 9 deletions
diff --git a/rt/lib/RT/Interface/Email/Auth/GnuPG.pm b/rt/lib/RT/Interface/Email/Auth/GnuPG.pm
index df987d806..f0fe2c917 100755
--- a/rt/lib/RT/Interface/Email/Auth/GnuPG.pm
+++ b/rt/lib/RT/Interface/Email/Auth/GnuPG.pm
@@ -75,13 +75,18 @@ sub GetCurrentUser {
@_
);
- $args{'Message'}->head->delete($_)
- for qw(X-RT-GnuPG-Status X-RT-Incoming-Encrypton
- X-RT-Incoming-Signature X-RT-Privacy);
+ foreach my $p ( $args{'Message'}->parts_DFS ) {
+ $p->head->delete($_) for qw(
+ X-RT-GnuPG-Status X-RT-Incoming-Encrypton
+ X-RT-Incoming-Signature X-RT-Privacy
+ );
+ }
my $msg = $args{'Message'}->dup;
- my ($status, @res) = VerifyDecrypt( Entity => $args{'Message'} );
+ my ($status, @res) = VerifyDecrypt(
+ Entity => $args{'Message'}, AddStatus => 1,
+ );
if ( $status && !@res ) {
$args{'Message'}->head->add(
'X-RT-Incoming-Encryption' => 'Not encrypted'
diff --git a/rt/lib/RT/Interface/Web/Handler.pm b/rt/lib/RT/Interface/Web/Handler.pm
index 8d17921cb..6a0660670 100644
--- a/rt/lib/RT/Interface/Web/Handler.pm
+++ b/rt/lib/RT/Interface/Web/Handler.pm
@@ -217,6 +217,12 @@ sub CleanupRequest {
RT::Crypt::GnuPG::UseKeyForEncryption();
RT::Crypt::GnuPG::UseKeyForSigning( undef );
}
+
+ %RT::Ticket::MERGE_CACHE = ( effective => {}, merged => {} );
+
+ # Explicitly remove any tmpfiles that GPG opened, and close their
+ # filehandles.
+ File::Temp::cleanup;
}
# }}}
diff --git a/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm b/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm
index 574ead465..e672d8e4c 100755
--- a/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm
+++ b/rt/lib/RT/Interface/Web/QueryBuilder/Tree.pm
@@ -268,7 +268,11 @@ sub ParseSQL {
}
$value =~ s/'/\\'/g;
- $value = "'$value'" if $value =~ /[^0-9]/;
+ if ( lc $op eq 'is' || lc $op eq 'is not' ) {
+ $value = 'NULL'; # just fix possible mistakes here
+ } elsif ( $value !~ /^[+-]?[0-9]+$/ ) {
+ $value = "'$value'";
+ }
$key = "'$key'" if $key =~ /^CF./;
my $clause = { Key => $key, Op => $op, Value => $value };
diff --git a/rt/lib/RT/Interface/Web/Request.pm b/rt/lib/RT/Interface/Web/Request.pm
index e1794640d..ba626a091 100644
--- a/rt/lib/RT/Interface/Web/Request.pm
+++ b/rt/lib/RT/Interface/Web/Request.pm
@@ -160,11 +160,11 @@ sub callback {
my %seen;
@$callbacks = (
- sort grep defined && length,
+ grep defined && length,
# Skip backup files, files without a leading package name,
# and files we've already seen
grep !$seen{$_}++ && !m{/\.} && !m{~$} && m{^/Callbacks/[^/]+\Q$page/$name\E$},
- map $self->interp->resolver->glob_path($path, $_),
+ map { sort $self->interp->resolver->glob_path($path, $_) }
@roots
);
foreach my $comp (keys %seen) {
diff --git a/rt/lib/RT/Interface/Web/Session.pm b/rt/lib/RT/Interface/Web/Session.pm
index 4998c34f9..1e0e6d5f0 100644
--- a/rt/lib/RT/Interface/Web/Session.pm
+++ b/rt/lib/RT/Interface/Web/Session.pm
@@ -111,8 +111,8 @@ new session objects.
=cut
sub Attributes {
-
- return $_[0]->Backends->{RT->Config->Get('DatabaseType')} ? {
+ my $class = $_[0]->Class;
+ return !$class->isa('Apache::Session::File') ? {
Handle => $RT::Handle->dbh,
LockHandle => $RT::Handle->dbh,
Transaction => 1,