1998-09-09 07:00:04 +00:00
|
|
|
#!./perl
|
|
|
|
|
|
|
|
BEGIN {
|
|
|
|
chdir 't' if -d 't';
|
2002-03-16 20:14:30 +00:00
|
|
|
@INC = '../lib';
|
1998-09-09 07:00:04 +00:00
|
|
|
require Config; import Config;
|
|
|
|
if ($Config{'extensions'} !~ /\bSocket\b/ &&
|
|
|
|
!(($^O eq 'VMS') && $Config{d_socket})) {
|
|
|
|
print "1..0\n";
|
|
|
|
exit 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
use Socket;
|
|
|
|
|
2000-06-25 11:04:01 +00:00
|
|
|
print "1..8\n";
|
1998-09-09 07:00:04 +00:00
|
|
|
|
|
|
|
if (socket(T,PF_INET,SOCK_STREAM,6)) {
|
|
|
|
print "ok 1\n";
|
|
|
|
|
|
|
|
if (connect(T,pack_sockaddr_in(7,inet_aton("localhost")))){
|
|
|
|
print "ok 2\n";
|
|
|
|
|
2002-03-16 20:14:30 +00:00
|
|
|
print "# Connected to " .
|
|
|
|
inet_ntoa((unpack_sockaddr_in(getpeername(T)))[1])."\n";
|
1998-09-09 07:00:04 +00:00
|
|
|
|
|
|
|
syswrite(T,"hello",5);
|
|
|
|
$read = sysread(T,$buff,10); # Connection may be granted, then closed!
|
|
|
|
while ($read > 0 && length($buff) < 5) {
|
|
|
|
# adjust for fact that TCP doesn't guarantee size of reads/writes
|
|
|
|
$read = sysread(T,$buff,10,length($buff));
|
|
|
|
}
|
|
|
|
print(($read == 0 || $buff eq "hello") ? "ok 3\n" : "not ok 3\n");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print "# You're allowed to fail tests 2 and 3 if.\n";
|
|
|
|
print "# The echo service has been disabled.\n";
|
|
|
|
print "# $!\n";
|
|
|
|
print "ok 2\n";
|
|
|
|
print "ok 3\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print "# $!\n";
|
|
|
|
print "not ok 1\n";
|
|
|
|
}
|
|
|
|
|
|
|
|
if( socket(S,PF_INET,SOCK_STREAM,6) ){
|
|
|
|
print "ok 4\n";
|
|
|
|
|
|
|
|
if (connect(S,pack_sockaddr_in(7,INADDR_LOOPBACK))){
|
|
|
|
print "ok 5\n";
|
|
|
|
|
2002-03-16 20:14:30 +00:00
|
|
|
print "# Connected to " .
|
|
|
|
inet_ntoa((unpack_sockaddr_in(getpeername(S)))[1])."\n";
|
1998-09-09 07:00:04 +00:00
|
|
|
|
|
|
|
syswrite(S,"olleh",5);
|
|
|
|
$read = sysread(S,$buff,10); # Connection may be granted, then closed!
|
|
|
|
while ($read > 0 && length($buff) < 5) {
|
|
|
|
# adjust for fact that TCP doesn't guarantee size of reads/writes
|
|
|
|
$read = sysread(S,$buff,10,length($buff));
|
|
|
|
}
|
|
|
|
print(($read == 0 || $buff eq "olleh") ? "ok 6\n" : "not ok 6\n");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print "# You're allowed to fail tests 5 and 6 if.\n";
|
|
|
|
print "# The echo service has been disabled.\n";
|
|
|
|
print "# $!\n";
|
|
|
|
print "ok 5\n";
|
|
|
|
print "ok 6\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
print "# $!\n";
|
|
|
|
print "not ok 4\n";
|
|
|
|
}
|
2000-06-25 11:04:01 +00:00
|
|
|
|
|
|
|
# warnings
|
|
|
|
$SIG{__WARN__} = sub {
|
|
|
|
++ $w if $_[0] =~ /^6-ARG sockaddr_in call is deprecated/ ;
|
|
|
|
} ;
|
|
|
|
$w = 0 ;
|
|
|
|
sockaddr_in(1,2,3,4,5,6) ;
|
|
|
|
print ($w == 1 ? "not ok 7\n" : "ok 7\n") ;
|
|
|
|
use warnings 'Socket' ;
|
|
|
|
sockaddr_in(1,2,3,4,5,6) ;
|
|
|
|
print ($w == 1 ? "ok 8\n" : "not ok 8\n") ;
|