$mid = mid_clean($mid);
eval {
- $doc_id = $self->find_unique_doc_id('mid', $mid);
- $db->delete_document($doc_id) if defined $doc_id;
+ $doc_id = $self->find_unique_doc_id('Q' . $mid);
+ if (defined $doc_id) {
+ $db->delete_document($doc_id);
+ } else {
+ warn "cannot remove non-existent <$mid>\n";
+ }
};
if ($@) {
# last References should be IRT, but some mail clients do things
# out of order, so trust IRT over References iff IRT exists
- my @refs = ($hdr->header_raw('References'),
- $hdr->header_raw('In-Reply-To'));
- @refs = ((join(' ', @refs)) =~ /<([^>]+)>/g);
+ my @refs = (($hdr->header_raw('References') || '') =~ /<([^>]+)>/g);
+ push(@refs, (($hdr->header_raw('In-Reply-To') || '') =~ /<([^>]+)>/g));
my $tid;
if (@refs) {
sub index_mm {
my ($self, $mime) = @_;
- $self->{mm}->mid_insert(mid_clean(mid_mime($mime)));
+ my $mid = mid_clean(mid_mime($mime));
+ my $mm = $self->{mm};
+ my $num = $mm->mid_insert($mid);
+
+ # fallback to num_for since filters like RubyLang set the number
+ defined $num ? $num : $mm->num_for($mid);
}
sub unindex_mm {