]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www+nntp: deal with lack of addresses for ->ALL
authorEric Wong <e@80x24.org>
Wed, 9 Dec 2020 23:33:00 +0000 (23:33 +0000)
committerEric Wong <e@80x24.org>
Thu, 10 Dec 2020 06:39:29 +0000 (06:39 +0000)
Since extindex is an amalgamation of several inboxes, discerning
an appropriate address for List-Post: would be expensive and
most likely unnecessary.  Some legacy/historical inboxes may
have no active address, either, so don't attempt to set the
List-Post header if no addresses are configured.

lib/PublicInbox/Mbox.pm
lib/PublicInbox/NNTP.pm
lib/PublicInbox/WwwStream.pm

index 64de8c72bb0afe3f7c87b45d993a88286501170d..c88350c90599e1b2739f05f5a3c87a856c61b854 100644 (file)
@@ -106,7 +106,6 @@ sub msg_hdr ($$;$) {
        my @append = (
                'Archived-At', "<$base$mid/>",
                'List-Archive', "<$base>",
-               'List-Post', "<mailto:$ibx->{-primary_address}>",
        );
        my $crlf = $header_obj->crlf;
        my $buf = $header_obj->as_string;
@@ -118,13 +117,11 @@ sub msg_hdr ($$;$) {
                my $k = $append[$i];
                my $v = $append[$i + 1];
                my @v = $header_obj->header_raw($k);
-               foreach (@v) {
-                       if ($v eq $_) {
-                               $v = undef;
-                               last;
-                       }
-               }
-               $buf .= "$k: $v$crlf" if defined $v;
+               $buf .= "$k: $v$crlf" if !grep(/\A\Q$v\E\z/, @v);
+       }
+       my $post_addr = $ibx->{-primary_address};
+       if ($post_addr && $header_obj->header_raw('List-Post')) {
+               $buf .= "List-Post: <mailto:$post_addr>$crlf";
        }
        $buf .= $crlf;
 }
index 0b43cdbc5b9308378d953b250e45f3e8da398ea6..097fdb843fa663e2414b5393cd8196e7fbf4afc4 100644 (file)
@@ -487,8 +487,9 @@ sub set_nntp_headers ($$) {
        # *something* here is required for leafnode, try to follow
        # RFC 5536 3.1.5...
        $hdr->header_set('Path', $server_name . '!not-for-mail');
-
-       header_append($hdr, 'List-Post', "<mailto:$ibx->{-primary_address}>");
+       if (my $post_addr = $ibx->{-primary_address}) {
+               header_append($hdr, 'List-Post', "<mailto:$post_addr>");
+       }
        if (my $url = $ibx->base_url) {
                $mid = mid_escape($mid);
                header_append($hdr, 'Archived-At', "<$url$mid/>");
index 34e124358d5e588cfae0f8f9cbfb730e33ee921c..66e34a12e885c12c95454933cb42f5082545c53e 100644 (file)
@@ -143,10 +143,10 @@ EOF
        }
 
        $urls .= "\n" . join('', map { "\tgit clone --mirror $_\n" } @urls);
-       my $addrs = $ibx->{address};
-       $addrs = join(' ', @$addrs) if ref($addrs) eq 'ARRAY';
-       my $v = defined $max ? '-V2' : '-V1';
-       $urls .= <<EOF;
+       if (my $addrs = $ibx->{address}) {
+               $addrs = join(' ', @$addrs) if ref($addrs) eq 'ARRAY';
+               my $v = defined $max ? '-V2' : '-V1';
+               $urls .= <<EOF;
 
        # If you have public-inbox 1.1+ installed, you may
        # initialize and index your mirror using the following commands:
@@ -154,6 +154,7 @@ EOF
                $addrs
        public-inbox-index $dir
 EOF
+       }
        my $cfg_link = ($ctx->{-upfx} // '').'_/text/config/raw';
        $urls .= <<EOF;