From ae19a7db8c5eab43858b24453bbbb352f8b6152a Mon Sep 17 00:00:00 2001 From: rkfg Date: Thu, 6 Dec 2018 13:32:05 +0300 Subject: Prevent crash on pagination. --- synapse/handlers/pagination.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'synapse/handlers/pagination.py') diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py index 43f81bd607..f2be6c1185 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py @@ -253,7 +253,7 @@ class PaginationHandler(object): ) state = None - if event_filter and event_filter.lazy_load_members(): + if event_filter and event_filter.lazy_load_members() and len(events) > 0: # TODO: remove redundant members # FIXME: we also care about invite targets etc. -- cgit 1.5.1 From 27128145e67b2c00ff84e7f3d6ca56b03616648b Mon Sep 17 00:00:00 2001 From: Matthew Hodgson Date: Wed, 2 Jan 2019 23:37:39 +0000 Subject: fix NPE in /messages by checking if all events were filtered out (#4330) --- changelog.d/4330.bugfix | 1 + synapse/handlers/pagination.py | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 changelog.d/4330.bugfix (limited to 'synapse/handlers/pagination.py') diff --git a/changelog.d/4330.bugfix b/changelog.d/4330.bugfix new file mode 100644 index 0000000000..666c9022e0 --- /dev/null +++ b/changelog.d/4330.bugfix @@ -0,0 +1 @@ +fix NPE in /messages by checking if all events were filtered out diff --git a/synapse/handlers/pagination.py b/synapse/handlers/pagination.py index 43f81bd607..9d257ecf31 100644 --- a/synapse/handlers/pagination.py +++ b/synapse/handlers/pagination.py @@ -235,6 +235,17 @@ class PaginationHandler(object): "room_key", next_key ) + if events: + if event_filter: + events = event_filter.filter(events) + + events = yield filter_events_for_client( + self.store, + user_id, + events, + is_peeking=(member_event_id is None), + ) + if not events: defer.returnValue({ "chunk": [], @@ -242,16 +253,6 @@ class PaginationHandler(object): "end": next_token.to_string(), }) - if event_filter: - events = event_filter.filter(events) - - events = yield filter_events_for_client( - self.store, - user_id, - events, - is_peeking=(member_event_id is None), - ) - state = None if event_filter and event_filter.lazy_load_members(): # TODO: remove redundant members -- cgit 1.5.1