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-02-05 05:13:54 +0500
committerEric Wong <e@80x24.org>2021-02-05 00:16:38 +0000
commitda143a9393faa4956403b3f7a4c6ecb5ae3bcf01 (patch)
tree864f9829aa79e68497e387057b37953835f48b85 /lib/PublicInbox/HTTPD/Async.pm
parente3c82310f5df24a42a0dc3c08b97b409a185b3a3 (diff)
downloadpublic-inbox-da143a9393faa4956403b3f7a4c6ecb5ae3bcf01.tar.gz
While Perl tie is nice for some things, getting
IO::Handle->blocking to work transparently with it doesn't
seem possible at the moment.

Add some examples in t/spawn.t for future hackers.

Fixes: 22e51bd9da476fa9 ("qspawn: switch to ProcessPipe via popen_rd")
Diffstat (limited to 'lib/PublicInbox/HTTPD/Async.pm')
-rw-r--r--lib/PublicInbox/HTTPD/Async.pm3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/PublicInbox/HTTPD/Async.pm b/lib/PublicInbox/HTTPD/Async.pm
index bd1fd8fa..1de9501d 100644
--- a/lib/PublicInbox/HTTPD/Async.pm
+++ b/lib/PublicInbox/HTTPD/Async.pm
@@ -37,7 +37,8 @@ sub new {
                 arg => $arg, # arg for $cb
                 end_obj => $end_obj, # like END{}, can ->event_step
         }, $class;
-        IO::Handle::blocking($io, 0);
+        my $pp = tied *$io;
+        $pp->{fh}->blocking(0) // die "$io->blocking(0): $!";
         $self->SUPER::new($io, EPOLLIN | EPOLLET);
 }