diff --git a/include/ircd/m/event/append.h b/include/ircd/m/append.h similarity index 90% rename from include/ircd/m/event/append.h rename to include/ircd/m/append.h index 7fed15bc9..51df391eb 100644 --- a/include/ircd/m/event/append.h +++ b/include/ircd/m/append.h @@ -1,7 +1,7 @@ // Matrix Construct // // Copyright (C) Matrix Construct Developers, Authors & Contributors -// Copyright (C) 2016-2018 Jason Volk +// Copyright (C) 2016-2019 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above @@ -9,7 +9,7 @@ // full license for this software is available in the LICENSE file. #pragma once -#define HAVE_IRCD_M_EVENT_APPEND +#define HAVE_IRCD_M_APPEND namespace ircd::m { diff --git a/include/ircd/m/event/event.h b/include/ircd/m/event/event.h index 546d09bd6..a48419578 100644 --- a/include/ircd/m/event/event.h +++ b/include/ircd/m/event/event.h @@ -156,7 +156,6 @@ struct ircd::m::event #include "cached.h" #include "prefetch.h" #include "conforms.h" -#include "append.h" #include "pretty.h" inline ircd::m::event::operator diff --git a/include/ircd/m/m.h b/include/ircd/m/m.h index 7fd845fff..24c8b7dbf 100644 --- a/include/ircd/m/m.h +++ b/include/ircd/m/m.h @@ -79,6 +79,7 @@ namespace ircd::m #include "sync.h" #include "fetch.h" #include "breadcrumb_rooms.h" +#include "append.h" struct ircd::m::init { diff --git a/ircd/m_event.cc b/ircd/m_event.cc index 92db91c59..d683a4764 100644 --- a/ircd/m_event.cc +++ b/ircd/m_event.cc @@ -415,6 +415,29 @@ ircd::m::append(json::stack::object &object, }; #endif + if(opts.user_id && !visible(event, *opts.user_id)) + { + log::debug + { + log, "Not sending event '%s' because not visible by '%s'", + string_view{event.event_id}, + string_view{*opts.user_id} + }; + + return; + } + + if(!json::get<"state_key"_>(event) && has_event_idx && m::redacted(*opts.event_idx)) + { + log::debug + { + log, "Not sending event '%s' because redacted.", + string_view{event.event_id}, + }; + + return; + } + if(!json::get<"state_key"_>(event) && has_user) { const m::user::ignores ignores{*opts.user_id};