about summary refs log tree commit homepage
path: root/lib/PublicInbox/NNTP.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/NNTP.pm')
-rw-r--r--lib/PublicInbox/NNTP.pm11
1 files changed, 5 insertions, 6 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 9f0dfaaa..35729f00 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -616,20 +616,19 @@ sub long_step {
                 # each other's data
                 $self->zflush;
 
-                # no recursion, schedule another call ASAP
-                # but only after all pending writes are done
-                my $wbuf = $self->{wbuf} ||= [];
-                push @$wbuf, \&long_step;
+                # no recursion, schedule another call ASAP, but only after
+                # all pending writes are done.  autovivify wbuf:
+                my $new_size = push(@{$self->{wbuf}}, \&long_step);
 
                 # wbuf may be populated by $cb, no need to rearm if so:
-                $self->requeue if scalar(@$wbuf) == 1;
+                $self->requeue if $new_size == 1;
         } else { # all done!
                 delete $self->{long_cb};
                 res($self, '.');
                 my $elapsed = now() - $t0;
                 my $fd = fileno($self->{sock});
                 out($self, " deferred[$fd] done - %0.6f", $elapsed);
-                my $wbuf = $self->{wbuf};
+                my $wbuf = $self->{wbuf}; # do NOT autovivify
                 $self->requeue unless $wbuf && @$wbuf;
         }
 }