]> granicus.if.org Git - ejabberd/commitdiff
Make misc:add_delay_info properly handle multiple delay tags in element
authorPaweł Chmielowski <pchmielowski@process-one.net>
Fri, 29 Mar 2019 10:25:35 +0000 (11:25 +0100)
committerPaweł Chmielowski <pchmielowski@process-one.net>
Fri, 29 Mar 2019 10:25:35 +0000 (11:25 +0100)
rebar.config
src/misc.erl

index 00a49149bb7d29baa15f5ac57f0a2160bd76184a..c654f41e9a2781bbf5a79ed0bb56bae7c5f8af47 100644 (file)
@@ -24,7 +24,7 @@
         {fast_tls, ".*", {git, "https://github.com/processone/fast_tls", {tag, "1.1.0"}}},
         {stringprep, ".*", {git, "https://github.com/processone/stringprep", {tag, "1.0.15"}}},
         {fast_xml, ".*", {git, "https://github.com/processone/fast_xml", {tag, "1.1.35"}}},
-        {xmpp, ".*", {git, "https://github.com/processone/xmpp", {tag, "1.3.2"}}},
+        {xmpp, ".*", {git, "https://github.com/processone/xmpp", "472ed4e5ce5c3a9fff0778c7844c287356babc20"}},
         {fast_yaml, ".*", {git, "https://github.com/processone/fast_yaml", {tag, "1.0.18"}}},
         {jiffy, ".*", {git, "https://github.com/davisp/jiffy", {tag, "0.14.8"}}},
         {p1_oauth2, ".*", {git, "https://github.com/processone/p1_oauth2", {tag, "0.6.4"}}},
index 8cca30d5db0e3fb39f367caed591a9a4062cdbec..1b7fc22c17f991b7c53c7e6a561de9628e57f565 100644 (file)
@@ -59,16 +59,18 @@ add_delay_info(Stz, From, Time) ->
 
 -spec add_delay_info(stanza(), jid(), erlang:timestamp(), binary()) -> stanza().
 add_delay_info(Stz, From, Time, Desc) ->
-    NewDelay = #delay{stamp = Time, from = From, desc = Desc},
-    case xmpp:get_subtag(Stz, #delay{stamp = {0,0,0}}) of
-       #delay{from = OldFrom} when is_record(OldFrom, jid) ->
-           case jid:tolower(From) == jid:tolower(OldFrom) of
-               true ->
-                   Stz;
-               false ->
-                   xmpp:append_subtags(Stz, [NewDelay])
-           end;
+    Delays = xmpp:get_all_subtags(Stz, #delay{stamp = {0,0,0}}),
+    Matching = lists:any(
+       fun(#delay{from = OldFrom}) when is_record(OldFrom, jid) ->
+              jid:tolower(From) == jid:tolower(OldFrom);
+          (_) ->
+              false
+       end, Delays),
+    case Matching of
+       true ->
+           Stz;
        _ ->
+           NewDelay = #delay{stamp = Time, from = From, desc = Desc},
            xmpp:append_subtags(Stz, [NewDelay])
     end.