return if $_[0] eq '';
more($self, sprintf("%x\r\n", bytes::length($_[0])));
more($self, $_[0]);
- $self->write("\r\n");
+
+ # use $self->write("\n\n") if you care about real-time
+ # streaming responses, public-inbox WWW does not.
+ more($self, "\r\n");
}
}
my $forward = $self->{forward};
# limit our own running time for fairness with other
# clients and to avoid buffering too much:
- my $n = 100;
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;
+ } else {
+ PublicInbox::EvCleanup::asap($self->{pull});
}
+ return;
}
$self->{forward} = $self->{pull} = undef;
$forward->close if $forward; # avoid recursion