|
|
|
@ -2793,20 +2793,13 @@ else: |
|
|
|
# consume data |
|
|
|
s.read() |
|
|
|
|
|
|
|
data = b"data" |
|
|
|
|
|
|
|
# read(-1, buffer) is supported, even though read(-1) is not |
|
|
|
data = b"data" |
|
|
|
s.send(data) |
|
|
|
buffer = bytearray(len(data)) |
|
|
|
self.assertEqual(s.read(-1, buffer), len(data)) |
|
|
|
self.assertEqual(buffer, data) |
|
|
|
|
|
|
|
# recv/read(0) should return no data |
|
|
|
s.send(data) |
|
|
|
self.assertEqual(s.recv(0), b"") |
|
|
|
self.assertEqual(s.read(0), b"") |
|
|
|
self.assertEqual(s.read(), data) |
|
|
|
|
|
|
|
# Make sure sendmsg et al are disallowed to avoid |
|
|
|
# inadvertent disclosure of data and/or corruption |
|
|
|
# of the encrypted data stream |
|
|
|
@ -2822,6 +2815,26 @@ else: |
|
|
|
|
|
|
|
s.close() |
|
|
|
|
|
|
|
def test_recv_zero(self): |
|
|
|
server = ThreadedEchoServer(CERTFILE) |
|
|
|
server.__enter__() |
|
|
|
self.addCleanup(server.__exit__, None, None) |
|
|
|
s = socket.create_connection((HOST, server.port)) |
|
|
|
self.addCleanup(s.close) |
|
|
|
s = ssl.wrap_socket(s, suppress_ragged_eofs=False) |
|
|
|
self.addCleanup(s.close) |
|
|
|
|
|
|
|
# recv/read(0) should return no data |
|
|
|
s.send(b"data") |
|
|
|
self.assertEqual(s.recv(0), b"") |
|
|
|
self.assertEqual(s.read(0), b"") |
|
|
|
self.assertEqual(s.read(), b"data") |
|
|
|
|
|
|
|
# Should not block if the other end sends no data |
|
|
|
s.setblocking(False) |
|
|
|
self.assertEqual(s.recv(0), b"") |
|
|
|
self.assertEqual(s.recv_into(bytearray()), 0) |
|
|
|
|
|
|
|
def test_nonblocking_send(self): |
|
|
|
server = ThreadedEchoServer(CERTFILE, |
|
|
|
certreqs=ssl.CERT_NONE, |
|
|
|
|