From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 12B301FEAA for ; Sun, 19 Jun 2016 06:32:42 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] http: avoid recursion when hitting write count limit Date: Sun, 19 Jun 2016 06:32:41 +0000 Message-Id: <20160619063241.27195-1-e@80x24.org> List-Id: Use the EvCleanup::asap handler to reschedule our writes after yielding to other clients. --- lib/PublicInbox/HTTP.pm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/PublicInbox/HTTP.pm b/lib/PublicInbox/HTTP.pm index 6df1c3f..e0ed2d1 100644 --- a/lib/PublicInbox/HTTP.pm +++ b/lib/PublicInbox/HTTP.pm @@ -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; -- EW