From 1e9b2cad9ce88b15f55f0c990db289bbe6f79885 Mon Sep 17 00:00:00 2001 From: Jason Volk Date: Wed, 27 Feb 2019 18:24:12 -0800 Subject: [PATCH] modules/client/sync: Improve various sync handler conditions. --- modules/client/sync/presence.cc | 3 +++ modules/client/sync/rooms/ephemeral/receipt.cc | 6 +++--- modules/client/sync/rooms/ephemeral/typing.cc | 3 +++ modules/client/sync/rooms/state.cc | 3 +++ modules/client/sync/rooms/timeline.cc | 3 +++ modules/client/sync/rooms/unread_notifications.cc | 3 +++ 6 files changed, 18 insertions(+), 3 deletions(-) diff --git a/modules/client/sync/presence.cc b/modules/client/sync/presence.cc index db7584caf..556ee7341 100644 --- a/modules/client/sync/presence.cc +++ b/modules/client/sync/presence.cc @@ -33,6 +33,9 @@ ircd::m::sync::presence bool ircd::m::sync::presence_linear(data &data) { + if(!data.event_idx) + return false; + assert(data.event); const m::event &event{*data.event}; if(json::get<"type"_>(event) != "ircd.presence") diff --git a/modules/client/sync/rooms/ephemeral/receipt.cc b/modules/client/sync/rooms/ephemeral/receipt.cc index d33ca0d18..3ff93f7f6 100644 --- a/modules/client/sync/rooms/ephemeral/receipt.cc +++ b/modules/client/sync/rooms/ephemeral/receipt.cc @@ -34,11 +34,11 @@ ircd::m::sync::room_ephemeral_m_receipt_m_read bool ircd::m::sync::room_ephemeral_m_receipt_m_read_linear(data &data) { - assert(data.event); - if(json::get<"type"_>(*data.event) != "m.receipt") + if(data.event_idx) return false; - if(!my_host(json::get<"origin"_>(*data.event))) + assert(data.event); + if(json::get<"type"_>(*data.event) != "m.receipt") return false; _handle_message_receipt(data, *data.event); diff --git a/modules/client/sync/rooms/ephemeral/typing.cc b/modules/client/sync/rooms/ephemeral/typing.cc index e7cb5aff6..c87e2c21c 100644 --- a/modules/client/sync/rooms/ephemeral/typing.cc +++ b/modules/client/sync/rooms/ephemeral/typing.cc @@ -32,6 +32,9 @@ ircd::m::sync::room_ephemeral_m_typing bool ircd::m::sync::room_ephemeral_m_typing_linear(data &data) { + if(data.event_idx) + return false; + assert(data.event); if(json::get<"type"_>(*data.event) != "m.typing") return false; diff --git a/modules/client/sync/rooms/state.cc b/modules/client/sync/rooms/state.cc index 08f1887bf..a25ea8ba5 100644 --- a/modules/client/sync/rooms/state.cc +++ b/modules/client/sync/rooms/state.cc @@ -62,6 +62,9 @@ ircd::m::sync::_default_fopts bool ircd::m::sync::room_state_linear(data &data) { + if(!data.event_idx) + return false; + assert(data.event); if(!json::get<"state_key"_>(*data.event)) return false; diff --git a/modules/client/sync/rooms/timeline.cc b/modules/client/sync/rooms/timeline.cc index 24e4975fd..be2706095 100644 --- a/modules/client/sync/rooms/timeline.cc +++ b/modules/client/sync/rooms/timeline.cc @@ -50,6 +50,9 @@ ircd::m::sync::default_keys bool ircd::m::sync::room_timeline_linear(data &data) { + if(!data.event_idx) + return false; + assert(data.event); if(!json::get<"event_id"_>(*data.event)) return false; diff --git a/modules/client/sync/rooms/unread_notifications.cc b/modules/client/sync/rooms/unread_notifications.cc index 620ff5148..7398d1dec 100644 --- a/modules/client/sync/rooms/unread_notifications.cc +++ b/modules/client/sync/rooms/unread_notifications.cc @@ -34,6 +34,9 @@ ircd::m::sync::room_unread_notifications bool ircd::m::sync::room_unread_notifications_linear(data &data) { + if(!data.event_idx) + return false; + assert(data.event); if(!json::get<"event_id"_>(*data.event)) return false;