diff options
author | Eric Wong <e@80x24.org> | 2016-12-22 07:29:17 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2016-12-22 07:33:42 +0000 |
commit | 15e14f11af0b9919f11e0c186b365ae0154e7e77 (patch) | |
tree | 05a8346fde4d56cae22be1001b5235fbf9e4f77e /lib/PublicInbox/Listener.pm | |
parent | 90b3d23352a0c37680ac266acaf4fef73a781bc9 (diff) | |
download | public-inbox-15e14f11af0b9919f11e0c186b365ae0154e7e77.tar.gz |
Notes for future developers (myself included) since we can't assume people can read my mind.
Diffstat (limited to 'lib/PublicInbox/Listener.pm')
-rw-r--r-- | lib/PublicInbox/Listener.pm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/PublicInbox/Listener.pm b/lib/PublicInbox/Listener.pm index 5f351a77..a3a2015b 100644 --- a/lib/PublicInbox/Listener.pm +++ b/lib/PublicInbox/Listener.pm @@ -13,7 +13,7 @@ require IO::Handle; sub new ($$$) { my ($class, $s, $cb) = @_; setsockopt($s, SOL_SOCKET, SO_KEEPALIVE, 1); - setsockopt($s, IPPROTO_TCP, TCP_NODELAY, 1); + setsockopt($s, IPPROTO_TCP, TCP_NODELAY, 1); # ignore errors on non-TCP listen($s, 1024); IO::Handle::blocking($s, 0); my $self = fields::new($class); @@ -26,8 +26,12 @@ sub new ($$$) { sub event_read { my ($self) = @_; my $sock = $self->{sock}; + # no loop here, we want to fairly distribute clients # between multiple processes sharing the same socket + # XXX our event loop needs better granularity for + # a single accept() here to be, umm..., acceptable + # on high-traffic sites. if (my $addr = accept(my $c, $sock)) { IO::Handle::blocking($c, 0); # no accept4 :< $self->{post_accept}->($c, $addr, $sock); |