about summary refs log tree commit homepage
path: root/lib/PublicInbox/Daemon.pm
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2020-01-26 10:29:21 +0000
committerEric Wong <e@yhbt.net>2020-01-28 01:49:48 +0000
commit9689c65f42c0acc9021953b29ce55730c4cd841d (patch)
treeea9e22bbb87efc1a14bb6ac711e3bd53837b9a01 /lib/PublicInbox/Daemon.pm
parentddec19694cbf0e1d94fb56c0fc4bd90eae540884 (diff)
downloadpublic-inbox-9689c65f42c0acc9021953b29ce55730c4cd841d.tar.gz
daemon: provide TCP_DEFER_ACCEPT for Perl <5.14
Socket::TCP_DEFER_ACCEPT() did not appear in the Socket module
distributed with Perl until 5.14, despite it being available
since Linux 2.4.
Diffstat (limited to 'lib/PublicInbox/Daemon.pm')
-rw-r--r--lib/PublicInbox/Daemon.pm5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm
index 278c80f5..15d8bd31 100644
--- a/lib/PublicInbox/Daemon.pm
+++ b/lib/PublicInbox/Daemon.pm
@@ -566,11 +566,12 @@ sub defer_accept ($$) {
         my ($s, $af_name) = @_;
         return unless defined $af_name;
         if ($^O eq 'linux') {
-                my $x = getsockopt($s, IPPROTO_TCP, Socket::TCP_DEFER_ACCEPT());
+                my $TCP_DEFER_ACCEPT = 9; # Socket::TCP_DEFER_ACCEPT is in 5.14+
+                my $x = getsockopt($s, IPPROTO_TCP, $TCP_DEFER_ACCEPT);
                 return unless defined $x; # may be Unix socket
                 my $sec = unpack('i', $x);
                 return if $sec > 0; # systemd users may set a higher value
-                setsockopt($s, IPPROTO_TCP, Socket::TCP_DEFER_ACCEPT(), 1);
+                setsockopt($s, IPPROTO_TCP, $TCP_DEFER_ACCEPT, 1);
         } elsif ($^O eq 'freebsd') {
                 my $x = getsockopt($s, SOL_SOCKET, SO_ACCEPTFILTER);
                 return if defined $x; # don't change if set