diff --git a/src/mod_register.erl b/src/mod_register.erl index 5d8fc15ed..a864c0df2 100644 --- a/src/mod_register.erl +++ b/src/mod_register.erl @@ -183,7 +183,12 @@ process_iq(#iq{type = set, to = To, lang = Lang, sub_els = [#register{xdata = #xdata{} = X}]} = IQ, Source, true, _AllowRemove) -> Server = To#jid.lserver, - case ejabberd_captcha:process_reply(X) of + XdataC = xmpp_util:set_xdata_field( + #xdata_field{ + var = <<"FORM_TYPE">>, + type = hidden, values = [?NS_CAPTCHA]}, + X), + case ejabberd_captcha:process_reply(XdataC) of ok -> case process_xdata_submit(X) of {ok, User, Password} -> @@ -242,9 +247,15 @@ process_iq(#iq{type = get, from = From, to = To, id = ID, lang = Lang} = IQ, fields = [UField, PField]}, case ejabberd_captcha:create_captcha_x(ID, To, Lang, Source, X) of {ok, CaptchaEls} -> + {value, XdataC, CaptchaEls2} = lists:keytake(xdata, 1, CaptchaEls), + Xdata = xmpp_util:set_xdata_field( + #xdata_field{ + var = <<"FORM_TYPE">>, + type = hidden, values = [?NS_REGISTER]}, + XdataC), xmpp:make_iq_result( IQ, #register{instructions = TopInstr, - sub_els = CaptchaEls}); + sub_els = [Xdata | CaptchaEls2]}); {error, limit} -> ErrText = ?T("Too many CAPTCHA requests"), xmpp:make_error(