[issue12343] Python 2.7.2 regression: ssl.SSLError: [Errno 2] _ssl.c:503: The operation did not complete (read)
Jesús Cea Avión
report at bugs.python.org
Thu Jun 16 03:26:08 CEST 2011
New submission from Jesús Cea Avión <jcea at 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 <report at bugs.python.org>
<http://bugs.python.org/issue12343>
_______________________________________
More information about the Python-bugs-list
mailing list