From a6b3e6c904a7056a0dc905f12b4fd8883d980bae Mon Sep 17 00:00:00 2001 From: Alexey Shchepin Date: Fri, 17 Mar 2006 04:35:03 +0000 Subject: [PATCH] * src/mod_privacy.erl: Fixed privacy list pushing (thanks to Sergei Golovan) * src/ejabberd_c2s.erl: Likewise SVN Revision: 520 --- ChangeLog | 6 ++++++ src/ejabberd_c2s.erl | 17 ++++++++++++++++- src/mod_privacy.erl | 8 ++++++-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index df6e57981..e15121bfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-03-17 Alexey Shchepin + + * src/mod_privacy.erl: Fixed privacy list pushing (thanks to + Sergei Golovan) + * src/ejabberd_c2s.erl: Likewise + 2006-03-16 Mickael Remond * src/ejabberd_sm.erl: Remove unnecessary use delete_object, which can, 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}