X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=xt%2Fmem-imapd-tls.t;h=3f1436c7da14966135c4a7177331343ff42f9f5c;hb=4f1a683dc895a7bd4cf79e58b39faea256045921;hp=accf7564eddbe56b4ff9ce3ca2965f66fed42219;hpb=3d52c093ad5ce7a32f8842d9ae020712f9786352;p=public-inbox.git diff --git a/xt/mem-imapd-tls.t b/xt/mem-imapd-tls.t index accf7564..3f1436c7 100644 --- a/xt/mem-imapd-tls.t +++ b/xt/mem-imapd-tls.t @@ -9,7 +9,8 @@ use Socket qw(SOCK_STREAM IPPROTO_TCP SOL_SOCKET); use PublicInbox::TestCommon; use PublicInbox::Syscall qw(:epoll); use PublicInbox::DS; -require_mods(qw(DBD::SQLite)); +require_mods(qw(DBD::SQLite Email::Address::XS||Mail::Address + Parse::RecDescent)); my $inboxdir = $ENV{GIANT_INBOX_DIR}; my $TEST_TLS; SKIP: { @@ -48,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 = ( @@ -131,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 @@ -206,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; @@ -235,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; }