X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=xt%2Fmem-imapd-tls.t;h=99d8cb0dbe66a7f8c3005ca6fb9066aba84fe022;hb=860169adcd29341142b7c4a369c09b4ac492bd1e;hp=97e67d3029a60736a125cc7770b04c2dec77ba92;hpb=07caa8528db2ac22d81a0763e1cefd59acd827f1;p=public-inbox.git
diff --git a/xt/mem-imapd-tls.t b/xt/mem-imapd-tls.t
index 97e67d30..99d8cb0d 100644
--- a/xt/mem-imapd-tls.t
+++ b/xt/mem-imapd-tls.t
@@ -1,5 +1,5 @@
#!perl -w
-# Copyright (C) 2020 all contributors
+# Copyright (C) 2020-2021 all contributors
# License: AGPL-3.0+
# Idle client memory usage test, particularly after EXAMINE when
# Message Sequence Numbers are loaded
@@ -45,11 +45,13 @@ my $imaps = tcp_server();
EOF
close $fh or die "close: $!\n";
}
-my $imaps_addr = $imaps->sockhost . ':' . $imaps->sockport;
+my $imaps_addr = tcp_host_port($imaps);
my $env = { PI_CONFIG => $pi_config };
my $arg = $TEST_TLS ? [ "-limaps://$imaps_addr/?cert=$cert,key=$key" ] : [];
my $cmd = [ '-imapd', '-W0', @$arg, "--stdout=$out", "--stderr=$err" ];
-my $td = start_script($cmd, $env, { 3 => $imaps });
+
+# run_mode=0 ensures Test::More FDs don't get shared
+my $td = start_script($cmd, $env, { 3 => $imaps, run_mode => 0 });
my %ssl_opt;
if ($TEST_TLS) {
%ssl_opt = (
@@ -132,8 +134,8 @@ done_testing;
package IMAPC;
use strict;
-use base qw(PublicInbox::DS);
-use fields qw(step zin);
+use parent qw(PublicInbox::DS);
+# fields: step: state machine, zin: Zlib inflate context
use PublicInbox::Syscall qw(EPOLLIN EPOLLOUT EPOLLONESHOT);
use Errno qw(EAGAIN);
# determines where we start event_step
@@ -207,26 +209,23 @@ sub event_step {
sub new {
my ($class, $io) = @_;
- my $self = fields::new($class);
-
- # wait for connect(), and maybe SSL_connect()
- $self->SUPER::new($io, EPOLLOUT|EPOLLONESHOT);
+ my $self = bless { step => FIRST_STEP }, $class;
if ($io->can('connect_SSL')) {
$self->{wbuf} = [ \&connect_tls_step ];
}
- $self->{step} = FIRST_STEP;
- $self;
+ # wait for connect(), and maybe SSL_connect()
+ $self->SUPER::new($io, EPOLLOUT|EPOLLONESHOT);
}
1;
package IMAPCdeflate;
use strict;
-use base qw(IMAPC); # parent doesn't work for fields
-use Hash::Util qw(unlock_hash); # dependency of fields for perl 5.10+, anyways
+our @ISA;
use Compress::Raw::Zlib;
use PublicInbox::IMAPdeflate;
my %ZIN_OPT;
BEGIN {
+ @ISA = qw(IMAPC);
%ZIN_OPT = ( -WindowBits => -15, -AppendOutput => 1 );
*write = \&PublicInbox::IMAPdeflate::write;
*do_read = \&PublicInbox::IMAPdeflate::do_read;
@@ -236,7 +235,6 @@ sub enable {
my ($class, $self) = @_;
my ($in, $err) = Compress::Raw::Zlib::Inflate->new(%ZIN_OPT);
die "Inflate->new failed: $err" if $err != Z_OK;
- unlock_hash(%$self);
bless $self, $class;
$self->{zin} = $in;
}