Comparison

core/stanza_router.lua @ 10360:64ddcbc9a328

core.stanza_router: Do strict jidprep on c2s Be conservative in what you let your clients send, be liberal in what you let in via s2s. Being strict on s2s leads to interop problems and poor experiences, ie users being ejected from MUCs if something invalid enters. By starting with tightening up input into the network, we may be able to gradually approach a point where no invalid JIDs are allowed.
author Kim Alvefur <zash@zash.se>
date Mon, 09 Sep 2019 22:32:01 +0200
parent 10245:88efdfb0a126
child 10362:c05444119e9e
comparison
equal deleted inserted replaced
10359:4ef785f45aa2 10360:64ddcbc9a328
81 local to_bare, from_bare; 81 local to_bare, from_bare;
82 if to then 82 if to then
83 if full_sessions[to] or bare_sessions[to] or hosts[to] then 83 if full_sessions[to] or bare_sessions[to] or hosts[to] then
84 node, host = jid_split(to); -- TODO only the host is needed, optimize 84 node, host = jid_split(to); -- TODO only the host is needed, optimize
85 else 85 else
86 node, host, resource = jid_prepped_split(to); 86 node, host, resource = jid_prepped_split(to, origin.type == "c2s");
87 if not host then 87 if not host then
88 log("warn", "Received stanza with invalid destination JID: %s", to); 88 log("warn", "Received stanza with invalid destination JID: %s", to);
89 if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then 89 if stanza.attr.type ~= "error" and stanza.attr.type ~= "result" then
90 origin.send(st.error_reply(stanza, "modify", "jid-malformed", "The destination address is invalid: "..to)); 90 origin.send(st.error_reply(stanza, "modify", "jid-malformed", "The destination address is invalid: "..to));
91 end 91 end