Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Transport endpoint not connected

by thospel (Hermit)
on Mar 16, 2005 at 20:01 UTC ( [id://440120] : note . print w/replies, xml ) Need Help??


in reply to Transport endpoint not connected

This should be pretty much impossible and I at least am unable to reproduce it. Do you have some way to trigger this so we can see the effect too ? On which OS and version is this ? If you use the list-form of accept, what is the value of the peer information you get from that for the case the getpeername(2) calls fail ? Can you get an strace/truss from around when this happens ?

Replies are listed 'Best First'.
Re^2: Transport endpoint not connected
by DrManhattan (Chaplain) on Mar 17, 2005 at 15:32 UTC

    I'm afraid I don't have any easy way to recreate it, other than throwing a lot of clients at it. It's perl 5.8.4 running under Linux 2.6.8. If I use the list form of accept, I get back the peer address correctly. Here's some debugging code:

    foreach my $socket (@ready) { print STDERR "Start accept\n"; my ($connect, $paddr) = $socket->accept(); my ($port, $iaddr) = sockaddr_in($paddr); print STDERR "Peer: ", inet_ntoa($iaddr), ":$port\n"; if ($connect) { if (!$connect->peerhost()) { cluck("NULL PEERHOST: " . join(" : ", $connect->sockhost(), $connect->sockport(), $connect->peerhost(), $connect->peerport(), $! )); close($connect); print STDERR "End accept (no peerhost) +\n"; next; } $CLIENTS->add($connect); print STDERR "End accept (success)\n"; next; } print STDERR "End accept (no connect)\n"; }

    Output looks like this:

    Start accept
    Peer: X.X.X.X:15627
    NULL PEERHOST: Y.Y.Y.Y : 1235 :  :  : Transport endpoint is not connected at ./foo.pl line 115
    End accept (no peerhost)
    
    Where X.X.X.X is the client ip and Y.Y.Y.Y is my server ip. Perhaps this is an IO::Socket::INET bug?

    On a related note, I'm also getting segfaults from perl under heavy load (~2500+ clients). The segfaults don't seem to be related to the null peerhosts. I believe they're occuring on syswrite() calls when I'm sending text back to the clients.

    -Matt