cpython: f4cff2bf9903 (original) (raw)
Mercurial > cpython
changeset 100778:f4cff2bf9903 2.7
Issue #23804: Fix SSL recv/read(0) to not return 1024 bytes [#23804]
Martin Panter vadmium+py@gmail.com | |
---|---|
date | Mon, 28 Mar 2016 00:22:09 +0000 |
parents | b84d136e0028 |
children | cff06d875678 |
files | Lib/ssl.py Lib/test/test_ssl.py Misc/NEWS |
diffstat | 3 files changed, 13 insertions(+), 3 deletions(-)[+] [-] Lib/ssl.py 4 Lib/test/test_ssl.py 9 Misc/NEWS 3 |
line wrap: on
line diff
--- a/Lib/ssl.py +++ b/Lib/ssl.py @@ -625,7 +625,7 @@ class SSLSocket(socket): # EAGAIN. self.getpeername()
- def read(self, len=1024, buffer=None): """Read up to LEN bytes and return them. Return zero-length string on EOF."""
@@ -636,7 +636,7 @@ class SSLSocket(socket): if buffer is not None: v = self._sslobj.read(len, buffer) else:
v = self._sslobj.read(len or 1024)[](#l1.16)
v = self._sslobj.read(len)[](#l1.17) return v[](#l1.18) except SSLError as x:[](#l1.19) if x.args[0] == SSL_ERROR_EOF and self.suppress_ragged_eofs:[](#l1.20)
--- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -2622,13 +2622,20 @@ else: # consume data s.read()
data = b"data"[](#l2.7)
+ # read(-1, buffer) is supported, even though read(-1) is not
data = b"data"[](#l2.10) s.send(data)[](#l2.11) buffer = bytearray(len(data))[](#l2.12) self.assertEqual(s.read(-1, buffer), len(data))[](#l2.13) self.assertEqual(buffer, data)[](#l2.14)
# recv/read(0) should return no data[](#l2.16)
s.send(data)[](#l2.17)
self.assertEqual(s.recv(0), b"")[](#l2.18)
self.assertEqual(s.read(0), b"")[](#l2.19)
self.assertEqual(s.read(), data)[](#l2.20)
+ s.write(b"over\n") self.assertRaises(ValueError, s.recv, -1)