From: Eric Wong Date: Mon, 24 Jun 2019 02:52:46 +0000 (+0000) Subject: nntp: reduce allocations for greeting X-Git-Tag: v1.2.0~156^2~14 X-Git-Url: http://www.git.stargrave.org/?p=public-inbox.git;a=commitdiff_plain;h=6ea82fb5d6cd5ae6813f3700fe915ab9110086ea nntp: reduce allocations for greeting 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. --- diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index 53de2bca..12ce4e68 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -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); diff --git a/lib/PublicInbox/NNTPD.pm b/lib/PublicInbox/NNTPD.pm index 6d9ffd5f..4f30c5d9 100644 --- a/lib/PublicInbox/NNTPD.pm +++ b/lib/PublicInbox/NNTPD.pm @@ -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; }