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