about summary refs log tree commit homepage
path: root/lib/PublicInbox/NNTP.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2019-06-28 07:37:26 +0000
committerEric Wong <e@80x24.org>2019-06-29 19:59:00 +0000
commitdf815ac5b2614f7278ca747750ea7e92ecd0986c (patch)
treeca9cae5e61aa31666ee8ceb6cdb2d562e395b79d /lib/PublicInbox/NNTP.pm
parent7c83d3e706811095cedab0bf62ac530d7b0f3a5a (diff)
downloadpublic-inbox-df815ac5b2614f7278ca747750ea7e92ecd0986c.tar.gz
We need to be careful about handling EAGAIN on write(2)
failures deal with SSL_WANT_READ vs SSL_WANT_WRITE as
appropriate.
Diffstat (limited to 'lib/PublicInbox/NNTP.pm')
-rw-r--r--lib/PublicInbox/NNTP.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm
index 9973fcaf..82762b1a 100644
--- a/lib/PublicInbox/NNTP.pm
+++ b/lib/PublicInbox/NNTP.pm
@@ -75,7 +75,8 @@ sub new ($$$) {
         my $ev = EPOLLIN;
         my $wbuf;
         if (ref($sock) eq 'IO::Socket::SSL' && !$sock->accept_SSL) {
-                $ev = PublicInbox::TLS::epollbit() or return CORE::close($sock);
+                return CORE::close($sock) if $! != EAGAIN;
+                $ev = PublicInbox::TLS::epollbit();
                 $wbuf = [ \&PublicInbox::DS::accept_tls_step, \&greet ];
         }
         $self->SUPER::new($sock, $ev | EPOLLONESHOT);