]> granicus.if.org Git - ejabberd/commitdiff
fix get_item_name deadlock on transaction
authorChristophe Romain <christophe.romain@process-one.net>
Mon, 15 Dec 2008 19:55:35 +0000 (19:55 +0000)
committerChristophe Romain <christophe.romain@process-one.net>
Mon, 15 Dec 2008 19:55:35 +0000 (19:55 +0000)
SVN Revision: 1728

ChangeLog
src/mod_pubsub/mod_pubsub.erl

index c535e951cc4f747a4533874ef7123d8105ffa73c..5fc7ac2f8522a50a662ed8f2b91e63700b8cb0ed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-12-15  Christophe Romain <christophe.romain@process-one.net>
+
+       * src/mod_pubsub/mod_pubsub.erl: fix get_item_name deadlock on
+       transaction
+
 2008-12-12  Alexey Shchepin  <alexey@process-one.net>
 
        * src/ejabberd_c2s.erl: Bugfix in "from" attribute checking
index 5e0f142324352529e64983e78cb359f9e65d548a..0306e331ee856fc9b289aca7ad9e80df9b06d38c 100644 (file)
@@ -393,9 +393,10 @@ disco_sm_items(Acc, From, To, Node, _Lang) ->
                          fun(#pubsub_item{itemid = Id}) ->
                                  %% "jid" is required by XEP-0030, and
                                  %% "node" is forbidden by XEP-0060.
+                                 {result, Name} = node_action(Host, Node, get_item_name, [Host, Node, Id]),
                                  {xmlelement, "item",
                                   [{"jid", jlib:jid_to_string(LJID)},
-                                   {"name", get_item_name(Host, Node, Id)}],
+                                   {"name", Name}],
                                   []}
                          end, AllItems),
            {result, NodeItems ++ Items}
@@ -803,8 +804,9 @@ iq_disco_items(Host, Item, From) ->
                        Items = lists:map(
                                  fun(#pubsub_item{itemid = {RN, _}}) ->
                                          SN = node_to_string(Node) ++ "!" ++ RN,
+                                         {result, Name} = node_call(Type, get_item_name, [Host, Node, RN]),
                                          {xmlelement, "item", [{"jid", Host}, {"node", SN},
-                                                               {"name", get_item_name(Host, Node, RN)}], []}
+                                                               {"name", Name}], []}
                                  end, NodeItems),
                        {result, Nodes ++ Items}
                end,
@@ -2848,8 +2850,3 @@ uniqid() ->
     {T1, T2, T3} = now(),
     lists:flatten(io_lib:fwrite("~.16B~.16B~.16B", [T1, T2, T3])).
 
-%% @doc Return the name of a given node if available.
-get_item_name(Host, Node, Id) ->
-    {result, Name} = node_action(Host, Node, get_item_name, [Host, Node, Id]),
-    Name.
-