diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-18 01:38:35 +0300 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2017-04-18 01:38:35 +0300 |
commit | 7c9415356db372663545c997794a370387383d0c (patch) | |
tree | 18a77d72ab4b3a64965f7bd18638f2fd0abb4818 /src/ejabberd_c2s.erl | |
parent | c97aade33e9a61aea970b2fbed353d2848a498c0 (diff) |
Function fix_from_to/2 should not crash when 'from' is undefined
Fixes #1678
Diffstat (limited to 'src/ejabberd_c2s.erl')
-rw-r--r-- | src/ejabberd_c2s.erl | 18 |
1 files 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. |