=cut
sub handle_record{
- my ($record,$bug_number,$msg_number) = @_;
+ my ($record,$bug_number,$msg_number,$seen_msg_ids) = @_;
my $output = '';
local $_ = $record->{type};
bugurl($ref, 'msg='.($msg_number+1)) . '&mbox=yes">rfc822 format</a> available.</em>';
}
elsif (/recips/) {
+ my ($msg_id) = $record->{text} =~ /^Message-Id:\s+<(.+)>/im;
+ if (defined $msg_id and exists $$seen_msg_ids{$msg_id}) {
+ return ();
+ }
+ elsif (defined $msg_id) {
+ $$seen_msg_ids{$msg_id} = 1;
+ }
$output .= 'View this message in <a href="' . bugurl($ref, "msg=$msg_number") . '&mbox=yes">rfc822 format</a></em>';
$output .= '<pre class="message">' .
handle_email_message($record->{text},
# Do nothing
}
elsif (/incoming-recv/) {
+ my ($msg_id) = $record->{text} =~ /^Message-Id:\s+<(.+)>/im;
+ if (defined $msg_id and exists $$seen_msg_ids{$msg_id}) {
+ return ();
+ }
+ elsif (defined $msg_id) {
+ $$seen_msg_ids{$msg_id} = 1;
+ }
# Incomming Mail Message
my ($received,$hostname) = $record->{text} =~ m/Received: \(at (\S+)\) by (\S+)\;/;
$output .= qq|<h2><a name="msg$msg_number">Message received at |.
}
else {
+ my %seen_msg_ids;
for my $record (@records) {
$msg_num++;
if ($skip_next) {
next;
}
$skip_next = 1 if $record->{type} eq 'html' and not $boring;
- push @log, handle_record($record,$ref,$msg_num);
+ push @log, handle_record($record,$ref,$msg_num,\%seen_msg_ids);
}
}