diff options
author | Eric Wong <e@80x24.org> | 2019-06-28 07:37:26 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-06-29 19:59:00 +0000 |
commit | df815ac5b2614f7278ca747750ea7e92ecd0986c (patch) | |
tree | ca9cae5e61aa31666ee8ceb6cdb2d562e395b79d /lib/PublicInbox/NNTP.pm | |
parent | 7c83d3e706811095cedab0bf62ac530d7b0f3a5a (diff) | |
download | public-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.pm | 3 |
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); |