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 | 13 +++++-------- lib/PublicInbox/NNTP.pm | 5 +++-- lib/PublicInbox/WwwStream.pm | 9 +++++---- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/PublicInbox/Mbox.pm b/lib/PublicInbox/Mbox.pm index 64de8c72..c88350c9 100644 --- a/lib/PublicInbox/Mbox.pm +++ b/lib/PublicInbox/Mbox.pm @@ -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; } diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index 0b43cdbc..097fdb84 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -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/>"); diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm index 34e12435..66e34a12 100644 --- a/lib/PublicInbox/WwwStream.pm +++ b/lib/PublicInbox/WwwStream.pm @@ -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;