X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=ec2f3b4ca0214836327bb99c8a84aaa60a609b6a;hb=5564fb00052dcfaf183fe6b4c0c55ad674f6c467;hp=e774c59d41ddb6df20c610e2ef886a14d7e6c2f1;hpb=57c9d48d821e4706ed45f52f86929b01dd494966;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index e774c59d..ec2f3b4c 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -37,6 +37,7 @@ $now = time; BEGIN { # Checks if blocking is supported eval { + local $^W; require POSIX; POSIX->import(qw(O_NONBLOCK F_SETFL F_GETFL)) }; if ($@ || $main::is_win) { @@ -50,12 +51,14 @@ BEGIN { # import as many of these errno values as are available eval { + local $^W; require Errno; Errno->import(qw(EAGAIN EINPROGRESS EWOULDBLOCK)); }; unless ($^O eq 'MSWin32') { if ($] >= 5.6) { eval { + local $^W; require Socket; Socket->import(qw(IPPROTO_TCP TCP_NODELAY)); }; } else { @@ -402,9 +405,10 @@ sub nolinger dbg("Linger is: $l $t, keepalive: $k, nagle: $n"); } - setsockopt($conn->{sock}, SOL_SOCKET, SO_KEEPALIVE, 1) or confess "setsockopt keepalive: $!"; - setsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER, pack("ll", 0, 0)) or confess "setsockopt linger: $!"; - setsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY, 1) or confess "setsockopt: $!"; + eval {setsockopt($conn->{sock}, SOL_SOCKET, SO_KEEPALIVE, 1)} or dbg("setsockopt keepalive: $!"); + eval {setsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER, pack("ll", 0, 0))} or dbg("setsockopt linger: $!"); + eval {setsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY, 1)} or eval {setsockopt($conn->{sock}, SOL_SOCKET, TCP_NODELAY, 1)} or dbg("setsockopt tcp_nodelay: $!"); + $conn->{sock}->autoflush(0); if (isdbg('sock')) { my ($l, $t) = unpack "ll", getsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER); @@ -413,7 +417,6 @@ sub nolinger dbg("Linger is: $l $t, keepalive: $k, nagle: $n"); } } - $conn->{sock}->autoflush(0); } sub dequeue