lib/PublicInbox/GitCatFile.pm | 3 ++- lib/PublicInbox/NNTP.pm | 5 +++-- diff --git a/lib/PublicInbox/GitCatFile.pm b/lib/PublicInbox/GitCatFile.pm index 4f16762e56c8959eaaed4c7d91d3a7e647f7e729..dd3f2912cc2715d6a9ffd8449b2adce883db48a6 100644 --- a/lib/PublicInbox/GitCatFile.pm +++ b/lib/PublicInbox/GitCatFile.pm @@ -38,7 +38,7 @@ $self->{pid} = $pid; } sub cat_file { - my ($self, $object) = @_; + my ($self, $object, $sizeref) = @_; $object .= "\n"; my $len = bytes::length($object); @@ -58,6 +58,7 @@ $head =~ /^[0-9a-f]{40} \S+ (\d+)$/ or die "Unexpected result from git cat-file: $head\n"; my $size = $1; + $$sizeref = $size if $sizeref; my $bytes_left = $size; my $offset = 0; my $rv = ''; diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index d5eb4971b845568fa8fbbe8482eff2201889f202..fb93330b43aaffa18374def94d77935acf2f9ccc 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -366,7 +366,8 @@ defined $mid or return $err; } found: my $o = 'HEAD:' . mid2path($mid); - my $s = eval { Email::Simple->new($ng->gcf->cat_file($o)) }; + my $bytes; + my $s = eval { Email::Simple->new($ng->gcf->cat_file($o, \$bytes)) }; return $err unless $s; if ($set_headers) { $s->header_set('Newsgroups', $ng->{name}); @@ -375,7 +376,7 @@ $s->header_set('Xref', xref($ng, $n)); # must be last if ($set_headers == 2) { - $s->header_set('Bytes', bytes::length($s->as_string)); + $s->header_set('Bytes', $bytes); $s->body_set(''); } }