Catch an amazingly subtle SSL connection corruption bug.

Closing a set of pseudo-file descriptors in the wrong order caused junk data to
be written to the SSL stream. An apparent bug in OpenSSL then lets this corrupt
the _next_ SSL connection.
This commit is contained in:
Aldo Cortesi 2012-07-23 23:20:32 +12:00
parent ed64b0e796
commit eb88cea3c7

View File

@ -209,9 +209,9 @@ class BaseHandler:
try:
if not getattr(self.wfile, "closed", False):
self.wfile.flush()
self.close()
self.wfile.close()
self.rfile.close()
self.close()
except socket.error:
# Remote has disconnected
pass
@ -245,10 +245,10 @@ class BaseHandler:
self.connection.shutdown()
else:
self.connection.shutdown(socket.SHUT_RDWR)
self.connection.close()
except (socket.error, SSL.Error):
except (socket.error, SSL.Error), v:
# Socket probably already closed
pass
self.connection.close()
class TCPServer: