about summary refs log tree commit homepage
diff options
context:
space:
mode:
-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);
         }
 }