about summary refs log tree commit homepage
path: root/lib/PublicInbox/HTTPD/Async.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2021-10-16 01:01:03 +0000
committerEric Wong <e@80x24.org>2021-10-16 01:42:55 +0000
commitbb8a6a435a4b7707e9fb0329c49671f495262016 (patch)
tree4a5c53bd83f8065b2764e86d159400cbe3c7c551 /lib/PublicInbox/HTTPD/Async.pm
parent48cfcb04ed337f96e5105a2f93d127d2d6692c5a (diff)
downloadpublic-inbox-bb8a6a435a4b7707e9fb0329c49671f495262016.tar.gz
We'll save ourselves some code here and let the kernel do more
work, instead.
Diffstat (limited to 'lib/PublicInbox/HTTPD/Async.pm')
-rw-r--r--lib/PublicInbox/HTTPD/Async.pm16
1 files changed, 5 insertions, 11 deletions
diff --git a/lib/PublicInbox/HTTPD/Async.pm b/lib/PublicInbox/HTTPD/Async.pm
index 7238650a..1651da88 100644
--- a/lib/PublicInbox/HTTPD/Async.pm
+++ b/lib/PublicInbox/HTTPD/Async.pm
@@ -17,7 +17,7 @@ package PublicInbox::HTTPD::Async;
 use strict;
 use parent qw(PublicInbox::DS);
 use Errno qw(EAGAIN);
-use PublicInbox::Syscall qw(EPOLLIN EPOLLET);
+use PublicInbox::Syscall qw(EPOLLIN);
 
 # This is called via: $env->{'pi-httpd.async'}->()
 # $io is a read-only pipe ($rpipe) for now, but may be a
@@ -39,7 +39,7 @@ sub new {
         }, $class;
         my $pp = tied *$io;
         $pp->{fh}->blocking(0) // die "$io->blocking(0): $!";
-        $self->SUPER::new($io, EPOLLIN | EPOLLET);
+        $self->SUPER::new($io, EPOLLIN);
 }
 
 sub event_step {
@@ -54,15 +54,12 @@ sub event_step {
                 my $r = sysread($sock, my $buf, 65536);
                 if ($r) {
                         $self->{fh}->write($buf); # may call $http->close
-                        if ($http->{sock}) { # !closed
-                                $self->requeue;
-                                # let other clients get some work done, too
-                                return;
-                        }
+                        # let other clients get some work done, too
+                        return if $http->{sock}; # !closed
 
                         # else: fall through to close below...
                 } elsif (!defined $r && $! == EAGAIN) {
-                        return; # EPOLLET means we'll be notified
+                        return; # EPOLLIN means we'll be notified
                 }
 
                 # Done! Error handling will happen in $self->{fh}->close
@@ -89,9 +86,6 @@ sub async_pass {
 
         $self->{http} = $http;
         $self->{fh} = $fh;
-
-        # either hit EAGAIN or ->requeue to keep EPOLLET happy
-        event_step($self);
 }
 
 # may be called as $forward->close in PublicInbox::HTTP or EOF (event_step)