summaryrefslogtreecommitdiff
path: root/rt/share/html/Ticket/Attachment/dhandler
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/html/Ticket/Attachment/dhandler')
-rwxr-xr-xrt/share/html/Ticket/Attachment/dhandler8
1 files changed, 5 insertions, 3 deletions
diff --git a/rt/share/html/Ticket/Attachment/dhandler b/rt/share/html/Ticket/Attachment/dhandler
index 8a62e6d..d61c1d8 100755
--- a/rt/share/html/Ticket/Attachment/dhandler
+++ b/rt/share/html/Ticket/Attachment/dhandler
@@ -2,7 +2,7 @@
%#
%# COPYRIGHT:
%#
-%# This software is Copyright (c) 1996-2016 Best Practical Solutions, LLC
+%# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -68,11 +68,13 @@ unless ( $AttachmentObj->TransactionId() == $trans ) {
my $content = $AttachmentObj->OriginalContent;
my $content_type = $AttachmentObj->ContentType || 'text/plain';
-if ( RT->Config->Get('AlwaysDownloadAttachments') ) {
+my $attachment_regex = qr{^(image/svg\+xml|application/pdf)}i;
+if ( RT->Config->Get('AlwaysDownloadAttachments') || ($content_type =~ $attachment_regex) ) {
$r->headers_out->{'Content-Disposition'} = "attachment";
}
elsif ( !RT->Config->Get('TrustHTMLAttachments') ) {
- $content_type = 'text/plain' if ( $content_type =~ /^text\/html/i );
+ my $text_plain_regex = qr{^(text/html|application/xhtml\+xml|text/xml|application/xml)}i;
+ $content_type = 'text/plain' if ( $content_type =~ $text_plain_regex );
}
elsif (lc $content_type eq 'text/html') {
# If we're trusting and serving HTML for display not download, try to do