use warnings;
use Fcntl qw(:flock :DEFAULT);
use PublicInbox::Spawn qw(spawn);
-use PublicInbox::MID qw(mid_mime mid2path);
+use PublicInbox::MID qw(mids mid_mime mid2path);
use PublicInbox::Address;
use PublicInbox::MsgTime qw(msg_timestamp);
+use PublicInbox::ContentId qw(content_digest);
sub new {
my ($class, $git, $name, $email, $ibx) = @_;
my $path;
if ($path_type eq '2/38') {
- $path = mid2path(mid_mime($mime));
+ my $mids = mids($mime->header_obj);
+ if (!scalar(@$mids)) {
+ my $dig = content_digest($mime);
+ @$mids = (digest2mid($dig));
+ }
+ $path = mid2path($mids->[0]);
} else { # v2 layout, one file:
$path = 'm';
}
}
}
+sub digest2mid ($) {
+ my ($dig) = @_;
+ $dig->clone->hexdigest . '@localhost';
+}
+
1;
__END__
=pod
my $hdr = $mime->header_obj;
my $dig = content_digest($mime);
- $$mid0 = $dig->clone->hexdigest . '@localhost';
+ $$mid0 = PublicInbox::Import::digest2mid($dig);
my $num = $self->{skel}->{mm}->mid_insert($$mid0);
unless (defined $num) {
# it's hard to spoof the last Received: header
my @recvd = $hdr->header_raw('Received');
$dig->add("Received: $_") foreach (@recvd);
- $$mid0 = $dig->clone->hexdigest . '@localhost';
+ $$mid0 = PublicInbox::Import::digest2mid($dig);
$num = $self->{skel}->{mm}->mid_insert($$mid0);
# fall back to a random Message-ID and give up determinism:
until (defined($num)) {
$dig->add(rand);
- $$mid0 = $dig->clone->hexdigest . '@localhost';
+ $$mid0 = PublicInbox::Import::digest2mid($dig);
warn "using random Message-ID <$$mid0> as fallback\n";
$num = $self->{skel}->{mm}->mid_insert($$mid0);
}
use PublicInbox::MDA;
use PublicInbox::Spawn qw(spawn);
use File::Temp qw//;
-use PublicInbox::MID qw(mids);
-use PublicInbox::ContentId qw(content_digest);
sub new {
my ($class, $config) = @_;
# path must be marked as (S)een
$path =~ /:2,[A-R]*S[T-Za-z]*\z/ or return;
my $mime = _path_to_mime($path) or return;
- _force_mid($mime);
$self->{config}->each_inbox(sub {
my ($ibx) = @_;
eval {
})
}
-sub _force_mid {
- my ($mime) = @_;
- my $hdr = $mime->header_obj;
- my $mids = mids($hdr);
- return if @$mids;
- my $dig = content_digest($mime);
- my $mid = $dig->clone->hexdigest . '@localhost';
- $hdr->header_set('Message-Id', $mid);
-}
-
sub _try_path {
my ($self, $path) = @_;
my @p = split(m!/+!, $path);
$mime = $ret;
}
- _force_mid($mime);
$im->add($mime, $self->{spamcheck});
}