X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=blobdiff_plain;f=lib%2FPublicInbox%2FNNTPD.pm;h=6e79f0be697fc909ac49ad301b54a4447eebfdc6;hp=953228d0287823ea691e461fb5fae5b86f8c6e99;hb=9b0c238f887475d920a8589b492ec15c63770152;hpb=0d38f65c490466837ae091afa7a7b6f59d04ce7c
diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm
index 953228d0..6e79f0be 100644
--- a/lib/PublicInbox/NNTPD.pm
+++ b/lib/PublicInbox/NNTPD.pm
@@ -1,14 +1,15 @@
-# Copyright (C) 2016-2020 all contributors
+# Copyright (C) all contributors
# License: AGPL-3.0+
# represents an NNTPD (currently a singleton),
# see script/public-inbox-nntpd for how it is used
package PublicInbox::NNTPD;
use strict;
-use warnings;
+use v5.10.1;
use Sys::Hostname;
use PublicInbox::Config;
use PublicInbox::InboxIdle;
+use PublicInbox::NNTPdeflate; # loads PublicInbox::NNTP
sub new {
my ($class) = @_;
@@ -36,10 +37,12 @@ sub refresh_groups {
my ($self, $sig) = @_;
my $pi_cfg = $sig ? PublicInbox::Config->new : $self->{pi_cfg};
my $groups = $pi_cfg->{-by_newsgroup}; # filled during each_inbox
+ my $cache = eval { $pi_cfg->ALL->misc->nntpd_cache_load } // {};
$pi_cfg->each_inbox(sub {
my ($ibx) = @_;
- my $ngname = $ibx->{newsgroup};
- if (defined($ngname) && $ibx->nntp_usable) {
+ my $ngname = $ibx->{newsgroup} // return;
+ my $ce = $cache->{$ngname};
+ if (($ce and (%$ibx = (%$ibx, %$ce))) || $ibx->nntp_usable) {
# only valid if msgmap and over works
# preload to avoid fragmentation:
$ibx->description;
@@ -52,7 +55,7 @@ sub refresh_groups {
# run in the same process someday.
}
});
- $self->{groupnames} = [ sort(keys %$groups) ];
+ @{$self->{groupnames}} = sort(keys %$groups);
# this will destroy old groups that got deleted
$self->{pi_cfg} = $pi_cfg;
}