Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 37bb93d

Browse files
authored
Fix exception responding to request that has been closed (#10932)
Introduced in #10905
1 parent 2b9d174 commit 37bb93d

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

changelog.d/10932.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Speed up responding with large JSON objects to requests.

synapse/http/server.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -561,9 +561,17 @@ def __init__(
561561
self._iterator = iterator
562562
self._paused = False
563563

564-
# Register the producer and start producing data.
565-
self._request.registerProducer(self, True)
566-
self.resumeProducing()
564+
try:
565+
self._request.registerProducer(self, True)
566+
except RuntimeError as e:
567+
logger.info("Connection disconnected before response was written: %r", e)
568+
569+
# We drop our references to data we'll not use.
570+
self._request = None
571+
self._iterator = iter(())
572+
else:
573+
# Start producing if `registerProducer` was successful
574+
self.resumeProducing()
567575

568576
def _send_data(self, data: List[bytes]) -> None:
569577
"""

0 commit comments

Comments
 (0)