Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/processone/ejabberd.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-18 01:38:35 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-04-18 01:38:35 +0300
commit7c9415356db372663545c997794a370387383d0c (patch)
tree18a77d72ab4b3a64965f7bd18638f2fd0abb4818 /src/ejabberd_c2s.erl
parentc97aade33e9a61aea970b2fbed353d2848a498c0 (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.erl18
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.