diff options
author | Neil Johnson <neil@matrix.org> | 2018-08-14 17:40:59 +0100 |
---|---|---|
committer | Neil Johnson <neil@matrix.org> | 2018-08-14 17:40:59 +0100 |
commit | 70e48cbbb1f0975739135ba52fdcc0fb660d7a4c (patch) | |
tree | f9276dd9e8b5f7ca6861e5924c449d7ca6ac48bf /synapse/handlers/sync.py | |
parent | Rename MAU prometheus metric (diff) | |
parent | Merge pull request #3692 from matrix-org/neil/fix_postgres_test_initialise_re... (diff) | |
download | synapse-70e48cbbb1f0975739135ba52fdcc0fb660d7a4c.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into neilj/change_prometheus_mau_metric_name
Diffstat (limited to 'synapse/handlers/sync.py')
-rw-r--r-- | synapse/handlers/sync.py | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py index 6393a9674b..3b21a04a5d 100644 --- a/synapse/handlers/sync.py +++ b/synapse/handlers/sync.py @@ -191,6 +191,7 @@ class SyncHandler(object): self.clock = hs.get_clock() self.response_cache = ResponseCache(hs, "sync") self.state = hs.get_state_handler() + self.auth = hs.get_auth() # ExpiringCache((User, Device)) -> LruCache(state_key => event_id) self.lazy_loaded_members_cache = ExpiringCache( @@ -198,19 +199,27 @@ class SyncHandler(object): max_len=0, expiry_ms=LAZY_LOADED_MEMBERS_CACHE_MAX_AGE, ) + @defer.inlineCallbacks def wait_for_sync_for_user(self, sync_config, since_token=None, timeout=0, full_state=False): """Get the sync for a client if we have new data for it now. Otherwise wait for new data to arrive on the server. If the timeout expires, then return an empty sync result. Returns: - A Deferred SyncResult. + Deferred[SyncResult] """ - return self.response_cache.wrap( + # If the user is not part of the mau group, then check that limits have + # not been exceeded (if not part of the group by this point, almost certain + # auth_blocking will occur) + user_id = sync_config.user.to_string() + yield self.auth.check_auth_blocking(user_id) + + res = yield self.response_cache.wrap( sync_config.request_key, self._wait_for_sync_for_user, sync_config, since_token, timeout, full_state, ) + defer.returnValue(res) @defer.inlineCallbacks def _wait_for_sync_for_user(self, sync_config, since_token, timeout, |