diff options
author | Eric Wong <e@80x24.org> | 2023-10-03 09:26:01 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-10-03 10:16:11 +0000 |
commit | 60a3a95cea89b7f4a28b4b663897a07b7d4bf98a (patch) | |
tree | 4e6984e2f0070e7a7805d4335868106348e0627e /t | |
parent | ad722a4e32af5e2889be819b49ef31ecee4c3f2b (diff) | |
download | public-inbox-60a3a95cea89b7f4a28b4b663897a07b7d4bf98a.tar.gz |
NetBSD 5.0+ has accept filter support from FreeBSD; and I I think we can assume all NetBSD is 5.0+ (released in 2009) nowadays if we're already depending on Perl 5.12 from 2010.
Diffstat (limited to 't')
-rw-r--r-- | t/httpd-corner.t | 27 | ||||
-rw-r--r-- | t/httpd-https.t | 5 | ||||
-rw-r--r-- | t/httpd.t | 5 | ||||
-rw-r--r-- | t/imapd-tls.t | 5 | ||||
-rw-r--r-- | t/nntpd-tls.t | 5 | ||||
-rw-r--r-- | t/pop3d.t | 4 |
6 files changed, 19 insertions, 32 deletions
diff --git a/t/httpd-corner.t b/t/httpd-corner.t index 7600c2b9..aab3635c 100644 --- a/t/httpd-corner.t +++ b/t/httpd-corner.t @@ -3,8 +3,9 @@ # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt> # note: our HTTP server should be standalone and capable of running # generic PSGI/Plack apps. -use strict; use v5.10.1; use PublicInbox::TestCommon; +use v5.12; use PublicInbox::TestCommon; use Time::HiRes qw(gettimeofday tv_interval); +use autodie qw(getsockopt setsockopt); use PublicInbox::Spawn qw(spawn popen_rd); require_mods(qw(Plack::Util Plack::Builder HTTP::Date HTTP::Status)); use PublicInbox::SHA qw(sha1_hex); @@ -26,20 +27,21 @@ my @zmods = qw(PublicInbox::GzipFilter IO::Uncompress::Gunzip); # Make sure we don't clobber socket options set by systemd or similar # using socket activation: my ($defer_accept_val, $accf_arg, $TCP_DEFER_ACCEPT); -if ($^O eq 'linux') { +SKIP: { + skip 'TCP_DEFER_ACCEPT is Linux-only' if $^O ne 'linux'; $TCP_DEFER_ACCEPT = eval { Socket::TCP_DEFER_ACCEPT() } // 9; - setsockopt($sock, IPPROTO_TCP, $TCP_DEFER_ACCEPT, 5) or die; + setsockopt($sock, IPPROTO_TCP, $TCP_DEFER_ACCEPT, 5); my $x = getsockopt($sock, IPPROTO_TCP, $TCP_DEFER_ACCEPT); - defined $x or die "getsockopt: $!"; $defer_accept_val = unpack('i', $x); - if ($defer_accept_val <= 0) { - die "unexpected TCP_DEFER_ACCEPT value: $defer_accept_val"; - } -} elsif ($^O eq 'freebsd' && system('kldstat -m accf_data >/dev/null') == 0) { + ok($defer_accept_val > 0, 'TCP_DEFER_ACCEPT val non-zero') or + xbail "unexpected TCP_DEFER_ACCEPT value: $defer_accept_val"; +} +SKIP: { + require_mods '+accf_data'; require PublicInbox::Daemon; my $var = $PublicInbox::Daemon::SO_ACCEPTFILTER; $accf_arg = pack('a16a240', 'dataready', ''); - setsockopt($sock, SOL_SOCKET, $var, $accf_arg) or die "setsockopt: $!"; + setsockopt($sock, SOL_SOCKET, $var, $accf_arg); } sub unix_server ($) { @@ -625,15 +627,14 @@ SKIP: { SKIP: { skip 'TCP_DEFER_ACCEPT is Linux-only', 1 if $^O ne 'linux'; my $var = $TCP_DEFER_ACCEPT; - defined(my $x = getsockopt($sock, IPPROTO_TCP, $var)) or die; + my $x = getsockopt($sock, IPPROTO_TCP, $var); is(unpack('i', $x), $defer_accept_val, 'TCP_DEFER_ACCEPT unchanged if previously set'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 1 if $^O ne 'freebsd'; - skip 'accf_data not loaded: kldload accf_data' if !defined $accf_arg; + require_mods '+accf_data'; my $var = $PublicInbox::Daemon::SO_ACCEPTFILTER; - defined(my $x = getsockopt($sock, SOL_SOCKET, $var)) or die; + my $x = getsockopt($sock, SOL_SOCKET, $var); is($x, $accf_arg, 'SO_ACCEPTFILTER unchanged if previously set'); }; diff --git a/t/httpd-https.t b/t/httpd-https.t index b0cd7eab..bf086123 100644 --- a/t/httpd-https.t +++ b/t/httpd-https.t @@ -102,10 +102,7 @@ for my $args ( ok(unpack('i', $x) > 0, 'TCP_DEFER_ACCEPT set on https'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 2 if $^O ne 'freebsd'; - if (system('kldstat -m accf_data >/dev/null')) { - skip 'accf_data not loaded? kldload accf_data', 2; - } + require_mods '+accf_data'; require PublicInbox::Daemon; ok(defined($PublicInbox::Daemon::SO_ACCEPTFILTER), 'SO_ACCEPTFILTER defined'); @@ -104,10 +104,7 @@ SKIP: { ok(unpack('i', $x) > 0, 'TCP_DEFER_ACCEPT set'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 1 if $^O ne 'freebsd'; - if (system('kldstat -m accf_http >/dev/null') != 0) { - skip 'accf_http not loaded: kldload accf_http', 1; - } + require_mods '+accf_http'; require PublicInbox::Daemon; ok(defined($PublicInbox::Daemon::SO_ACCEPTFILTER), 'SO_ACCEPTFILTER defined'); diff --git a/t/imapd-tls.t b/t/imapd-tls.t index e432ef07..b95085a2 100644 --- a/t/imapd-tls.t +++ b/t/imapd-tls.t @@ -181,10 +181,7 @@ for my $args ( is(unpack('i', $x), 0, 'TCP_DEFER_ACCEPT is 0 on plain IMAP'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 2 if $^O ne 'freebsd'; - if (system('kldstat -m accf_data >/dev/null')) { - skip 'accf_data not loaded? kldload accf_data', 2; - } + require_mods '+accf_data'; require PublicInbox::Daemon; my $x = getsockopt($imaps, SOL_SOCKET, $PublicInbox::Daemon::SO_ACCEPTFILTER); diff --git a/t/nntpd-tls.t b/t/nntpd-tls.t index 21377fc0..cf3c95c9 100644 --- a/t/nntpd-tls.t +++ b/t/nntpd-tls.t @@ -175,10 +175,7 @@ for my $args ( is(unpack('i', $x), 0, 'TCP_DEFER_ACCEPT is 0 on plain NNTP'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 2 if $^O ne 'freebsd'; - if (system('kldstat -m accf_data >/dev/null')) { - skip 'accf_data not loaded? kldload accf_data', 2; - } + require_mods '+accf_data'; require PublicInbox::Daemon; my $x = getsockopt($nntps, SOL_SOCKET, $PublicInbox::Daemon::SO_ACCEPTFILTER); @@ -268,9 +268,7 @@ EOF is(unpack('i', $x), 0, 'TCP_DEFER_ACCEPT is 0 on plain POP3'); }; SKIP: { - skip 'SO_ACCEPTFILTER is FreeBSD-only', 2 if $^O ne 'freebsd'; - system('kldstat -m accf_data >/dev/null') and - skip 'accf_data not loaded? kldload accf_data', 2; + require_mods '+accf_data'; require PublicInbox::Daemon; my $x = getsockopt($pop3s, SOL_SOCKET, $PublicInbox::Daemon::SO_ACCEPTFILTER); |