Don't abortConnection() if the transport connection has already closed.

pull/3182/head
Will Hunt 2018-05-03 12:31:47 +01:00
parent 7dcbcca68c
commit 2e7a94c36b
1 changed files with 8 additions and 3 deletions

View File

@ -113,9 +113,14 @@ class _WrappedConnection(object):
if time.time() - self.last_request >= 2.5 * 60: if time.time() - self.last_request >= 2.5 * 60:
self.abort() self.abort()
# Abort the underlying TLS connection. The abort() method calls # Abort the underlying TLS connection. The abort() method calls
# loseConnection() on the underlying TLS connection which tries to # loseConnection() on the TLS connection which tries to
# shutdown the connection cleanly. We call abortConnection() # shutdown the connection cleanly. We call abortConnection()
# since that will promptly close the underlying TCP connection. # since that will promptly close the TLS connection.
#
# In Twisted >18.4; the TLS connection will be None if it has closed
# which will make abortConnection() throw. Check that the TLS connection
# is not None before trying to close it.
if self.transport.getHandle() is not None:
self.transport.abortConnection() self.transport.abortConnection()
def request(self, request): def request(self, request):