IO-Socket-SSL
view release on metacpan or search on metacpan
t/sessions.t view on Meta::CPAN
}
# check if sessions get reused
@clients = map { IO::Socket::SSL->new(PeerAddr => $_, Domain => AF_INET) }
@saddr;
for(@clients) {
print "not " if ! $_->get_session_reused;
ok("client $_ reused");
<$_>; # read ping
print $_ "pong!\n";
}
&$dump_cache;
}
sub server {
my @ctx = map {
IO::Socket::SSL::SSL_Context->new(
SSL_server => 1,
SSL_cert_file => "t/certs/server-cert.pem",
SSL_key_file => "t/certs/server-key.pem",
SSL_ca_file => "t/certs/test-ca.pem",
);
} @servers;
my @clients;
my $accept_all = sub {
@clients = map { undef } @servers;
for(my $i=0; $i<@servers; $i++) {
my $cl = $servers[$i]->accept or next;
IO::Socket::SSL->start_SSL($cl,
SSL_server => 1,
SSL_reuse_ctx => $ctx[$i]
) or next;
$clients[$i] = $cl;
}
};
&$accept_all;
if ( grep { !$_ } @clients > 0 ) {
print "not ok \# Client init\n";
exit;
}
ok("Client init");
for(@clients) {
print $_ "ping!\n";
<$_>; # read pong
}
ok("Server send pong, received ping");
close($_) for @clients;
&$accept_all;
for(@clients) {
print $_ "ping!\n";
<$_>; # read pong
}
ok("Client again init + write + read");
}
sub ok {
my $line = (caller)[2];
print "ok # [$what]:$line $_[0]\n";
}
sub diag {
my $msg = shift;
$msg =~s{^}{ # [$what] }mg;
print STDERR $msg;
}
( run in 1.075 second using v1.01-cache-2.11-cpan-5fbc6bb55f2 )