Debian lenny version packages
[pkg-perl] / deb-src / libio-socket-ssl-perl / libio-socket-ssl-perl-1.16 / t / acceptSSL-timeout.t
1 use strict;
2 use warnings;
3 do './testlib.pl' || do './t/testlib.pl' || die "no testlib";
4
5 $|=1;
6 print "1..14\n";
7
8 my ($server,$saddr) = create_listen_socket();
9 ok( 'listening' );
10
11 # first try bad non-SSL client
12 my $srv = fork_sub( 'server' );
13 fd_grep_ok( 'Waiting', $srv );
14 my $cl = fork_sub( 'client_no_ssl' );
15 fd_grep_ok( 'Connect from',$srv );
16 fd_grep_ok( 'Connected', $cl );
17 fd_grep_ok( 'SSL Handshake FAILED', $srv );
18 killall();
19
20 # then use SSL client
21 $srv = fork_sub( 'server' );
22 fd_grep_ok( 'Waiting', $srv );
23 $cl = fork_sub( 'client_ssl' );
24 fd_grep_ok( 'Connect from',$srv );
25 fd_grep_ok( 'Connected', $cl );
26 fd_grep_ok( 'SSL Handshake OK', $srv );
27 fd_grep_ok( 'Hi!', $cl );
28 killall();
29
30
31 sub server {
32         print "Waiting\n";
33         my $client = $server->accept || die "accept failed: $!";
34         print "Connect from ".$client->peerhost.':'.$client->peerport."\n";
35         if ( IO::Socket::SSL->start_SSL( $client, SSL_server => 1, Timeout => 5 )) {
36                 print "SSL Handshake OK\n";
37                 print $client "Hi!\n";
38         } else {
39                 print "SSL Handshake FAILED - $!\n"
40         }
41 }
42
43 sub client_no_ssl {
44         my $c = IO::Socket::INET->new( $saddr ) || die "connect failed: $!";
45         print "Connected\n";
46         while ( sysread( $c,my $buf,8000 )) {}
47 }
48
49 sub client_ssl {
50         my $c = IO::Socket::SSL->new( $saddr ) || die "connect failed: $!";
51         print "Connected\n";
52         while ( sysread( $c,my $buf,8000 )) { print $buf }
53 }
54
55