1# test ENOTCONN for splicing to unconnected udp socket 2 3use strict; 4use warnings; 5use IO::Socket; 6use BSD::Socket::Splice "SO_SPLICE"; 7 8our %args = ( 9 errno => 'ENOTCONN', 10 func => sub { 11 my $sb = IO::Socket::INET->new( 12 Proto => "udp", 13 LocalAddr => "127.0.0.1", 14 ) or die "socket bind failed: $!"; 15 16 my $sc = IO::Socket::INET->new( 17 Proto => "udp", 18 PeerAddr => $sb->sockhost(), 19 PeerPort => $sb->sockport(), 20 ) or die "socket connect failed: $!"; 21 22 $sb->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $sc->fileno())) 23 or die "splice from unconnected socket failed: $!"; 24 $sc->setsockopt(SOL_SOCKET, SO_SPLICE, pack('i', $sb->fileno())) 25 and die "splice to unconnected socket succeeded"; 26 }, 27); 28