]> granicus.if.org Git - ejabberd/commitdiff
* src/mod_privacy.erl: Fixed privacy list pushing (thanks to
authorAlexey Shchepin <alexey@process-one.net>
Fri, 17 Mar 2006 04:35:03 +0000 (04:35 +0000)
committerAlexey Shchepin <alexey@process-one.net>
Fri, 17 Mar 2006 04:35:03 +0000 (04:35 +0000)
Sergei Golovan)
* src/ejabberd_c2s.erl: Likewise

SVN Revision: 520

ChangeLog
src/ejabberd_c2s.erl
src/mod_privacy.erl

index df6e57981f80a77382b623211d45bafa823e6194..e15121bfa8c5534d91053399679d76e2015e9885 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2006-03-17  Alexey Shchepin  <alexey@sevcom.net>
+
+       * src/mod_privacy.erl: Fixed privacy list pushing (thanks to
+       Sergei Golovan)
+       * src/ejabberd_c2s.erl: Likewise
+
 2006-03-16  Mickael Remond  <mickael.remond@process-one.net>
 
        * src/ejabberd_sm.erl: Remove unnecessary use delete_object, which can,
index b36775689244135558695231f65fe5aa498fffdf..ec6fd73a87ee8a53fba5ce28225586f9ecc5f167 100644 (file)
@@ -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};
                    _ ->
index e1e2bf1b2265f78285ecac502409b06c2ece3c91..db2a78693df1765fd52e44211dd99157178ffa85 100644 (file)
@@ -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}