about summary refs log tree commit homepage
path: root/lib
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-09-22 10:09:45 +0000
committerEric Wong <e@80x24.org>2015-09-22 22:12:18 +0000
commit8a78da1a439938d9064775d27bb4dac6fd221220 (patch)
treec03d49c323e51654aa0e8ebd67d14cc34b7dc88b /lib
parent10d537f2e8eac6b25b45f1cbf4e6f85786356b32 (diff)
downloadpublic-inbox-8a78da1a439938d9064775d27bb4dac6fd221220.tar.gz
These are internal metadata should be calculated, so avoid
leaking it into the header.
Diffstat (limited to 'lib')
-rw-r--r--lib/PublicInbox/NNTP.pm24
1 files changed, 9 insertions, 15 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 71b774d2..e5bb683a 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -374,18 +374,16 @@ found:
         my $bytes;
         my $s = eval { Email::MIME->new($ng->gcf->cat_file($o, \$bytes)) };
         return $err unless $s;
+        my $lines;
         if ($set_headers) {
                 $s->header_set('Newsgroups', $ng->{name});
-                $s->header_set('Lines', $s->body =~ tr!\n!\n!);
                 $s->header_set('Xref', xref($ng, $n));
+                $lines = $s->body =~ tr!\n!\n!;
 
                 # must be last
-                if ($set_headers == 2) {
-                        $s->header_set('Bytes', $bytes);
-                        $s->body_set('');
-                }
+                $s->body_set('') if ($set_headers == 2);
         }
-        [ $n, $mid, $s ];
+        [ $n, $mid, $s, $bytes, $lines ];
 }
 
 sub simple_body_write ($$) {
@@ -399,13 +397,6 @@ sub simple_body_write ($$) {
         '.'
 }
 
-sub header_str ($) {
-        my ($s) = @_;
-        my $h = $s->header_obj;
-        $h->header_set('Bytes');
-        $h->as_string
-}
-
 sub set_art {
         my ($self, $art) = @_;
         $self->{article} = $art if defined $art && $art =~ /\A\d+\z/;
@@ -418,7 +409,7 @@ sub cmd_article ($;$) {
         my ($n, $mid, $s) = @$r;
         set_art($self, $art);
         more($self, "220 $n <$mid> article retrieved - head and body follow");
-        do_more($self, header_str($s));
+        do_more($self, $s->header_obj->as_string);
         do_more($self, "\r\n");
         simple_body_write($self, $s);
 }
@@ -430,7 +421,7 @@ sub cmd_head ($;$) {
         my ($n, $mid, $s) = @$r;
         set_art($self, $art);
         more($self, "221 $n <$mid> article retrieved - head follows");
-        do_more($self, header_str($s));
+        do_more($self, $s->header_obj->as_string);
         '.'
 }
 
@@ -486,6 +477,9 @@ sub get_range ($$) {
 
 sub xhdr ($$) {
         my ($r, $header) = @_;
+        $header = lc $header;
+        return $r->[3] if ($header eq 'bytes');
+        return $r->[4] if ($header eq 'lines');
         $r = $r->[2]->header_obj->header($header);
         defined $r or return;
         $r =~ s/[\r\n\t]+/ /sg;