- sub { $self->watch_read(1) }
-}
-
-sub main_cb ($$$) {
- my ($http, $fh, $bref) = @_;
- sub {
- my ($self) = @_;
- my $r = sysread($self->{sock}, $$bref, 8192);
+ if (defined $self->{cb}) {
+ # this may call async_pass when headers are done
+ $self->{cb}->($self->{arg});
+ } elsif (my $sock = $self->{sock}) {
+ # $http may be undef if discarding body output from cgit on 404
+ my $http = $self->{http} or return $self->close;
+ # $self->{sock} is a read pipe for git-http-backend or cgit
+ # and 65536 is the default Linux pipe size
+ my $r = sysread($sock, my $buf, 65536);