diff options
author | Erik Johnston <erik@matrix.org> | 2019-01-30 11:48:29 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2019-01-30 11:48:29 +0000 |
commit | d351be15670766d634b12f08483b3b4a750f76fb (patch) | |
tree | 0a58ea6f751407e66dd7b553e045a737c38e4667 /tests/server.py | |
parent | Merge branch 'develop' of github.com:matrix-org/synapse into matrix-org-hotfixes (diff) | |
parent | Merge pull request #4521 from matrix-org/rav/fed_routing/cleanups (diff) | |
download | synapse-d351be15670766d634b12f08483b3b4a750f76fb.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into matrix-org-hotfixes
Diffstat (limited to 'tests/server.py')
-rw-r--r-- | tests/server.py | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/tests/server.py b/tests/server.py index 6adcc73f91..fc1e76d146 100644 --- a/tests/server.py +++ b/tests/server.py @@ -354,7 +354,13 @@ class FakeTransport(object): :type: twisted.internet.interfaces.IReactorTime """ + _protocol = attr.ib(default=None) + """The Protocol which is producing data for this transport. Optional, but if set + will get called back for connectionLost() notifications etc. + """ + disconnecting = False + disconnected = False buffer = attr.ib(default=b'') producer = attr.ib(default=None) @@ -364,11 +370,17 @@ class FakeTransport(object): def getHost(self): return None - def loseConnection(self): - self.disconnecting = True + def loseConnection(self, reason=None): + if not self.disconnecting: + logger.info("FakeTransport: loseConnection(%s)", reason) + self.disconnecting = True + if self._protocol: + self._protocol.connectionLost(reason) + self.disconnected = True def abortConnection(self): - self.disconnecting = True + logger.info("FakeTransport: abortConnection()") + self.loseConnection() def pauseProducing(self): if not self.producer: @@ -407,9 +419,16 @@ class FakeTransport(object): # TLSMemoryBIOProtocol return + if self.disconnected: + return + logger.info("%s->%s: %s", self._protocol, self.other, self.buffer) + if getattr(self.other, "transport") is not None: - self.other.dataReceived(self.buffer) - self.buffer = b"" + try: + self.other.dataReceived(self.buffer) + self.buffer = b"" + except Exception as e: + logger.warning("Exception writing to protocol: %s", e) return self._reactor.callLater(0.0, _write) |