use strict;
use warnings;
use IO::Socket::INET;
my $srv = IO::Socket::INET->new(
LocalAddr => '127.0.0.1',
LocalPort => 7777,
ReuseAddr => 1,
Listen => 1,
) or die $!;
my $sock = IO::Socket::INET->new(
PeerAddr => '127.0.0.1',
PeerPort => 7777,
) or die $!;
my $cli = $srv->accept or die $!;
my $sock2 = IO::Socket::INET->new(
PeerAddr => '127.0.0.1',
PeerPort => 7777,
) or die $!;
my $cli2 = $srv->accept or die $!;
local $SIG{ALRM} = sub { $sock->send( "hi\n", 0 ); };
alarm 2;
my $res;
use Data::Dumper;
$res = $sock2->recv( my $buf, 1024 ) or die Dumper [ $res, $!, 0 + $!, ];
__END__
$VAR1 = [
undef,
'',
'0'
];
####
$VAR1 = [
undef,
'Interrupted system call',
'4'
];
##
##
my $ret = $self->{_socket}->recv( my $buffer, 131072 );
unless ( defined $ret ) {
- next if $! == EINTR;
+ next if $! == EINTR or $! == 0;
confess "Error reading reply from server: $!";
}