diff options
-rw-r--r-- | src/ejabberd_c2s.erl | 8 | ||||
-rw-r--r-- | src/mod_pubsub.erl | 8 | ||||
-rw-r--r-- | src/mod_pubsub_odbc.erl | 8 |
3 files changed, 19 insertions, 5 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index dd96b0e45..601d07443 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -1766,7 +1766,13 @@ handle_info({send_filtered, Feature, From, To, Packet}, StateName, StateData) -> FinalPacket = jlib:replace_from_to(From, To, Packet), case StateData#state.jid of To -> - send_packet(StateData, FinalPacket); + case privacy_check_packet(StateData, From, To, + FinalPacket, in) of + deny -> + StateData; + allow -> + send_stanza(StateData, FinalPacket) + end; _ -> ejabberd_router:route(From, To, FinalPacket), StateData diff --git a/src/mod_pubsub.erl b/src/mod_pubsub.erl index a9a68e7c3..5f16fed7e 100644 --- a/src/mod_pubsub.erl +++ b/src/mod_pubsub.erl @@ -1182,8 +1182,12 @@ presence_probe(#jid{luser = U, lserver = S}, #jid{luser = U, lserver = S}, _Pid) %% ignore presence_probe from my other ressources %% to not get duplicated last items ok; -presence_probe(#jid{luser = U, lserver = S, lresource = R}, #jid{lserver = Host} = JID, _Pid) -> - presence(Host, {presence, U, S, [R], JID}). +presence_probe(#jid{luser = U, lserver = S, lresource = R}, #jid{lserver = S} = JID, _Pid) -> + presence(S, {presence, U, S, [R], JID}); +presence_probe(_Host, _JID, _Pid) -> + %% ignore presence_probe from remote contacts, + %% those are handled via caps_update + ok. presence(ServerHost, Presence) -> SendLoop = case diff --git a/src/mod_pubsub_odbc.erl b/src/mod_pubsub_odbc.erl index 99d8948ee..c953e26a9 100644 --- a/src/mod_pubsub_odbc.erl +++ b/src/mod_pubsub_odbc.erl @@ -833,8 +833,12 @@ presence_probe(#jid{luser = U, lserver = S}, #jid{luser = U, lserver = S}, _Pid) %% ignore presence_probe from my other ressources %% to not get duplicated last items ok; -presence_probe(#jid{luser = U, lserver = S, lresource = R}, #jid{lserver = Host} = JID, _Pid) -> - presence(Host, {presence, U, S, [R], JID}). +presence_probe(#jid{luser = U, lserver = S, lresource = R}, #jid{lserver = S} = JID, _Pid) -> + presence(S, {presence, U, S, [R], JID}); +presence_probe(_Host, _JID, _Pid) -> + %% ignore presence_probe from remote contacts, + %% those are handled via caps_update + ok. presence(ServerHost, Presence) -> SendLoop = case |