summary refs log tree commit diff
path: root/synapse/handlers/sync.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2016-08-30 10:58:46 +0100
committerErik Johnston <erik@matrix.org>2016-08-30 10:58:46 +0100
commit68e1a872fd3f7dc3bbd8bfcfcc5e6b88b1170a77 (patch)
tree35d6a012b2877c4e17e8bd4e621170e18ce420c8 /synapse/handlers/sync.py
parentMerge pull request #1049 from matrix-org/erikj/presence_users_in_room (diff)
downloadsynapse-68e1a872fd3f7dc3bbd8bfcfcc5e6b88b1170a77.tar.xz
Noop get_new_messages_for_device if token hasn't changed
Diffstat (limited to 'synapse/handlers/sync.py')
-rw-r--r--synapse/handlers/sync.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/synapse/handlers/sync.py b/synapse/handlers/sync.py
index 91934b0c81..8a3e04c28a 100644
--- a/synapse/handlers/sync.py
+++ b/synapse/handlers/sync.py
@@ -571,15 +571,18 @@ class SyncHandler(object):
                 user_id, device_id, since_stream_id
             )
 
-        logger.debug("Getting messages up to %d", now_token.to_device_key)
-        messages, stream_id = yield self.store.get_new_messages_for_device(
-            user_id, device_id, now_token.to_device_key
-        )
-        logger.debug("Got messages up to %d: %r", stream_id, messages)
-        sync_result_builder.now_token = now_token.copy_and_replace(
-            "to_device_key", stream_id
-        )
-        sync_result_builder.to_device = messages
+        if since_stream_id and since_stream_id == int(now_token.to_device_key):
+            logger.debug("Getting messages up to %d", now_token.to_device_key)
+            messages, stream_id = yield self.store.get_new_messages_for_device(
+                user_id, device_id, now_token.to_device_key
+            )
+            logger.debug("Got messages up to %d: %r", stream_id, messages)
+            sync_result_builder.now_token = now_token.copy_and_replace(
+                "to_device_key", stream_id
+            )
+            sync_result_builder.to_device = messages
+        else:
+            sync_result_builder.to_device = []
 
     @defer.inlineCallbacks
     def _generate_sync_entry_for_account_data(self, sync_result_builder):