]> granicus.if.org Git - ejabberd/commitdiff
prosody2ejabberd: Fix offline message record type
authorHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 21 Mar 2017 17:35:07 +0000 (18:35 +0100)
committerHolger Weiss <holger@zedat.fu-berlin.de>
Tue, 21 Mar 2017 17:35:07 +0000 (18:35 +0100)
mod_offline now expects a #message{} rather than an #xmlel{} record.

src/prosody2ejabberd.erl

index dbe568e7cee17f16f00ebd65c01c356d20fb054b..9d961d8d785f5e0237c85f937f969712aada7296 100644 (file)
@@ -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.