How to timeout a recv() on an ssl connection?
Grant Edwards
invalid at invalid.invalid
Mon Sep 10 13:37:37 EDT 2012
On 2012-09-10, Grant Edwards <invalid at invalid.invalid> wrote:
> I can't figure out how to timeout a recv() on an SSLSocket -- I'm using
> Python 2.6 nad 2.7. Here's what I've got so far (it needs to work on
> either a plain or SSL socket):
>
> s.settimeout(timeout)
> try:
> b = ord(s.recv(1))
> except socket.timeout:
> return None
> except ssl.SSLError as e:
> if e.message == 'The read operation timed out':
> return None
> else:
> raise
> finally:
> s.settimeout(None)
>
>
> It works fine on normal sockets. With an SSLSocket, it works the
> first time it's called with timeout set to something other than None
> (it times out properly). Subsequence reads with timeout set to None
> work, but then the second time it's called with a non-None timeout, it
> hangs for several minutes, and then the recv() returns an empty
> string.
Doh! Never mind.
The above code does appear to be working correctly. I had a different
bug that was misleading me...
--
Grant Edwards grant.b.edwards Yow! What GOOD is a
at CARDBOARD suitcase ANYWAY?
gmail.com
More information about the Python-list
mailing list