]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/LEI.pm
lei: wire up pure Perl sendmsg/recvmsg for Linux users
[public-inbox.git] / lib / PublicInbox / LEI.pm
index 4e0295fa4e8a18200aa67719b3281add5b5a696e..4bd9183e969247da542c2c70a8b4d9935c8b8733 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
+# Copyright (C) all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 
 # Backend for `lei' (local email interface).  Unlike the C10K-oriented
@@ -1149,6 +1149,7 @@ sub event_step {
                if (scalar(@fds) == 1 && !defined($fds[0])) {
                        return if $! == EAGAIN;
                        die "recvmsg: $!" if $! != ECONNRESET;
+                       $buf = '';
                        @fds = (); # for open loop below:
                }
                for (@fds) { open my $rfh, '+<&=', $_ }
@@ -1276,6 +1277,9 @@ sub lazy_start {
                        require PublicInbox::CmdIPC4;
                        $send_cmd = PublicInbox::CmdIPC4->can('send_cmd4');
                        PublicInbox::CmdIPC4->can('recv_cmd4');
+               } // do {
+                       $send_cmd = PublicInbox::Syscall->can('send_cmd4');
+                       PublicInbox::Syscall->can('recv_cmd4');
                };
        }
        $recv_cmd or die <<"";
@@ -1502,11 +1506,11 @@ sub git_oid {
 }
 
 sub lms {
-       my ($lei, $rw) = @_;
+       my ($lei, $creat) = @_;
        my $sto = $lei->{sto} // _lei_store($lei) // return;
        require PublicInbox::LeiMailSync;
        my $f = "$sto->{priv_eidx}->{topdir}/mail_sync.sqlite3";
-       (-f $f || $rw) ? PublicInbox::LeiMailSync->new($f) : undef;
+       (-f $f || $creat) ? PublicInbox::LeiMailSync->new($f) : undef;
 }
 
 sub sto_done_request {