about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/NNTP.pm4
-rw-r--r--lib/PublicInbox/NNTPD.pm10
-rw-r--r--t/nntp.t3
-rw-r--r--t/nntpd.t9
4 files changed, 20 insertions, 6 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index cdbd8e98..cbd4ecf1 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -94,7 +94,7 @@ sub new ($$$) {
         my $self = fields::new($class);
         $self->SUPER::new($sock);
         $self->{nntpd} = $nntpd;
-        res($self, '201 server ready - post via email');
+        res($self, '201 ' . $nntpd->{servername} . ' ready - post via email');
         $self->{rbuf} = '';
         $self->watch_read(1);
         update_idle_time($self);
@@ -410,7 +410,7 @@ sub header_append ($$$) {
 
 sub xref ($$$$) {
         my ($self, $ng, $n, $mid) = @_;
-        my $ret = "$ng->{domain} $ng->{newsgroup}:$n";
+        my $ret = $self->{nntpd}->{servername} . " $ng->{newsgroup}:$n";
 
         # num_for is pretty cheap and sometimes we'll lookup the existence
         # of an article without getting even the OVER info.  In other words,
diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm
index 117c9c03..32848d7c 100644
--- a/lib/PublicInbox/NNTPD.pm
+++ b/lib/PublicInbox/NNTPD.pm
@@ -6,15 +6,25 @@
 package PublicInbox::NNTPD;
 use strict;
 use warnings;
+use Sys::Hostname;
 require PublicInbox::Config;
 
 sub new {
         my ($class) = @_;
+        my $pi_config = PublicInbox::Config->new;
+        my $name = $pi_config->{'publicinbox.nntpserver'};
+        if (!defined($name) or $name eq '') {
+                $name = hostname;
+        } elsif (ref($name) eq 'ARRAY') {
+                $name = $name->[0];
+        }
+
         bless {
                 groups => {},
                 err => \*STDERR,
                 out => \*STDOUT,
                 grouplist => [],
+                servername => $name,
         }, $class;
 }
 
diff --git a/t/nntp.t b/t/nntp.t
index 57fef48b..6df7db89 100644
--- a/t/nntp.t
+++ b/t/nntp.t
@@ -110,7 +110,8 @@ use_ok 'PublicInbox::Inbox';
         my $mid = 'a@b';
         my $mime = Email::MIME->new("Message-ID: <$mid>\r\n\r\n");
         my $hdr = $mime->header_obj;
-        my $mock_self = { nntpd => { grouplist => [] } };
+        my $mock_self = { nntpd => { grouplist => [],
+                                     servername => 'example.com' } };
         PublicInbox::NNTP::set_nntp_headers($mock_self, $hdr, $ng, 1, $mid);
         is_deeply([ $mime->header('Message-ID') ], [ "<$mid>" ],
                 'Message-ID unchanged');
diff --git a/t/nntpd.t b/t/nntpd.t
index 960e83c1..f8599080 100644
--- a/t/nntpd.t
+++ b/t/nntpd.t
@@ -16,6 +16,7 @@ use Fcntl qw(FD_CLOEXEC F_SETFD F_GETFD);
 use Socket qw(SO_KEEPALIVE IPPROTO_TCP TCP_NODELAY);
 use File::Temp qw/tempdir/;
 use Net::NNTP;
+use Sys::Hostname;
 
 my $tmpdir = tempdir('pi-nntpd-XXXXXX', TMPDIR => 1, CLEANUP => 1);
 my $home = "$tmpdir/pi-home";
@@ -140,13 +141,14 @@ EOF
                 'from' => "El\xc3\xa9anor <me\@example.com>",
                 'to' => "El\xc3\xa9anor <you\@example.com>",
                 'cc' => $addr,
-                'xref' => "example.com $group:1",
+                'xref' => hostname . " $group:1",
                 'references' => '<reftabsqueezed>',
         );
 
         my $s = IO::Socket::INET->new(%opts);
         sysread($s, my $buf, 4096);
-        is($buf, "201 server ready - post via email\r\n", 'got greeting');
+        is($buf, "201 " . hostname . " ready - post via email\r\n",
+                'got greeting');
         $s->autoflush(1);
 
         ok(syswrite($s, "   \r\n"), 'wrote spaces');
@@ -156,7 +158,8 @@ EOF
 
         $s = IO::Socket::INET->new(%opts);
         sysread($s, $buf, 4096);
-        is($buf, "201 server ready - post via email\r\n", 'got greeting');
+        is($buf, "201 " . hostname . " ready - post via email\r\n",
+                'got greeting');
         $s->autoflush(1);
 
         syswrite($s, "NEWGROUPS 19990424 000000 GMT\r\n");