aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ejabberd_c2s.erl17
-rw-r--r--src/mod_privacy.erl8
2 files changed, 22 insertions, 3 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index b36775689..ec6fd73a8 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -1015,7 +1015,7 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
StateData)};
[{exit, Reason}] ->
{exit, Attrs, Reason};
- [{privacy_list, PrivList}] ->
+ [{privacy_list, PrivList, PrivListName}] ->
{false, Attrs,
case catch mod_privacy:updated_list(
StateData#state.privacy_list,
@@ -1023,6 +1023,21 @@ handle_info({route, From, To, Packet}, StateName, StateData) ->
{'EXIT', _} ->
{false, Attrs, StateData};
NewPL ->
+ PrivPushIQ =
+ #iq{type = set, xmlns = ?NS_PRIVACY,
+ id = "push",
+ sub_el = [{xmlelement, "query",
+ [{"xmlns", ?NS_PRIVACY}],
+ [{xmlelement, "list",
+ [{"name", PrivListName}],
+ []}]}]},
+ PrivPushEl =
+ jlib:replace_from_to(
+ jlib:jid_remove_resource(
+ StateData#state.jid),
+ StateData#state.jid,
+ jlib:iq_to_xml(PrivPushIQ)),
+ send_element(StateData, PrivPushEl),
StateData#state{privacy_list = NewPL}
end};
_ ->
diff --git a/src/mod_privacy.erl b/src/mod_privacy.erl
index e1e2bf1b2..db2a78693 100644
--- a/src/mod_privacy.erl
+++ b/src/mod_privacy.erl
@@ -362,7 +362,9 @@ process_list_set(LUser, LServer, {value, Name}, Els) ->
jlib:make_jid(LUser, ?MYNAME, ""),
jlib:make_jid(LUser, ?MYNAME, ""),
{xmlelement, "broadcast", [],
- [{privacy_list, #userlist{name = Name, list = []}}]}),
+ [{privacy_list,
+ #userlist{name = Name, list = []},
+ Name}]}),
Res;
_ ->
{error, ?ERR_INTERNAL_SERVER_ERROR}
@@ -391,7 +393,9 @@ process_list_set(LUser, LServer, {value, Name}, Els) ->
jlib:make_jid(LUser, ?MYNAME, ""),
jlib:make_jid(LUser, ?MYNAME, ""),
{xmlelement, "broadcast", [],
- [{privacy_list, #userlist{name = Name, list = List}}]}),
+ [{privacy_list,
+ #userlist{name = Name, list = List},
+ Name}]}),
Res;
_ ->
{error, ?ERR_INTERNAL_SERVER_ERROR}