From 6ea82fb5d6cd5ae6813f3700fe915ab9110086ea Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Mon, 24 Jun 2019 02:52:46 +0000 Subject: 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. --- lib/PublicInbox/NNTP.pm | 6 +++--- lib/PublicInbox/NNTPD.pm | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) 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; } -- cgit v1.2.3-24-ge0c7