New submission from Jesús Cea Avión <j...@jcea.es>: 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! :-( ---------- components: Extension Modules messages: 138408 nosy: jcea priority: critical severity: normal stage: needs patch status: open title: Python 2.7.2 regression: ssl.SSLError: [Errno 2] _ssl.c:503: The operation did not complete (read) type: behavior versions: Python 2.7 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12343> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com