0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-29 10:12:39 +01:00

ircd:Ⓜ️:vm::eval: Add member which caches the m::internal(room) result.

This commit is contained in:
Jason Volk 2020-03-21 17:23:08 -07:00
parent 2762361f03
commit 27556f2d9c
2 changed files with 6 additions and 5 deletions

View file

@ -88,6 +88,7 @@ struct ircd::m::vm::eval
event::conforms report; event::conforms report;
string_view room_version; string_view room_version;
const hook::base::site *phase {nullptr}; const hook::base::site *phase {nullptr};
bool room_internal {false};
static bool for_each_pdu(const std::function<bool (const event &)> &); static bool for_each_pdu(const std::function<bool (const event &)> &);
static const event *find_pdu(const eval &, const event::id &); static const event *find_pdu(const eval &, const event::id &);

View file

@ -468,14 +468,14 @@ ircd::m::vm::execute_pdu(eval &eval,
at<"type"_>(event) at<"type"_>(event)
}; };
const bool internal const scope_restore room_internal
{ {
m::internal(room_id) eval.room_internal, m::internal(room_id)
}; };
const bool authenticate const bool authenticate
{ {
opts.auth && !internal opts.auth && !eval.room_internal
}; };
// The conform hook runs static checks on an event's formatting and // The conform hook runs static checks on an event's formatting and
@ -486,7 +486,7 @@ ircd::m::vm::execute_pdu(eval &eval,
call_hook(conform_hook, eval, event, eval); call_hook(conform_hook, eval, event, eval);
} }
if(unlikely(internal && !my(event))) if(unlikely(eval.room_internal && !my(event)))
throw error throw error
{ {
fault::GENERAL, "Internal room event denied from external source." fault::GENERAL, "Internal room event denied from external source."
@ -730,7 +730,7 @@ ircd::m::vm::write_append(eval &eval,
//XXX //XXX
const auto &[pass, fail] const auto &[pass, fail]
{ {
opts.auth && !internal(room.room_id)? opts.auth && !eval.room_internal?
room::auth::check(event, room): room::auth::check(event, room):
room::auth::passfail{true, {}} room::auth::passfail{true, {}}
}; };