about summary refs log tree commit homepage
path: root/lib/PublicInbox/Daemon.pm
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2023-10-06 09:46:04 +0000
committerEric Wong <e@80x24.org>2023-10-06 21:06:54 +0000
commit4c4466e455fd6940700125f8c21b326564915913 (patch)
tree5f6f5a05c8ec8d41074da74bdc566926a89c86b6 /lib/PublicInbox/Daemon.pm
parentaef38b546fd15f161dc0f0c2c9ec9b7b7798672a (diff)
downloadpublic-inbox-4c4466e455fd6940700125f8c21b326564915913.tar.gz
require_bsd and require_mods(':fcntl_lock') are now
supported in TestCommon to make it easier to maintain
than a big list of regexps.

getsockopt for SO_ACCEPTFILTER seems to always succeed,
even if the retrieved struct is all zeroes.
Diffstat (limited to 'lib/PublicInbox/Daemon.pm')
-rw-r--r--lib/PublicInbox/Daemon.pm4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/PublicInbox/Daemon.pm b/lib/PublicInbox/Daemon.pm
index a4c99cca..520cef72 100644
--- a/lib/PublicInbox/Daemon.pm
+++ b/lib/PublicInbox/Daemon.pm
@@ -634,9 +634,9 @@ sub defer_accept ($$) {
                 my $sec = unpack('i', $x);
                 return if $sec > 0; # systemd users may set a higher value
                 setsockopt($s, IPPROTO_TCP, $TCP_DEFER_ACCEPT, 1);
-        } elsif ($^O =~ /\A(?:freebsd|netbsd)\z/) {
+        } elsif ($^O =~ /\A(?:freebsd|netbsd|dragonfly)\z/) {
                 my $x = getsockopt($s, SOL_SOCKET, $SO_ACCEPTFILTER);
-                return if defined $x; # don't change if set
+                return if ($x // "\0") =~ /[^\0]/s; # don't change if set
                 my $accf_arg = pack('a16a240', $af_name, '');
                 setsockopt($s, SOL_SOCKET, $SO_ACCEPTFILTER, $accf_arg);
         }