lib/PublicInbox/LeiInput.pm | 4 ++++ t/lei-import.t | 10 ++++++++++ diff --git a/lib/PublicInbox/LeiInput.pm b/lib/PublicInbox/LeiInput.pm index c62b0893b000c05fdfd0050be489a01dc83e10bb..859fdb110636f9847136e9724161180e3e5a3765 100644 --- a/lib/PublicInbox/LeiInput.pm +++ b/lib/PublicInbox/LeiInput.pm @@ -32,6 +32,10 @@ my $buf = do { local $/; <$fh> } // return $self->{lei}->child_error(1 << 8, <<""); error reading $name: $! + # mutt pipes single RFC822 messages with a "From " line, + # but no Content-Length or "From " escaping. + # "git format-patch" also generates such files by default. + $buf =~ s/\A[\r\n]*From [^\r\n]*\r?\n//s; $self->eml_cb(PublicInbox::Eml->new(\$buf), @args); } else { # prepare_inputs already validated $ifmt diff --git a/t/lei-import.t b/t/lei-import.t index e0b517f4d2f41bc36b91a72308795c8955e7471f..eef1e4e2d621a78c65fc3449b04454f3cf15e1f5 100644 --- a/t/lei-import.t +++ b/t/lei-import.t @@ -29,6 +29,16 @@ } lei_ok(qw(import -F eml), 't/data/message_embed.eml', \'import single file by path'); +lei_ok(qw(q m:testmessage@example.com)); +is($lei_out, "[null]\n", 'no results, yet'); +my $oid = '9bf1002c49eb075df47247b74d69bcd555e23422'; +my $eml = eml_load('t/utf8.eml'); +my $in = 'From x@y Fri Oct 2 00:00:00 1993'."\n".$eml->as_string; +lei_ok([qw(import -F eml -)], undef, { %$lei_opt, 0 => \$in }); +lei_ok(qw(q m:testmessage@example.com)); +is(json_utf8->decode($lei_out)->[0]->{'blob'}, $oid, + 'got expected OID w/o From'); + my $str = <<''; From: a@b Message-ID: