diff options
author | Matthew Wild <mwild1@gmail.com> | 2009-05-13 16:54:46 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2009-05-13 16:54:46 +0100 |
commit | 482dc64bc93ed1ea413f0ae63ebe6e854783e338 (patch) | |
tree | 40a48ec6c5cc503e96cf590f2a85d10f0e319b7e /core | |
parent | 95040378fd0373e8e17cddff42b7017d120b78c2 (diff) | |
download | prosody-482dc64bc93ed1ea413f0ae63ebe6e854783e338.tar.gz prosody-482dc64bc93ed1ea413f0ae63ebe6e854783e338.zip |
stanza_router: Bounce stanzas to/from invalid JIDs with a jid-malformed error
Diffstat (limited to 'core')
-rw-r--r-- | core/stanza_router.lua | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/core/stanza_router.lua b/core/stanza_router.lua index 08224c8d..29840d76 100644 --- a/core/stanza_router.lua +++ b/core/stanza_router.lua @@ -77,16 +77,21 @@ function core_process_stanza(origin, stanza) if to then node, host, resource = jid_prepped_split(to); if not host then - error("Invalid to JID"); + log("warn", "Received stanza with invalid destination JID: %s", to); + origin.send(st.error_reply(stanza, "modify", "jid-malformed", "The destination address is invalid: "..to)); + return; end to_bare = node and (node.."@"..host) or host; -- bare JID if resource then to = to_bare.."/"..resource; else to = to_bare; end stanza.attr.to = to; end if from then + -- We only stamp the 'from' on c2s stanzas, so we still need to check validity from_node, from_host, from_resource = jid_prepped_split(from); if not from_host then - error("Invalid from JID"); + log("warn", "Received stanza with invalid source JID: %s", from); + origin.send(st.error_reply(stanza, "modify", "jid-malformed", "The source address is invalid: "..from)); + return; end from_bare = from_node and (from_node.."@"..from_host) or from_host; -- bare JID if from_resource then from = from_bare.."/"..from_resource; else from = from_bare; end |