From 6320dfd34ead314f08856e1a8279ed4e14cc7649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Mon, 27 Apr 2020 13:17:45 +0200 Subject: Don't store caps information for direct presences of muc room We really don't need those, and thanks to each individual room having different hash (as one of hashed data is room description) we end with lot of data that we really don't need. --- src/mod_caps.erl | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mod_caps.erl b/src/mod_caps.erl index 5e8cc2eda..0b8f034cc 100644 --- a/src/mod_caps.erl +++ b/src/mod_caps.erl @@ -143,7 +143,19 @@ user_send_packet(Acc) -> -spec user_receive_packet({stanza(), ejabberd_c2s:state()}) -> {stanza(), ejabberd_c2s:state()}. user_receive_packet({#presence{from = From, type = available} = Pkt, #{lserver := LServer, jid := To} = State}) -> - IsRemote = not ejabberd_router:is_my_host(From#jid.lserver), + IsRemote = case From#jid.lresource of + % Don't store caps for presences sent by our muc rooms + <<>> -> + try ejabberd_router:host_of_route(From#jid.lserver) of + MaybeMuc -> + not lists:member(From#jid.lserver, + gen_mod:get_module_opt_hosts(MaybeMuc, mod_muc)) + catch error:{unregistered_route, _} -> + true + end; + _ -> + not ejabberd_router:is_my_host(From#jid.lserver) + end, if IsRemote -> case read_caps(Pkt) of nothing -> ok; -- cgit v1.2.3