if ($DEBUG > 0) {
$debugfh = \*STDERR;
}
+binmode($debugfh,':raw:encoding(UTF-8)');
# these are the valid bug addresses
my %baddress = (B => 'submit',
my @common_headers;
for my $hdr (@headerlines) {
+ my $orig_hdr = $hdr;
$hdr = decode_rfc1522($hdr);
$_ = $hdr;
s/\n\s/ /g;
finish() if m/^x-loop: (\S+)$/i && $1 eq "$gMaintainerEmail";
my $ins = !m/^subject:/i && !m/^reply-to:/i && !m/^return-path:/i
&& !m/^From / && !m/^X-Debbugs-/i;
- $fwd .= $hdr."\n" if $ins;
+ $fwd .= encode_utf8($hdr)."\n" if $ins;
# print {$debugfh} ">$_<\n";
if (s/^(\S+):\s*//) {
my $v = lc $1;
# Remove BOM markers from UTF-8 strings
# Fixes #488554
$phline =~ s/\xef\xbb\xbf//g;
+ $phline =~ s/\N{U+FEFF}//g;
last if $phline !~ m/^([\w-]+):\s*(\S.*)/;
my ($fn, $fv) = ($1, $2);
$fv =~ s/\s*$//;
# set $i to beginning of encoded body data, so we can dump it out
# verbatim later
my $i = 0;
-++$i while $msg[$i] =~ /./;
+++$i while $i <= $#msg and $msg[$i] =~ /./;
$fwd .= join("\n",@msg[$i..$#msg]);
+binmode($debugfh,':raw');
print {$debugfh} "***\n$fwd\n***\n";
+binmode($debugfh,':raw:encoding(UTF-8)');
if (defined $header{'resent-from'} && !defined $header{'from'}) {
$header{'from'} = $header{'resent-from'};
Subject => "$gBug#$ref closed by $markedby ($header{'subject'})",
"Message-ID" => "<handler.$ref.$nn.notifdone\@$gEmailDomain>",
(defined $data->{msgid})?("In-Reply-To" => $data->{msgid}):(),
- References => join(' ',grep {defined $_} ($header{'message-id'},$data->{msgid})),
+ References => join(' ',grep {defined $_} ($header{'message-id'},$data->{msgid},'')),
"X-$gProject-PR-Message" => "they-closed $ref",
- "X-$gProject-PR-Package" => "$data->{package}",
- "X-$gProject-PR-Keywords" => "$data->{keywords}",
+ (defined $data->{package})?("X-$gProject-PR-Package" => $data->{package}):(),
+ (defined $data->{keywords})?("X-$gProject-PR-Keywords" => $data->{keywords}):(),
# Only have a X-$gProject-PR-Source when we know the source package
(defined($source_package) and length($source_package))?("X-$gProject-PR-Source" => $source_package):(),
"Reply-To" => "$ref\@$gEmailDomain",
address_only => 1,
cc => 1,
);
- my $error_text = $errors > 0 ? " (with $errors errors)":'';
+ my $error_text = $errors > 0 ? " (with $errors error" . ($errors > 1 ? "s" : "") . ")" : "";
my $reply =
create_mime_message(['X-Loop' => $gMaintainerEmail,
From => "$gMaintainerEmail ($gProject $gBug Tracking System)",
write_log_records(logfh => $logfh,
records => {text => stripbccs($msg),
type => 'recips',
- recips => [@{$recips}],
+ recips => [map {encode_utf8($_)} @{$recips}],
},
);
if (ref($bcc)) {