]> Sergey Matveev's repositories - public-inbox.git/commitdiff
http: avoid recursion when hitting write count limit
authorEric Wong <e@80x24.org>
Sun, 19 Jun 2016 06:32:41 +0000 (06:32 +0000)
committerEric Wong <e@80x24.org>
Sun, 19 Jun 2016 06:33:10 +0000 (06:33 +0000)
Use the EvCleanup::asap handler to reschedule our writes
after yielding to other clients.

lib/PublicInbox/HTTP.pm

index 6df1c3fc566aebf1688fd3f1665542297279a684..e0ed2d15e95e6bba6eb3662ec5048619717affb5 100644 (file)
@@ -271,9 +271,12 @@ sub getline_response {
                while ($forward && defined(my $buf = $forward->getline)) {
                        $write->($buf);
                        last if $self->{closed};
-                       if ((--$n) <= 0 || $self->{write_buf_size}) {
+                       if ($self->{write_buf_size}) {
                                $self->write($self->{pull});
                                return;
+                       } elsif ((--$n) <= 0) {
+                               PublicInbox::EvCleanup::asap($self->{pull});
+                               return;
                        }
                }
                $self->{forward} = $self->{pull} = undef;