]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/HTTP.pm
Merge remote-tracking branch 'origin/email-simple-mem' into master
[public-inbox.git] / lib / PublicInbox / HTTP.pm
index b8912950d1cc57af97da0c8ae24167ed9cb2d567..5546ac465570d123d19498ef285b385b3b1ba913 100644 (file)
@@ -56,8 +56,16 @@ sub http_date () {
 sub new ($$$) {
        my ($class, $sock, $addr, $httpd) = @_;
        my $self = fields::new($class);
-       $self->SUPER::new($sock, EPOLLIN | EPOLLONESHOT);
+       my $ev = EPOLLIN;
+       my $wbuf;
+       if (ref($sock) eq 'IO::Socket::SSL' && !$sock->accept_SSL) {
+               return CORE::close($sock) if $! != EAGAIN;
+               $ev = PublicInbox::TLS::epollbit();
+               $wbuf = [ \&PublicInbox::DS::accept_tls_step ];
+       }
+       $self->SUPER::new($sock, $ev | EPOLLONESHOT);
        $self->{httpd} = $httpd;
+       $self->{wbuf} = $wbuf if $wbuf;
        ($self->{remote_addr}, $self->{remote_port}) =
                PublicInbox::Daemon::host_with_port($addr);
        $self;
@@ -459,11 +467,4 @@ sub busy () {
        ($self->{rbuf} || $self->{env} || $self->{wbuf});
 }
 
-# fires after pending writes are complete:
-sub restart_pass ($) {
-       $_[0]->{forward}->restart_read; # see PublicInbox::HTTPD::Async
-}
-
-sub enqueue_restart_pass ($) { $_[0]->write(\&restart_pass) }
-
 1;