diff options
-rw-r--r-- | lib/PublicInbox/DS.pm | 3 | ||||
-rw-r--r-- | t/nntpd-tls.t | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/lib/PublicInbox/DS.pm b/lib/PublicInbox/DS.pm index 33f80087..da26efc4 100644 --- a/lib/PublicInbox/DS.pm +++ b/lib/PublicInbox/DS.pm @@ -341,8 +341,7 @@ sub greet { my $ev = EPOLLIN; my $wbuf; if ($sock->can('accept_SSL') && !$sock->accept_SSL) { - return $sock->close if $! != EAGAIN; - $ev = PublicInbox::TLS::epollbit() or return $sock->close; + return if $! != EAGAIN || !($ev = PublicInbox::TLS::epollbit()); $wbuf = [ \&accept_tls_step, $self->can('do_greet')]; } new($self, $sock, $ev | EPOLLONESHOT); diff --git a/t/nntpd-tls.t b/t/nntpd-tls.t index cf3c95c9..a11a0dd9 100644 --- a/t/nntpd-tls.t +++ b/t/nntpd-tls.t @@ -185,6 +185,10 @@ for my $args ( is($x, undef, 'no BSD accept filter for plain NNTP'); }; + my $s = tcp_connect($nntps); + syswrite($s, '->accept_SSL_ will fail on this!'); + ok(!sysread($s, my $rbuf, 128), 'EOF or ECONNRESET on ->accept_SSL fail'); + $c = undef; $td->kill; $td->join; @@ -195,6 +199,7 @@ for my $args ( <$fh>; }; unlike($eout, qr/wide/i, 'no Wide character warnings'); + unlike($eout, qr/^E:/, 'no other errors'); } done_testing(); |