Browse Source

Merge pull request #3182 from Half-Shot/hs/fix-twisted-shutdown

Fix 'Unhandled Error' logs with Twisted 18.4
Richard van der Hoff 6 years ago
parent
commit
2117f84323
1 changed files with 8 additions and 3 deletions
  1. 8 3
      synapse/http/endpoint.py

+ 8 - 3
synapse/http/endpoint.py

@@ -115,10 +115,15 @@ class _WrappedConnection(object):
         if time.time() - self.last_request >= 2.5 * 60:
             self.abort()
             # 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()
-            # since that will promptly close the underlying TCP connection.
-            self.transport.abortConnection()
+            # 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()
 
     def request(self, request):
         self.last_request = time.time()