From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 3C0811FC9B for ; Sat, 28 Nov 2020 05:09:17 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 5/5] nntpd: remove redundant {groups} shortcut Date: Sat, 28 Nov 2020 05:09:16 +0000 Message-Id: <20201128050916.5586-6-e@80x24.org> In-Reply-To: <20201128050916.5586-1-e@80x24.org> References: <20201128050916.5586-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: It's not worth confusing hackers reading the source to have two ways to access the same (large) hash table. So just go through PublicInbox::Config objects for now since the extra hash lookup isn't going to be noticeable. I've also started favoring "for" instead of "foreach" since they're the equivalent perlop and less wear on my fingers + keyboard. --- lib/PublicInbox/NNTP.pm | 12 ++++++------ lib/PublicInbox/NNTPD.pm | 3 +-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index d314a3d1..3b16a66a 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -321,7 +321,7 @@ sub ngpat2re (;$) { sub newnews_i { my ($self, $names, $ts, $prev) = @_; my $ngname = $names->[0]; - if (my $ibx = $self->{nntpd}->{groups}->{$ngname}) { + if (my $ibx = $self->{nntpd}->{pi_config}->{-by_newsgroup}->{$ngname}) { if (my $over = $ibx->over) { my $msgs = $over->query_ts($ts, $$prev); if (scalar @$msgs) { @@ -360,13 +360,13 @@ sub cmd_newnews ($$$$;$$) { sub cmd_group ($$) { my ($self, $group) = @_; - my $no_such = '411 no such news group'; my $nntpd = $self->{nntpd}; - my $ng = $nntpd->{groups}->{$group} or return $no_such; + my $ibx = $nntpd->{pi_config}->{-by_newsgroup}->{$group} or + return '411 no such news group'; $nntpd->idler_start; - $self->{ng} = $ng; - my ($min, $max) = $ng->mm->minmax; + $self->{ng} = $ibx; + my ($min, $max) = $ibx->mm->minmax; $self->{article} = $min; my $est_size = $max - $min; "211 $est_size $min $max $group"; @@ -743,7 +743,7 @@ EOF } # no warning here, $mid is just invalid } else { # slow path for non-ALL users - foreach my $ibx (values %{$self->{nntpd}->{groups}}) { + for my $ibx (values %{$pi_cfg->{-by_newsgroup}}) { next if defined $self_ng && $ibx eq $self_ng; my $n = $ibx->mm->num_for($mid); return ($ibx, $n) if defined $n; diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm index 33bc5fda..5e287857 100644 --- a/lib/PublicInbox/NNTPD.pm +++ b/lib/PublicInbox/NNTPD.pm @@ -60,9 +60,8 @@ sub refresh_groups { } }); $self->{groupnames} = [ sort(keys %$groups) ]; - $self->{pi_config} = $pi_config; # this will destroy old groups that got deleted - $self->{groups} = $groups; + $self->{pi_config} = $pi_config; } sub idler_start {