]> Sergey Matveev's repositories - public-inbox.git/commitdiff
nntp: reduce allocations for greeting
authorEric Wong <e@80x24.org>
Mon, 24 Jun 2019 02:52:46 +0000 (02:52 +0000)
committerEric Wong <e@80x24.org>
Mon, 24 Jun 2019 05:26:27 +0000 (05:26 +0000)
No need to allocate a new PerlIO::scalar filehandle for every
client, instead we can now pass the same CODE reference which
calls DS->write on a reused string reference.

lib/PublicInbox/NNTP.pm
lib/PublicInbox/NNTPD.pm

index 53de2bca2495c7b49b4369dbc1a94ebae7fa41fc..12ce4e687f574e655e9201fda255552f7241ebb1 100644 (file)
@@ -101,6 +101,8 @@ sub expire_old () {
        }
 }
 
+sub greet ($) { $_[0]->write($_[0]->{nntpd}->{greet}) };
+
 sub new ($$$) {
        my ($class, $sock, $nntpd) = @_;
        my $self = fields::new($class);
@@ -113,9 +115,7 @@ sub new ($$$) {
        }
        $self->SUPER::new($sock, $ev);
        $self->{nntpd} = $nntpd;
-       my $greet = "201 $nntpd->{servername} ready - post via email\r\n";
-       open my $fh, '<:scalar',  \$greet or die "open :scalar: $!";
-       push @$wbuf, $fh;
+       push @$wbuf, \&greet;
        $self->{wbuf} = $wbuf;
        $self->{rbuf} = '';
        update_idle_time($self);
index 6d9ffd5ffe03b687c863ec5b930f796b9d1dc9f4..4f30c5d9aede1cdbedab3a11bf4b84f4edd8c7e5 100644 (file)
@@ -25,6 +25,7 @@ sub new {
                out => \*STDOUT,
                grouplist => [],
                servername => $name,
+               greet => \"201 $name ready - post via email\r\n",
                # accept_tls => { SSL_server => 1, ..., SSL_reuse_ctx => ... }
        }, $class;
 }