aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl8
-rw-r--r--src/mod_pubsub.erl8
-rw-r--r--src/mod_pubsub_odbc.erl8
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