aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2017-03-21 18:35:07 +0100
committerHolger Weiss <holger@zedat.fu-berlin.de>2017-03-21 18:35:07 +0100
commite469b6ffb46d974013c77d1a08722ff375b27258 (patch)
tree8498854a544e9ed53136b3f18b0404a8c04ee281
parentprosody2ejabberd: Fix message attribute removal (diff)
prosody2ejabberd: Fix offline message record type
mod_offline now expects a #message{} rather than an #xmlel{} record.
-rw-r--r--src/prosody2ejabberd.erl25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/prosody2ejabberd.erl b/src/prosody2ejabberd.erl
index dbe568e7c..9d961d8d7 100644
--- a/src/prosody2ejabberd.erl
+++ b/src/prosody2ejabberd.erl
@@ -341,19 +341,24 @@ el_to_offline_msg(LUser, LServer, #xmlel{attrs = Attrs} = El) ->
({<<"stamp_legacy">>, _}) -> false;
(_) -> true
end, Attrs),
- Packet = El#xmlel{attrs = Attrs1},
- From = jid:decode(fxml:get_attr_s(<<"from">>, Attrs)),
- To = jid:decode(fxml:get_attr_s(<<"to">>, Attrs)),
- [#offline_msg{
- us = {LUser, LServer},
- timestamp = TS,
- expire = never,
- from = From,
- to = To,
- packet = Packet}]
+ El1 = El#xmlel{attrs = Attrs1},
+ case xmpp:decode(El1, ?NS_CLIENT, [ignore_els]) of
+ #message{from = #jid{} = From, to = #jid{} = To} = Packet ->
+ [#offline_msg{
+ us = {LUser, LServer},
+ timestamp = TS,
+ expire = never,
+ from = From,
+ to = To,
+ packet = Packet}];
+ _ ->
+ []
+ end
catch _:{bad_timestamp, _} ->
[];
_:{bad_jid, _} ->
+ [];
+ _:{xmpp_codec, _} ->
[]
end.