about summary refs log tree commit homepage
path: root/lib/PublicInbox/LeiToMail.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-09-04 21:36:58 +0000
committerEric Wong <e@80x24.org>2021-09-04 23:33:06 +0000
commit09acfa0ba87514dac4802ca88b3c95bb53d15c04 (patch)
tree60c117b099564f06b54db089d698abbdc4aa6c41 /lib/PublicInbox/LeiToMail.pm
parent42420897bd81bf5664d5a93c5069dda4cb0459f1 (diff)
downloadpublic-inbox-09acfa0ba87514dac4802ca88b3c95bb53d15c04.tar.gz
We may be handling invalid mboxes, so just return no objects in
that case.  While "lei q" on HTTP(S) externals expects a gzipped
mboxrd, there's always a chance something else gzipped can be
sent to us.

There's also changes to lei_to_mail to better handle emails
which lack a body and/or headers (e.g. t/solve/bare.patch)

Link: https://public-inbox.org/meta/20210903151500.h72mzcpqixgtytjs@meerkat.local/
Diffstat (limited to 'lib/PublicInbox/LeiToMail.pm')
-rw-r--r--lib/PublicInbox/LeiToMail.pm21
1 files changed, 7 insertions, 14 deletions
diff --git a/lib/PublicInbox/LeiToMail.pm b/lib/PublicInbox/LeiToMail.pm
index 6e102a1d..1221d3c7 100644
--- a/lib/PublicInbox/LeiToMail.pm
+++ b/lib/PublicInbox/LeiToMail.pm
@@ -109,32 +109,25 @@ sub _mboxcl_common ($$$) {
         $$buf .= 'Content-Length: '.length($$bdy).$crlf.
                 'Lines: '.$lines.$crlf.$crlf;
         substr($$bdy, 0, 0, $$buf); # prepend header
-        $_[0] = $bdy;
+        $$bdy .= $crlf;
+        $bdy;
 }
 
 # mboxcl still escapes "From " lines
 sub eml2mboxcl {
         my ($eml, $smsg) = @_;
         my $buf = _mbox_hdr_buf($eml, 'mboxcl', $smsg);
-        my $crlf = $eml->{crlf};
-        if (my $bdy = delete $eml->{bdy}) {
-                $$bdy =~ s/^From />From /gm;
-                _mboxcl_common($buf, $bdy, $crlf);
-        }
-        $$buf .= $crlf;
-        $buf;
+        my $bdy = delete($eml->{bdy}) // \(my $empty = '');
+        $$bdy =~ s/^From />From /gm;
+        _mboxcl_common($buf, $bdy, $eml->{crlf});
 }
 
 # mboxcl2 has no "From " escaping
 sub eml2mboxcl2 {
         my ($eml, $smsg) = @_;
         my $buf = _mbox_hdr_buf($eml, 'mboxcl2', $smsg);
-        my $crlf = $eml->{crlf};
-        if (my $bdy = delete $eml->{bdy}) {
-                _mboxcl_common($buf, $bdy, $crlf);
-        }
-        $$buf .= $crlf;
-        $buf;
+        my $bdy = delete($eml->{bdy}) // \(my $empty = '');
+        _mboxcl_common($buf, $bdy, $eml->{crlf});
 }
 
 sub git_to_mail { # git->cat_async callback