A more precise test with less I/O.
diff --git a/OpenSSL/test/test_ssl.py b/OpenSSL/test/test_ssl.py
index bc1cef0..bb1c9ae 100644
--- a/OpenSSL/test/test_ssl.py
+++ b/OpenSSL/test/test_ssl.py
@@ -2303,14 +2303,23 @@
self.assertEqual(exc.args[0], EPIPE)
- def test_shutdown_shutdown(self):
+ def test_shutdown_truncated(self):
"""
- :obj:`Connection.shutdown` raises :obj:`Error` when called for a second
- time on the same connection.
+ If the underlying connection is truncated, :obj:`Connection.shutdown`
+ raises an :obj:`Error`.
"""
- server, client = self._loopback()
- client.send(b"AN BYTES")
- server.shutdown()
+ server_ctx = Context(TLSv1_METHOD)
+ client_ctx = Context(TLSv1_METHOD)
+ server_ctx.use_privatekey(
+ load_privatekey(FILETYPE_PEM, server_key_pem))
+ server_ctx.use_certificate(
+ load_certificate(FILETYPE_PEM, server_cert_pem))
+ server = Connection(server_ctx, None)
+ client = Connection(client_ctx, None)
+ self._handshakeInMemory(client, server)
+ self.assertEqual(server.shutdown(), False)
+ self.assertRaises(WantReadError, server.shutdown)
+ server.bio_shutdown()
self.assertRaises(Error, server.shutdown)