about summary refs log tree commit homepage
path: root/lib/PublicInbox/NNTP.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-12-21 08:00:02 +0000
committerEric Wong <e@80x24.org>2019-12-22 03:56:11 +0000
commite85a1e240c1e5d3aee61ec287b18a340990ef466 (patch)
tree1d0822db99bc274e257f4ae1e175832e0d157a8c /lib/PublicInbox/NNTP.pm
parent207b89615a1a0c06dd9afc94ca2200b889dc35e1 (diff)
downloadpublic-inbox-e85a1e240c1e5d3aee61ec287b18a340990ef466.tar.gz
Introduce searchmsg_range_i, which does the same thing as
the anonymous sub it replaces.
Diffstat (limited to 'lib/PublicInbox/NNTP.pm')
-rw-r--r--lib/PublicInbox/NNTP.pm30
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index b80ab4a8..9e0c1df0 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -717,6 +717,20 @@ sub over_header_for {
         $smsg->{$field};
 }
 
+sub searchmsg_range_i {
+        my ($self, $beg, $end, $field) = @_;
+        my $over = $self->{ng}->over;
+        my $msgs = $over->query_xover($$beg, $end);
+        scalar(@$msgs) or return;
+        my $tmp = '';
+        foreach my $s (@$msgs) {
+                $tmp .= $s->{num} . ' ' . $s->$field . "\r\n";
+        }
+        utf8::encode($tmp);
+        $self->msg_more($tmp);
+        $$beg = $msgs->[-1]->{num} + 1;
+}
+
 sub hdr_searchmsg ($$$$) {
         my ($self, $xhdr, $field, $range) = @_;
         if (defined $range && $range =~ /\A<(.+)>\z/) { # Message-ID
@@ -726,24 +740,10 @@ sub hdr_searchmsg ($$$$) {
                 hdr_mid_response($self, $xhdr, $ng, $n, $range, $v);
         } else { # numeric range
                 $range = $self->{article} unless defined $range;
-                my $over = $self->{ng}->over;
-                my $mm = $self->{ng}->mm;
                 my $r = get_range($self, $range);
                 return $r unless ref $r;
-                my ($beg, $end) = @$r;
                 more($self, $xhdr ? r221 : r225);
-                my $cur = $$beg;
-                long_response($self, sub {
-                        my $msgs = $over->query_xover($cur, $end);
-                        my $nr = scalar @$msgs or return;
-                        my $tmp = '';
-                        foreach my $s (@$msgs) {
-                                $tmp .= $s->{num} . ' ' . $s->$field . "\r\n";
-                        }
-                        utf8::encode($tmp);
-                        $self->msg_more($tmp);
-                        $cur = $msgs->[-1]->{num} + 1;
-                });
+                long_response($self, \&searchmsg_range_i, @$r, $field);
         }
 }