6 use File::Temp qw(tempdir);
7 use File::Spec::Functions;
14 plan skip_all => "UNIX domain sockets not implemented on $^O"
15 if ($^O =~ m/^(?:qnx|nto|vos|MSWin32|VMS)$/);
19 my $socketpath = catfile(tempdir( CLEANUP => 1 ), 'testsock');
21 # start testing stream sockets:
22 my $listener = IO::Socket::UNIX->new(Type => SOCK_STREAM,
24 Local => $socketpath);
25 ok(defined($listener), 'stream socket created');
27 my $p = $listener->protocol();
28 ok(defined($p), 'protocol defined');
29 my $d = $listener->sockdomain();
30 ok(defined($d), 'domain defined');
31 my $s = $listener->socktype();
32 ok(defined($s), 'type defined');
35 skip "fork not available", 4
36 unless $Config{d_fork} || $Config{d_pseudofork};
42 my $connector = IO::Socket::UNIX->new(Peer => $socketpath);
45 ok(defined($cpid), 'spawned a child');
48 my $new = $listener->accept();
50 is($new->sockdomain(), $d, 'domain match');
52 skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
53 is($new->protocol(), $p, 'protocol match');
56 skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
57 is($new->socktype(), $s, 'type match');
66 skip "datagram unix sockets not supported on $^O", 7
68 # now test datagram sockets:
69 $listener = IO::Socket::UNIX->new(Type => SOCK_DGRAM,
70 Local => $socketpath);
71 ok(defined($listener), 'datagram socket created');
73 $p = $listener->protocol();
74 ok(defined($p), 'protocol defined');
75 $d = $listener->sockdomain();
76 ok(defined($d), 'domain defined');
77 $s = $listener->socktype();
78 ok(defined($s), 'type defined');
80 my $new = IO::Socket::UNIX->new_from_fd($listener->fileno(), 'r+');
82 is($new->sockdomain(), $d, 'domain match');
84 skip "no Socket::SO_PROTOCOL", 1 if !defined(eval { Socket::SO_PROTOCOL });
85 is($new->protocol(), $p, 'protocol match');
88 skip "no Socket::SO_TYPE", 1 if !defined(eval { Socket::SO_TYPE });
89 is($new->socktype(), $s, 'type match');