Detecting socket connection failure

schwehr at gmail.com schwehr at gmail.com
Wed Jul 19 11:34:00 EDT 2006


Hi Dieter,

Thanks for the feedback.  Were you also using mac osx?  I am wondering
at what level this bug is occuring.

-kurt

Dieter Maurer wrote:
> schwehr at gmail.com writes on 10 Jul 2006 08:42:11 -0700:
> > I've tried to RTFM this and am having no luck.    First off, I am using
> > Mac OSX 10.4.7 with python 2.4.2 from fink.  I am trying to connect to
> > a server that should be rejecting connections and I was surprised when
> > it did not throw an exception or do something otherwise equally nasty.
> > It just connects and never returns any data.  First, the proof that
> > something is there and rejecting the connection (or is it that this
> > thing actually accepts the connection and then drops it?)...
> >
> > telnet localhost 31414
> > Trying 127.0.0.1...
> > Connected to localhost.
> > Escape character is '^]'.
> > Connection closed by foreign host.
>
> What you see here is that the connection was opened successfully
> (the connect succeeded) and then closed again.
>
> > ...
> > In [1]: import socket, select
> >
> > In [2]: remote = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
> >
> > In [3]: remote.connect(('localhost',31414))
> >
> > In [4]: remote.recv(200)
> > Out[4]: ''
>
> The means, that you see the same in Python:
> "recv" returning an empty string indicates that the connection
> was closed.
>
> >
> > In [5]: r,w,e=select.select([remote],[remote],[remote],1)
> >
> > In [6]: print r,w,e
> > [<socket._socketobject object at 0x7e48d0>] [<socket._socketobject
> > object at 0x7e48d0>] []
>
> I have seen something similar recently:
>
>   I can write ("send" to be precise) to a socket closed by
>   the foreign partner without error
>   (but of course, the written data does not arrive at the remote side).
>   Only the second "send" raises an exception.
> 
>   I expect this is a TCP bug.
> 
> 
> --
> Dieter




More information about the Python-list mailing list