]> git.donarmstrong.com Git - debbugs.git/commitdiff
Do not escape From and use .eml when returning a single message
authorDon Armstrong <don@donarmstrong.com>
Sun, 10 Apr 2022 13:35:19 +0000 (06:35 -0700)
committerDon Armstrong <don@donarmstrong.com>
Sun, 26 Mar 2023 23:05:51 +0000 (16:05 -0700)
 - Address issue with MUAs which don't look at the mime type and instead assume
   mime based on extension, like thunderbird. Closes #1009181

cgi/bugreport.cgi
debian/changelog

index b50906de29bb8712f4f1f001756f61e340e57f04..e090321e63d8719b7561b4faa53c75cc437b6c8c 100755 (executable)
@@ -212,7 +212,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,
@@ -224,10 +225,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',
@@ -271,7 +272,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 $spam->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;
@@ -288,12 +289,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 $_;
           }
       }
index be7e73a47afa3451cc4171fa9485a30e212abfa5..16d26c1a8010d80db5a2eb4d59a945b93e993ec2 100644 (file)
@@ -2,6 +2,8 @@ debbugs (2.6.1) unstable; urgency=medium
 
   * 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 <don@debian.org>  Fri, 09 Mar 2018 11:17:10 -0800