return event_read_input($self) if defined $self->{env};
- my $off = $self->{rbuf} eq '' ? 0 : length($self->{rbuf});
+ my $off = length($self->{rbuf});
my $r = sysread($self->{sock}, $self->{rbuf}, 8192, $off);
if (defined $r) {
return $self->close if $r == 0;
my ($self) = @_;
$self->watch_read(0);
my $env = $self->{env};
- $self->{env} = undef;
$env->{REMOTE_ADDR} = $self->peer_ip_string; # Danga::Socket
$env->{REMOTE_PORT} = $self->{peer_port}; # set by peer_ip_string
if (my $host = $env->{HTTP_HOST}) {
} else {
$self->write(sub { $self->close });
}
+ $self->{env} = undef;
};
if (defined $res->[2]) {
sub event_hup { $_[0]->close }
sub event_err { $_[0]->close }
+# for graceful shutdown in PublicInbox::Daemon:
+sub busy () {
+ my ($self) = @_;
+ ($self->{rbuf} ne '' || $self->{env} || $self->{write_buf_size});
+}
+
1;