]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Emergency.pm
treewide: run update-copyrights from gnulib for 2019
[public-inbox.git] / lib / PublicInbox / Emergency.pm
index 231b419741638c0a65059fd97f844a98b5e6c0c5..02900bb17d11bb4f34c85546dee47ba65b99dd6b 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2016-2018 all contributors <meta@public-inbox.org>
+# Copyright (C) 2016-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 #
 # Emergency Maildir delivery for MDA
@@ -7,7 +7,7 @@ use strict;
 use warnings;
 use Fcntl qw(:DEFAULT SEEK_SET);
 use Sys::Hostname qw(hostname);
-use IO::Handle;
+use IO::Handle; # ->flush, ->autoflush
 
 sub new {
        my ($class, $dir) = @_;
@@ -18,7 +18,7 @@ sub new {
                next if -d $d;
                -d $d or mkdir($d) or die "failed to mkdir($d): $!\n";
        }
-       bless { dir => $dir, files => {}, t => 0, cnt => 0 }, $class;
+       bless { dir => $dir, files => {}, t => 0, cnt => 0, pid => $$ }, $class;
 }
 
 sub _fn_in {
@@ -75,6 +75,7 @@ sub fh {
 
 sub commit {
        my ($self) = @_;
+       $$ == $self->{pid} or return; # no-op in forked child
 
        delete $self->{fh};
        my $tmp = delete $self->{tmp} or return;