]> Sergey Matveev's repositories - public-inbox.git/commitdiff
nntp: art_lookup: use mid_lookup and simplify
authorEric Wong <e@80x24.org>
Sat, 28 Nov 2020 05:09:14 +0000 (05:09 +0000)
committerEric Wong <e@80x24.org>
Sun, 29 Nov 2020 02:25:50 +0000 (02:25 +0000)
This lets us take advantage of mid_lookup speedup from the
previous commit.

While we're at it, start moving towards using `$ibx' as the
abbreviation for PublicInbox::Inbox objects even in the NNTP
code, since they've been shared with the WWW code for several
years, now.

lib/PublicInbox/NNTP.pm

index 7b3b1ffe98eb99fe8a00a4186c207ca70d203a9b..c014eff0a4e48b5685c3a10abfe5a4a876b0c493 100644 (file)
@@ -483,42 +483,30 @@ sub set_nntp_headers ($$) {
 
 sub art_lookup ($$$) {
        my ($self, $art, $code) = @_;
-       my $ng = $self->{ng};
-       my ($n, $mid);
+       my ($ibx, $n);
        my $err;
        if (defined $art) {
                if ($art =~ /\A[0-9]+\z/) {
                        $err = '423 no such article number in this group';
                        $n = int($art);
-                       goto find_mid;
+                       goto find_ibx;
                } elsif ($art =~ $ONE_MSGID) {
-                       $mid = $1;
-                       $err = r430;
-                       $n = $ng->mm->num_for($mid) if $ng;
-                       goto found if defined $n;
-                       foreach my $g (values %{$self->{nntpd}->{groups}}) {
-                               $n = $g->mm->num_for($mid);
-                               if (defined $n) {
-                                       $ng = $g;
-                                       goto found;
-                               }
-                       }
-                       return $err;
+                       ($ibx, $n) = mid_lookup($self, $1);
+                       goto found if $ibx;
+                       return r430;
                } else {
                        return r501;
                }
        } else {
                $err = '420 no current article has been selected';
-               $n = $self->{article};
-               defined $n or return $err;
-find_mid:
-               $ng or return '412 no newsgroup has been selected';
-               $mid = $ng->mm->mid_for($n);
-               defined $mid or return $err;
+               $n = $self->{article} // return $err;
+find_ibx:
+               $ibx = $self->{ng} or
+                               return '412 no newsgroup has been selected';
        }
 found:
-       my $smsg = $ng->over->get_art($n) or return $err;
-       $smsg->{-ibx} = $ng;
+       my $smsg = $ibx->over->get_art($n) or return $err;
+       $smsg->{-ibx} = $ibx;
        if ($code == 223) { # STAT
                set_art($self, $n);
                "223 $n <$smsg->{mid}> article retrieved - " .
@@ -528,7 +516,7 @@ found:
                $smsg->{nntp_code} = $code;
                set_art($self, $art);
                # this dereferences to `undef'
-               ${git_async_cat($ng->git, $smsg->{blob}, \&blob_cb, $smsg)};
+               ${git_async_cat($ibx->git, $smsg->{blob}, \&blob_cb, $smsg)};
        }
 }