]> Sergey Matveev's repositories - public-inbox.git/blobdiff - xt/mem-imapd-tls.t
update copyrights for 2021
[public-inbox.git] / xt / mem-imapd-tls.t
index 97e67d3029a60736a125cc7770b04c2dec77ba92..e4b3b8cd050d1b30c1fd0e8982496b106f0209c0 100644 (file)
@@ -1,5 +1,5 @@
 #!perl -w
-# Copyright (C) 2020 all contributors <meta@public-inbox.org>
+# Copyright (C) 2020-2021 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 # Idle client memory usage test, particularly after EXAMINE when
 # Message Sequence Numbers are loaded
@@ -49,7 +49,9 @@ my $imaps_addr = $imaps->sockhost . ':' . $imaps->sockport;
 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;
 }