IO-Socket-SSL
view release on metacpan or search on metacpan
is( $array[2], "y\n", "Client Getlines Check 4");
is( join("", @array[3..5]),
"Test\nBeaver\nBeaver\n",
"Client Getlines Check 5");
ok( !<$client>, "Client Finished Reading Check");
$client->close(SSL_no_shutdown => 1);
my $client_2 = IO::Socket::INET->new(
PeerAddr => $saddr,
LocalAddr => $localip
);
ok( $client_2, "Second Client Initialization");
$client_2 = IO::Socket::SSL->new_from_fd($client_2->fileno, '+<>',
SSL_reuse_ctx => $client);
ok( $client_2, "Client Init from Fileno Check");
$buffer = <$client_2>;
is( $buffer, "Boojums\n", "Client (fileno) Readline Check");
$client_2->close(SSL_ctx_free => 1);
if ($CAN_NONBLOCK) {
my $client_3 = IO::Socket::SSL->new(
PeerAddr => $saddr,
LocalAddr => $localip,
Domain => AF_INET,
SSL_verify_mode => 0x01,
SSL_ca_file => "t/certs/test-ca.pem",
SSL_use_cert => 1,
SSL_cert_file => "t/certs/client-cert.pem",
SSL_key_file => "t/certs/client-key.enc",
SSL_passwd_cb => sub { return "opossum" },
Blocking => 0,
);
ok( $client_3, "Client Nonblocking Check 1");
close $client_3;
my $client_4 = IO::Socket::SSL->new(
PeerAddr => $saddr,
LocalAddr => $localip,
Domain => AF_INET,
SSL_reuse_ctx => $client_3,
Blocking => 0
);
ok( $client_4, "Client Nonblocking Check 2");
$client_3->close(SSL_ctx_free => 1);
}
exit(0);
}
my $client = $server->accept;
ok( $error_trapped, "Server non-SSL Client Check");
if ($client && $client->opened) {
fail("client stayed alive");
exit;
}
ok( !$client, "Server Kill-client Check");
($client, my $peer) = $server->accept;
ok( $client, "Server Client Accept Check");
$client or exit;
ok( $peer, "Accept returning peer address check.");
ok( fileno($client), "Server Client Fileno Check");
my $buffer;
if ($CAN_PEEK) {
$client->peek($buffer, 7, 2);
is( $buffer, "\0\0waaaanf","Server Peek Check");
is( $client->pending(), 7, "Server Pending Check");
print $client "ok";
}
sysread($client, $buffer, 7, 2);
is( $buffer, "\0\0waaaanf", "Server Sysread Check");
my @array = scalar <$client>;
is( $array[0], "Test\n", "Server Getline Check");
is( getc($client), "\$", "Server Getc Check");
@array = map { scalar <$client> } (0..5);
is( scalar @array, 6, "Server Getlines Check 1");
is( $array[0], "1.04\n", "Server Getlines Check 2");
is( $array[1], "4\n", "Server Getlines Check 3");
is( $array[2], "y\n", "Server Getlines Check 4");
is( join("", @array[3..5]), "Test\nBeaver\nBeaver\n", "Server Getlines Check 5");
syswrite($client, '00waaaanf00', 7, 2);
print($client "Test\n");
printf $client "\$%.2f\n%d\n%c\n%s", (1.0444442342, 4.0, ord("y"), "Test\nBeaver\nBeaver\n");
close $client;
($client, $peer) = $server->accept or do {
fail("client creation failed");
exit;
};
is( inet_ntoa((unpack_sockaddr_in($peer))[1]), $localip, "Peer address check");
if ($CAN_NONBLOCK) {
$client->blocking(0);
$client->read($buffer, 20, 0);
is( $SSL_ERROR, SSL_WANT_READ, "Server Nonblocking Check 1");
}
( run in 1.228 second using v1.01-cache-2.11-cpan-39bf76dae61 )