Message138408
Combining non-blocking SSL sockets and "select()" raises "ssl.SSLError: [Errno 2] _ssl.c:503: The operation did not complete (read)" in Python 2.7.2, but works OK in 2.7.1, 2.6.* and previous.
This test shows the issue:
"""
import ssl
import socket
import select
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("gmail.com", 443))
s.setblocking(0)
s = ssl.wrap_socket(s)
s.write("GET / HTTP/1.0\r\nHost: gmail.com\r\n\r\n")
select.select([s], [], [])
s.read(9999999)
print "OK!"
"""
Under python 2.6 and 2.7.1 I get "OK", but under 2.7.2 I get:
"""
Traceback (most recent call last):
File "z.py", line 8, in <module>
s = ssl.wrap_socket(s)
File "/usr/local/lib/python2.7/ssl.py", line 372, in wrap_socket
ciphers=ciphers)
File "/usr/local/lib/python2.7/ssl.py", line 134, in __init__
self.do_handshake()
File "/usr/local/lib/python2.7/ssl.py", line 296, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [Errno 2] _ssl.c:503: The operation did not complete (read)
"""
Changing the order between the "s.setblocking()" and the "ssl.wrap_socket()" seems to solve the issue in this particular code sample, but this seems to be a serious regression in 2.7.2. I have programs in production here where changing the order doesn't solve the exception :-(. Dead in the water! :-( |
|
Date |
User |
Action |
Args |
2011-06-16 01:26:08 | jcea | set | recipients:
+ jcea |
2011-06-16 01:26:08 | jcea | set | messageid: <1308187568.46.0.159826705626.issue12343@psf.upfronthosting.co.za> |
2011-06-16 01:26:07 | jcea | link | issue12343 messages |
2011-06-16 01:26:07 | jcea | create | |
|