diff --git a/changelog.d/10995.bugfix b/changelog.d/10995.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..3eef96f3db726fab1628b61c7c0d56920fab8045 --- /dev/null +++ b/changelog.d/10995.bugfix @@ -0,0 +1 @@ +Correct a bugfix introduced in Synapse v1.44.0 that wouldn't catch every error of the connection breaks before a response could be written to it. diff --git a/synapse/http/server.py b/synapse/http/server.py index 0df1bfbeef7aaac7d506f4814f78266cd5072b3c..897ba5e4531bcab7380392218d3a292062c968f6 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py @@ -563,7 +563,10 @@ class _ByteProducer: try: self._request.registerProducer(self, True) - except RuntimeError as e: + except AttributeError as e: + # Calling self._request.registerProducer might raise an AttributeError since + # the underlying Twisted code calls self._request.channel.registerProducer, + # however self._request.channel will be None if the connection was lost. logger.info("Connection disconnected before response was written: %r", e) # We drop our references to data we'll not use.