lib/PublicInbox/LEI.pm | 6 ++++++ diff --git a/lib/PublicInbox/LEI.pm b/lib/PublicInbox/LEI.pm index 3ad5e01a67fcd52ce6ea44d38d09504a6941c02c..6f21da352a257b4e8cb6a1b97fb8105cd69eebaf 100644 --- a/lib/PublicInbox/LEI.pm +++ b/lib/PublicInbox/LEI.pm @@ -236,6 +236,7 @@ ); sub x_it ($$) { # pronounced "exit" my ($self, $code) = @_; + $self->{1}->autoflush(1); # make sure client sees stdout before exit if (my $sig = ($code & 127)) { kill($sig, $self->{pid} // $$); } else { @@ -635,6 +636,7 @@ } else { say $sock "timed out waiting to recv FDs"; return; } + $self->{2}->autoflush(1); # keep stdout buffered until x_it|DESTROY # $ARGV_STR = join("]\0[", @ARGV); # $ENV_STR = join('', map { "$_=$ENV{$_}\0" } keys %ENV); # $line = "$$\0\0>$ARGV_STR\0\0>$ENV_STR\0\0"; @@ -772,5 +774,9 @@ 2 => *STDERR{IO}, env => \%ENV }, __PACKAGE__), @ARGV); } + +# ensures stdout hits the FS before sock disconnects so a client +# can immediately reread it +sub DESTROY { $_[0]->{1}->autoflush(1) } 1;