about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-06-24 02:52:37 +0000
committerEric Wong <e@80x24.org>2019-06-24 05:26:26 +0000
commit93fc0336d39ba3ef07b479877e64371f07c86eab (patch)
treecc86f8e17cae6dfc435eb9e9fcaca3d414aa1a6b
parent03b8f86532a29d0cb129ff6e8d3ddf2d51deb2f8 (diff)
downloadpublic-inbox-93fc0336d39ba3ef07b479877e64371f07c86eab.tar.gz
This will be needed for NNTPS support, since we need
to negotiate the TLS connection before writing the
greeting and we can reuse the existing buffer layer
to enqueue writes.
-rw-r--r--lib/PublicInbox/NNTP.pm8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 468a22f5..a18641d3 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -24,7 +24,7 @@ use constant {
         r225 =>        '225 Headers follow (multi-line)',
         r430 => '430 No article with that message-id',
 };
-use PublicInbox::Syscall qw(EPOLLIN EPOLLONESHOT);
+use PublicInbox::Syscall qw(EPOLLOUT EPOLLONESHOT);
 use Errno qw(EAGAIN);
 
 my @OVERVIEW = qw(Subject From Date Message-ID References Xref);
@@ -98,9 +98,11 @@ sub expire_old () {
 sub new ($$$) {
         my ($class, $sock, $nntpd) = @_;
         my $self = fields::new($class);
-        $self->SUPER::new($sock, EPOLLIN | EPOLLONESHOT);
+        $self->SUPER::new($sock, EPOLLOUT | EPOLLONESHOT);
         $self->{nntpd} = $nntpd;
-        res($self, '201 ' . $nntpd->{servername} . ' ready - post via email');
+        my $greet = "201 $nntpd->{servername} ready - post via email\r\n";
+        open my $fh, '<:scalar',  \$greet or die "open :scalar: $!";
+        $self->{wbuf} = [ $fh ];
         $self->{rbuf} = '';
         update_idle_time($self);
         $expt ||= PublicInbox::EvCleanup::later(*expire_old);