From 9689c65f42c0acc9021953b29ce55730c4cd841d Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 26 Jan 2020 10:29:21 +0000 Subject: 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. --- lib/PublicInbox/Daemon.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib') 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 -- cgit v1.2.3-24-ge0c7