0
0
Fork 1
mirror of https://mau.dev/maunium/synapse.git synced 2024-12-15 05:53:51 +01:00

Correctly handle typing stream id resetting

This commit is contained in:
Erik Johnston 2016-09-09 16:44:26 +01:00
parent 56f38d1776
commit a4339de9de

View file

@ -274,11 +274,18 @@ class ReplicationResource(Resource):
@defer.inlineCallbacks @defer.inlineCallbacks
def typing(self, writer, current_token, request_streams): def typing(self, writer, current_token, request_streams):
current_position = current_token.presence current_position = current_token.typing
request_typing = request_streams.get("typing") request_typing = request_streams.get("typing")
if request_typing is not None: if request_typing is not None:
# If they have a higher token than current max, we can assume that
# they had been talking to a previous instance of the master. Since
# we reset the token on restart, the best (but hacky) thing we can
# do is to simply resend down all the typing notifications.
if request_typing > current_position:
request_typing = 0
typing_rows = yield self.typing_handler.get_all_typing_updates( typing_rows = yield self.typing_handler.get_all_typing_updates(
request_typing, current_position request_typing, current_position
) )