Software /
code /
prosody
Changeset
13871:9eee04a95a25 13.0
MUC: Fix nickname registration form error handling (fixes #1930)
`dataform:data()` always returns the first table of collected values,
even if there are errors, so checking for its absence did not detect
when a required field (the only field, nickname) was missing.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Mon, 05 May 2025 16:32:45 +0200 |
parents | 13870:8078eebf5601 |
children | 13872:76582d10bc09 |
files | plugins/muc/register.lib.lua |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/muc/register.lib.lua Mon May 05 15:05:53 2025 +0200 +++ b/plugins/muc/register.lib.lua Mon May 05 16:32:45 2025 +0200 @@ -172,9 +172,13 @@ origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form")); return true; end - local reg_data = registration_form:data(form_tag); - if not reg_data then - origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form")); + local reg_data, form_err = registration_form:data(form_tag); + if form_err then + local errs = {}; + for field, err in pairs(form_err) do + table.insert(errs, field..": "..err); + end + origin.send(st.error_reply(stanza, "modify", "bad-request", "Error in form: "..table.concat(errs))); return true; end -- Is the nickname valid?