From 7c9415356db372663545c997794a370387383d0c Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Tue, 18 Apr 2017 01:38:35 +0300 Subject: [PATCH] Function fix_from_to/2 should not crash when 'from' is undefined Fixes #1678 --- src/ejabberd_c2s.erl | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl index c1f1e2fa5..e0a10e659 100644 --- a/src/ejabberd_c2s.erl +++ b/src/ejabberd_c2s.erl @@ -867,13 +867,17 @@ get_conn_type(State) -> -spec fix_from_to(xmpp_element(), state()) -> stanza(). fix_from_to(Pkt, #{jid := JID}) when ?is_stanza(Pkt) -> #jid{luser = U, lserver = S, lresource = R} = JID, - From = xmpp:get_from(Pkt), - From1 = case jid:tolower(From) of - {U, S, R} -> JID; - {U, S, _} -> jid:replace_resource(JID, From#jid.resource); - _ -> From - end, - xmpp:set_from_to(Pkt, From1, JID); + case xmpp:get_from(Pkt) of + undefined -> + Pkt; + From -> + From1 = case jid:tolower(From) of + {U, S, R} -> JID; + {U, S, _} -> jid:replace_resource(JID, From#jid.resource); + _ -> From + end, + xmpp:set_from_to(Pkt, From1, JID) + end; fix_from_to(Pkt, _State) -> Pkt.