diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-03-21 18:35:07 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2017-03-21 18:35:07 +0100 |
commit | e469b6ffb46d974013c77d1a08722ff375b27258 (patch) | |
tree | 8498854a544e9ed53136b3f18b0404a8c04ee281 | |
parent | prosody2ejabberd: 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.erl | 25 |
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. |