Software /
code /
prosody-modules
Diff
mod_rest/mod_rest.lua @ 3804:d74509cd35fb
mod_rest: Use HTTP status 422 for stanza problems
Means the payload can't be processed for some reason other than syntax
errors.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 01 Jan 2020 07:55:48 +0100 |
parent | 3803:dc2b5a412286 |
child | 3805:683b06c0348f |
line wrap: on
line diff
--- a/mod_rest/mod_rest.lua Wed Jan 01 05:36:09 2020 +0100 +++ b/mod_rest/mod_rest.lua Wed Jan 01 07:55:48 2020 +0100 @@ -39,17 +39,17 @@ return errors.new({ code = 400, text = err }); end if payload.attr.xmlns then - return errors.new({ code = 400, text = "'xmlns' attribute must be empty" }); + return errors.new({ code = 422, text = "'xmlns' attribute must be empty" }); end local to = jid.prep(payload.attr.to); if not to then - return errors.new({ code = 400, text = "Invalid destination JID" }); + return errors.new({ code = 422, text = "Invalid destination JID" }); end local from = module.host; if allow_any_source and payload.attr.from then from = jid.prep(payload.attr.from); if not from then - return errors.new({ code = 400, text = "Invalid source JID" }); + return errors.new({ code = 422, text = "Invalid source JID" }); end if validate_from_addresses and not jid.compare(from, module.host) then return errors.new({ code = 403, text = "Source JID must belong to current host" }); @@ -65,7 +65,7 @@ module:log("debug", "Received[rest]: %s", payload:top_tag()); if payload.name == "iq" then if payload.attr.type ~= "get" and payload.attr.type ~= "set" then - return errors.new({ code = 400, text = "'iq' stanza must be of type 'get' or 'set'" }); + return errors.new({ code = 422, text = "'iq' stanza must be of type 'get' or 'set'" }); end return module:send_iq(payload):next( function (result)