summary refs log tree commit diff
path: root/synapse/http
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2021-09-28 14:37:06 +0100
committerErik Johnston <erik@matrix.org>2021-09-28 14:37:06 +0100
commitb9a0f7983d33dceb2bdb298171f6cbf46c697091 (patch)
treeee82219b5d0a576cd54694208c1efe0d7c3c3e1a /synapse/http
parentMerge remote-tracking branch 'origin/develop' into matrix-org-hotfixes (diff)
parentFix exception responding to request that has been closed (#10932) (diff)
downloadsynapse-b9a0f7983d33dceb2bdb298171f6cbf46c697091.tar.xz
Merge remote-tracking branch 'origin/release-v1.44' into matrix-org-hotfixes
Diffstat (limited to 'synapse/http')
-rw-r--r--synapse/http/server.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/synapse/http/server.py b/synapse/http/server.py

index 1a50305dcf..0df1bfbeef 100644 --- a/synapse/http/server.py +++ b/synapse/http/server.py
@@ -561,9 +561,17 @@ class _ByteProducer: self._iterator = iterator self._paused = False - # Register the producer and start producing data. - self._request.registerProducer(self, True) - self.resumeProducing() + try: + self._request.registerProducer(self, True) + except RuntimeError as e: + logger.info("Connection disconnected before response was written: %r", e) + + # We drop our references to data we'll not use. + self._request = None + self._iterator = iter(()) + else: + # Start producing if `registerProducer` was successful + self.resumeProducing() def _send_data(self, data: List[bytes]) -> None: """