summaryrefslogtreecommitdiff
path: root/src/jlib.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2016-07-18 22:31:08 +0200
committerHolger Weiss <holger@zedat.fu-berlin.de>2016-07-18 22:31:08 +0200
commit8bc3dc9c495ddfea5b2a8c20c2b0ab1af2c09de5 (patch)
treeb80557eb477f1e8e7a039a24263ec030ccebd272 /src/jlib.erl
parentOmit [info] message with number of queued stanzas (diff)
jlib: Don't try to keep just one <delay/> tag
It seems unclear whether XEP-0203 really mandates that stanzas may not have multiple <delay/> tags. Editing/removing existing tags doesn't seem worth the effort, especially as we'd have to take more care which tag to keep if the stanza already has more than one.
Diffstat (limited to 'src/jlib.erl')
-rw-r--r--src/jlib.erl29
1 files changed, 2 insertions, 27 deletions
diff --git a/src/jlib.erl b/src/jlib.erl
index 532a7461..4bc9b005 100644
--- a/src/jlib.erl
+++ b/src/jlib.erl
@@ -577,33 +577,8 @@ add_delay_info(El, From, Time) ->
binary()) -> xmlel().
add_delay_info(El, From, Time, Desc) ->
- case fxml:get_subtag_with_xmlns(El, <<"delay">>, ?NS_DELAY) of
- false ->
- %% Add new tag
- DelayTag = create_delay_tag(Time, From, Desc),
- fxml:append_subtags(El, [DelayTag]);
- DelayTag ->
- %% Update existing tag
- NewDelayTag =
- case {fxml:get_tag_cdata(DelayTag), Desc} of
- {<<"">>, <<"">>} ->
- DelayTag;
- {OldDesc, <<"">>} ->
- DelayTag#xmlel{children = [{xmlcdata, OldDesc}]};
- {<<"">>, NewDesc} ->
- DelayTag#xmlel{children = [{xmlcdata, NewDesc}]};
- {OldDesc, NewDesc} ->
- case binary:match(OldDesc, NewDesc) of
- nomatch ->
- FinalDesc = <<OldDesc/binary, ", ", NewDesc/binary>>,
- DelayTag#xmlel{children = [{xmlcdata, FinalDesc}]};
- _ ->
- DelayTag#xmlel{children = [{xmlcdata, OldDesc}]}
- end
- end,
- NewEl = fxml:remove_subtags(El, <<"delay">>, {<<"xmlns">>, ?NS_DELAY}),
- fxml:append_subtags(NewEl, [NewDelayTag])
- end.
+ DelayTag = create_delay_tag(Time, From, Desc),
+ fxml:append_subtags(El, [DelayTag]).
-spec create_delay_tag(erlang:timestamp(), jid() | ljid() | binary(), binary())
-> xmlel() | error.