From 3b01483cc4706b3720143e50f22b5314c25be942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Damir=20Jeli=C4=87?= Date: Fri, 3 Aug 2018 12:25:17 +0200 Subject: [PATCH] server: Use a timeout for syncs. --- matrix/server.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/matrix/server.py b/matrix/server.py index db867e6..b294e1f 100644 --- a/matrix/server.py +++ b/matrix/server.py @@ -416,9 +416,10 @@ class MatrixServer: def schedule_sync(self): self.sync_time = time.time() - def sync(self): + def sync(self, timeout=None): + # type: Optional[int] -> None self.sync_time = None - _, request = self.client.sync() + _, request = self.client.sync(timeout) self.send_or_queue(request) def login(self): @@ -536,6 +537,13 @@ class MatrixServer: def handle_response(self, response): # type: (MatrixMessage) -> None self.lag = response.elapsed * 1000 + + # If the response was a sync response and contained a timeout the + # timeout is expected and should be removed from the lag. + # TODO the timeout isn't a constant + if isinstance(response, SyncRepsponse): + self.lag = max(0, self.lag - (30000)) + self.lag_done = True W.bar_item_update("lag") @@ -649,7 +657,7 @@ def matrix_timer_cb(server_name, remaining_calls): return W.WEECHAT_RC_OK if server.sync_time and current_time > (server.sync_time + 2): - server.sync() + server.sync(30000) while server.send_queue: message = server.send_queue.popleft()