From: Don Armstrong Date: Sun, 10 Apr 2022 13:35:19 +0000 (-0700) Subject: Do not escape From and use .eml when returning a single message X-Git-Url: https://git.donarmstrong.com/?p=debbugs.git;a=commitdiff_plain;h=1aa5061f8033c49525c7a2d424c43900cee19771 Do not escape From and use .eml when returning a single message - Address issue with MUAs which don't look at the mime type and instead assume mime based on extension, like thunderbird. Closes #1009181 --- diff --git a/cgi/bugreport.cgi b/cgi/bugreport.cgi index 9969abb..87f688e 100755 --- a/cgi/bugreport.cgi +++ b/cgi/bugreport.cgi @@ -250,7 +250,8 @@ my @log; if ( $mbox ) { binmode(STDOUT,":raw"); my $date = strftime "%a %b %d %T %Y", localtime; - if (@records > 1) { + my $multiple_messages = @records > 1; + if ($multiple_messages) { print $q->header(-type => "application/mbox", -cache_control => 'public, max-age=600', -etag => $etag, @@ -262,10 +263,10 @@ if ( $mbox ) { print $q->header(-type => "message/rfc822", -cache_control => 'public, max-age=86400', -etag => $etag, - content_disposition => qq(attachment; filename="bug_${ref}_message_${msg_num}.mbox"), + content_disposition => qq(attachment; filename="bug_${ref}_message_${msg_num}.eml"), ); } - if ($mbox_status_message and @records > 1) { + if ($mbox_status_message and $multiple_messages) { my $status_message=''; my @status_fields = (retitle => 'subject', package => 'package', @@ -309,7 +310,7 @@ END next if not $boring and not $record->{type} eq $wanted_type and not $record_wanted_anyway and @records > 1; $seen_message_ids{$msg_id} = 1 if defined $msg_id; # skip spam messages if we're outputting more than one message - next if @records > 1 and $bug->is_spam($msg_id); + next if $multiple_messages and $bug->is_spam($msg_id); my @lines; if ($record->{inner_file}) { push @lines, scalar $record->{fh}->getline; @@ -326,12 +327,13 @@ END unshift @lines, "From unknown $date"; } print $lines[0]."\n"; - print map { s/^(>*From )/>$1/; $_."\n" } @lines[ 1 .. $#lines ]; + print map { s/^(>*From )/>$1/ if $multiple_messages; + $_."\n" } @lines[ 1 .. $#lines ]; if ($record->{inner_file}) { my $fh = $record->{fh}; local $/; while (<$fh>) { - s/^(>*From )/>$1/gm; + s/^(>*From )/>$1/gm if $multiple_messages; print $_; } } diff --git a/debian/changelog b/debian/changelog index ef98f3c..60dfa6c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -4,6 +4,8 @@ debbugs (3.0.0~alpha.1) unstable; urgency=medium faster. * Add support for a Done: psuedoheader (closes: #950133) * Fix unescaped From (closes: #983847) + * Actually return message/rfc822 when there is a single message instead + of mbox (closes: #1009181) -- Don Armstrong Fri, 09 Mar 2018 11:17:10 -0800