X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=xt%2Fmem-imapd-tls.t;h=99d8cb0dbe66a7f8c3005ca6fb9066aba84fe022;hb=725fd624277364402a86262486cdb79458db4ed8;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; }