From 3667c96f84a39c8fbfaf4cef37f58a9db06bb4b3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 24 Jun 2019 02:52:49 +0000 Subject: ds: flush_write runs ->write callbacks even if closed We may need to rely on cleanup code running in enqueued callbacks, so ensure we call it when flush_write happens. --- lib/PublicInbox/DS.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/PublicInbox/DS.pm') diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 8f77ce24..d38e2d20 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -442,13 +442,13 @@ sub psendfile ($$$) { sub flush_write ($) { my ($self) = @_; my $wbuf = $self->{wbuf} or return 1; - my $sock = $self->{sock} or return 1; + my $sock = $self->{sock}; next_buf: while (my $bref = $wbuf->[0]) { if (ref($bref) ne 'CODE') { my $off = delete($self->{wbuf_off}) // 0; - while (1) { + while ($sock) { my $w = psendfile($sock, $bref, \$off); if (defined $w) { if ($w == 0) { -- cgit v1.2.3-24-ge0c7