From a7310ffea1292a6bc617843619d72d335971ed46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Fri, 29 Mar 2019 11:25:35 +0100 Subject: Make misc:add_delay_info properly handle multiple delay tags in element --- src/misc.erl | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'src/misc.erl') diff --git a/src/misc.erl b/src/misc.erl index 8cca30d5d..1b7fc22c1 100644 --- a/src/misc.erl +++ b/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. -- cgit v1.2.3