From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 585EA1F4BB for ; Mon, 24 Jun 2019 02:58:08 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 45/57] nntp: reduce allocations for greeting Date: Mon, 24 Jun 2019 02:52:46 +0000 Message-Id: <20190624025258.25592-46-e@80x24.org> In-Reply-To: <20190624025258.25592-1-e@80x24.org> References: <20190624025258.25592-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: 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; } -- EW