#!perl -w # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl t/compatibility.t' use IO::Socket::SSL; use Socket; eval {require "t/ssl_settings.req";} || eval {require "ssl_settings.req";}; $|=1; foreach ($^O) { if (/MacOS/ or /VOS/ or /vmesa/ or /riscos/ or /amigaos/) { print "1..0 # Skipped: fork not implemented on this platform\n"; exit; } } $SIG{'CHLD'} = "IGNORE"; print "1..9\n"; IO::Socket::SSL::context_init(SSL_verify_mode => 0x01, SSL_version => 'TLSv1' ); my $server = IO::Socket::INET->new( LocalAddr => $SSL_SERVER_ADDR, Listen => 1, Proto => 'tcp', ReuseAddr => 1, Timeout => 15 ); if (!$server) { print "Bail out! "; print("Setup of test IO::Socket::INET client and server failed. All the rest of ", "the tests in this suite will fail also unless you change the values in ", "ssl_settings.req in the t/ directory."); exit; } my ($SSL_SERVER_PORT) = unpack_sockaddr_in( $server->sockname ); print "ok\n"; unless (fork) { close $server; $MyClass::client = new IO::Socket::INET("$SSL_SERVER_ADDR:$SSL_SERVER_PORT"); package MyClass; use IO::Socket::SSL; @ISA = "IO::Socket::SSL"; MyClass->start_SSL($client) || print "not "; print "ok\n"; (ref($client) eq "MyClass") || print "not "; print "ok\n"; $client->issuer_name || print "not "; print "ok\n"; $client->subject_name || print "not "; print "ok\n"; $client->opened || print "not "; print "ok\n"; print $client "Ok to close\n"; close $client; exit(0); } my $contact = $server->accept; IO::Socket::SSL::socketToSSL($contact, {SSL_server => 1, SSL_verify_mode => 0}) || print "not "; print "ok\n"; <$contact>; close $contact; close $server; bless $contact, "MyClass"; print "not " if IO::Socket::SSL::socket_to_SSL($contact, SSL_server => 1); print "ok\n"; print "not " unless (ref($contact) eq "MyClass"); print "ok\n"; sub bail { print "Bail Out! $IO::Socket::SSL::ERROR"; }