diff --git a/include/ircd/m/push.h b/include/ircd/m/push.h index a066a20b0..9c151e334 100644 --- a/include/ircd/m/push.h +++ b/include/ircd/m/push.h @@ -38,6 +38,7 @@ namespace ircd::m::push struct ircd::m::push::request :instance_list { + static conf::item enable; static conf::item timeout; static ctx::mutex mutex; static ctx::dock dock; diff --git a/matrix/push.cc b/matrix/push.cc index c0da72739..5d2b19971 100644 --- a/matrix/push.cc +++ b/matrix/push.cc @@ -42,6 +42,13 @@ ircd::util::instance_list::list allocator }; +decltype(ircd::m::push::request::enable) +ircd::m::push::request::enable +{ + { "name", "ircd.m.push.request.enable" }, + { "default", true }, +}; + decltype(ircd::m::push::request::timeout) ircd::m::push::request::timeout { diff --git a/modules/m_pusher.cc b/modules/m_pusher.cc index 2eb0d115d..77fc27f4f 100644 --- a/modules/m_pusher.cc +++ b/modules/m_pusher.cc @@ -185,6 +185,10 @@ ircd::m::push::handle_event(const m::event &event, vm::eval &eval) try { + // Pushing disabled by configuration + if(!request::enable) + return; + // All pusher notifications are generated from internal rooms only if(!eval.room_internal) return;