-
-
Notifications
You must be signed in to change notification settings - Fork 98
Fix pyopenssl adapter under Python 3 #113
Copy link
Copy link
Closed
Labels
bugSomething is brokenSomething is brokenhelp wantedSomebody help us, please!Somebody help us, please!
Description
It works under Python 2, but not under Python 3.
It's a follow-up for #6
I'm submitting a ...
- bug report
- feature request
- question about the decisions made in the repository
Describe the bug. What is the current behavior?
It raises exception OpenSSL.SSL.WantReadError.
What is the motivation / use case for changing the behavior?
I want consistency in SSL.
To Reproduce
Steps to reproduce the behavior: tox -- --no-cov -s cheroot/test/test_ssl.py
Expected behavior
That it'd work.
Details
cheroot/test/test_ssl.py::test_ssl_adapters[builtin] ✓ 50% █████
WantReadError()
Traceback (most recent call last):
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 1219, in communicate
req.parse_request()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 689, in parse_request
success = self.read_request_line()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 728, in read_request_line
request_line = self.rfile.readline()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 277, in readline
data = self.rfile.readline(256)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 513, in readline
b = self.read(nreadahead())
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 492, in nreadahead
readahead = self.peek(1)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 1076, in peek
return self._peek_unlocked(size)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 1083, in _peek_unlocked
current = self.raw.read(to_read)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1814, in recv_into
self._raise_ssl_error(self._ssl, result)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1614, in _raise_ssl_error
raise WantReadError()
OpenSSL.SSL.WantReadError
Exception in thread CP Server Thread-13: Traceback (most recent call last):
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 1219, in communicate
req.parse_request()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 689, in parse_request
success = self.read_request_line()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 728, in read_request_line
request_line = self.rfile.readline()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 277, in readline
data = self.rfile.readline(256)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 513, in readline
b = self.read(nreadahead())
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 492, in nreadahead
readahead = self.peek(1)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 1076, in peek
return self._peek_unlocked(size)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/_pyio.py", line 1083, in _peek_unlocked
current = self.raw.read(to_read)
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1814, in recv_into
self._raise_ssl_error(self._ssl, result)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1614, in _raise_ssl_error
raise WantReadError()
OpenSSL.SSL.WantReadError
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/workers/threadpool.py", line 112, in run conn.communicate()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 1256, in communicate
self._conditional_error(req, '500 Internal Server Error')
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 1282, in _conditional_error req.simple_response(response)
File "/home/wk/src/github/cherrypy/cheroot/cheroot/server.py", line 1071, in simple_response
self.conn.wfile.write(EMPTY.join(buf))
File "/home/wk/src/github/cherrypy/cheroot/cheroot/makefile.py", line 31, in write
self._flush_unlocked()
File "/home/wk/src/github/cherrypy/cheroot/cheroot/makefile.py", line 40, in _flush_unlocked
n = self.raw.write(bytes(self._write_buf))
File "/home/wk/.pyenv/versions/3.7.0/lib/python3.7/socket.py", line 607, in write
return self._sock.send(b)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1729, in send
self._raise_ssl_error(self._ssl, result)
File "/home/wk/src/github/cherrypy/cheroot/.tox/python/lib/python3.7/site-packages/OpenSSL/SSL.py", line 1614, in _raise_ssl_error
raise WantReadError()
OpenSSL.SSL.WantReadErrorEnvironment
- Cheroot version: master (6.5.2)
- CherryPy version: N/A
- Python version: 3.X
- OS: XXX
- Browser: N/A
Additional context
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething is brokenSomething is brokenhelp wantedSomebody help us, please!Somebody help us, please!