简体   繁体   中英

_cffi_ssl._stdssl.error.SSLEOFError: EOF occurred in violation of protocol while running in PyPy

The question

I created a package for maintaining HTTP requests - just for fun.
It runs perfectly in normal Python, however, when I try to run it in PyPy, the following error occurs while requesting over HTTPS:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/adam/python/httpy/httpy/__init__.py", line 2019, in request
    http_version=http_version
  File "/home/adam/python/httpy/httpy/__init__.py", line 1863, in _raw_request
    proto.send_request(sock,method,defhdr,data,path,debug)
  File "/home/adam/python/httpy/httpy/__init__.py", line 1339, in send_request
    return self.sender(*args).send(sock)
  File "/home/adam/python/httpy/httpy/__init__.py", line 1677, in send
    sock.send(self.body)
  File "/opt/pypy3/lib/pypy3.8/ssl.py", line 1173, in send
    return self._sslobj.write(data)
  File "/opt/pypy3/lib/pypy3.8/_cffi_ssl/_stdssl/__init__.py", line 546, in write
    return self._write_with_length(_str_to_ffi_buffer(bytestring), len(bytestring))
  File "/opt/pypy3/lib/pypy3.8/_cffi_ssl/_stdssl/__init__.py", line 603, in _write_with_length
    raise pyssl_error(self, length)
_cffi_ssl._stdssl.error.SSLEOFError: EOF occurred in violation of protocol

Requests, for example, run well even in PyPy. Could the issue be something with using ssl.wrap_socket() or it's an error on a deeper level?

System info

Python version: 3.10.5
PyPy version: 3.8.13
OS: x86_64 Linux 5.18.10-arch1-1

OK, I found it out. It was because of sending b'' after request if the request body was empty. I thought that sending empty string would be an empty operation, but obviously it is not - it is treated as an EOF. I am still not sure why this fails only using PyPy. It's maybe because it's older version than Python where the code was tested.

Anyway, if you get this error, make sure you are not accidentially sending b'' .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM