mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-22 17:28:25 +01:00
Make misc:add_delay_info properly handle multiple delay tags in element
This commit is contained in:
parent
8e05fd1d24
commit
a7310ffea1
@ -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"}}},
|
||||
|
20
src/misc.erl
20
src/misc.erl
@ -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.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user