X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=8cf36701ef78d61852d78ee9c612dab6982707f5;hb=fed23e959f913570cfde56d06ef8590bee37c3d4;hp=5aef961ee4f4162593228d0c1abd71a41dd52fef;hpb=60bd15a823797c01182ebfb8b6b3a5bf10065b42;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index 5aef961e..8cf36701 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -72,7 +72,9 @@ BEGIN { eval '*EWOULDBLOCK = *EAGAIN = sub { 10035 };'; eval '*F_GETFL = sub { 0 };'; eval '*F_SETFL = sub { 0 };'; - $blocking_supported = 1; + eval '*IPPROTO_TCP = sub { 6 };'; + eval '*TCP_NODELAY = sub { 1 };'; + $blocking_supported = 0; # it appears that this DOESN'T work :-( } } @@ -395,23 +397,23 @@ sub nolinger if (isdbg('sock')) { my ($l, $t) = unpack "ll", getsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER); my $k = unpack 'l', getsockopt($conn->{sock}, SOL_SOCKET, SO_KEEPALIVE); - my $n = unpack "l", getsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY); + my $n = $main::is_win ? 0 : unpack "l", getsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY); dbg("Linger is: $l $t, keepalive: $k, nagle: $n"); } - - setsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER, pack("ll", 0, 0)) or confess "setsockopt linger: $!"; + setsockopt($conn->{sock}, SOL_SOCKET, SO_KEEPALIVE, 1) or confess "setsockopt keepalive: $!"; unless ($main::is_win) { + 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: $!"; - } - $conn->{sock}->autoflush(0); - + } if (isdbg('sock')) { my ($l, $t) = unpack "ll", getsockopt($conn->{sock}, SOL_SOCKET, SO_LINGER); my $k = unpack 'l', getsockopt($conn->{sock}, SOL_SOCKET, SO_KEEPALIVE); - my $n = unpack "l", getsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY); + my $n = $main::is_win ? 0 : unpack "l", getsockopt($conn->{sock}, IPPROTO_TCP, TCP_NODELAY); dbg("Linger is: $l $t, keepalive: $k, nagle: $n"); - } + + } + $conn->{sock}->autoflush(0); } sub dequeue