]> Sergey Matveev's repositories - public-inbox.git/blob - lib/PublicInbox/TLS.pm
Merge remote-tracking branch 'origin/nntp-tls'
[public-inbox.git] / lib / PublicInbox / TLS.pm
1 # Copyright (C) 2019 all contributors <meta@public-inbox.org>
2 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
3
4 # IO::Socket::SSL support code
5 package PublicInbox::TLS;
6 use strict;
7 use IO::Socket::SSL;
8 require Carp;
9 use Errno qw(EAGAIN);
10 use PublicInbox::Syscall qw(EPOLLIN EPOLLOUT);
11
12 sub err () { $SSL_ERROR }
13
14 # returns the EPOLL event bit which matches the existing SSL error
15 sub epollbit () {
16         if ($! == EAGAIN) {
17                 return EPOLLIN if $SSL_ERROR == SSL_WANT_READ;
18                 return EPOLLOUT if $SSL_ERROR == SSL_WANT_WRITE;
19                 die "unexpected SSL error: $SSL_ERROR";
20         }
21         0;
22 }
23
24 1;